2012-07-18 00:15:34

by Luis R. Rodriguez

[permalink] [raw]
Subject: [RFC v2] ath: add feature to enable cell base station regulatory hints

From: "Luis R. Rodriguez" <[email protected]>

This enables the capability to enable cellular base station
regulatory hint support to ath5k, ath9k, ath9k_htc and carl9170.

Signed-off-by: Luis R. Rodriguez <[email protected]>
---

This adds a URL for documentation / reference. Other drivers
should consider doing the same.

drivers/net/wireless/ath/Kconfig | 18 ++++++++++++++++++
drivers/net/wireless/ath/regd.c | 12 ++++++++++++
2 files changed, 30 insertions(+)

diff --git a/drivers/net/wireless/ath/Kconfig b/drivers/net/wireless/ath/Kconfig
index 0960224..99f1f5b 100644
--- a/drivers/net/wireless/ath/Kconfig
+++ b/drivers/net/wireless/ath/Kconfig
@@ -22,6 +22,24 @@ config ATH_DEBUG
Say Y, if you want to debug atheros wireless drivers.
Right now only ath9k makes use of this.

+config ATH_CELL_STATION_HINT
+ bool "Atheros common cell base station hint support"
+ depends on (ATH9K || ATH9K_HTC || ATH5K || CARL9170)
+ depends on CFG80211_CERTIFICATION_ONUS
+ default n
+ ---help---
+ You should disable this feature unless you are a system
+ integrator and want to enable cellular base station
+ regulatory hint support onto either or these drivers:
+ ath5k, ath9k, ath9k_htc, carl9170. You should disable
+ this feature unless you are building a specific system
+ you are providing complete oversight over and are willing
+ and able to test regulatory compliance for it.
+
+ For more details refer to:
+
+ http://wireless.kernel.org/en/developers/Regulatory/processing_rules#Cellular_base_station_regulatory_hints
+
source "drivers/net/wireless/ath/ath5k/Kconfig"
source "drivers/net/wireless/ath/ath9k/Kconfig"
source "drivers/net/wireless/ath/carl9170/Kconfig"
diff --git a/drivers/net/wireless/ath/regd.c b/drivers/net/wireless/ath/regd.c
index d816980..6751533 100644
--- a/drivers/net/wireless/ath/regd.c
+++ b/drivers/net/wireless/ath/regd.c
@@ -504,6 +504,17 @@ ath_get_regpair(int regdmn)
return NULL;
}

+#ifdef CONFIG_ATH_CELL_STATION_HINT
+static void ath_regd_features(struct wiphy *wiphy)
+{
+ wiphy->features |= NL80211_FEATURE_CELL_BASE_REG_HINTS;
+}
+#else
+static void ath_regd_features(struct wiphy *wiphy)
+{
+}
+#endif
+
static int
ath_regd_init_wiphy(struct ath_regulatory *reg,
struct wiphy *wiphy,
@@ -514,6 +525,7 @@ ath_regd_init_wiphy(struct ath_regulatory *reg,

wiphy->reg_notifier = reg_notifier;
wiphy->flags |= WIPHY_FLAG_STRICT_REGULATORY;
+ ath_regd_features(wiphy);

if (ath_is_world_regd(reg)) {
/*
--
1.7.10.rc1.22.gf5241