STRUCT IEEE80211_EHT_MCS_NSS_SUPP_20MHZ_ONLY(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

bestie pull up a chair because we're in the Kernel API Manual (section 9, kernel API land) and today's main character is the lil struct that tells everyone how many spatial streams an EHT 20MHz-only station can handle per MCS. no cap, it's tiny but it matters. πŸŽ€

🌸 NAME 🌸

struct ieee80211_eht_mcs_nss_supp_20mhz_only β€” literally the "EHT 20MHz only station max supported NSS for per MCS" situation. that's the whole vibe. πŸ’…

✨ SYNOPSIS ✨

okay so here's the shape of it, exact, character for character:

struct ieee80211_eht_mcs_nss_supp_20mhz_only {
    union {
      struct {
        u8 rx_tx_mcs7_max_nss;
        u8 rx_tx_mcs9_max_nss;
        u8 rx_tx_mcs11_max_nss;
        u8 rx_tx_mcs13_max_nss;
      };
      u8 rx_tx_max_nss[4];
    };
 };

look at her. four little u8s living inside a union with an array. iconic. πŸ‘‘

πŸ¦‹ MEMBERS πŸ¦‹

bestie, some of these members are straight-up anonymous, so let's go through them one by one, no skipping:

  • {unnamed_union} β€” anonymous. yes, she has no name. mysterious. main character energy. πŸ™ˆ
  • {unnamed_struct} β€” also anonymous. also mysterious. we love a duo. ✨
  • rx_tx_mcs7_max_nss β€” this one indicates the maximum number of spatial streams supported for reception and the maximum number of spatial streams supported for transmission for MCS 0 - 7. both. at once. multitasking queen. πŸ’–
  • rx_tx_mcs9_max_nss β€” same deal but for MCS 8 - 9: max spatial streams for reception and max spatial streams for transmission. πŸ’«
  • rx_tx_mcs11_max_nss β€” that exact same "max streams for Rx and max streams for Tx" energy, but for MCS 10 - 11. πŸŽ€
  • rx_tx_mcs13_max_nss β€” and again for MCS 12 - 13. the pattern ate, ngl. πŸ”₯
  • rx_tx_max_nss β€” array of the previous fields for easier loop access. she's the same data, just lined up so you can loop through her. convenient slay. 🌈

πŸ’œ DESCRIPTION πŸ’œ

so the actual decoding rules, and you need these fr fr:

For each field below, bits 0 - 3 indicate the maximal number of spatial streams for Rx, and bits 4 - 7 indicate the maximal number of spatial streams for Tx.

that's it, that's the bit layout β€” low nibble is Rx, high nibble is Tx. don't mix them up, bestie, or your stream counts will be giving chaos. 😭

🌟 SEE ALSO 🌟

the whole extended friend group, all of them, in order:


and that's the page, bestie 🫢 this one lives under ./include/linux, dated October 2026, and it's filed as struct ieee8...p_20mhz_only(9) in the manual β€” yes the name got truncated in the header, it's giving "ran out of character limit", but that's just how she's indexed. go forth and set your NSS bits correctly. ⭐ πŸ’…

πŸ“¦ where this page comes from