From c73cd7db11fdb791370099cf6d60ead04a28f395 Mon Sep 17 00:00:00 2001 From: Manjeet Singh Date: Thu, 11 Aug 2016 15:31:34 +0530 Subject: [PATCH] qcacmn: Follow spec for NL80211_CMD_START_SCHED_SCAN qcacld-2.0 to qca-wifi-host-cmn propagation If no SSID are passed to NL80211_CMD_START_SCHED_SCAN cmd, interface spec requires that an active scan is not needed. Therefore a passive scan is now requested by cfg80211_sched_scan_request for this case. Change-Id: I1b1b9232ffb9d8d5c0bc9a1d75145d39c9fe9e6b CRs-Fixed: 902092 --- os_if/linux/scan/src/wlan_cfg80211_scan.c | 6 ++++++ umac/scan/dispatcher/inc/wlan_scan_public_structs.h | 2 ++ wmi/src/wmi_unified_tlv.c | 2 ++ 3 files changed, 10 insertions(+) diff --git a/os_if/linux/scan/src/wlan_cfg80211_scan.c b/os_if/linux/scan/src/wlan_cfg80211_scan.c index c40b15155c8a..32b7d59ed31c 100644 --- a/os_if/linux/scan/src/wlan_cfg80211_scan.c +++ b/os_if/linux/scan/src/wlan_cfg80211_scan.c @@ -507,6 +507,12 @@ int wlan_cfg80211_sched_scan_start(struct wlan_objmgr_pdev *pdev, request->match_sets[i].rssi_thold; } + /* set scan to passive if no SSIDs are specified in the request */ + if (0 == request->n_ssids) + req->do_passive_scan = true; + else + req->do_passive_scan = false; + for (i = 0; i < request->n_ssids; i++) { j = 0; while (j < req->networks_cnt) { diff --git a/umac/scan/dispatcher/inc/wlan_scan_public_structs.h b/umac/scan/dispatcher/inc/wlan_scan_public_structs.h index ae3ccf824d72..7cb76c9020d3 100644 --- a/umac/scan/dispatcher/inc/wlan_scan_public_structs.h +++ b/umac/scan/dispatcher/inc/wlan_scan_public_structs.h @@ -965,6 +965,7 @@ struct nlo_mawc_params { /** * struct pno_scan_req_params - PNO Scan request structure * @networks_cnt: Number of networks + * @do_passive_scan: Flag to request passive scan to fw * @vdev_id: vdev id * @fast_scan_period: Fast Scan period * @slow_scan_period: Slow scan period @@ -996,6 +997,7 @@ struct nlo_mawc_params { */ struct pno_scan_req_params { uint32_t networks_cnt; + bool do_passive_scan; uint32_t vdev_id; uint32_t fast_scan_period; uint32_t slow_scan_period; diff --git a/wmi/src/wmi_unified_tlv.c b/wmi/src/wmi_unified_tlv.c index 025ff7a2e221..72386c734125 100644 --- a/wmi/src/wmi_unified_tlv.c +++ b/wmi/src/wmi_unified_tlv.c @@ -7544,6 +7544,8 @@ static QDF_STATUS send_pno_start_cmd_tlv(wmi_unified_t wmi_handle, cmd->active_dwell_time = pno->active_dwell_time; cmd->passive_dwell_time = pno->passive_dwell_time; + if (pno->do_passive_scan) + cmd->flags |= WMI_NLO_CONFIG_SCAN_PASSIVE; /* Copy scan interval */ cmd->fast_scan_period = pno->fast_scan_period; cmd->slow_scan_period = pno->slow_scan_period;