diff --git a/ar6000/Makefile b/ar6000/Makefile index 352e7a6..a81014e 100644 --- a/ar6000/Makefile +++ b/ar6000/Makefile @@ -13,6 +13,8 @@ ccflags-y += -DCONFIG_CFG80211_DEFAULT_PS ccflags-y += -DCONFIG_CFG80211_WEXT ccflags-y += -DCONFIG_NL80211_TESTMODE +ccflags-y += -DFIX_HUAWEI_BUTCHERING + ATH_ROOT = $(src)/.. ccflags-y += -I$(ATH_ROOT)/include diff --git a/ar6000/softmac.c b/ar6000/softmac.c index 9588c89..39d7834 100644 --- a/ar6000/softmac.c +++ b/ar6000/softmac.c @@ -138,7 +138,7 @@ void ath6kl_mangle_mac_address(struct ath6kl *ar, u8 locally_administered_bit) { u8 *ptr_mac; int i, ret; -#ifdef CONFIG_MACH_PX +#if defined(CONFIG_MACH_PX) || defined(FIX_HUAWEI_BUTCHERING) unsigned int softmac[6]; #endif @@ -162,8 +162,12 @@ void ath6kl_mangle_mac_address(struct ath6kl *ar, u8 locally_administered_bit) ptr_mac[0], ptr_mac[1], ptr_mac[2], ptr_mac[3], ptr_mac[4], ptr_mac[5]); -#ifdef CONFIG_MACH_PX +#if defined(CONFIG_MACH_PX) || defined(FIX_HUAWEI_BUTCHERING) +#ifdef FIX_HUAWEI_BUTCHERING + ret = ath6kl_fetch_mac_file(ar); +#else ret = ath6kl_fetch_nvmac_info(ar); +#endif if (ret) { ath6kl_err("MAC address file not found\n"); @@ -189,7 +193,11 @@ void ath6kl_mangle_mac_address(struct ath6kl *ar, u8 locally_administered_bit) printk("MAC from ptr_mac %02X:%02X:%02X:%02X:%02X:%02X\n", ptr_mac[0], ptr_mac[1], ptr_mac[2], ptr_mac[3], ptr_mac[4], ptr_mac[5]); +#ifdef FIX_HUAWEI_BUTCHERING + kfree(ath6kl_softmac); +#else vfree(ath6kl_softmac); +#endif #else ret = ath6kl_fetch_mac_file(ar); if (ret) {