Explorar o código

qcacmn: Send SSID in join req for OWE transition mode

STA connection with OWE transition mode SSID fails due to join
failure timeout. Since, it is OWE transition mode, STA needs probe
response for join success.

The scan table entry of the candidate BSSID is sent in the join request.
This entry is used to create session and to send probe request to AP.
In case of OWE transition mode, the beacon carries wildcard SSID.
Therefore, the scan table entry also has wildcard ssid. Also,
during the candidate selection, scm_ignore_ssid_check_for_owe check
allows even entries with wildcard SSIDs to be selected as candiates
for OWE transition mode.

The join request with Wildcard SSID in the scan entry is used by LIM
to create session, as well as to send probe request.Therefore,
the AP doesn't respond to the probe request with wildcard ssid
leading to join failure timeout.

This change adds ssid from connect request to the cm_vdev_join_req,
which can be used by LIM to create session and to send probe request
whenever the SSID in scan entry is wildcard.

Change-Id: If43d7e8a65bc3e37d67e22609932cf18f804f0ab
CRs-Fixed: 3041142
Surya Prakash Sivaraj %!s(int64=3) %!d(string=hai) anos
pai
achega
7d2ec40194

+ 6 - 0
umac/mlme/connection_mgr/core/src/wlan_cm_connect.c

@@ -1733,6 +1733,12 @@ cm_resume_connect_after_peer_create(struct cnx_mgr *cm_ctx, wlan_cm_id *cm_id)
 	req.is_non_assoc_link = cm_req->connect_req.req.is_non_assoc_link;
 	cm_update_ml_partner_info(&cm_req->connect_req.req, &req);
 
+	if (util_scan_entry_is_hidden_ap(req.bss->entry) &&
+	    QDF_HAS_PARAM(neg_sec_info->key_mgmt, WLAN_CRYPTO_KEY_MGMT_OWE)) {
+		mlme_debug("OWE transition candidate has wildcard ssid");
+		req.owe_trans_ssid = cm_req->connect_req.req.ssid;
+	}
+
 	wlan_reg_get_cc_and_src(psoc, country_code);
 	mlme_nofl_info(CM_PREFIX_FMT "Connecting to %.*s " QDF_MAC_ADDR_FMT " rssi: %d freq: %d akm 0x%x cipher: uc 0x%x mc 0x%x, wps %d osen %d force RSN %d CC: %c%c",
 		       CM_PREFIX_REF(req.vdev_id, req.cm_id),

+ 2 - 0
umac/mlme/connection_mgr/dispatcher/inc/wlan_cm_public_struct.h

@@ -248,6 +248,7 @@ struct wlan_cm_connect_req {
  * @fils_info: Fills related connect info
  * @is_non_assoc_link: non assoc link
  * @ml_parnter_info: ml partner link info
+ * @owe_trans_ssid: owe trans ssid to be used when scan entry ssid is wildcard
  */
 struct wlan_cm_vdev_connect_req {
 	uint8_t vdev_id;
@@ -269,6 +270,7 @@ struct wlan_cm_vdev_connect_req {
 #ifdef WLAN_FEATURE_11BE_MLO
 	struct mlo_partner_info ml_parnter_info;
 #endif
+	struct wlan_ssid owe_trans_ssid;
 };
 
 /**