ath6kl: Store hw mac address in struct ath6kl
authorVasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com>
Tue, 25 Oct 2011 14:04:18 +0000 (19:34 +0530)
committerKalle Valo <kvalo@qca.qualcomm.com>
Fri, 11 Nov 2011 10:58:50 +0000 (12:58 +0200)
WMI ready event gives the mac address, cache this
mac address in struct ath6kl so that it can be used to
compute the mac address for other vif in case of multi vif.

Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
drivers/net/wireless/ath/ath6kl/core.h
drivers/net/wireless/ath/ath6kl/init.c
drivers/net/wireless/ath/ath6kl/main.c

index 466f6e17154c67c74ff4d779a404f09ed8d85568..747e5a70ba5a6ff8d7c223af4c098dd7dcd7faf6 100644 (file)
@@ -492,6 +492,7 @@ struct ath6kl {
        struct wireless_dev *wdev;
        enum wlan_low_pwr_state wlan_pwr_state;
        struct wmi_scan_params_cmd sc_params;
+       u8 mac_addr[ETH_ALEN];
 #define AR_MCAST_FILTER_MAC_ADDR_SIZE  4
        struct {
                void *rx_report;
index 05d54bca3d9dc3cbad33915415e7b6989dd7dc6e..99e4a494143cc453f45de874ec22e090bc858e0c 100644 (file)
@@ -1504,8 +1504,16 @@ static int ath6kl_init(struct ath6kl *ar)
                            WIPHY_FLAG_HAVE_AP_SME;
 
        status = ath6kl_target_config_wlan_params(ar);
-       if (!status)
-               goto ath6kl_init_done;
+       if (status)
+               goto err_htc_stop;
+
+       /*
+        * Set mac address which is received in ready event
+        * FIXME: Move to ath6kl_interface_add()
+        */
+       memcpy(ndev->dev_addr, ar->mac_addr, ETH_ALEN);
+
+       return status;
 
 err_htc_stop:
        ath6kl_htc_stop(ar->htc_target);
index cc3e3c808657816e7b910d5960ce87a3a297e6b4..6bf94025221a42c506b31044595723e73a02f6be 100644 (file)
@@ -923,11 +923,10 @@ static const char *get_hw_id_string(u32 id)
 void ath6kl_ready_event(void *devt, u8 *datap, u32 sw_ver, u32 abi_ver)
 {
        struct ath6kl *ar = devt;
-       struct net_device *dev = ar->vif->ndev;
 
-       memcpy(dev->dev_addr, datap, ETH_ALEN);
+       memcpy(ar->mac_addr, datap, ETH_ALEN);
        ath6kl_dbg(ATH6KL_DBG_TRC, "%s: mac addr = %pM\n",
-                  __func__, dev->dev_addr);
+                  __func__, ar->mac_addr);
 
        ar->version.wlan_ver = sw_ver;
        ar->version.abi_ver = abi_ver;