mwifiex: fix scan_block flag handling
authorAmitkumar Karwar <akarwar@marvell.com>
Wed, 29 Jun 2016 12:02:40 +0000 (17:32 +0530)
committerKalle Valo <kvalo@codeaurora.org>
Fri, 8 Jul 2016 13:44:03 +0000 (16:44 +0300)
scan_block flag is used to block scan operation when 4 way handshake
is in progress. Sometimes it doesn't get cleared due to incomplete
association. An example is assoc request/response is done, but add key
operation get canceled in some corner cases. As a result, further
association/scan operations are blocked.

This patch fixes the problem by clearing scan_block flag.

Signed-off-by: Amitkumar Karwar <akarwar@marvell.com>
Signed-off-by: Xinming Hu <huxm@marvell.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/marvell/mwifiex/cfg80211.c

index e6befd5..867ab81 100644 (file)
@@ -2250,6 +2250,9 @@ mwifiex_cfg80211_connect(struct wiphy *wiphy, struct net_device *dev,
                return -EALREADY;
        }
 
+       if (priv->scan_block)
+               priv->scan_block = false;
+
        if (adapter->surprise_removed || adapter->is_cmd_timedout) {
                mwifiex_dbg(adapter, ERROR,
                            "%s: Ignore connection.\t"
@@ -2468,6 +2471,9 @@ mwifiex_cfg80211_scan(struct wiphy *wiphy,
                return -EBUSY;
        }
 
+       if (!priv->wdev.current_bss && priv->scan_block)
+               priv->scan_block = false;
+
        if (!mwifiex_stop_bg_scan(priv))
                cfg80211_sched_scan_stopped_rtnl(priv->wdev.wiphy);