aboutsummaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorBob Copeland <me@bobcopeland.com>2009-03-30 22:30:27 -0400
committerJohn W. Linville <linville@tuxdriver.com>2009-04-22 16:54:37 -0400
commitfc2ada30cacc28c96eabc598d3ef294338d8dcf5 (patch)
tree7bf4c3c16c763a881937c2faf5b17d9d6a238ef8 /drivers
parent55a3757a5703ebc58612ffbfbcb7f193dae17df7 (diff)
ath9k: separate ath9k specific code from ath9k_regd_get_ctl()
Until ath5k and ath9k share common channel structures, they will have to implement their own get_ctl() function. Split out the portion that only relies on the current band and reg domain so that it can be common code. Signed-off-by: Bob Copeland <me@bobcopeland.com> Acked-by: Luis R. Rodriguez <lrodriguez@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/wireless/ath9k/regd.c36
1 files changed, 23 insertions, 13 deletions
diff --git a/drivers/net/wireless/ath9k/regd.c b/drivers/net/wireless/ath9k/regd.c
index 4ca62510229..43ed35ba95c 100644
--- a/drivers/net/wireless/ath9k/regd.c
+++ b/drivers/net/wireless/ath9k/regd.c
@@ -16,6 +16,7 @@
#include <linux/kernel.h>
#include <linux/slab.h>
+#include <net/wireless.h>
#include "ath9k.h"
#include "regd_common.h"
@@ -492,28 +493,37 @@ int ath9k_regd_init(struct ath_hw *ah)
return 0;
}
-u32 ath9k_regd_get_ctl(struct ath_hw *ah, struct ath9k_channel *chan)
+static
+u32 ath9k_regd_get_band_ctl(struct ath_hw *ah, enum ieee80211_band band)
{
- u32 ctl = NO_CTL;
-
if (!ah->regulatory.regpair ||
(ah->regulatory.country_code == CTRY_DEFAULT &&
is_wwr_sku(ath9k_regd_get_eepromRD(ah)))) {
- if (IS_CHAN_B(chan))
- ctl = SD_NO_CTL | CTL_11B;
- else if (IS_CHAN_G(chan))
- ctl = SD_NO_CTL | CTL_11G;
- else
- ctl = SD_NO_CTL | CTL_11A;
- return ctl;
+ return SD_NO_CTL;
+ }
+
+ switch (band) {
+ case IEEE80211_BAND_2GHZ:
+ return ah->regulatory.regpair->reg_2ghz_ctl;
+ case IEEE80211_BAND_5GHZ:
+ return ah->regulatory.regpair->reg_5ghz_ctl;
+ default:
+ return NO_CTL;
}
+ return NO_CTL;
+}
+
+u32 ath9k_regd_get_ctl(struct ath_hw *ah, struct ath9k_channel *chan)
+{
+ u32 ctl = ath9k_regd_get_band_ctl(ah, chan->chan->band);
+
if (IS_CHAN_B(chan))
- ctl = ah->regulatory.regpair->reg_2ghz_ctl | CTL_11B;
+ ctl |= CTL_11B;
else if (IS_CHAN_G(chan))
- ctl = ah->regulatory.regpair->reg_2ghz_ctl | CTL_11G;
+ ctl |= CTL_11G;
else
- ctl = ah->regulatory.regpair->reg_5ghz_ctl | CTL_11A;
+ ctl |= CTL_11A;
return ctl;
}