--- a/ath/if_ath.c +++ b/ath/if_ath.c @@ -63,6 +63,8 @@ #include #include #include +#include +#include #include #include "if_ethersubr.h" /* for ETHER_IS_MULTICAST */ @@ -587,6 +589,10 @@ ath_attach(u_int16_t devid, struct net_d unsigned int i; int autocreatemode = -1; u_int8_t csz; +#ifdef ATH_PCI + struct ath5k_platform_data *pdata; + struct pci_dev *pdev; +#endif sc->devid = devid; #ifdef AR_DEBUG @@ -648,6 +654,13 @@ ath_attach(u_int16_t devid, struct net_d } sc->sc_ah = ah; +#ifdef ATH_PCI + /* set MAC from ath_platform_data */ + pdev = (struct pci_dev *)sc->sc_bdev; + pdata = pdev->dev.platform_data; + if (pdata && pdata->macaddr) + ath_hal_setmac(ah, pdata->macaddr); +#endif /* WAR for AR7100 PCI bug */ #if defined(CONFIG_ATHEROS_AR71XX) || defined(CONFIG_ATH79) if ((ar_device(sc->devid) >= 5210) && (ar_device(sc->devid) < 5416)) {