Commit 7db90f4a authored by Luis R. Rodriguez's avatar Luis R. Rodriguez Committed by John W. Linville

cfg80211: move enum reg_set_by to nl80211.h

We do this so we can later inform userspace who set the
regulatory domain and provide details of the request.
Signed-off-by: default avatarLuis R. Rodriguez <lrodriguez@atheros.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 0fee54ca
...@@ -1670,7 +1670,7 @@ int ath_attach(u16 devid, struct ath_softc *sc) ...@@ -1670,7 +1670,7 @@ int ath_attach(u16 devid, struct ath_softc *sc)
} }
wiphy_apply_custom_regulatory(hw->wiphy, regd); wiphy_apply_custom_regulatory(hw->wiphy, regd);
ath9k_reg_apply_radar_flags(hw->wiphy); ath9k_reg_apply_radar_flags(hw->wiphy);
ath9k_reg_apply_world_flags(hw->wiphy, REGDOM_SET_BY_DRIVER); ath9k_reg_apply_world_flags(hw->wiphy, NL80211_REGDOM_SET_BY_DRIVER);
INIT_WORK(&sc->chan_work, ath9k_wiphy_chan_work); INIT_WORK(&sc->chan_work, ath9k_wiphy_chan_work);
INIT_DELAYED_WORK(&sc->wiphy_work, ath9k_wiphy_work); INIT_DELAYED_WORK(&sc->wiphy_work, ath9k_wiphy_work);
......
...@@ -168,8 +168,9 @@ static bool ath9k_is_radar_freq(u16 center_freq) ...@@ -168,8 +168,9 @@ static bool ath9k_is_radar_freq(u16 center_freq)
* received a beacon on a channel we can enable active scan and * received a beacon on a channel we can enable active scan and
* adhoc (or beaconing). * adhoc (or beaconing).
*/ */
static void ath9k_reg_apply_beaconing_flags(struct wiphy *wiphy, static void ath9k_reg_apply_beaconing_flags(
enum reg_set_by setby) struct wiphy *wiphy,
enum nl80211_reg_initiator initiator)
{ {
enum ieee80211_band band; enum ieee80211_band band;
struct ieee80211_supported_band *sband; struct ieee80211_supported_band *sband;
...@@ -194,7 +195,7 @@ static void ath9k_reg_apply_beaconing_flags(struct wiphy *wiphy, ...@@ -194,7 +195,7 @@ static void ath9k_reg_apply_beaconing_flags(struct wiphy *wiphy,
(ch->flags & IEEE80211_CHAN_RADAR)) (ch->flags & IEEE80211_CHAN_RADAR))
continue; continue;
if (setby == REGDOM_SET_BY_COUNTRY_IE) { if (initiator == NL80211_REGDOM_SET_BY_COUNTRY_IE) {
r = freq_reg_info(wiphy, ch->center_freq, r = freq_reg_info(wiphy, ch->center_freq,
&bandwidth, &reg_rule); &bandwidth, &reg_rule);
if (r) if (r)
...@@ -226,8 +227,9 @@ static void ath9k_reg_apply_beaconing_flags(struct wiphy *wiphy, ...@@ -226,8 +227,9 @@ static void ath9k_reg_apply_beaconing_flags(struct wiphy *wiphy,
} }
/* Allows active scan scan on Ch 12 and 13 */ /* Allows active scan scan on Ch 12 and 13 */
static void ath9k_reg_apply_active_scan_flags(struct wiphy *wiphy, static void ath9k_reg_apply_active_scan_flags(
enum reg_set_by setby) struct wiphy *wiphy,
enum nl80211_reg_initiator initiator)
{ {
struct ieee80211_supported_band *sband; struct ieee80211_supported_band *sband;
struct ieee80211_channel *ch; struct ieee80211_channel *ch;
...@@ -241,7 +243,7 @@ static void ath9k_reg_apply_active_scan_flags(struct wiphy *wiphy, ...@@ -241,7 +243,7 @@ static void ath9k_reg_apply_active_scan_flags(struct wiphy *wiphy,
* If no country IE has been received always enable active scan * If no country IE has been received always enable active scan
* on these channels. This is only done for specific regulatory SKUs * on these channels. This is only done for specific regulatory SKUs
*/ */
if (setby != REGDOM_SET_BY_COUNTRY_IE) { if (initiator != NL80211_REGDOM_SET_BY_COUNTRY_IE) {
ch = &sband->channels[11]; /* CH 12 */ ch = &sband->channels[11]; /* CH 12 */
if (ch->flags & IEEE80211_CHAN_PASSIVE_SCAN) if (ch->flags & IEEE80211_CHAN_PASSIVE_SCAN)
ch->flags &= ~IEEE80211_CHAN_PASSIVE_SCAN; ch->flags &= ~IEEE80211_CHAN_PASSIVE_SCAN;
...@@ -308,7 +310,8 @@ void ath9k_reg_apply_radar_flags(struct wiphy *wiphy) ...@@ -308,7 +310,8 @@ void ath9k_reg_apply_radar_flags(struct wiphy *wiphy)
} }
} }
void ath9k_reg_apply_world_flags(struct wiphy *wiphy, enum reg_set_by setby) void ath9k_reg_apply_world_flags(struct wiphy *wiphy,
enum nl80211_reg_initiator initiator)
{ {
struct ieee80211_hw *hw = wiphy_to_ieee80211_hw(wiphy); struct ieee80211_hw *hw = wiphy_to_ieee80211_hw(wiphy);
struct ath_wiphy *aphy = hw->priv; struct ath_wiphy *aphy = hw->priv;
...@@ -320,11 +323,11 @@ void ath9k_reg_apply_world_flags(struct wiphy *wiphy, enum reg_set_by setby) ...@@ -320,11 +323,11 @@ void ath9k_reg_apply_world_flags(struct wiphy *wiphy, enum reg_set_by setby)
case 0x63: case 0x63:
case 0x66: case 0x66:
case 0x67: case 0x67:
ath9k_reg_apply_beaconing_flags(wiphy, setby); ath9k_reg_apply_beaconing_flags(wiphy, initiator);
break; break;
case 0x68: case 0x68:
ath9k_reg_apply_beaconing_flags(wiphy, setby); ath9k_reg_apply_beaconing_flags(wiphy, initiator);
ath9k_reg_apply_active_scan_flags(wiphy, setby); ath9k_reg_apply_active_scan_flags(wiphy, initiator);
break; break;
} }
return; return;
...@@ -340,11 +343,11 @@ int ath9k_reg_notifier(struct wiphy *wiphy, struct regulatory_request *request) ...@@ -340,11 +343,11 @@ int ath9k_reg_notifier(struct wiphy *wiphy, struct regulatory_request *request)
ath9k_reg_apply_radar_flags(wiphy); ath9k_reg_apply_radar_flags(wiphy);
switch (request->initiator) { switch (request->initiator) {
case REGDOM_SET_BY_DRIVER: case NL80211_REGDOM_SET_BY_DRIVER:
case REGDOM_SET_BY_CORE: case NL80211_REGDOM_SET_BY_CORE:
case REGDOM_SET_BY_USER: case NL80211_REGDOM_SET_BY_USER:
break; break;
case REGDOM_SET_BY_COUNTRY_IE: case NL80211_REGDOM_SET_BY_COUNTRY_IE:
if (ath9k_is_world_regd(sc->sc_ah)) if (ath9k_is_world_regd(sc->sc_ah))
ath9k_reg_apply_world_flags(wiphy, request->initiator); ath9k_reg_apply_world_flags(wiphy, request->initiator);
break; break;
......
...@@ -236,7 +236,8 @@ enum CountryCode { ...@@ -236,7 +236,8 @@ enum CountryCode {
bool ath9k_is_world_regd(struct ath_hw *ah); bool ath9k_is_world_regd(struct ath_hw *ah);
const struct ieee80211_regdomain *ath9k_world_regdomain(struct ath_hw *ah); const struct ieee80211_regdomain *ath9k_world_regdomain(struct ath_hw *ah);
const struct ieee80211_regdomain *ath9k_default_world_regdomain(void); const struct ieee80211_regdomain *ath9k_default_world_regdomain(void);
void ath9k_reg_apply_world_flags(struct wiphy *wiphy, enum reg_set_by setby); void ath9k_reg_apply_world_flags(struct wiphy *wiphy,
enum nl80211_reg_initiator initiator);
void ath9k_reg_apply_radar_flags(struct wiphy *wiphy); void ath9k_reg_apply_radar_flags(struct wiphy *wiphy);
int ath9k_regd_init(struct ath_hw *ah); int ath9k_regd_init(struct ath_hw *ah);
bool ath9k_regd_is_eeprom_valid(struct ath_hw *ah); bool ath9k_regd_is_eeprom_valid(struct ath_hw *ah);
......
...@@ -672,6 +672,25 @@ enum nl80211_bitrate_attr { ...@@ -672,6 +672,25 @@ enum nl80211_bitrate_attr {
NL80211_BITRATE_ATTR_MAX = __NL80211_BITRATE_ATTR_AFTER_LAST - 1 NL80211_BITRATE_ATTR_MAX = __NL80211_BITRATE_ATTR_AFTER_LAST - 1
}; };
/**
* enum nl80211_initiator - Indicates the initiator of a reg domain request
* @NL80211_REGDOM_SET_BY_CORE: Core queried CRDA for a dynamic world
* regulatory domain.
* @NL80211_REGDOM_SET_BY_USER: User asked the wireless core to set the
* regulatory domain.
* @NL80211_REGDOM_SET_BY_DRIVER: a wireless drivers has hinted to the
* wireless core it thinks its knows the regulatory domain we should be in.
* @NL80211_REGDOM_SET_BY_COUNTRY_IE: the wireless core has received an
* 802.11 country information element with regulatory information it
* thinks we should consider.
*/
enum nl80211_reg_initiator {
NL80211_REGDOM_SET_BY_CORE,
NL80211_REGDOM_SET_BY_USER,
NL80211_REGDOM_SET_BY_DRIVER,
NL80211_REGDOM_SET_BY_COUNTRY_IE,
};
/** /**
* enum nl80211_reg_rule_attr - regulatory rule attributes * enum nl80211_reg_rule_attr - regulatory rule attributes
* @NL80211_ATTR_REG_RULE_FLAGS: a set of flags which specify additional * @NL80211_ATTR_REG_RULE_FLAGS: a set of flags which specify additional
......
...@@ -348,28 +348,10 @@ struct bss_parameters { ...@@ -348,28 +348,10 @@ struct bss_parameters {
u8 basic_rates_len; u8 basic_rates_len;
}; };
/**
* enum reg_set_by - Indicates who is trying to set the regulatory domain
* @REGDOM_SET_BY_CORE: Core queried CRDA for a dynamic world regulatory domain.
* @REGDOM_SET_BY_USER: User asked the wireless core to set the
* regulatory domain.
* @REGDOM_SET_BY_DRIVER: a wireless drivers has hinted to the wireless core
* it thinks its knows the regulatory domain we should be in.
* @REGDOM_SET_BY_COUNTRY_IE: the wireless core has received an 802.11 country
* information element with regulatory information it thinks we
* should consider.
*/
enum reg_set_by {
REGDOM_SET_BY_CORE,
REGDOM_SET_BY_USER,
REGDOM_SET_BY_DRIVER,
REGDOM_SET_BY_COUNTRY_IE,
};
/** /**
* enum environment_cap - Environment parsed from country IE * enum environment_cap - Environment parsed from country IE
* @ENVIRON_ANY: indicates country IE applies to both indoor and * @ENVIRON_ANY: indicates country IE applies to both indoor and
* outdoor operation. * outdoor operation.
* @ENVIRON_INDOOR: indicates country IE applies only to indoor operation * @ENVIRON_INDOOR: indicates country IE applies only to indoor operation
* @ENVIRON_OUTDOOR: indicates country IE applies only to outdoor operation * @ENVIRON_OUTDOOR: indicates country IE applies only to outdoor operation
*/ */
...@@ -388,7 +370,7 @@ enum environment_cap { ...@@ -388,7 +370,7 @@ enum environment_cap {
* and potentially inform users of which devices specifically * and potentially inform users of which devices specifically
* cased the conflicts. * cased the conflicts.
* @initiator: indicates who sent this request, could be any of * @initiator: indicates who sent this request, could be any of
* of those set in reg_set_by, %REGDOM_SET_BY_* * of those set in nl80211_reg_initiator (%NL80211_REGDOM_SET_BY_*)
* @alpha2: the ISO / IEC 3166 alpha2 country code of the requested * @alpha2: the ISO / IEC 3166 alpha2 country code of the requested
* regulatory domain. We have a few special codes: * regulatory domain. We have a few special codes:
* 00 - World regulatory domain * 00 - World regulatory domain
...@@ -405,7 +387,7 @@ enum environment_cap { ...@@ -405,7 +387,7 @@ enum environment_cap {
*/ */
struct regulatory_request { struct regulatory_request {
int wiphy_idx; int wiphy_idx;
enum reg_set_by initiator; enum nl80211_reg_initiator initiator;
char alpha2[2]; char alpha2[2];
bool intersect; bool intersect;
u32 country_ie_checksum; u32 country_ie_checksum;
......
...@@ -350,7 +350,7 @@ int wiphy_register(struct wiphy *wiphy) ...@@ -350,7 +350,7 @@ int wiphy_register(struct wiphy *wiphy)
mutex_lock(&cfg80211_mutex); mutex_lock(&cfg80211_mutex);
/* set up regulatory info */ /* set up regulatory info */
wiphy_update_regulatory(wiphy, REGDOM_SET_BY_CORE); wiphy_update_regulatory(wiphy, NL80211_REGDOM_SET_BY_CORE);
res = device_add(&drv->wiphy.dev); res = device_add(&drv->wiphy.dev);
if (res) if (res)
......
...@@ -136,7 +136,8 @@ extern int cfg80211_dev_rename(struct cfg80211_registered_device *drv, ...@@ -136,7 +136,8 @@ extern int cfg80211_dev_rename(struct cfg80211_registered_device *drv,
char *newname); char *newname);
void ieee80211_set_bitrate_flags(struct wiphy *wiphy); void ieee80211_set_bitrate_flags(struct wiphy *wiphy);
void wiphy_update_regulatory(struct wiphy *wiphy, enum reg_set_by setby); void wiphy_update_regulatory(struct wiphy *wiphy,
enum nl80211_reg_initiator setby);
void cfg80211_bss_expire(struct cfg80211_registered_device *dev); void cfg80211_bss_expire(struct cfg80211_registered_device *dev);
void cfg80211_bss_age(struct cfg80211_registered_device *dev, void cfg80211_bss_age(struct cfg80211_registered_device *dev,
......
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment