diff options
Diffstat (limited to 'drivers/net/wireless/iwlwifi/mvm/scan.c')
-rw-r--r-- | drivers/net/wireless/iwlwifi/mvm/scan.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/drivers/net/wireless/iwlwifi/mvm/scan.c b/drivers/net/wireless/iwlwifi/mvm/scan.c index 9a7ab8495300..621fb71f282a 100644 --- a/drivers/net/wireless/iwlwifi/mvm/scan.c +++ b/drivers/net/wireless/iwlwifi/mvm/scan.c | |||
@@ -394,6 +394,11 @@ static bool iwl_mvm_scan_abort_notif(struct iwl_notif_wait_data *notif_wait, | |||
394 | return false; | 394 | return false; |
395 | } | 395 | } |
396 | 396 | ||
397 | /* | ||
398 | * If scan cannot be aborted, it means that we had a | ||
399 | * SCAN_COMPLETE_NOTIFICATION in the pipe and it called | ||
400 | * ieee80211_scan_completed already. | ||
401 | */ | ||
397 | IWL_DEBUG_SCAN(mvm, "Scan cannot be aborted, exit now: %d\n", | 402 | IWL_DEBUG_SCAN(mvm, "Scan cannot be aborted, exit now: %d\n", |
398 | *resp); | 403 | *resp); |
399 | return true; | 404 | return true; |
@@ -417,14 +422,19 @@ void iwl_mvm_cancel_scan(struct iwl_mvm *mvm) | |||
417 | SCAN_COMPLETE_NOTIFICATION }; | 422 | SCAN_COMPLETE_NOTIFICATION }; |
418 | int ret; | 423 | int ret; |
419 | 424 | ||
425 | if (mvm->scan_status == IWL_MVM_SCAN_NONE) | ||
426 | return; | ||
427 | |||
420 | iwl_init_notification_wait(&mvm->notif_wait, &wait_scan_abort, | 428 | iwl_init_notification_wait(&mvm->notif_wait, &wait_scan_abort, |
421 | scan_abort_notif, | 429 | scan_abort_notif, |
422 | ARRAY_SIZE(scan_abort_notif), | 430 | ARRAY_SIZE(scan_abort_notif), |
423 | iwl_mvm_scan_abort_notif, NULL); | 431 | iwl_mvm_scan_abort_notif, NULL); |
424 | 432 | ||
425 | ret = iwl_mvm_send_cmd_pdu(mvm, SCAN_ABORT_CMD, CMD_SYNC, 0, NULL); | 433 | ret = iwl_mvm_send_cmd_pdu(mvm, SCAN_ABORT_CMD, |
434 | CMD_SYNC | CMD_SEND_IN_RFKILL, 0, NULL); | ||
426 | if (ret) { | 435 | if (ret) { |
427 | IWL_ERR(mvm, "Couldn't send SCAN_ABORT_CMD: %d\n", ret); | 436 | IWL_ERR(mvm, "Couldn't send SCAN_ABORT_CMD: %d\n", ret); |
437 | /* mac80211's state will be cleaned in the fw_restart flow */ | ||
428 | goto out_remove_notif; | 438 | goto out_remove_notif; |
429 | } | 439 | } |
430 | 440 | ||