[PATCH v3 12/12] AP: include enhanced critical update field in MLE for UHR
Johannes Berg
johannes at sipsolutions.net
Thu May 7 10:21:39 PDT 2026
From: Johannes Berg <johannes.berg at intel.com>
A UHR AP has to include this field in the common info and
the per-STA profiles. Do this, even if it's currently just
set to zero.
Signed-off-by: Johannes Berg <johannes.berg at intel.com>
---
src/ap/ieee802_11_eht.c | 17 +++++++++++++++++
src/common/ieee802_11_defs.h | 2 ++
2 files changed, 19 insertions(+)
diff --git a/src/ap/ieee802_11_eht.c b/src/ap/ieee802_11_eht.c
index 6359303895c4..0b32fd150996 100644
--- a/src/ap/ieee802_11_eht.c
+++ b/src/ap/ieee802_11_eht.c
@@ -479,6 +479,12 @@ u8 * hostapd_eid_eht_basic_ml_common(struct hostapd_data *hapd,
common_info_len++;
}
+ if (hostapd_is_uhr_enabled(uhr)) {
+ /* Enhanced critical updates */
+ control |= BASIC_MULTI_LINK_CTRL_PRES_ENH_CRIT_UPD;
+ common_info_len++;
+ }
+
wpabuf_put_le16(buf, control);
wpabuf_put_u8(buf, common_info_len);
@@ -491,6 +497,10 @@ u8 * hostapd_eid_eht_basic_ml_common(struct hostapd_data *hapd,
wpabuf_put_u8(buf, hapd->eht_mld_bss_param_change);
+ /* Currently hard-code enhanced critical updates to zero */
+ if (hostapd_is_uhr_enabled(uhr))
+ wpabuf_put_u8(buf, 0);
+
wpa_printf(MSG_DEBUG, "MLD: EML Capabilities=0x%x",
hapd->iface->mld_eml_capa);
wpabuf_put_le16(buf, hapd->iface->mld_eml_capa);
@@ -549,6 +559,9 @@ u8 * hostapd_eid_eht_basic_ml_common(struct hostapd_data *hapd,
* frames */
if (include_bpcc)
sta_info_len++;
+ /* enhanced critical updates */
+ if (include_bpcc && hostapd_is_uhr_enabled(uhr))
+ sta_info_len++;
total_len = sta_info_len + link->resp_sta_profile_len;
@@ -570,6 +583,8 @@ u8 * hostapd_eid_eht_basic_ml_common(struct hostapd_data *hapd,
if (include_bpcc)
control |= BASIC_MLE_STA_CTRL_PRES_BSS_PARAM_COUNT;
+ if (include_bpcc && hostapd_is_uhr_enabled(uhr))
+ control |= BASIC_MLE_STA_CTRL_PRES_ENH_CRIT_UPD;
wpabuf_put_le16(buf, control);
@@ -594,6 +609,8 @@ u8 * hostapd_eid_eht_basic_ml_common(struct hostapd_data *hapd,
/* BSS Parameters Change Count */
if (include_bpcc)
wpabuf_put_u8(buf, link_bss->eht_mld_bss_param_change);
+ if (include_bpcc && hostapd_is_uhr_enabled(uhr))
+ wpabuf_put_u8(buf, 0);
if (!link->resp_sta_profile)
continue;
diff --git a/src/common/ieee802_11_defs.h b/src/common/ieee802_11_defs.h
index 9f654b83f76f..d115578a7df1 100644
--- a/src/common/ieee802_11_defs.h
+++ b/src/common/ieee802_11_defs.h
@@ -2877,6 +2877,7 @@ struct ieee80211_eht_capabilities {
#define BASIC_MULTI_LINK_CTRL_PRES_MLD_CAPA 0x0100
#define BASIC_MULTI_LINK_CTRL_PRES_AP_MLD_ID 0x0200
#define BASIC_MULTI_LINK_CTRL_PRES_EXT_MLD_CAP 0x0400
+#define BASIC_MULTI_LINK_CTRL_PRES_ENH_CRIT_UPD 0x0800
/*
* STA Control field definitions of Per-STA Profile subelement in Basic
@@ -2893,6 +2894,7 @@ struct ieee80211_eht_capabilities {
#define BASIC_MLE_STA_CTRL_PRES_NSTR_LINK_PAIR 0x0200
#define BASIC_MLE_STA_CTRL_NSTR_BITMAP 0x0400
#define BASIC_MLE_STA_CTRL_PRES_BSS_PARAM_COUNT 0x0800
+#define BASIC_MLE_STA_CTRL_PRES_ENH_CRIT_UPD 0x1000
#define BASIC_MLE_STA_PROF_STA_MAC_IDX 3
--
2.53.0
More information about the Hostap
mailing list