From: Ilan Peer Date: Wed, 30 Nov 2022 13:09:35 +0000 (+0200) Subject: nl80211: Handle scan results with MLD connection X-Git-Tag: hostap_2_11~1402 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=06eb608d54df3113b0355cfdf194f1a5b45c39f8;p=thirdparty%2Fhostap.git nl80211: Handle scan results with MLD connection With an MLD connection the BSSID reported in the association event is the MLD AP address, while the association state reported in the scan results relates to the MLD AP specific link. In such a case do not disconnect. Signed-off-by: Ilan Peer Signed-off-by: Andrei Otcheretianski --- diff --git a/src/drivers/driver_nl80211_scan.c b/src/drivers/driver_nl80211_scan.c index d54dd3a33..7a7890c71 100644 --- a/src/drivers/driver_nl80211_scan.c +++ b/src/drivers/driver_nl80211_scan.c @@ -911,8 +911,21 @@ static void nl80211_check_bss_status(struct wpa_driver_nl80211_data *drv, "nl80211: Local state (associated with " MACSTR ") does not match with BSS state", MAC2STR(drv->bssid)); - clear_state_mismatch(drv, r->bssid); - clear_state_mismatch(drv, drv->bssid); + + if (os_memcmp(drv->sta_mlo_info.ap_mld_addr, drv->bssid, + ETH_ALEN) != 0) { + clear_state_mismatch(drv, r->bssid); + + if (!is_zero_ether_addr(drv->sta_mlo_info.ap_mld_addr)) + clear_state_mismatch( + drv, drv->sta_mlo_info.ap_mld_addr); + else + clear_state_mismatch(drv, drv->bssid); + + } else { + wpa_printf(MSG_DEBUG, + "nl80211: BSSID is the MLD address"); + } } }