diff options
Diffstat (limited to 'drivers/net/wireless/intel/iwlwifi/mvm/scan.c')
-rw-r--r-- | drivers/net/wireless/intel/iwlwifi/mvm/scan.c | 37 |
1 files changed, 29 insertions, 8 deletions
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/scan.c b/drivers/net/wireless/intel/iwlwifi/mvm/scan.c index e78fc567ff7d..1cac10c5d818 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/scan.c +++ b/drivers/net/wireless/intel/iwlwifi/mvm/scan.c | |||
@@ -391,13 +391,16 @@ void iwl_mvm_rx_lmac_scan_complete_notif(struct iwl_mvm *mvm, | |||
391 | ieee80211_sched_scan_stopped(mvm->hw); | 391 | ieee80211_sched_scan_stopped(mvm->hw); |
392 | mvm->sched_scan_pass_all = SCHED_SCAN_PASS_ALL_DISABLED; | 392 | mvm->sched_scan_pass_all = SCHED_SCAN_PASS_ALL_DISABLED; |
393 | } else if (mvm->scan_status & IWL_MVM_SCAN_REGULAR) { | 393 | } else if (mvm->scan_status & IWL_MVM_SCAN_REGULAR) { |
394 | struct cfg80211_scan_info info = { | ||
395 | .aborted = aborted, | ||
396 | }; | ||
397 | |||
394 | IWL_DEBUG_SCAN(mvm, "Regular scan %s, EBS status %s (FW)\n", | 398 | IWL_DEBUG_SCAN(mvm, "Regular scan %s, EBS status %s (FW)\n", |
395 | aborted ? "aborted" : "completed", | 399 | aborted ? "aborted" : "completed", |
396 | iwl_mvm_ebs_status_str(scan_notif->ebs_status)); | 400 | iwl_mvm_ebs_status_str(scan_notif->ebs_status)); |
397 | 401 | ||
398 | mvm->scan_status &= ~IWL_MVM_SCAN_REGULAR; | 402 | mvm->scan_status &= ~IWL_MVM_SCAN_REGULAR; |
399 | ieee80211_scan_completed(mvm->hw, | 403 | ieee80211_scan_completed(mvm->hw, &info); |
400 | scan_notif->status == IWL_SCAN_OFFLOAD_ABORTED); | ||
401 | iwl_mvm_unref(mvm, IWL_MVM_REF_SCAN); | 404 | iwl_mvm_unref(mvm, IWL_MVM_REF_SCAN); |
402 | del_timer(&mvm->scan_timer); | 405 | del_timer(&mvm->scan_timer); |
403 | } else { | 406 | } else { |
@@ -1430,7 +1433,11 @@ void iwl_mvm_rx_umac_scan_complete_notif(struct iwl_mvm *mvm, | |||
1430 | 1433 | ||
1431 | /* if the scan is already stopping, we don't need to notify mac80211 */ | 1434 | /* if the scan is already stopping, we don't need to notify mac80211 */ |
1432 | if (mvm->scan_uid_status[uid] == IWL_MVM_SCAN_REGULAR) { | 1435 | if (mvm->scan_uid_status[uid] == IWL_MVM_SCAN_REGULAR) { |
1433 | ieee80211_scan_completed(mvm->hw, aborted); | 1436 | struct cfg80211_scan_info info = { |
1437 | .aborted = aborted, | ||
1438 | }; | ||
1439 | |||
1440 | ieee80211_scan_completed(mvm->hw, &info); | ||
1434 | iwl_mvm_unref(mvm, IWL_MVM_REF_SCAN); | 1441 | iwl_mvm_unref(mvm, IWL_MVM_REF_SCAN); |
1435 | del_timer(&mvm->scan_timer); | 1442 | del_timer(&mvm->scan_timer); |
1436 | } else if (mvm->scan_uid_status[uid] == IWL_MVM_SCAN_SCHED) { | 1443 | } else if (mvm->scan_uid_status[uid] == IWL_MVM_SCAN_SCHED) { |
@@ -1564,7 +1571,11 @@ void iwl_mvm_report_scan_aborted(struct iwl_mvm *mvm) | |||
1564 | 1571 | ||
1565 | uid = iwl_mvm_scan_uid_by_status(mvm, IWL_MVM_SCAN_REGULAR); | 1572 | uid = iwl_mvm_scan_uid_by_status(mvm, IWL_MVM_SCAN_REGULAR); |
1566 | if (uid >= 0) { | 1573 | if (uid >= 0) { |
1567 | ieee80211_scan_completed(mvm->hw, true); | 1574 | struct cfg80211_scan_info info = { |
1575 | .aborted = true, | ||
1576 | }; | ||
1577 | |||
1578 | ieee80211_scan_completed(mvm->hw, &info); | ||
1568 | mvm->scan_uid_status[uid] = 0; | 1579 | mvm->scan_uid_status[uid] = 0; |
1569 | } | 1580 | } |
1570 | uid = iwl_mvm_scan_uid_by_status(mvm, IWL_MVM_SCAN_SCHED); | 1581 | uid = iwl_mvm_scan_uid_by_status(mvm, IWL_MVM_SCAN_SCHED); |
@@ -1585,8 +1596,13 @@ void iwl_mvm_report_scan_aborted(struct iwl_mvm *mvm) | |||
1585 | mvm->scan_uid_status[i] = 0; | 1596 | mvm->scan_uid_status[i] = 0; |
1586 | } | 1597 | } |
1587 | } else { | 1598 | } else { |
1588 | if (mvm->scan_status & IWL_MVM_SCAN_REGULAR) | 1599 | if (mvm->scan_status & IWL_MVM_SCAN_REGULAR) { |
1589 | ieee80211_scan_completed(mvm->hw, true); | 1600 | struct cfg80211_scan_info info = { |
1601 | .aborted = true, | ||
1602 | }; | ||
1603 | |||
1604 | ieee80211_scan_completed(mvm->hw, &info); | ||
1605 | } | ||
1590 | 1606 | ||
1591 | /* Sched scan will be restarted by mac80211 in | 1607 | /* Sched scan will be restarted by mac80211 in |
1592 | * restart_hw, so do not report if FW is about to be | 1608 | * restart_hw, so do not report if FW is about to be |
@@ -1629,8 +1645,13 @@ out: | |||
1629 | */ | 1645 | */ |
1630 | iwl_mvm_unref(mvm, IWL_MVM_REF_SCAN); | 1646 | iwl_mvm_unref(mvm, IWL_MVM_REF_SCAN); |
1631 | del_timer(&mvm->scan_timer); | 1647 | del_timer(&mvm->scan_timer); |
1632 | if (notify) | 1648 | if (notify) { |
1633 | ieee80211_scan_completed(mvm->hw, true); | 1649 | struct cfg80211_scan_info info = { |
1650 | .aborted = true, | ||
1651 | }; | ||
1652 | |||
1653 | ieee80211_scan_completed(mvm->hw, &info); | ||
1654 | } | ||
1634 | } else if (notify) { | 1655 | } else if (notify) { |
1635 | ieee80211_sched_scan_stopped(mvm->hw); | 1656 | ieee80211_sched_scan_stopped(mvm->hw); |
1636 | mvm->sched_scan_pass_all = SCHED_SCAN_PASS_ALL_DISABLED; | 1657 | mvm->sched_scan_pass_all = SCHED_SCAN_PASS_ALL_DISABLED; |