aboutsummaryrefslogtreecommitdiffstats
path: root/package/kernel/mac80211
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2015-04-03 16:39:28 +0000
committerFelix Fietkau <nbd@openwrt.org>2015-04-03 16:39:28 +0000
commita66fd87324bb1622d805c023644587d93a648d88 (patch)
treef66dcd492b1826f0d0dcd4d971983d6dd4a1d82e /package/kernel/mac80211
parent257105be9eefde087cfb4a81f17b5178a2ce5139 (diff)
downloadupstream-a66fd87324bb1622d805c023644587d93a648d88.tar.gz
upstream-a66fd87324bb1622d805c023644587d93a648d88.tar.bz2
upstream-a66fd87324bb1622d805c023644587d93a648d88.zip
ath: relax regulatory rules for default regd code
Most AP devices out there do not have a properly programmed regulatory domain code, which means they are limited to US frequencies by default. This has been a major annoyance for a long time now. Since no fix for the manfuacturing process seems to be forthcoming, the only sane option seems to be to allow users to change the country code in such cases. Signed-off-by: Felix Fietkau <nbd@openwrt.org> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@45252 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package/kernel/mac80211')
-rw-r--r--package/kernel/mac80211/patches/406-ath_relax_default_regd.patch47
1 files changed, 47 insertions, 0 deletions
diff --git a/package/kernel/mac80211/patches/406-ath_relax_default_regd.patch b/package/kernel/mac80211/patches/406-ath_relax_default_regd.patch
new file mode 100644
index 0000000000..83ec441b86
--- /dev/null
+++ b/package/kernel/mac80211/patches/406-ath_relax_default_regd.patch
@@ -0,0 +1,47 @@
+--- a/drivers/net/wireless/ath/regd.c
++++ b/drivers/net/wireless/ath/regd.c
+@@ -114,10 +114,22 @@ static const struct ieee80211_regdomain
+ )
+ };
+
++static u16 ath_regd_get_eepromRD(struct ath_regulatory *reg)
++{
++ return reg->current_rd & ~WORLDWIDE_ROAMING_FLAG;
++}
++
++static bool is_default_regd(struct ath_regulatory *reg)
++{
++ return ath_regd_get_eepromRD(reg) == CTRY_DEFAULT;
++}
++
+ static bool dynamic_country_user_possible(struct ath_regulatory *reg)
+ {
+ if (config_enabled(CPTCFG_ATH_REG_DYNAMIC_USER_CERT_TESTING))
+ return true;
++ if (is_default_regd(reg))
++ return true;
+
+ switch (reg->country_code) {
+ case CTRY_UNITED_STATES:
+@@ -202,11 +214,6 @@ static inline bool is_wwr_sku(u16 regd)
+ (regd == WORLD));
+ }
+
+-static u16 ath_regd_get_eepromRD(struct ath_regulatory *reg)
+-{
+- return reg->current_rd & ~WORLDWIDE_ROAMING_FLAG;
+-}
+-
+ bool ath_is_world_regd(struct ath_regulatory *reg)
+ {
+ return is_wwr_sku(ath_regd_get_eepromRD(reg));
+@@ -650,6 +657,9 @@ ath_regd_init_wiphy(struct ath_regulator
+ return 0;
+ #endif
+
++ if (is_default_regd(reg))
++ return 0;
++
+ wiphy->regulatory_flags |= REGULATORY_STRICT_REG |
+ REGULATORY_CUSTOM_REG;
+