STRUCT IEEE80211_EHT_MCS_NSS_SUPP_BW(9)
π struct ieee80211_eht_mcs_nss_supp_bw β Kernel API Manual π
okay bestie, welcome to the glow-up of a lifetime β¨ this is the <pink>Kernel API Manual</pink> page for struct ieee80211_eht_mcs_nss_supp_bw, and it's giving "tiny struct, enormous Wi-Fi energy". Buckle up π
πΈ NAME πΈ
struct ieee80211_eht_mcs_nss_supp_bw β EHT max supported NSS per MCS (and yes, the parenthetical is doing character work: except 20MHz only stations). like, if ur a 20MHz-only station this struct is simply not about u, no cap π
β¨ SYNOPSIS β¨
here's the whole vibe, verbatim, don't touch it, it's perfect:
struct ieee80211_eht_mcs_nss_supp_bw {
union {
struct {
u8 rx_tx_mcs9_max_nss;
u8 rx_tx_mcs11_max_nss;
u8 rx_tx_mcs13_max_nss;
};
u8 rx_tx_max_nss[3];
};
};
ok so it's a union inside a struct inside ur heart π«Ά you can peek at it field-by-field by name or just roll through it as an array. both. at once. it's the same bytes. iconic behaviour honestly π
π¦ Members π¦
{unnamed_union}β anonymous. no name, no problem, it's just vibing there unnamed π{unnamed_struct}β also anonymous. a mystery. a little enigma. it simply exists π«rx_tx_mcs9_max_nssβ this one tells u the max number of spatial streams supported for reception and the max number of spatial streams supported for transmission for MCS 0 - 9. two facts, one byte, we love efficiency πrx_tx_mcs11_max_nssβ same deal, but the range is MCS 10 - 11. max spatial streams for Rx, max spatial streams for Tx. short and sweet, mwah πrx_tx_mcs13_max_nssβ and again for MCS 12 - 13: max spatial streams for reception, max spatial streams for transmission. the trilogy completes itself πrx_tx_max_nssβ array of the previous fields for easier loop access π literally the "i don't wanna type three names" field and honestly? relatable. loop girls stay winning π₯
π§ Description π§
okay this is the part u actually need for the exam bestie, so listen up π
For each field below (i.e. every one of those three max-nss bytes):
- bits 0 - 3 β the maximal number of spatial streams for Rx π
- bits 4 - 7 β the maximal number of spatial streams for Tx π
that's it. that's the whole bit layout. low half Rx, high half Tx, one byte carrying both like a lil suitcase π§³β¨
π SEE ALSO π
the whole friend group, all of them, no one gets left out π«Ά:
- Kernel file
./include/linux/ieee80211-eht.h struct ieee80211_ttlm_elem(9)struct ieee80211_eht_mcs_nss_supp_20mhz_only(9)struct ieee80211_eht_cap_elem_fixed(9)struct ieee80211_eht_cap_elem(9)struct ieee80211_eht_operation(9)struct ieee80211_eht_operation_info(9)ieee80211_mle_common_size(9)ieee80211_mle_get_link_id(9)ieee80211_mle_get_bss_param_ch_cnt(9)ieee80211_mle_get_eml_med_sync_delay(9)ieee80211_mle_get_eml_cap(9)ieee80211_mle_get_mld_capa_op(9)ieee80211_mle_get_ext_mld_capa_op(9)ieee80211_mle_get_enh_crit_upd_info(9)ieee80211_mle_get_mld_id(9)ieee80211_mle_size_ok(9)ieee80211_mle_type_ok(9)ieee80211_mle_basic_sta_prof_size_ok(9)ieee80211_mle_basic_sta_prof_bss_param_ch_cnt(9)ieee80211_mle_basic_sta_prof_enh_crit_upd(9)ieee80211_mle_reconf_sta_prof_size_ok(9)ieee80211_emlsr_pad_delay_in_us(9)ieee80211_emlsr_trans_delay_in_us(9)ieee80211_emlmr_pad_delay_in_us(9)ieee80211_emlmr_trans_delay_in_us(9)ieee80211_eml_trans_timeout_in_us(9)
ngl bestie, the only thing to be careful about here is the bit packing: Rx lives in bits 0 - 3 and Tx lives in bits 4 - 7 of each one of those bytes. don't go flipping them, i'm begging π
slay, that's the whole page π sourced from ./include/linux, dated October 2026, and filed under struct ieee8..._nss_supp_bw(9) β mwah, go read the header, ily, bye πβ¨π¦
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms