ath: relax regulatory rules for default regd code
[openwrt/staging/lynxis.git] / package / kernel / mac80211 / patches / 406-ath_relax_default_regd.patch
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 (file)
index 0000000..83ec441
--- /dev/null
@@ -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;