OSDN Git Service

wil6210: do not start regular scan on stopped p2p device
authorLior David <qca_liord@qca.qualcomm.com>
Mon, 27 Mar 2017 18:10:35 +0000 (21:10 +0300)
committerGerrit - the friendly Code Review server <code-review@localhost>
Wed, 29 Mar 2017 06:48:51 +0000 (23:48 -0700)
The driver should not allow starting any type of scan on a stopped
P2P device. Current implementation only checked social scan.

Change-Id: I67d92b0bdb4549681e3d08a256b1798fdaeb0939
Signed-off-by: Lior David <qca_liord@qca.qualcomm.com>
Signed-off-by: Maya Erez <qca_merez@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
Git-commit: 4a0e45a78328957b012f554fb2ffcd5c69fe418a
Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git
Signed-off-by: Maya Erez <merez@codeaurora.org>
drivers/net/wireless/ath/wil6210/cfg80211.c

index acd5347..923fe47 100644 (file)
@@ -475,22 +475,23 @@ static int wil_cfg80211_scan(struct wiphy *wiphy,
        }
        mutex_unlock(&wil->p2p_wdev_mutex);
 
-       /* social scan on P2P_DEVICE is handled as p2p search */
-       if (wdev->iftype == NL80211_IFTYPE_P2P_DEVICE &&
-           wil_p2p_is_social_scan(request)) {
+       if (wdev->iftype == NL80211_IFTYPE_P2P_DEVICE) {
                if (!wil->p2p.p2p_dev_started) {
                        wil_err(wil, "P2P search requested on stopped P2P device\n");
                        rc = -EIO;
                        goto out;
                }
-               wil->scan_request = request;
-               wil->radio_wdev = wdev;
-               rc = wil_p2p_search(wil, request);
-               if (rc) {
-                       wil->radio_wdev = wil_to_wdev(wil);
-                       wil->scan_request = NULL;
+               /* social scan on P2P_DEVICE is handled as p2p search */
+               if (wil_p2p_is_social_scan(request)) {
+                       wil->scan_request = request;
+                       wil->radio_wdev = wdev;
+                       rc = wil_p2p_search(wil, request);
+                       if (rc) {
+                               wil->radio_wdev = wil_to_wdev(wil);
+                               wil->scan_request = NULL;
+                       }
+                       goto out;
                }
-               goto out;
        }
 
        (void)wil_p2p_stop_discovery(wil);