diff options
-rw-r--r-- | package/mac80211/Makefile | 2 | ||||
-rw-r--r-- | package/mac80211/patches/407-ath9k-override-mac-address-from-platform-data.patch | 53 |
2 files changed, 54 insertions, 1 deletions
diff --git a/package/mac80211/Makefile b/package/mac80211/Makefile index 5eaf77bdab..4ee955574e 100644 --- a/package/mac80211/Makefile +++ b/package/mac80211/Makefile @@ -11,7 +11,7 @@ include $(INCLUDE_DIR)/kernel.mk PKG_NAME:=mac80211 PKG_VERSION:=2009-11-21 -PKG_RELEASE:=6 +PKG_RELEASE:=7 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/407-ath9k-override-mac-address-from-platform-data.patch b/package/mac80211/patches/407-ath9k-override-mac-address-from-platform-data.patch new file mode 100644 index 0000000000..e4aeab5cef --- /dev/null +++ b/package/mac80211/patches/407-ath9k-override-mac-address-from-platform-data.patch @@ -0,0 +1,53 @@ +--- a/drivers/net/wireless/ath/ath9k/hw.c ++++ b/drivers/net/wireless/ath/ath9k/hw.c +@@ -16,8 +16,10 @@ + + #include <linux/io.h> + #include <linux/etherdevice.h> ++#include <linux/ath9k_platform.h> + #include <asm/unaligned.h> + ++#include "ath9k.h" + #include "hw.h" + #include "rc.h" + #include "initvals.h" +@@ -472,17 +474,23 @@ static int ath9k_hw_rf_claim(struct ath_ + static int ath9k_hw_init_macaddr(struct ath_hw *ah) + { + struct ath_common *common = ath9k_hw_common(ah); ++ struct ath_softc *sc = (struct ath_softc *) common->priv; ++ struct ath9k_platform_data *pdata = sc->dev->platform_data; + u32 sum; + int i; + u16 eeval; + + sum = 0; +- for (i = 0; i < 3; i++) { +- eeval = ah->eep_ops->get_eeprom(ah, AR_EEPROM_MAC(i)); +- sum += eeval; +- common->macaddr[2 * i] = eeval >> 8; +- common->macaddr[2 * i + 1] = eeval & 0xff; +- } ++ if (pdata && pdata->macaddr) ++ memcpy(common->macaddr, pdata->macaddr, ETH_ALEN); ++ else ++ for (i = 0; i < 3; i++) { ++ eeval = ah->eep_ops->get_eeprom(ah, AR_EEPROM_MAC(i)); ++ sum += eeval; ++ common->macaddr[2 * i] = eeval >> 8; ++ common->macaddr[2 * i + 1] = eeval & 0xff; ++ } ++ + if (!is_valid_ether_addr(common->macaddr)) { + DECLARE_MAC_BUF(macbuf); + +--- a/include/linux/ath9k_platform.h ++++ b/include/linux/ath9k_platform.h +@@ -23,6 +23,7 @@ + + struct ath9k_platform_data { + u16 eeprom_data[ATH9K_PLAT_EEP_MAX_WORDS]; ++ u8 *macaddr; + }; + + #endif /* _LINUX_ATH9K_PLATFORM_H */ |