Skip to content

Commit

Permalink
iwlwifi: avoid commit rxon during scan in iwl_set_no_assoc
Browse files Browse the repository at this point in the history
Currently we are canceling scan when changing BSSID. Behave the same
when changing association and beacon enablement, to avoid committing
rxon during scan in iwl_set_no_assoc().

Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Acked-by:  Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
  • Loading branch information
Stanislaw Gruszka authored and John W. Linville committed Nov 15, 2010
1 parent ac4f545 commit 3eb9616
Showing 1 changed file with 14 additions and 12 deletions.
26 changes: 14 additions & 12 deletions drivers/net/wireless/iwlwifi/iwl-core.c
Original file line number Diff line number Diff line change
Expand Up @@ -1590,6 +1590,19 @@ void iwl_bss_info_changed(struct ieee80211_hw *hw,

mutex_lock(&priv->mutex);

if (changes & (BSS_CHANGED_BSSID | BSS_CHANGED_ASSOC |
BSS_CHANGED_BEACON_ENABLED)) {
/*
* If there is currently a HW scan going on in the
* background then we need to cancel it else the RXON
* below in post_associate or set_no_assoc can fail.
*/
if (iwl_scan_cancel_timeout(priv, 200)) {
IWL_WARN(priv, "Can not cancel scan\n");
goto out;
}
}

if (changes & BSS_CHANGED_QOS) {
unsigned long flags;

Expand Down Expand Up @@ -1622,18 +1635,6 @@ void iwl_bss_info_changed(struct ieee80211_hw *hw,
if (changes & BSS_CHANGED_BSSID) {
IWL_DEBUG_MAC80211(priv, "BSSID %pM\n", bss_conf->bssid);

/*
* If there is currently a HW scan going on in the
* background then we need to cancel it else the RXON
* below/in post_associate will fail.
*/
if (iwl_scan_cancel_timeout(priv, 100)) {
IWL_WARN(priv, "Aborted scan still in progress after 100ms\n");
IWL_DEBUG_MAC80211(priv, "leaving - scan abort failed.\n");
mutex_unlock(&priv->mutex);
return;
}

/* mac80211 only sets assoc when in STATION mode */
if (vif->type == NL80211_IFTYPE_ADHOC || bss_conf->assoc) {
memcpy(ctx->staging.bssid_addr,
Expand Down Expand Up @@ -1752,6 +1753,7 @@ void iwl_bss_info_changed(struct ieee80211_hw *hw,
IWL_ERR(priv, "failed to update PAN params\n");
}

out:
mutex_unlock(&priv->mutex);

IWL_DEBUG_MAC80211(priv, "leave\n");
Expand Down

0 comments on commit 3eb9616

Please sign in to comment.