So in the first part I covered how information on channel restrictions is communicated between the central regulatory control agent and drivers and/or mac80211. This second part is rather short, but important. Devices that are capable of operating in a wide range of regulatory restrictions usually also have country information encoded in their EEPROM. I understand that Intel devices will need to make this EEPROM information part of their channels list because the firmware rejects tuning to other channels, but most devices fully enforce these restrictions in software. Hence, it is necessary that drivers are able to set the regulatory domain they think they are operating in. It would probably be possible to override by the user, but when the user has just booted it would be good to be able to read the EEPROM of a wireless card to set the initial operating domain. For this, we need two exported functions: void cfg80211_regulatory_set_alpha2(const char *alpha2); void cfg80211_regulatory_set_domain(int ieee80211_domain); These functions, when called, internally look up the value and, if found, update each registered wiphy's channels list for the new restrictions. They also set the internal domain to the value given (well, I suppose the _set_domain function internally looks up an alpha2 value and calls the other one). Also, it will call the notifier chain I talked about earlier so drivers can be notified of the change if necessary. Similarly, userspace can set the alpha2 value through some nl80211/configfs API which will also cause the the same updates and notifier chain calls. I think this covers all the public API to regulatory control. Did I miss anything? Everything else should be internal. johannes
Attachment:
signature.asc
Description: This is a digitally signed message part