From becedde3f1ec42dc99dce12c34c3e0f562f7b4d9 Mon Sep 17 00:00:00 2001 From: Gabor Juhos Date: Sat, 28 Nov 2009 18:01:03 +0000 Subject: [PATCH] mac80211: use mac address from platform data if present on ath9k SVN-Revision: 18584 --- package/mac80211/Makefile | 2 +- ...rride-mac-address-from-platform-data.patch | 53 +++++++++++++++++++ 2 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 package/mac80211/patches/407-ath9k-override-mac-address-from-platform-data.patch 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 + #include ++#include + #include + ++#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 */