diff options
Diffstat (limited to 'package')
-rw-r--r-- | package/mac80211/Makefile | 14 | ||||
-rw-r--r-- | package/mac80211/patches/404-ath_regd_optional.patch | 68 |
2 files changed, 82 insertions, 0 deletions
diff --git a/package/mac80211/Makefile b/package/mac80211/Makefile index 1ca2314d64..fe7c191e27 100644 --- a/package/mac80211/Makefile +++ b/package/mac80211/Makefile @@ -270,6 +270,19 @@ define KernelPackage/zd1211rw AUTOLOAD:=$(call AutoLoad,60,zd1211rw) endef +define KernelPackage/ath/config + +config ATH_USER_REGD + bool "Force Atheros drivers to respect the user's regdomain settings" + depends on PACKAGE_kmod-ath + help + Atheros' idea of regulatory handling is that the EEPROM of the card defines + the regulatory limits and the user is only allowed to restrict the settings + even further, even if the country allows frequencies or power levels that + are forbidden by the EEPROM settings. + Select this option if you want the driver to respect the user's decision about + regulatory settings. +endef define KernelPackage/ath $(call KernelPackage/mac80211/Default) @@ -455,6 +468,7 @@ BUILDFLAGS:= \ $(if $(CONFIG_PACKAGE_MAC80211_DEBUGFS),-DCONFIG_MAC80211_DEBUGFS) \ $(if $(CONFIG_PACKAGE_ATH9K_DEBUG),-DCONFIG_ATH9K_DEBUG) \ -D__CONFIG_MAC80211_RC_DEFAULT=minstrel \ + $(if $(CONFIG_ATH_USER_REGD),-DATH_USER_REGD=1) MAKE_OPTS:= \ CROSS_COMPILE="$(KERNEL_CROSS)" \ diff --git a/package/mac80211/patches/404-ath_regd_optional.patch b/package/mac80211/patches/404-ath_regd_optional.patch new file mode 100644 index 0000000000..eb6743152d --- /dev/null +++ b/package/mac80211/patches/404-ath_regd_optional.patch @@ -0,0 +1,68 @@ +--- a/drivers/net/wireless/ath/regd.c ++++ b/drivers/net/wireless/ath/regd.c +@@ -19,6 +19,9 @@ + #include <net/cfg80211.h> + #include <net/mac80211.h> + #include "regd.h" ++ ++#ifndef ATH_USER_REGD ++ + #include "regd_common.h" + + /* +@@ -588,3 +591,5 @@ u32 ath_regd_get_band_ctl(struct ath_reg + } + } + EXPORT_SYMBOL(ath_regd_get_band_ctl); ++ ++#endif +--- a/drivers/net/wireless/ath/regd.h ++++ b/drivers/net/wireless/ath/regd.h +@@ -236,6 +236,41 @@ enum CountryCode { + CTRY_BELGIUM2 = 5002 + }; + ++#ifdef ATH_USER_REGD ++ ++static inline bool ++ath_is_world_regd(struct ath_regulatory *reg) ++{ ++ return true; ++} ++ ++static inline int ++ath_regd_init(struct ath_regulatory *reg, struct wiphy *wiphy, ++ int (*reg_notifier)(struct wiphy *wiphy, ++ struct regulatory_request *request)) ++{ ++ return 0; ++} ++ ++ ++static inline u32 ++ath_regd_get_band_ctl(struct ath_regulatory *reg, ++ enum ieee80211_band band) ++{ ++ return SD_NO_CTL; ++} ++ ++static inline int ++ath_reg_notifier_apply(struct wiphy *wiphy, ++ struct regulatory_request *request, ++ struct ath_regulatory *reg) ++{ ++ return 0; ++} ++ ++ ++#else ++ + bool ath_is_world_regd(struct ath_regulatory *reg); + int ath_regd_init(struct ath_regulatory *reg, struct wiphy *wiphy, + int (*reg_notifier)(struct wiphy *wiphy, +@@ -247,3 +282,5 @@ int ath_reg_notifier_apply(struct wiphy + struct ath_regulatory *reg); + + #endif ++ ++#endif |