diff --git a/src/ap/ieee802_11.c b/src/ap/ieee802_11.c index aae6ac38b..bd63a56f8 100644 --- a/src/ap/ieee802_11.c +++ b/src/ap/ieee802_11.c @@ -4024,15 +4024,15 @@ static int __check_assoc_ies(struct hostapd_data *hapd, struct sta_info *sta, if (hapd->conf->wpa && wpa_ie) { enum wpa_validate_result res; +#ifdef CONFIG_IEEE80211BE + struct mld_info *info = &sta->mld_info; + bool init = !sta->wpa_sm; +#endif /* CONFIG_IEEE80211BE */ wpa_ie -= 2; wpa_ie_len += 2; if (!sta->wpa_sm) { -#ifdef CONFIG_IEEE80211BE - struct mld_info *info = &sta->mld_info; -#endif /* CONFIG_IEEE80211BE */ - sta->wpa_sm = wpa_auth_sta_init(hapd->wpa_auth, sta->addr, p2p_dev_addr); @@ -4042,18 +4042,19 @@ static int __check_assoc_ies(struct hostapd_data *hapd, struct sta_info *sta, "Failed to initialize RSN state machine"); return WLAN_STATUS_UNSPECIFIED_FAILURE; } + } #ifdef CONFIG_IEEE80211BE - if (ap_sta_is_mld(hapd, sta)) { - wpa_printf(MSG_DEBUG, - "MLD: Set ML info in RSN Authenticator"); - wpa_auth_set_ml_info(sta->wpa_sm, - hapd->mld->mld_addr, - sta->mld_assoc_link_id, - info); - } -#endif /* CONFIG_IEEE80211BE */ + if (ap_sta_is_mld(hapd, sta)) { + wpa_printf(MSG_DEBUG, + "MLD: %s ML info in RSN Authenticator", + init ? "Set" : "Reset"); + wpa_auth_set_ml_info(sta->wpa_sm, + hapd->mld->mld_addr, + sta->mld_assoc_link_id, + info); } +#endif /* CONFIG_IEEE80211BE */ wpa_auth_set_auth_alg(sta->wpa_sm, sta->auth_alg); res = wpa_validate_wpa_ie(hapd->wpa_auth, sta->wpa_sm, diff --git a/src/ap/wpa_auth.c b/src/ap/wpa_auth.c index 01a10b23c..0d15c4209 100644 --- a/src/ap/wpa_auth.c +++ b/src/ap/wpa_auth.c @@ -6820,6 +6820,7 @@ void wpa_auth_set_ml_info(struct wpa_state_machine *sm, const u8 *mld_addr, return; os_memset(sm->mld_links, 0, sizeof(sm->mld_links)); + sm->n_mld_affiliated_links = 0; wpa_auth_logger(sm->wpa_auth, wpa_auth_get_spa(sm), LOGGER_DEBUG, "MLD: Initialization");