From: Bing Zhao Date: Thu, 9 May 2013 18:57:11 +0000 (-0700) Subject: mwifiex: abort remaining scan commands when association started X-Git-Url: http://git.cascardo.eti.br/?p=cascardo%2Flinux.git;a=commitdiff_plain;h=53dace5945544a9d2e7a8a3b4bd1b9023e3e591a mwifiex: abort remaining scan commands when association started A full-channel scan is split to multiple scan commands in driver before they are sent to firmware. When each scan result is back the SSID entries are parsed and informed to cfg80211 directly. It's observed that sometimes userspace may initiate association as soon as the target AP is found. During the 4-way handshake firmware may go off-channel to scan the remaining channels. This causes the 4-way handshake to fail. Fix it by checking 'scan_block' flag and aborting the remaining scan in this case. 'scan_block' flag is set after association and before 4-way handshake. It gets cleared after 4-way handshake is completed. BUG=chrome-os-partner:18188 TEST=autotest against CrOS_chaos_WesternDigital_5 (Jason Abele) Change-Id: Ibda61178f2aee7228989bedb511eb2abc5a40343 Signed-off-by: Bing Zhao Reviewed-on: https://gerrit.chromium.org/gerrit/50687 Reviewed-by: Paul Stewart --- diff --git a/drivers/net/wireless/mwifiex/scan.c b/drivers/net/wireless/mwifiex/scan.c index 5ff33b4ed0c7..b36950bf3ea3 100644 --- a/drivers/net/wireless/mwifiex/scan.c +++ b/drivers/net/wireless/mwifiex/scan.c @@ -1752,7 +1752,8 @@ check_next_scan: dev_dbg(adapter->dev, "info: scan already aborted\n"); } } else { - if (priv->scan_aborting && !priv->scan_request) { + if ((priv->scan_aborting && !priv->scan_request) || + priv->scan_block) { spin_unlock_irqrestore(&adapter->scan_pending_q_lock, flags); adapter->scan_delay_cnt = MWIFIEX_MAX_SCAN_DELAY_CNT;