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

Chung-Hsien Hsu chung-hsien.hsu at infineon.com
Tue May 12 06:26:50 PDT 2026


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

Add ieee80211ax=1 to STATUS output based on the parsed connection_he
state. Keep the indication limited to HE associations by excluding EHT
associations so that an IEEE 802.11be connection is not reported as an
IEEE 802.11ax connection.

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           | 10 ++++++++++
 wpa_supplicant/wpa_supplicant_i.h |  3 +++
 3 files changed, 22 insertions(+)

diff --git a/wpa_supplicant/ctrl_iface.c b/wpa_supplicant/ctrl_iface.c
index 1096fa228d06..42c792b7fe39 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 9afbd4617dd5..40f682803c8e 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) ==
@@ -3560,6 +3566,10 @@ static void wpas_parse_connection_info(struct wpa_supplicant *wpa_s,
 	 * actual VHT/IEEE 802.11ac associations. */
 	wpa_s->ieee80211ac = wpa_s->connection_vht &&
 		!wpa_s->connection_he && !wpa_s->connection_eht;
+#ifdef CONFIG_IEEE80211AX
+	wpa_s->ieee80211ax = wpa_s->connection_he &&
+		!wpa_s->connection_eht;
+#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 d68dd582fb75..23739aa17ce0 100644
--- a/wpa_supplicant/wpa_supplicant_i.h
+++ b/wpa_supplicant/wpa_supplicant_i.h
@@ -1634,6 +1634,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