aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLuis R. Rodriguez <lrodriguez@atheros.com>2010-10-20 13:18:54 -0400
committerJohn W. Linville <linville@tuxdriver.com>2010-11-15 13:24:09 -0500
commit749b527b21465fb079796c03ffb4302584dc31c1 (patch)
tree07269dcd8f82d163c3d7195d536f61b768da6c58
parent7ca43d03b1291481bdf894bbaec5d580e7684e7d (diff)
cfg80211: fix allowing country IEs for WIPHY_FLAG_STRICT_REGULATORY
We should be enabling country IE hints for WIPHY_FLAG_STRICT_REGULATORY even if we haven't yet recieved regulatory domain hint for the driver if it needed one. Without this Country IEs are not passed on to drivers that have set WIPHY_FLAG_STRICT_REGULATORY, today this is just all Atheros chipset drivers: ath5k, ath9k, ar9170, carl9170. This was part of the original design, however it was completely overlooked... Cc: Easwar Krishnan <easwar.krishnan@atheros.com> Cc: stable@kernel.org Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r--include/net/cfg80211.h15
-rw-r--r--net/wireless/reg.c1
2 files changed, 9 insertions, 7 deletions
diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h
index 2a7936d7851d..e5702f5ac57c 100644
--- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h
@@ -1321,13 +1321,14 @@ struct cfg80211_ops {
1321 * initiator is %REGDOM_SET_BY_CORE). 1321 * initiator is %REGDOM_SET_BY_CORE).
1322 * @WIPHY_FLAG_STRICT_REGULATORY: tells us the driver for this device will 1322 * @WIPHY_FLAG_STRICT_REGULATORY: tells us the driver for this device will
1323 * ignore regulatory domain settings until it gets its own regulatory 1323 * ignore regulatory domain settings until it gets its own regulatory
1324 * domain via its regulatory_hint(). After its gets its own regulatory 1324 * domain via its regulatory_hint() unless the regulatory hint is
1325 * domain it will only allow further regulatory domain settings to 1325 * from a country IE. After its gets its own regulatory domain it will
1326 * further enhance compliance. For example if channel 13 and 14 are 1326 * only allow further regulatory domain settings to further enhance
1327 * disabled by this regulatory domain no user regulatory domain can 1327 * compliance. For example if channel 13 and 14 are disabled by this
1328 * enable these channels at a later time. This can be used for devices 1328 * regulatory domain no user regulatory domain can enable these channels
1329 * which do not have calibration information gauranteed for frequencies 1329 * at a later time. This can be used for devices which do not have
1330 * or settings outside of its regulatory domain. 1330 * calibration information guaranteed for frequencies or settings
1331 * outside of its regulatory domain.
1331 * @WIPHY_FLAG_DISABLE_BEACON_HINTS: enable this if your driver needs to ensure 1332 * @WIPHY_FLAG_DISABLE_BEACON_HINTS: enable this if your driver needs to ensure
1332 * that passive scan flags and beaconing flags may not be lifted by 1333 * that passive scan flags and beaconing flags may not be lifted by
1333 * cfg80211 due to regulatory beacon hints. For more information on beacon 1334 * cfg80211 due to regulatory beacon hints. For more information on beacon
diff --git a/net/wireless/reg.c b/net/wireless/reg.c
index b64596fe7363..1bc8131a5185 100644
--- a/net/wireless/reg.c
+++ b/net/wireless/reg.c
@@ -813,6 +813,7 @@ static bool ignore_reg_update(struct wiphy *wiphy,
813 * desired regulatory domain set 813 * desired regulatory domain set
814 */ 814 */
815 if (wiphy->flags & WIPHY_FLAG_STRICT_REGULATORY && !wiphy->regd && 815 if (wiphy->flags & WIPHY_FLAG_STRICT_REGULATORY && !wiphy->regd &&
816 initiator != NL80211_REGDOM_SET_BY_COUNTRY_IE &&
816 !is_world_regdom(last_request->alpha2)) 817 !is_world_regdom(last_request->alpha2))
817 return true; 818 return true;
818 return false; 819 return false;