2008-09-10 10:19:48 +04:00
# ifndef __NET_WIRELESS_REG_H
# define __NET_WIRELESS_REG_H
2009-01-30 20:26:42 +03:00
extern const struct ieee80211_regdomain * cfg80211_regdomain ;
2008-09-15 13:10:52 +04:00
bool is_world_regdom ( const char * alpha2 ) ;
bool reg_is_valid_request ( const char * alpha2 ) ;
2008-09-10 10:19:48 +04:00
2009-02-21 08:04:30 +03:00
int regulatory_hint_user ( const char * alpha2 ) ;
2008-11-13 01:22:02 +03:00
void reg_device_remove ( struct wiphy * wiphy ) ;
2008-09-10 10:19:48 +04:00
int regulatory_init ( void ) ;
void regulatory_exit ( void ) ;
2008-09-15 13:10:52 +04:00
int set_regdom ( const struct ieee80211_regdomain * rd ) ;
2008-09-10 10:19:48 +04:00
2009-02-21 08:20:39 +03:00
/**
* regulatory_hint_found_beacon - hints a beacon was found on a channel
* @ wiphy : the wireless device where the beacon was found on
* @ beacon_chan : the channel on which the beacon was found on
* @ gfp : context flags
*
* This informs the wireless core that a beacon from an AP was found on
* the channel provided . This allows the wireless core to make educated
* guesses on regulatory to help with world roaming . This is only used for
* world roaming - - when we do not know our current location . This is
* only useful on channels 12 , 13 and 14 on the 2 GHz band as channels
* 1 - 11 are already enabled by the world regulatory domain ; and on
* non - radar 5 GHz channels .
*
* Drivers do not need to call this , cfg80211 will do it for after a scan
2009-07-31 04:43:48 +04:00
* on a newly found BSS . If you cannot make use of this feature you can
* set the wiphy - > disable_beacon_hints to true .
2009-02-21 08:20:39 +03:00
*/
int regulatory_hint_found_beacon ( struct wiphy * wiphy ,
struct ieee80211_channel * beacon_chan ,
gfp_t gfp ) ;
2009-07-31 04:38:09 +04:00
/**
* regulatory_hint_11d - hints a country IE as a regulatory domain
* @ wiphy : the wireless device giving the hint ( used only for reporting
* conflicts )
2010-01-15 04:08:20 +03:00
* @ band : the band on which the country IE was received on . This determines
* the band we ' ll process the country IE channel triplets for .
2009-07-31 04:38:09 +04:00
* @ country_ie : pointer to the country IE
* @ country_ie_len : length of the country IE
*
* We will intersect the rd with the what CRDA tells us should apply
* for the alpha2 this country IE belongs to , this prevents APs from
* sending us incorrect or outdated information against a country .
2010-01-15 04:08:20 +03:00
*
* The AP is expected to provide Country IE channel triplets for the
* band it is on . It is technically possible for APs to send channel
* country IE triplets even for channels outside of the band they are
* in but for that they would have to use the regulatory extension
* in combination with a triplet but this behaviour is currently
* not observed . For this reason if a triplet is seen with channel
* information for a band the BSS is not present in it will be ignored .
2009-07-31 04:38:09 +04:00
*/
void regulatory_hint_11d ( struct wiphy * wiphy ,
2010-01-15 04:08:20 +03:00
enum ieee80211_band band ,
2009-07-31 04:38:09 +04:00
u8 * country_ie ,
u8 country_ie_len ) ;
2010-01-30 03:58:57 +03:00
/**
* regulatory_hint_disconnect - informs all devices have been disconneted
*
* Regulotory rules can be enhanced further upon scanning and upon
* connection to an AP . These rules become stale if we disconnect
* and go to another country , whether or not we suspend and resume .
* If we suspend , go to another country and resume we ' ll automatically
* get disconnected shortly after resuming and things will be reset as well .
* This routine is a helper to restore regulatory settings to how they were
* prior to our first connect attempt . This includes ignoring country IE and
* beacon regulatory hints . The ieee80211_regdom module parameter will always
* be respected but if a user had set the regulatory domain that will take
* precedence .
*
* Must be called from process context .
*/
void regulatory_hint_disconnect ( void ) ;
2008-09-10 10:19:48 +04:00
# endif /* __NET_WIRELESS_REG_H */