2012-07-17 22:28:00

by Luis R. Rodriguez

[permalink] [raw]
Subject: [RFC] 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]>
---

Sending as RFC given that I'd like review from Sujith and
Christian on the firmware side of things on ath9k_htc
and carl9170. I am pretty certain both allow us to do
all regulatory control on the driver and becuase of this
we should be able to support this feature, however I'd
like to be sure. Other drivers that have this regulatory
control in firmware require quite a bit of testing /
synching, as with ath6kl -- but we should be fine here.

We don't enable this by default as we don't want all
Linux distributions to be enabling CFG80211_CERTIFICATION_ONUS
sporadically, instead this must be done by system integrators
on case by case basis only when they are targeting supporting
and testing these features.

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

diff --git a/drivers/net/wireless/ath/Kconfig b/drivers/net/wireless/ath/Kconfig
index 0960224..6d4f581 100644
--- a/drivers/net/wireless/ath/Kconfig
+++ b/drivers/net/wireless/ath/Kconfig
@@ -22,6 +22,20 @@ 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.
+
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