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;