iwlwifi: mvm: inform mac80211 about umac scans that was aborted by restart
In nic restart flow we inform mac80211 that scan was aborted, but it was based only on scan_status which is not set by UMAC scan. Fix that. Signed-off-by: David Spinadel <david.spinadel@intel.com> Reviewed-by: Johannes Berg <johannes.berg@intel.com> Reviewed-by: Luciano Coelho <luciano.coelho@intel.com> Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
This commit is contained in:
parent
939e4904e0
commit
4ffb36505c
|
@ -1149,6 +1149,7 @@ int iwl_mvm_update_quotas(struct iwl_mvm *mvm, bool force_upload,
|
||||||
int iwl_mvm_scan_size(struct iwl_mvm *mvm);
|
int iwl_mvm_scan_size(struct iwl_mvm *mvm);
|
||||||
int iwl_mvm_cancel_scan(struct iwl_mvm *mvm);
|
int iwl_mvm_cancel_scan(struct iwl_mvm *mvm);
|
||||||
int iwl_mvm_max_scan_ie_len(struct iwl_mvm *mvm, bool is_sched_scan);
|
int iwl_mvm_max_scan_ie_len(struct iwl_mvm *mvm, bool is_sched_scan);
|
||||||
|
void iwl_mvm_report_scan_aborted(struct iwl_mvm *mvm);
|
||||||
|
|
||||||
/* Scheduled scan */
|
/* Scheduled scan */
|
||||||
int iwl_mvm_rx_scan_offload_complete_notif(struct iwl_mvm *mvm,
|
int iwl_mvm_rx_scan_offload_complete_notif(struct iwl_mvm *mvm,
|
||||||
|
|
|
@ -894,18 +894,7 @@ void iwl_mvm_nic_restart(struct iwl_mvm *mvm, bool fw_error)
|
||||||
* the next start() call from mac80211. If restart isn't called
|
* the next start() call from mac80211. If restart isn't called
|
||||||
* (no fw restart) scan status will stay busy.
|
* (no fw restart) scan status will stay busy.
|
||||||
*/
|
*/
|
||||||
switch (mvm->scan_status) {
|
iwl_mvm_report_scan_aborted(mvm);
|
||||||
case IWL_MVM_SCAN_NONE:
|
|
||||||
break;
|
|
||||||
case IWL_MVM_SCAN_OS:
|
|
||||||
ieee80211_scan_completed(mvm->hw, true);
|
|
||||||
break;
|
|
||||||
case IWL_MVM_SCAN_SCHED:
|
|
||||||
/* Sched scan will be restarted by mac80211 in restart_hw. */
|
|
||||||
if (!mvm->restart_fw)
|
|
||||||
ieee80211_sched_scan_stopped(mvm->hw);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If we're restarting already, don't cycle restarts.
|
* If we're restarting already, don't cycle restarts.
|
||||||
|
|
|
@ -1613,3 +1613,35 @@ int iwl_mvm_scan_size(struct iwl_mvm *mvm)
|
||||||
mvm->fw->ucode_capa.n_scan_channels +
|
mvm->fw->ucode_capa.n_scan_channels +
|
||||||
sizeof(struct iwl_scan_probe_req);
|
sizeof(struct iwl_scan_probe_req);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This function is used in nic restart flow, to inform mac80211 about scans
|
||||||
|
* that was aborted by restart flow or by an assert.
|
||||||
|
*/
|
||||||
|
void iwl_mvm_report_scan_aborted(struct iwl_mvm *mvm)
|
||||||
|
{
|
||||||
|
if (mvm->fw->ucode_capa.capa[0] & IWL_UCODE_TLV_CAPA_UMAC_SCAN) {
|
||||||
|
if (iwl_mvm_find_scan_type(mvm, IWL_UMAC_SCAN_UID_REG_SCAN))
|
||||||
|
ieee80211_scan_completed(mvm->hw, true);
|
||||||
|
if (iwl_mvm_find_scan_type(mvm, IWL_UMAC_SCAN_UID_SCHED_SCAN) &&
|
||||||
|
!mvm->restart_fw)
|
||||||
|
ieee80211_sched_scan_stopped(mvm->hw);
|
||||||
|
} else {
|
||||||
|
switch (mvm->scan_status) {
|
||||||
|
case IWL_MVM_SCAN_NONE:
|
||||||
|
break;
|
||||||
|
case IWL_MVM_SCAN_OS:
|
||||||
|
ieee80211_scan_completed(mvm->hw, true);
|
||||||
|
break;
|
||||||
|
case IWL_MVM_SCAN_SCHED:
|
||||||
|
/*
|
||||||
|
* Sched scan will be restarted by mac80211 in
|
||||||
|
* restart_hw, so do not report if FW is about to be
|
||||||
|
* restarted.
|
||||||
|
*/
|
||||||
|
if (!mvm->restart_fw)
|
||||||
|
ieee80211_sched_scan_stopped(mvm->hw);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue