mac80211: update ath9k patch
authorGabor Juhos <juhosg@openwrt.org>
Fri, 27 Nov 2009 21:21:14 +0000 (21:21 +0000)
committerGabor Juhos <juhosg@openwrt.org>
Fri, 27 Nov 2009 21:21:14 +0000 (21:21 +0000)
SVN-Revision: 18563

package/mac80211/Makefile
package/mac80211/patches/550-ath9k-enable-2GHz-band-only-if-the-device-supports.patch

index 62903e26652cbcbc49e854ec690b6064d92b4482..6fb2b23141ba275a93f89b780c6528c098b62703 100644 (file)
@@ -11,7 +11,7 @@ include $(INCLUDE_DIR)/kernel.mk
 PKG_NAME:=mac80211
 
 PKG_VERSION:=2009-11-21
-PKG_RELEASE:=2
+PKG_RELEASE:=3
 PKG_SOURCE_URL:= \
        http://www.orbit-lab.org/kernel/compat-wireless-2.6/2009/11 \
        http://wireless.kernel.org/download/compat-wireless-2.6
index dca58ed1f6f1fd417dec8994739f8af684f0a837..ed07822e7cc6112254ed23e661ac98deaa06d213 100644 (file)
@@ -1,3 +1,59 @@
+--- a/drivers/net/wireless/ath/ath9k/hw.c
++++ b/drivers/net/wireless/ath/ath9k/hw.c
+@@ -979,7 +979,10 @@ int ath9k_hw_init(struct ath_hw *ah)
+               return r;
+       ath9k_hw_init_mode_gain_regs(ah);
+-      ath9k_hw_fill_cap_info(ah);
++      r = ath9k_hw_fill_cap_info(ah);
++      if (r)
++              return r;
++
+       ath9k_hw_init_11a_eeprom_fix(ah);
+       r = ath9k_hw_init_macaddr(ah);
+@@ -3115,7 +3118,7 @@ EXPORT_SYMBOL(ath9k_hw_set_sta_beacon_ti
+ /* HW Capabilities */
+ /*******************/
+-void ath9k_hw_fill_cap_info(struct ath_hw *ah)
++int ath9k_hw_fill_cap_info(struct ath_hw *ah)
+ {
+       struct ath9k_hw_capabilities *pCap = &ah->caps;
+       struct ath_regulatory *regulatory = ath9k_hw_regulatory(ah);
+@@ -3146,6 +3149,12 @@ void ath9k_hw_fill_cap_info(struct ath_h
+       }
+       eeval = ah->eep_ops->get_eeprom(ah, EEP_OP_MODE);
++      if ((eeval & (AR5416_OPFLAGS_11G | AR5416_OPFLAGS_11A)) == 0) {
++              ath_print(common, ATH_DBG_FATAL,
++                        "no band has been marked as supported in EEPROM.\n");
++              return -EINVAL;
++      }
++
+       bitmap_zero(pCap->wireless_modes, ATH9K_MODE_MAX);
+       if (eeval & AR5416_OPFLAGS_11A) {
+@@ -3305,6 +3314,8 @@ void ath9k_hw_fill_cap_info(struct ath_h
+       } else {
+               btcoex_hw->scheme = ATH_BTCOEX_CFG_NONE;
+       }
++
++      return 0;
+ }
+ bool ath9k_hw_getcapability(struct ath_hw *ah, enum ath9k_capability_type type,
+--- a/drivers/net/wireless/ath/ath9k/hw.h
++++ b/drivers/net/wireless/ath/ath9k/hw.h
+@@ -619,7 +619,7 @@ void ath9k_hw_detach(struct ath_hw *ah);
+ int ath9k_hw_init(struct ath_hw *ah);
+ int ath9k_hw_reset(struct ath_hw *ah, struct ath9k_channel *chan,
+                  bool bChannelChange);
+-void ath9k_hw_fill_cap_info(struct ath_hw *ah);
++int ath9k_hw_fill_cap_info(struct ath_hw *ah);
+ bool ath9k_hw_getcapability(struct ath_hw *ah, enum ath9k_capability_type type,
+                           u32 capability, u32 *result);
+ bool ath9k_hw_setcapability(struct ath_hw *ah, enum ath9k_capability_type type,
 --- 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