[PATCH] UHR: update to Draft_P802.11bn D1.5
Johannes Berg
johannes at sipsolutions.net
Fri Jul 31 05:29:46 PDT 2026
From: Johannes Berg <johannes.berg at intel.com>
Update various definitions to D1.5. Obviously,
the implementation is severly lacking.
Signed-off-by: Johannes Berg <johannes.berg at intel.com>
---
src/ap/ieee802_11_uhr.c | 10 +++-------
src/common/ieee802_11_defs.h | 28 ++++++++++++++--------------
2 files changed, 17 insertions(+), 21 deletions(-)
diff --git a/src/ap/ieee802_11_uhr.c b/src/ap/ieee802_11_uhr.c
index 02193529a0ed..f7af76e8e732 100644
--- a/src/ap/ieee802_11_uhr.c
+++ b/src/ap/ieee802_11_uhr.c
@@ -30,7 +30,7 @@ size_t hostapd_eid_uhr_capab_len(struct hostapd_data *hapd,
return 0;
if (uhr_cap->mac[1] & IEEE80211_UHR_MAC_CAP1_DBE_SUPP)
- len++;
+ len += 3;
return len;
}
@@ -93,6 +93,8 @@ u8 * hostapd_eid_uhr_capab(struct hostapd_data *hapd, u8 *eid,
* even if operating in a lower bandwidth.
*/
*pos++ = dbe_bw;
+ *pos++ = 0; /* switch time period */
+ *pos++ = 0; /* mode change interval */
}
*length_pos = pos - (eid + 2);
@@ -123,12 +125,6 @@ u8 * hostapd_eid_uhr_operation(struct hostapd_data *hapd, u8 *eid, bool beacon)
oper_ctrl |= dbe_bw;
}
- /* TODO: Fill in appropriate UHR-MCS max Nss information */
- oper->basic_uhr_mcs_nss_set[0] = 0x11;
- oper->basic_uhr_mcs_nss_set[1] = 0x00;
- oper->basic_uhr_mcs_nss_set[2] = 0x00;
- oper->basic_uhr_mcs_nss_set[3] = 0x00;
-
pos += sizeof(*oper);
/* UHR Operation Parameters field */
diff --git a/src/common/ieee802_11_defs.h b/src/common/ieee802_11_defs.h
index 483bde5cdd4b..5b77f5bccd63 100644
--- a/src/common/ieee802_11_defs.h
+++ b/src/common/ieee802_11_defs.h
@@ -3337,16 +3337,16 @@ struct ieee80211_uhr_capabilities {
#define UHR_OPER_CTRL_DBE_ENA 0x0008
#define UHR_OPER_CTRL_DBE_BW_SHIFT 4
#define UHR_OPER_CTRL_DBE_BW_MASK 0x0070
-#define UHR_OPER_CTRL_DUO_OP_PARAMS_PRES 0x0080
-#define UHR_OPER_CTRL_DPS_OP_PARAMS_PRES 0x0100
-#define UHR_OPER_CTRL_NPCA_OP_PARAMS_PRES 0x0200
-#define UHR_OPER_CTRL_P_EDCA_OP_PARAMS_PRES 0x0400
-#define UHR_OPER_CTRL_DPE_OP_PARAMS_PRES 0x0800
+#define UHR_OPER_CTRL_ELR_RX 0x0080
+#define UHR_OPER_CTRL_DUO_OP_PARAMS_PRES 0x0100
+#define UHR_OPER_CTRL_DPS_OP_PARAMS_PRES 0x0200
+#define UHR_OPER_CTRL_NPCA_OP_PARAMS_PRES 0x0400
+#define UHR_OPER_CTRL_P_EDCA_OP_PARAMS_PRES 0x0800
+#define UHR_OPER_CTRL_DPE_OP_PARAMS_PRES 0x1000
/* UHR Operation element format */
struct ieee80211_uhr_operation {
le16 oper_ctrl; /* UHR Operation Control: UHR_OPER_CTRL_* bits */
- u8 basic_uhr_mcs_nss_set[4];
/* UHR Operations Parameters - variable */
} STRUCT_PACKED;
@@ -3364,14 +3364,14 @@ struct ieee80211_uhr_operation {
#define IEEE80211_UHR_OPER_MAX_SIZE \
(sizeof(struct ieee80211_uhr_operation) + 1 + 4 + 6 + 3 + 3)
-/* IEEE P802.11bn/D1.4, Figure 9-aa4 (NPCA Operation Parameters field format) */
-#define UHR_OPER_PARAMS_NPCA_PRI_CHAN_OFFS 0x0000000F
-#define UHR_OPER_PARAMS_NPCA_NPCA_MIN_DUR_THRESH 0x000000F0
-#define UHR_OPER_PARAMS_NPCA_NPCA_SWITCH_DELAY 0x00003F00
-#define UHR_OPER_PARAMS_NPCA_NPCA_SWITCH_BACK_DELAY 0x000FC000
-#define UHR_OPER_PARAMS_NPCA_INIT_NPCA_QRSC 0x00300000
-#define UHR_OPER_PARAMS_NPCA_MOPLEN_NPCA 0x00400000
-#define UHR_OPER_PARAMS_NPCA_DIS_SUBCH_BITMAP_PRES 0x00800000
+/* IEEE P802.11bn/D1.5, Figure 9-aa6 (NPCA Operation Parameters field format) */
+#define UHR_OPER_PARAMS_NPCA_PRI_CHAN 0x000000FF
+#define UHR_OPER_PARAMS_NPCA_NPCA_MIN_DUR_THRESH 0x00000F00
+#define UHR_OPER_PARAMS_NPCA_NPCA_SWITCH_DELAY 0x0003F000
+#define UHR_OPER_PARAMS_NPCA_NPCA_SWITCH_BACK_DELAY 0x00FC0000
+#define UHR_OPER_PARAMS_NPCA_INIT_NPCA_QRSC 0x03000000
+#define UHR_OPER_PARAMS_NPCA_MOPLEN_NPCA 0x04000000
+#define UHR_OPER_PARAMS_NPCA_DIS_SUBCH_BITMAP_PRES 0x08000000
#ifdef _MSC_VER
#pragma pack(pop)
--
2.55.0
More information about the Hostap
mailing list