package/mac80211: disable 2GHz band for 5GHz only devices
authorGabor Juhos <juhosg@openwrt.org>
Wed, 25 Nov 2009 20:35:58 +0000 (20:35 +0000)
committerGabor Juhos <juhosg@openwrt.org>
Wed, 25 Nov 2009 20:35:58 +0000 (20:35 +0000)
SVN-Revision: 18537

package/mac80211/Makefile
package/mac80211/patches/550-ath9k-enable-2GHz-band-only-if-the-device-supports.patch [new file with mode: 0644]

index 2da34badac870cdcaa1ca205d1beb28168c22751..62903e26652cbcbc49e854ec690b6064d92b4482 100644 (file)
@@ -11,7 +11,7 @@ include $(INCLUDE_DIR)/kernel.mk
 PKG_NAME:=mac80211
 
 PKG_VERSION:=2009-11-21
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 PKG_SOURCE_URL:= \
        http://www.orbit-lab.org/kernel/compat-wireless-2.6/2009/11 \
        http://wireless.kernel.org/download/compat-wireless-2.6
diff --git a/package/mac80211/patches/550-ath9k-enable-2GHz-band-only-if-the-device-supports.patch b/package/mac80211/patches/550-ath9k-enable-2GHz-band-only-if-the-device-supports.patch
new file mode 100644 (file)
index 0000000..dca58ed
--- /dev/null
@@ -0,0 +1,52 @@
+--- a/drivers/net/wireless/ath/ath9k/main.c
++++ b/drivers/net/wireless/ath/ath9k/main.c
+@@ -1805,13 +1805,15 @@ static int ath_init_softc(u16 devid, str
+       /* setup channels and rates */
+-      sc->sbands[IEEE80211_BAND_2GHZ].channels = ath9k_2ghz_chantable;
+-      sc->sbands[IEEE80211_BAND_2GHZ].band = IEEE80211_BAND_2GHZ;
+-      sc->sbands[IEEE80211_BAND_2GHZ].n_channels =
+-              ARRAY_SIZE(ath9k_2ghz_chantable);
+-      sc->sbands[IEEE80211_BAND_2GHZ].bitrates = ath9k_legacy_rates;
+-      sc->sbands[IEEE80211_BAND_2GHZ].n_bitrates =
+-              ARRAY_SIZE(ath9k_legacy_rates);
++      if (test_bit(ATH9K_MODE_11G, sc->sc_ah->caps.wireless_modes)) {
++              sc->sbands[IEEE80211_BAND_2GHZ].channels = ath9k_2ghz_chantable;
++              sc->sbands[IEEE80211_BAND_2GHZ].band = IEEE80211_BAND_2GHZ;
++              sc->sbands[IEEE80211_BAND_2GHZ].n_channels =
++                      ARRAY_SIZE(ath9k_2ghz_chantable);
++              sc->sbands[IEEE80211_BAND_2GHZ].bitrates = ath9k_legacy_rates;
++              sc->sbands[IEEE80211_BAND_2GHZ].n_bitrates =
++                      ARRAY_SIZE(ath9k_legacy_rates);
++      }
+       if (test_bit(ATH9K_MODE_11A, sc->sc_ah->caps.wireless_modes)) {
+               sc->sbands[IEEE80211_BAND_5GHZ].channels = ath9k_5ghz_chantable;
+@@ -1886,8 +1888,9 @@ void ath_set_hw_capab(struct ath_softc *
+       hw->rate_control_algorithm = "ath9k_rate_control";
+-      hw->wiphy->bands[IEEE80211_BAND_2GHZ] =
+-              &sc->sbands[IEEE80211_BAND_2GHZ];
++      if (test_bit(ATH9K_MODE_11G, sc->sc_ah->caps.wireless_modes))
++              hw->wiphy->bands[IEEE80211_BAND_2GHZ] =
++                      &sc->sbands[IEEE80211_BAND_2GHZ];
+       if (test_bit(ATH9K_MODE_11A, sc->sc_ah->caps.wireless_modes))
+               hw->wiphy->bands[IEEE80211_BAND_5GHZ] =
+                       &sc->sbands[IEEE80211_BAND_5GHZ];
+@@ -1926,9 +1929,12 @@ int ath_init_device(u16 devid, struct at
+       reg = &common->regulatory;
+       if (ah->caps.hw_caps & ATH9K_HW_CAP_HT) {
+-              setup_ht_cap(sc, &sc->sbands[IEEE80211_BAND_2GHZ].ht_cap);
++              if (test_bit(ATH9K_MODE_11G, ah->caps.wireless_modes))
++                      setup_ht_cap(sc,
++                                   &sc->sbands[IEEE80211_BAND_2GHZ].ht_cap);
+               if (test_bit(ATH9K_MODE_11A, ah->caps.wireless_modes))
+-                      setup_ht_cap(sc, &sc->sbands[IEEE80211_BAND_5GHZ].ht_cap);
++                      setup_ht_cap(sc,
++                                   &sc->sbands[IEEE80211_BAND_5GHZ].ht_cap);
+       }
+       /* initialize tx/rx engine */