diff mbox series

[v3,3/5] SME: Add support for handling association with MLD

Message ID 20221206094609.104911-3-andrei.otcheretianski@intel.com
State Accepted
Headers show
Series [v3,1/5] SAE: Make sme_sae_auth() return IE offset | expand

Commit Message

Andrei Otcheretianski Dec. 6, 2022, 9:46 a.m. UTC
In case that the AP supports MLD, request an MLD association
from the driver.

When processing the association event from the driver verify
that the multi link information in the association response ML
element matches the links on which the association was expected.

Signed-off-by: Ilan Peer <ilan.peer@intel.com>
Signed-off-by: Andrei Otcheretianski <andrei.otcheretianski@intel.com>
---
 wpa_supplicant/sme.c | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)
diff mbox series

Patch

diff --git a/wpa_supplicant/sme.c b/wpa_supplicant/sme.c
index a44044079e..2cc05f21c9 100644
--- a/wpa_supplicant/sme.c
+++ b/wpa_supplicant/sme.c
@@ -2420,6 +2420,31 @@  mscs_fail:
 	else
 		params.uapsd = -1;
 
+	if (wpa_s->valid_links) {
+		size_t i;
+
+		wpa_printf(MSG_DEBUG,
+			   "MLD: in association. assoc_link_id=%u, valid_links=0x%x",
+			   wpa_s->mlo_assoc_link_id, wpa_s->valid_links);
+
+		params.mld_params.mld_addr = wpa_s->ap_mld_addr;
+		params.mld_params.valid_links = wpa_s->valid_links;
+		params.mld_params.assoc_link_id = wpa_s->mlo_assoc_link_id;
+		for (i = 0; i < MAX_NUM_MLD_LINKS ; i++) {
+			if (!(wpa_s->valid_links & BIT(i)))
+				continue;
+
+			params.mld_params.mld_links[i].bssid =
+				wpa_s->links[i].bssid;
+			params.mld_params.mld_links[i].freq =
+				wpa_s->links[i].freq;
+
+			wpa_printf(MSG_DEBUG, "MLD: id=%zu, freq=%d, " MACSTR,
+				   i, wpa_s->links[i].freq,
+				   MAC2STR(wpa_s->links[i].bssid));
+		}
+	}
+
 	if (wpa_drv_associate(wpa_s, &params) < 0) {
 		wpa_msg(wpa_s, MSG_INFO, "SME: Association request to the "
 			"driver failed");