[PATCH v2] FT: Set RSNXE Used only when the AP advertises an RSNXE

Christopher Griffin via B4 Relay devnull+christophergriffin05.gmail.com at kernel.org
Sun Nov 1 20:29:14 PST 2026


From: Christopher Griffin <christophergriffin05 at gmail.com>

RSNXE Used in the FTE of an FT Reassociation Response indicates that the
AP uses the RSNXE in other frames (commit 51d1924bd), and wpa_supplicant
checks it against the RSNXE of the Beacon and Probe Response frames. The
AP set it whenever sae_pwe was 1 or 2. A BSS without an SAE AKM, for
example FT-EAP or FT-PSK, usually has no extended RSN capability to
advertise and thus no RSNXE, but with sae_pwe set its responses still
announced one. wpa_supplicant then rejected every FT Reassociation
Response ("FT: FTE indicated that AP uses RSNXE, but RSNXE was not
included in Beacon/Probe Response frames") and deauthenticated with
reason 13 (invalid element). OpenWrt 25.12.2 sets sae_pwe=2 on WPA3 and
WPA2/WPA3 Enterprise BSSs, so FT-EAP roams to such APs failed.

Set RSNXE Used only when the Beacon and Probe Response frames carry an
RSNXE: it is not omitted with rsn_override_omit_rsnxe, and the AP has an
extended RSN capability to advertise. The response to a STA that sent no
RSNXE is unchanged.

Assisted-by: Claude:claude-opus-5-5
Signed-off-by: Christopher Griffin <christophergriffin05 at gmail.com>
---
Seen with OpenWrt 25.12.2 APs (mt76) whose FT-EAP BSS has sae_pwe=2:
every FT roam to them failed with reason 13.

Changes in v2:
- v1 cleared RSNXE Used whenever the response itself carried no RSNXE.
  Per 51d1924bd the subfield reflects the RSNXE of the Beacon and Probe
  Response frames, as Koral Ilgun's series "FT: RSNXE Used without the
  RSNXE" points out, so a response to a STA that sent no RSNXE keeps it.
  v2 clears the subfield only when the AP advertises no RSNXE. That also
  covers the rsn_override_omit_rsnxe case of patch 1 of that series.
- v1: "[PATCH] FT: Set RSNXE Used in Reassociation Response only with an
  RSNXE", 2026-11-01.

Tested on an Arista W-118 (ath10k, OpenWrt main), wpa_supplicant as the
STA, six FT roams between two BSSes each:
- FT-PSK, AP sae_pwe=2 (no SAE AKM): 6 of 6 roams completed; 0 of 6
  without this patch, each deauthenticated with reason 13.
- FT-SAE, AP sae_pwe=2, STA sae_pwe=0 (no RSNXE in its request): 5 of
  6; the first ROAM came before the target was in the scan results and
  was not attempted.
- FT-SAE, AP sae_pwe=2, STA sae_pwe=2: 6 of 6.
The hwsim tests were not run.
---
 src/ap/wpa_auth_ft.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/src/ap/wpa_auth_ft.c b/src/ap/wpa_auth_ft.c
index e12f2ad..7046e34 100644
--- a/src/ap/wpa_auth_ft.c
+++ b/src/ap/wpa_auth_ft.c
@@ -2714,7 +2714,12 @@ u8 * wpa_sm_write_assoc_resp_ies(struct wpa_state_machine *sm, u8 *pos,
 		anonce = NULL;
 		snonce = NULL;
 	}
+	/* RSNXE Used indicates that the AP uses the RSNXE in other frames, so
+	 * only an AP whose Beacon and Probe Response frames carry an RSNXE
+	 * may set it. */
 	rsnxe_used = (auth_alg == WLAN_AUTH_FT) &&
+		!conf->rsn_override_omit_rsnxe &&
+		wpa_write_rsnxe(conf, rsnxe_buf, sizeof(rsnxe_buf)) > 0 &&
 		(conf->sae_pwe == SAE_PWE_HASH_TO_ELEMENT ||
 		 conf->sae_pwe == SAE_PWE_BOTH);
 #ifdef CONFIG_TESTING_OPTIONS

---
base-commit: 1f2231a88a742befbea44bc19ffee94bed616505
change-id: 20261101-b128-ft-rsnxe-used-71f9af438205

Best regards,
--  
Christopher Griffin <christophergriffin05 at gmail.com>





More information about the Hostap mailing list