return ret;
 }
 
-void ath6kl_cfg80211_scan_complete_event(struct ath6kl_vif *vif, int status)
+void ath6kl_cfg80211_scan_complete_event(struct ath6kl_vif *vif, bool aborted)
 {
        struct ath6kl *ar = vif->ar;
-       bool aborted;
        int i;
 
-       ath6kl_dbg(ATH6KL_DBG_WLAN_CFG, "%s: status %d\n", __func__, status);
+       ath6kl_dbg(ATH6KL_DBG_WLAN_CFG, "%s: status%s\n", __func__,
+                  aborted ? " aborted" : "");
 
        if (!vif->scan_req)
                return;
 
-       if ((status == -ECANCELED) || (status == -EBUSY)) {
-               aborted = true;
+       if (aborted)
                goto out;
-       }
-
-       aborted = false;
 
        if (vif->scan_req->n_ssids && vif->scan_req->ssids[0].ssid_len) {
                for (i = 0; i < vif->scan_req->n_ssids; i++) {
 
 struct ath6kl *ath6kl_core_alloc(struct device *dev);
 void ath6kl_deinit_ieee80211_hw(struct ath6kl *ar);
 
-void ath6kl_cfg80211_scan_complete_event(struct ath6kl_vif *vif, int status);
+void ath6kl_cfg80211_scan_complete_event(struct ath6kl_vif *vif, bool aborted);
 
 void ath6kl_cfg80211_connect_event(struct ath6kl_vif *vif, u16 channel,
                                   u8 *bssid, u16 listen_intvl,
 
                printk(KERN_WARNING "ath6kl: failed to disable scan "
                       "during suspend\n");
 
-       ath6kl_cfg80211_scan_complete_event(vif, -ECANCELED);
+       ath6kl_cfg80211_scan_complete_event(vif, true);
 
        /* save the current power mode before enabling power save */
        ar->wmi->saved_pwr_mode = ar->wmi->pwr_mode;
 void ath6kl_scan_complete_evt(struct ath6kl_vif *vif, int status)
 {
        struct ath6kl *ar = vif->ar;
+       bool aborted = false;
 
-       ath6kl_cfg80211_scan_complete_event(vif, status);
+       if (status != WMI_SCAN_STATUS_SUCCESS)
+               aborted = true;
+
+       ath6kl_cfg80211_scan_complete_event(vif, aborted);
 
        if (!ar->usr_bss_filter) {
                clear_bit(CLEAR_BSSFILTER_ON_BEACON, &vif->flags);
 
        }
 
-       ath6kl_cfg80211_scan_complete_event(vif, -ECANCELED);
+       ath6kl_cfg80211_scan_complete_event(vif, true);
 
        /* FIXME: how to handle multi vif support? */
        ret = ath6kl_init_hw_stop(ar);
 
        u8 is_mcast;
 } __packed;
 
+enum wmi_scan_status {
+       WMI_SCAN_STATUS_SUCCESS = 0,
+};
+
 /* WMI_SCAN_COMPLETE_EVENTID */
 struct wmi_scan_complete_event {
        a_sle32 status;