[9610][7885][7872] wlbt: Passive scan support
authorJayaPrakash Sangaru <j.sangaru@samsung.com>
Tue, 31 Jul 2018 10:12:30 +0000 (15:42 +0530)
committerhskang <hs1218.kang@samsung.com>
Fri, 17 Aug 2018 00:32:51 +0000 (20:32 -0400)
In some cases supplicant requests passive scan. in these case
scan_request has zero ssids. Support passive scan when ssids
in scan request is zero.

SCSC-Bug-Id: SSB-42405

Change-Id: I18aa04abe56192d5501247032690aaba6c1d20e5
Signed-off-by: JayaPrakash Sangaru <j.sangaru@samsung.com>
drivers/net/wireless/scsc/cfg80211_ops.c
drivers/net/wireless/scsc/mlme.c

index 9d0b0d698d51d121fda316c36b9457526079bee7..b3a6d1df8cc28541a287bbbee85ee40a84a3f982 100755 (executable)
@@ -460,8 +460,9 @@ int slsi_scan(struct wiphy *wiphy, struct net_device *dev,
                }
 
        /* Update scan timing for P2P social channels scan. */
-       if ((request->ie) && cfg80211_find_vendor_ie(WLAN_OUI_WFA, WLAN_OUI_TYPE_WFA_P2P, request->ie, request->ie_len)
-           && SLSI_IS_P2P_SSID(request->ssids[0].ssid, request->ssids[0].ssid_len)) {
+       if ((request->ie) &&
+           cfg80211_find_vendor_ie(WLAN_OUI_WFA, WLAN_OUI_TYPE_WFA_P2P, request->ie, request->ie_len) &&
+           request->ssids && SLSI_IS_P2P_SSID(request->ssids[0].ssid, request->ssids[0].ssid_len)) {
                /* In supplicant during joining procedure the P2P GO scan
                 * with GO's operating channel comes on P2P device. Hence added the
                 * check for n_channels as 1
index 084cfb6b214756a6c2975e69fc6cba670e1b4098..4199a80c1f86c517198238ca687ed790a0e2b403 100755 (executable)
@@ -1134,7 +1134,8 @@ static int slsi_mlme_append_channel_list(struct slsi_dev                    *sde
                                         struct sk_buff                     *req,
                                         u32                                num_channels,
                                         struct ieee80211_channel           *channels[],
-                                        u16                                scan_type)
+                                        u16                                scan_type,
+                                        bool                               passive_scan)
 {
        int               chann;
        u16               freq_fw_unit;
@@ -1195,7 +1196,10 @@ static int slsi_mlme_append_channel_list(struct slsi_dev                    *sde
                freq_fw_unit = cpu_to_le16(freq_fw_unit);
                memcpy(p, &freq_fw_unit, sizeof(freq_fw_unit));
 
-               p[2] = 0;
+               if (passive_scan)
+                       p[2] = FAPI_SCANPOLICY_PASSIVE;
+               else
+                       p[2] = 0;
 
                channels_list_ie[1] += SLSI_SCAN_CHANNEL_DESCRIPTOR_SIZE;
        }
@@ -1352,7 +1356,8 @@ int slsi_mlme_add_sched_scan(struct slsi_dev                    *sdev,
        }
 
        if (request->n_channels) {
-               r = slsi_mlme_append_channel_list(sdev, dev, req, request->n_channels, request->channels, FAPI_SCANTYPE_SCHEDULED_SCAN);
+               r = slsi_mlme_append_channel_list(sdev, dev, req, request->n_channels, request->channels,
+                                                 FAPI_SCANTYPE_SCHEDULED_SCAN, request->n_ssids == 0);
                if (r)
                        return r;
        }
@@ -1444,7 +1449,8 @@ int slsi_mlme_add_scan(
                fapi_append_data(req, ies, ies_len);
 
                if (n_channels) {
-                       r = slsi_mlme_append_channel_list(sdev, dev, req, n_channels, channels, scan_type);
+                       r = slsi_mlme_append_channel_list(sdev, dev, req, n_channels, channels, scan_type,
+                                                         n_ssids == 0);
                        if (r)
                                return r;
                }