void ath6kl_mangle_mac_address(struct ath6kl *ar, u8 locally_administered_bit) { u8 *ptr_mac; int i, ret; u8 *macbuf; switch (ar->target_type) { case TARGET_TYPE_AR6003: ptr_mac = ar->fw_board + AR6003_MAC_ADDRESS_OFFSET; break; case TARGET_TYPE_AR6004: ptr_mac = ar->fw_board + AR6004_MAC_ADDRESS_OFFSET; break; default: ath6kl_err("Invalid Target Type\n"); return; } /* #if 0 mac address issue - It sometimes changed macaddress */ ath6kl_dbg(ATH6KL_DBG_BOOT, "MAC from EEPROM %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]); /* #endif */ ret = ath6kl_fetch_nvmac_info(ar); if (ret) { ath6kl_err("MAC address nvmac file not found\n"); return; } macbuf = kmalloc(ath6kl_softmac_len + 1, GFP_ATOMIC); if (macbuf) { unsigned int softmac[6]; memcpy(macbuf, ath6kl_softmac, ath6kl_softmac_len); macbuf[ath6kl_softmac_len] = '\0'; if (sscanf(macbuf, "%02x:%02x:%02x:%02x:%02x:%02x", &softmac[0], &softmac[1], &softmac[2], &softmac[3], &softmac[4], &softmac[5]) == 6) { for (i = 0; i < 6; ++i) ptr_mac[i] = softmac[i] & 0xff; } ath6kl_dbg(ATH6KL_DBG_BOOT, "MAC from SoftMAC %02X_%02X:%02X\n", ptr_mac[0], ptr_mac[4], ptr_mac[5]); } vfree(ath6kl_softmac); if (locally_administered_bit) ptr_mac[0] |= 0x02; ath6kl_calculate_crc(ar->target_type, ar->fw_board, ar->fw_board_len); }
void ath6kl_mangle_mac_address(struct ath6kl *ar) { u8 *ptr_mac; int i, ret; #ifdef CONFIG_MACH_PX unsigned int softmac[6]; #endif switch (ar->target_type) { case TARGET_TYPE_AR6003: ptr_mac = ar->fw_board + AR6003_MAC_ADDRESS_OFFSET; break; case TARGET_TYPE_AR6004: ptr_mac = ar->fw_board + AR6004_MAC_ADDRESS_OFFSET; break; default: ath6kl_err("Invalid Target Type\n"); return; } #if 0 ath6kl_dbg(ATH6KL_DBG_BOOT, "MAC from EEPROM %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]); #endif #ifdef CONFIG_MACH_PX ret = ath6kl_fetch_nvmac_info(ar); if (ret) { ath6kl_err("MAC address file not found\n"); return; } if (sscanf(ath6kl_softmac, "%02x:%02x:%02x:%02x:%02x:%02x", &softmac[0], &softmac[1], &softmac[2], &softmac[3], &softmac[4], &softmac[5])==6) { for (i=0; i<6; ++i) { ptr_mac[i] = softmac[i] & 0xff; } } ath6kl_dbg(ATH6KL_DBG_BOOT, "MAC from SoftMAC %02X_%02X:%02X\n", ptr_mac[0], ptr_mac[4], ptr_mac[5]); vfree(ath6kl_softmac); #else ret = ath6kl_fetch_mac_file(ar); if (ret) { ath6kl_err("MAC address file not found\n"); return; } for (i = 0; i < ETH_ALEN; ++i) { ptr_mac[i] = ath6kl_softmac[i] & 0xff; } kfree(ath6kl_softmac); #endif ath6kl_calculate_crc(ar->target_type, ar->fw_board, ar->fw_board_len); }