summaryrefslogtreecommitdiff
path: root/drivers/net/wireless/iwlwifi
diff options
context:
space:
mode:
authorLuciano Coelho <luciano.coelho@intel.com>2015-03-20 09:29:42 +0200
committerEmmanuel Grumbach <emmanuel.grumbach@intel.com>2015-04-29 13:12:48 +0300
commit4171bb3346dd8e9f3e996fd43271616181208285 (patch)
treefef18c1737dfb99ddaf8ef867ce2d39ab6d60450 /drivers/net/wireless/iwlwifi
parentbd9564da3dd2ab96c34f9dce4fd546f6c2fb08a1 (diff)
iwlwifi: mvm: check if scan can be started before cancelling other scans
If a new scan cannot be run for some reason, we shouldn't cancel other ongoing scans. Move the checks to before the code that cancels other scans. Signed-off-by: Luciano Coelho <luciano.coelho@intel.com> Reviewed-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Diffstat (limited to 'drivers/net/wireless/iwlwifi')
-rw-r--r--drivers/net/wireless/iwlwifi/mvm/mac80211.c28
1 files changed, 14 insertions, 14 deletions
diff --git a/drivers/net/wireless/iwlwifi/mvm/mac80211.c b/drivers/net/wireless/iwlwifi/mvm/mac80211.c
index 15dc4a4c8132..f57d584c288a 100644
--- a/drivers/net/wireless/iwlwifi/mvm/mac80211.c
+++ b/drivers/net/wireless/iwlwifi/mvm/mac80211.c
@@ -2387,13 +2387,6 @@ static int iwl_mvm_mac_hw_scan(struct ieee80211_hw *hw,
mutex_lock(&mvm->mutex);
- if (!(mvm->fw->ucode_capa.capa[0] & IWL_UCODE_TLV_CAPA_UMAC_SCAN) &&
- (mvm->scan_status & IWL_MVM_SCAN_SCHED)) {
- ret = iwl_mvm_scan_offload_stop(mvm, true);
- if (ret)
- goto out;
- }
-
if (iwl_mvm_is_lar_supported(mvm) && !mvm->lar_regdom_set) {
IWL_ERR(mvm, "scan while LAR regdomain is not set\n");
ret = -EBUSY;
@@ -2405,6 +2398,13 @@ static int iwl_mvm_mac_hw_scan(struct ieee80211_hw *hw,
goto out;
}
+ if (!(mvm->fw->ucode_capa.capa[0] & IWL_UCODE_TLV_CAPA_UMAC_SCAN) &&
+ (mvm->scan_status & IWL_MVM_SCAN_SCHED)) {
+ ret = iwl_mvm_scan_offload_stop(mvm, true);
+ if (ret)
+ goto out;
+ }
+
iwl_mvm_ref(mvm, IWL_MVM_REF_SCAN);
if (mvm->fw->ucode_capa.capa[0] & IWL_UCODE_TLV_CAPA_UMAC_SCAN)
@@ -2758,13 +2758,6 @@ static int iwl_mvm_mac_sched_scan_start(struct ieee80211_hw *hw,
mutex_lock(&mvm->mutex);
- if (!(mvm->fw->ucode_capa.capa[0] & IWL_UCODE_TLV_CAPA_UMAC_SCAN) &&
- (mvm->scan_status & IWL_MVM_SCAN_REGULAR)) {
- ret = iwl_mvm_cancel_scan(mvm);
- if (ret)
- goto out;
- }
-
if (iwl_mvm_is_lar_supported(mvm) && !mvm->lar_regdom_set) {
IWL_ERR(mvm, "sched-scan while LAR regdomain is not set\n");
ret = -EBUSY;
@@ -2781,6 +2774,13 @@ static int iwl_mvm_mac_sched_scan_start(struct ieee80211_hw *hw,
goto out;
}
+ if (!(mvm->fw->ucode_capa.capa[0] & IWL_UCODE_TLV_CAPA_UMAC_SCAN) &&
+ (mvm->scan_status & IWL_MVM_SCAN_REGULAR)) {
+ ret = iwl_mvm_cancel_scan(mvm);
+ if (ret)
+ goto out;
+ }
+
ret = iwl_mvm_scan_offload_start(mvm, vif, req, ies);
if (ret)
mvm->scan_status &= ~IWL_MVM_SCAN_SCHED;