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@xxxxxxxxx> Signed-off-by: Andrei Otcheretianski <andrei.otcheretianski@xxxxxxxxx> --- wpa_supplicant/sme.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/wpa_supplicant/sme.c b/wpa_supplicant/sme.c index 1346a409e9..ade35c1a0d 100644 --- a/wpa_supplicant/sme.c +++ b/wpa_supplicant/sme.c @@ -2394,6 +2394,31 @@ mscs_fail: else params.uapsd = -1; + if (wpa_s->mld) { + 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, ¶ms) < 0) { wpa_msg(wpa_s, MSG_INFO, "SME: Association request to the " "driver failed"); -- 2.25.1 _______________________________________________ Hostap mailing list Hostap@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/hostap