|
@@ -394,6 +394,11 @@ static bool iwl_mvm_scan_abort_notif(struct iwl_notif_wait_data *notif_wait,
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
+ /*
|
|
|
+ * If scan cannot be aborted, it means that we had a
|
|
|
+ * SCAN_COMPLETE_NOTIFICATION in the pipe and it called
|
|
|
+ * ieee80211_scan_completed already.
|
|
|
+ */
|
|
|
IWL_DEBUG_SCAN(mvm, "Scan cannot be aborted, exit now: %d\n",
|
|
|
*resp);
|
|
|
return true;
|
|
@@ -417,14 +422,19 @@ void iwl_mvm_cancel_scan(struct iwl_mvm *mvm)
|
|
|
SCAN_COMPLETE_NOTIFICATION };
|
|
|
int ret;
|
|
|
|
|
|
+ if (mvm->scan_status == IWL_MVM_SCAN_NONE)
|
|
|
+ return;
|
|
|
+
|
|
|
iwl_init_notification_wait(&mvm->notif_wait, &wait_scan_abort,
|
|
|
scan_abort_notif,
|
|
|
ARRAY_SIZE(scan_abort_notif),
|
|
|
iwl_mvm_scan_abort_notif, NULL);
|
|
|
|
|
|
- ret = iwl_mvm_send_cmd_pdu(mvm, SCAN_ABORT_CMD, CMD_SYNC, 0, NULL);
|
|
|
+ ret = iwl_mvm_send_cmd_pdu(mvm, SCAN_ABORT_CMD,
|
|
|
+ CMD_SYNC | CMD_SEND_IN_RFKILL, 0, NULL);
|
|
|
if (ret) {
|
|
|
IWL_ERR(mvm, "Couldn't send SCAN_ABORT_CMD: %d\n", ret);
|
|
|
+ /* mac80211's state will be cleaned in the fw_restart flow */
|
|
|
goto out_remove_notif;
|
|
|
}
|
|
|
|