@@ -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;
@@ -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