Commit b538b8ce authored by David Spinadel's avatar David Spinadel Committed by Emmanuel Grumbach

iwlwifi: mvm: prevent sched scan while not idle

Prevent sched scan while not idle (including during association or in AP
mode) instead of while associated only.

This fixes my previous commit which was incomplete:

commit bd5e4744
Author: David Spinadel <david.spinadel@intel.com>
Date:   Thu Apr 24 13:15:29 2014 +0300

    iwlwifi: mvm: do no sched scan while associated

    Currently the FW doesn't support sched scan while associated,
    Prevent it.
Signed-off-by: default avatarDavid Spinadel <david.spinadel@intel.com>
Reviewed-by: default avatarJohannes Berg <johannes.berg@intel.com>
Signed-off-by: default avatarEmmanuel Grumbach <emmanuel.grumbach@intel.com>
parent 64793110
...@@ -1807,7 +1807,7 @@ static int iwl_mvm_mac_sched_scan_start(struct ieee80211_hw *hw, ...@@ -1807,7 +1807,7 @@ static int iwl_mvm_mac_sched_scan_start(struct ieee80211_hw *hw,
mutex_lock(&mvm->mutex); mutex_lock(&mvm->mutex);
if (iwl_mvm_is_associated(mvm)) { if (!iwl_mvm_is_idle(mvm)) {
ret = -EBUSY; ret = -EBUSY;
goto out; goto out;
} }
......
...@@ -1004,7 +1004,7 @@ static inline bool iwl_mvm_vif_low_latency(struct iwl_mvm_vif *mvmvif) ...@@ -1004,7 +1004,7 @@ static inline bool iwl_mvm_vif_low_latency(struct iwl_mvm_vif *mvmvif)
} }
/* Assoc status */ /* Assoc status */
bool iwl_mvm_is_associated(struct iwl_mvm *mvm); bool iwl_mvm_is_idle(struct iwl_mvm *mvm);
/* Thermal management and CT-kill */ /* Thermal management and CT-kill */
void iwl_mvm_tt_tx_backoff(struct iwl_mvm *mvm, u32 backoff); void iwl_mvm_tt_tx_backoff(struct iwl_mvm *mvm, u32 backoff);
......
...@@ -645,21 +645,21 @@ bool iwl_mvm_low_latency(struct iwl_mvm *mvm) ...@@ -645,21 +645,21 @@ bool iwl_mvm_low_latency(struct iwl_mvm *mvm)
return result; return result;
} }
static void iwl_mvm_assoc_iter(void *_data, u8 *mac, struct ieee80211_vif *vif) static void iwl_mvm_idle_iter(void *_data, u8 *mac, struct ieee80211_vif *vif)
{ {
bool *assoc = _data; bool *idle = _data;
if (vif->bss_conf.assoc) if (!vif->bss_conf.idle)
*assoc = true; *idle = false;
} }
bool iwl_mvm_is_associated(struct iwl_mvm *mvm) bool iwl_mvm_is_idle(struct iwl_mvm *mvm)
{ {
bool assoc = false; bool idle = true;
ieee80211_iterate_active_interfaces_atomic( ieee80211_iterate_active_interfaces_atomic(
mvm->hw, IEEE80211_IFACE_ITER_NORMAL, mvm->hw, IEEE80211_IFACE_ITER_NORMAL,
iwl_mvm_assoc_iter, &assoc); iwl_mvm_idle_iter, &idle);
return assoc; return idle;
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment