Selaa lähdekoodia

qcacmn: Add support to configure MLD ID in scan request

In the MLO-MBSSID test, STA can request information of
non-Tx BSS through Tx BSS by configuring non-Tx BSS MLD
ID within the ML probe request that is invoked as part
of scan request. Add support to configure MLD ID in
scan start params to FW.

Change-Id: I4a6debf6c3ec830fbe3aee1d3aa60ad7218cbcd6
CRs-Fixed: 3591596
Gururaj Pandurangi 1 vuosi sitten
vanhempi
sitoutus
852d0cee43

+ 2 - 0
os_if/linux/scan/inc/wlan_cfg80211_scan.h

@@ -123,6 +123,7 @@ struct scan_req {
  * @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
+ * @mld_id: MLD ID of the requested BSS within ML probe request
  */
 struct scan_params {
 	uint8_t source;
@@ -140,6 +141,7 @@ struct scan_params {
 	bool scan_probe_unicast_ra;
 	bool scan_f_2ghz;
 	bool scan_f_5ghz;
+	uint8_t mld_id;
 };
 
 /**

+ 2 - 0
os_if/linux/scan/src/wlan_cfg80211_scan.c

@@ -1751,6 +1751,8 @@ int wlan_cfg80211_scan(struct wlan_objmgr_vdev *vdev,
 	osif_debug("scan_ctrl_flags_ext %0x",
 		   req->scan_req.scan_ctrl_flags_ext);
 
+	req->scan_req.mld_id = params->mld_id;
+
 	/*
 	 * 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

+ 2 - 0
umac/scan/dispatcher/inc/wlan_scan_public_structs.h

@@ -1122,6 +1122,7 @@ enum scan_request_type {
  * @num_hint_bssid: number of BSSID hints
  * @hint_s_ssid: short SSID hints
  * @hint_bssid: BSSID hints
+ * @mld_id: MLD ID of the requested BSS within ML probe request
  */
 struct scan_req_params {
 	uint32_t scan_id;
@@ -1222,6 +1223,7 @@ struct scan_req_params {
 	uint32_t num_hint_bssid;
 	struct hint_short_ssid hint_s_ssid[WLAN_SCAN_MAX_HINT_S_SSID];
 	struct hint_bssid hint_bssid[WLAN_SCAN_MAX_HINT_BSSID];
+	uint8_t mld_id;
 };
 
 /**

+ 2 - 0
wmi/src/wmi_unified_tlv.c

@@ -4107,6 +4107,8 @@ static QDF_STATUS send_scan_start_cmd_tlv(wmi_unified_t wmi_handle,
 	cmd->ie_len = params->extraie.len;
 	cmd->n_probes = params->n_probes;
 	cmd->scan_ctrl_flags_ext = params->scan_ctrl_flags_ext;
+	WMI_SCAN_MLD_PARAM_MLD_ID_SET(cmd->mld_parameter, params->mld_id);
+	wmi_debug("MLD ID: %u", cmd->mld_parameter);
 
 	if (params->scan_random.randomize)
 		wmi_copy_scan_random_mac(params->scan_random.mac_addr,