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;
 
                            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);
 
 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;