[PATCH v2 2/2] wpa_supplicant: Add ieee80211ax status indication

Chung-Hsien Hsu chung-hsien.hsu at infineon.com
Sun May 24 08:09:33 PDT 2026


The STATUS output has a legacy ieee80211ac=1 indication for VHT, but
there is no corresponding indication for HE/IEEE 802.11ax.

Add ieee80211ax=1 to STATUS output based on the parsed connection_he
state. Keep the indication non-exclusive so that EHT associations that
include HE can continue to report ieee80211ax=1. The exclusive
generation indication remains the wifi_generation STATUS field.

Signed-off-by: Chung-Hsien Hsu <chung-hsien.hsu at infineon.com>
Signed-off-by: Adesh Kumar Singh <adeshkumar.singh at infineon.com>
---
 wpa_supplicant/ctrl_iface.c       | 9 +++++++++
 wpa_supplicant/events.c           | 9 +++++++++
 wpa_supplicant/wpa_supplicant_i.h | 3 +++
 3 files changed, 21 insertions(+)

diff --git a/wpa_supplicant/ctrl_iface.c b/wpa_supplicant/ctrl_iface.c
index 14b4cd9d2e4d..83a892a648c9 100644
--- a/wpa_supplicant/ctrl_iface.c
+++ b/wpa_supplicant/ctrl_iface.c
@@ -2600,6 +2600,15 @@ static int wpa_supplicant_ctrl_iface_status(struct wpa_supplicant *wpa_s,
 	}
 #endif /* CONFIG_WPS */
 
+#ifdef CONFIG_IEEE80211AX
+	if (wpa_s->ieee80211ax) {
+		ret = os_snprintf(pos, end - pos, "ieee80211ax=1\n");
+		if (os_snprintf_error(end - pos, ret))
+			return pos - buf;
+		pos += ret;
+	}
+#endif /* CONFIG_IEEE80211AX */
+
 	if (wpa_s->ieee80211ac) {
 		ret = os_snprintf(pos, end - pos, "ieee80211ac=1\n");
 		if (os_snprintf_error(end - pos, ret))
diff --git a/wpa_supplicant/events.c b/wpa_supplicant/events.c
index 11857b3e02f9..f992c8d458cc 100644
--- a/wpa_supplicant/events.c
+++ b/wpa_supplicant/events.c
@@ -439,6 +439,9 @@ void wpa_supplicant_mark_disassoc(struct wpa_supplicant *wpa_s)
 	os_memset(wpa_s->last_tk, 0, sizeof(wpa_s->last_tk));
 #endif /* CONFIG_TESTING_OPTIONS */
 	wpa_s->ieee80211ac = 0;
+#ifdef CONFIG_IEEE80211AX
+	wpa_s->ieee80211ax = 0;
+#endif /* CONFIG_IEEE80211AX */
 
 	if (wpa_s->enabled_4addr_mode && wpa_drv_set_4addr_mode(wpa_s, 0) == 0)
 		wpa_s->enabled_4addr_mode = 0;
@@ -3534,6 +3537,9 @@ static void wpas_parse_connection_info(struct wpa_supplicant *wpa_s,
 
 	wpa_s->connection_set = 0;
 	wpa_s->ieee80211ac = 0;
+#ifdef CONFIG_IEEE80211AX
+	wpa_s->ieee80211ax = 0;
+#endif /* CONFIG_IEEE80211AX */
 
 	if (!req_ies || !resp_ies ||
 	    ieee802_11_parse_elems(req_ies, req_ies_len, &req_elems, 0) ==
@@ -3556,6 +3562,9 @@ static void wpas_parse_connection_info(struct wpa_supplicant *wpa_s,
 	wpa_s->connection_eht = req_elems.eht_capabilities &&
 		resp_elems.eht_capabilities;
 	wpa_s->ieee80211ac = wpa_s->connection_vht;
+#ifdef CONFIG_IEEE80211AX
+	wpa_s->ieee80211ax = wpa_s->connection_he;
+#endif /* CONFIG_IEEE80211AX */
 	if (req_elems.rrm_enabled)
 		wpa_s->rrm.rrm_used = 1;
 
diff --git a/wpa_supplicant/wpa_supplicant_i.h b/wpa_supplicant/wpa_supplicant_i.h
index 828795b1967d..eba6d6c62f6d 100644
--- a/wpa_supplicant/wpa_supplicant_i.h
+++ b/wpa_supplicant/wpa_supplicant_i.h
@@ -1635,6 +1635,9 @@ struct wpa_supplicant {
 #ifdef CONFIG_FILS
 	unsigned int disable_fils:1;
 #endif /* CONFIG_FILS */
+#ifdef CONFIG_IEEE80211AX
+	unsigned int ieee80211ax:1;
+#endif /* CONFIG_IEEE80211AX */
 	unsigned int ieee80211ac:1;
 	unsigned int enabled_4addr_mode:1;
 	unsigned int multi_bss_support:1;
-- 
2.25.1




More information about the Hostap mailing list