[PATCH] SME: Fix duplicated Association Request IEs when continuing authentication
Louis Kotze
loukot at gmail.com
Thu Jul 9 13:27:19 PDT 2026
Commit 064d1b372876 skipped the RSN parameter selection when sending the
second or later Authentication frame of an exchange (e.g., the SAE
confirm). However, the skipped block was also what reset
sme.assoc_req_ie_len, while the IE construction after the skip_setup
label still ran for every Authentication frame. Each additional frame
of the exchange appended another copy of several elements (Supported
Operating Classes, RRM Enabled Capabilities, RSNXE, etc.) and inserted
another Extended Capabilities element after the RSNE.
As a result, any connection that uses more than one Authentication
frame with SME-in-wpa_supplicant (e.g., all SAE authentication with
mac80211-based drivers) sends an Association Request frame with
duplicated IEs. Found while debugging MLO association failures on
rtw89 against a TP-Link Deco BE65 AP MLD, where the main branch sends
each of these elements twice in the two-link association request while
wpa_supplicant 2.11 sends them once.
Fix this by skipping the Association Request IE construction entirely
when continuing an Authentication frame exchange. The IEs were already
built when the first frame of the exchange was sent and do not change
within the exchange.
Fixes: 064d1b372876 ("SME: Skip RSN parameter selection when continuing authentication")
Signed-off-by: Louis Kotze <loukot at gmail.com>
---
wpa_supplicant/sme.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/wpa_supplicant/sme.c b/wpa_supplicant/sme.c
index 0ab66e760..d5f3a6767 100644
--- a/wpa_supplicant/sme.c
+++ b/wpa_supplicant/sme.c
@@ -1476,7 +1476,6 @@ static void sme_send_authentication(struct wpa_supplicant *wpa_s,
wpa_supplicant_set_non_wpa_policy(wpa_s, ssid);
wpa_s->sme.assoc_req_ie_len = 0;
}
-skip_setup:
/* In case the WPA vendor IE is used, it should be placed after all the
* non-vendor IEs, as the lower layer expects the IEs to be ordered as
@@ -1711,6 +1710,7 @@ skip_setup:
}
#endif /* CONFIG_MBO */
+skip_setup:
#ifdef CONFIG_ENC_ASSOC
if (!skip_auth && params.auth_alg == WPA_AUTH_ALG_EPPKE) {
if (start) {
--
2.55.0
More information about the Hostap
mailing list