[PATCH] nl80211: Fix stale assoc_freq causing WPA3 cross-band roaming failure

Shelley Yang shelley.yang at infineon.com
Tue Jun 16 01:34:16 PDT 2026


When driver BSS selection is enabled, params->freq.freq is 0 in
nl80211_connect_common(). Commit 6f6f9a941c2a removed the else branch
that resets drv->assoc_freq to 0 in this case, leaving it with the
previous BSS frequency. During cross-band roaming, nl80211_get_assoc_freq()
returns the stale value, causing send_mlme() to transmit SAE
Authentication frames on the wrong channel and roaming fails.

Restore the else branch to reset drv->assoc_freq = 0 when
params->freq.freq is not specified.

Fixes: 6f6f9a941c2a ("nl80211: Set assoc_freq for non-AP MLD")

Signed-off-by: Shelley Yang <shelley.yang at infineon.com>
---
 src/drivers/driver_nl80211.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c
index 469a54229..b1f433c8d 100644
--- a/src/drivers/driver_nl80211.c
+++ b/src/drivers/driver_nl80211.c
@@ -7558,6 +7558,8 @@ static int nl80211_connect_common(struct wpa_driver_nl80211_data *drv,
 		}
 
 		drv->assoc_freq = params->freq.freq;
+	} else {
+		drv->assoc_freq = 0;
 	}
 
 	if (params->freq_hint) {
-- 
2.25.1




More information about the Hostap mailing list