From d1ec33fe546995c3596bd579dbbc838ef055c6bf Mon Sep 17 00:00:00 2001 From: Gabor Juhos Date: Sat, 28 Nov 2009 18:01:03 +0000 Subject: mac80211: use mac address from platform data if present on ath9k git-svn-id: svn://svn.openwrt.org/openwrt/trunk@18584 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- ...k-override-mac-address-from-platform-data.patch | 53 ++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 package/mac80211/patches/407-ath9k-override-mac-address-from-platform-data.patch (limited to 'package/mac80211/patches/407-ath9k-override-mac-address-from-platform-data.patch') 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 */ -- cgit v1.2.3