diff --git a/os_if/linux/scan/inc/wlan_cfg80211_scan.h b/os_if/linux/scan/inc/wlan_cfg80211_scan.h index 1444f13224..d3ccc100dd 100644 --- a/os_if/linux/scan/inc/wlan_cfg80211_scan.h +++ b/os_if/linux/scan/inc/wlan_cfg80211_scan.h @@ -153,6 +153,7 @@ struct scan_req { * inapplicable. * @dwell_time_passive_6g: 6 GHz specific passive dwell time. Ignored if zero or * inapplicable. + * @scan_probe_unicast_ra: Use BSSID in probe request frame RA. * @scan_f_2ghz: Scan only 2GHz channels * @scan_f_5ghz: Scan only 5+6GHz channels */ @@ -169,6 +170,7 @@ struct scan_params { uint32_t dwell_time_passive; uint32_t dwell_time_active_6g; uint32_t dwell_time_passive_6g; + bool scan_probe_unicast_ra; bool scan_f_2ghz; bool scan_f_5ghz; }; diff --git a/os_if/linux/scan/src/wlan_cfg80211_scan.c b/os_if/linux/scan/src/wlan_cfg80211_scan.c index 8208f6de35..c7f85d4a5b 100644 --- a/os_if/linux/scan/src/wlan_cfg80211_scan.c +++ b/os_if/linux/scan/src/wlan_cfg80211_scan.c @@ -1630,6 +1630,13 @@ int wlan_cfg80211_scan(struct wlan_objmgr_vdev *vdev, if (request->flags & NL80211_SCAN_FLAG_FLUSH) ucfg_scan_flush_results(pdev, NULL); + if (params->scan_probe_unicast_ra) + req->scan_req.scan_ctrl_flags_ext |= + SCAN_FLAG_EXT_FORCE_UNICAST_RA; + + osif_debug("scan_ctrl_flags_ext %0x", + req->scan_req.scan_ctrl_flags_ext); + /* * Acquire wakelock to handle the case where APP's send scan to connect. * If suspend is received during scan scan will be aborted and APP will diff --git a/umac/scan/core/src/wlan_scan_main.h b/umac/scan/core/src/wlan_scan_main.h index a2fe716055..b2fb8ea196 100644 --- a/umac/scan/core/src/wlan_scan_main.h +++ b/umac/scan/core/src/wlan_scan_main.h @@ -158,6 +158,9 @@ struct probe_time_dwell_time { /* RRM scan type indication */ #define SCAN_FLAG_EXT_RRM_SCAN_IND 0x400 +/* Probe request frame with unicast RA indication */ +#define SCAN_FLAG_EXT_FORCE_UNICAST_RA 0x1000 + /* Passive dwell time if bt_a2dp is enabled. Time in msecs*/ #define PASSIVE_DWELL_TIME_BT_A2DP_ENABLED 28 diff --git a/umac/scan/core/src/wlan_scan_manager.c b/umac/scan/core/src/wlan_scan_manager.c index 29a01bb152..8837b48fb8 100644 --- a/umac/scan/core/src/wlan_scan_manager.c +++ b/umac/scan/core/src/wlan_scan_manager.c @@ -1050,6 +1050,8 @@ scm_scan_req_update_params(struct wlan_objmgr_vdev *vdev, if (req->scan_req.scan_type == SCAN_TYPE_RRM) req->scan_req.scan_ctrl_flags_ext |= SCAN_FLAG_EXT_RRM_SCAN_IND; + + scm_debug("scan_ctrl_flags_ext %0x", req->scan_req.scan_ctrl_flags_ext); /* * Set wide band flag if enabled. This will cause * phymode TLV being sent to FW.