[NEUS7920-133][7885][9610] wlbt: ACS scan cleanup
authorSrishti Piplani <srishti.p@samsung.com>
Mon, 25 Mar 2019 12:57:33 +0000 (18:27 +0530)
committerYoungmin Nam <youngmin.nam@samsung.com>
Tue, 21 May 2019 10:45:22 +0000 (19:45 +0900)
Changes done to stop scan and free related driver
data ,when AP is stopped during ongoing ACS scan.

Change-Id: Ifce7072a54f58844a335f4ed3c4a16532278e5cb
SCSC-Bug-Id: SSB-50724
Signed-off-by: Srishti Piplani <srishti.p@samsung.com>
drivers/net/wireless/scsc/mgt.c
drivers/net/wireless/scsc/rx.c

index 31ee8269b74a5272cdfd92bf4df080312f448222..1973eed4e6b21278da5c27ea344b4a8ceb581c12 100755 (executable)
@@ -829,8 +829,8 @@ void slsi_scan_cleanup(struct slsi_dev *sdev, struct net_device *dev)
 
        SLSI_MUTEX_LOCK(ndev_vif->scan_mutex);
        for (i = 0; i < SLSI_SCAN_MAX; i++) {
-               if (ndev_vif->scan[i].scan_req && !sdev->mlme_blocked &&
-                   SLSI_IS_VIF_INDEX_P2P_GROUP(sdev, ndev_vif))
+               if ((ndev_vif->scan[i].scan_req || ndev_vif->scan[i].acs_request) &&
+                   !sdev->mlme_blocked)
                        slsi_mlme_del_scan(sdev, dev, (ndev_vif->ifnum << 8 | i), false);
                slsi_purge_scan_results(ndev_vif, i);
                if (ndev_vif->scan[i].scan_req && i == SLSI_SCAN_HW_ID)
@@ -848,6 +848,8 @@ void slsi_scan_cleanup(struct slsi_dev *sdev, struct net_device *dev)
 #endif
 
                ndev_vif->scan[i].scan_req = NULL;
+               kfree(ndev_vif->scan[i].acs_request);
+               ndev_vif->scan[i].acs_request = NULL;
                ndev_vif->scan[i].sched_req = NULL;
        }
        SLSI_MUTEX_UNLOCK(ndev_vif->scan_mutex);
index 109d02e5aac62eb954c41750dc82467f71c09b75..1ebcbca519368b4f1d9ed86822b43c0db917c7a7 100755 (executable)
@@ -355,7 +355,7 @@ void slsi_rx_scan_ind(struct slsi_dev *sdev, struct net_device *dev, struct sk_b
                SLSI_NET_DBG1(dev, SLSI_MLME, "Connect/Roaming scan indication received, bssid:%pM\n", fapi_get_mgmt(skb)->bssid);
                slsi_kfree_skb(ndev_vif->sta.mlme_scan_ind_skb);
                ndev_vif->sta.mlme_scan_ind_skb = skb;
-       } else {
+       } else if (ndev_vif->scan[scan_id].scan_req || ndev_vif->scan[scan_id].acs_request) {
                slsi_roam_channel_cache_add(sdev, dev, skb);
                if (SLSI_IS_VIF_INDEX_WLAN(ndev_vif))
                        slsi_add_to_scan_list(sdev, ndev_vif, skb, scan_ssid, scan_id);