diff options
| -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 1ca2314d6..fe7c191e2 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 000000000..eb6743152 --- /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 | 
