ath5k: Add 802.11j 4.9GHz channels to allowed channels
authorBruno Randolf <br1@einfach.org>
Wed, 19 Jan 2011 09:20:57 +0000 (18:20 +0900)
committerJohn W. Linville <linville@tuxdriver.com>
Fri, 21 Jan 2011 20:35:46 +0000 (15:35 -0500)
Add the 802.11j (20MHz channel width) channels to the allowed channels. This
still does not enable 802.11j in ath5k since these frequencies are out of the
configured range. A later patch will deal with that.

Signed-off-by: Bruno Randolf <br1@einfach.org>
Acked-by: Bob Copeland <me@bobcopeland.com>
Acked-by: Nick Kossifidis <mickflemm@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/ath/ath5k/base.c

index 6ff30d3..2de8e80 100644 (file)
@@ -244,15 +244,21 @@ static int ath5k_reg_notifier(struct wiphy *wiphy, struct regulatory_request *re
 /*
  * Returns true for the channel numbers used without all_channels modparam.
  */
-static bool ath5k_is_standard_channel(short chan)
+static bool ath5k_is_standard_channel(short chan, enum ieee80211_band band)
 {
-       return ((chan <= 14) ||
-               /* UNII 1,2 */
-               ((chan & 3) == 0 && chan >= 36 && chan <= 64) ||
+       if (band == IEEE80211_BAND_2GHZ && chan <= 14)
+               return true;
+
+       return  /* UNII 1,2 */
+               (((chan & 3) == 0 && chan >= 36 && chan <= 64) ||
                /* midband */
                ((chan & 3) == 0 && chan >= 100 && chan <= 140) ||
                /* UNII-3 */
-               ((chan & 3) == 1 && chan >= 149 && chan <= 165));
+               ((chan & 3) == 1 && chan >= 149 && chan <= 165) ||
+               /* 802.11j 5.030-5.080 GHz (20MHz) */
+               (chan == 8 || chan == 12 || chan == 16) ||
+               /* 802.11j 4.9GHz (20MHz) */
+               (chan == 184 || chan == 188 || chan == 192 || chan == 196));
 }
 
 static unsigned int
@@ -296,7 +302,8 @@ ath5k_setup_channels(struct ath5k_hw *ah,
                if (!ath5k_channel_ok(ah, freq, chfreq))
                        continue;
 
-               if (!modparam_all_channels && !ath5k_is_standard_channel(ch))
+               if (!modparam_all_channels &&
+                   !ath5k_is_standard_channel(ch, band))
                        continue;
 
                /* Write channel info and increment counter */