ENUM MAC80211_RATE_CONTROL_FLAGS(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ¦‹ okay so welcome to the Kernel API Manual, bestie πŸ¦‹

this page is enum mac80211_rate_control_flags(9) and it's lowkey iconic. grab a lil snack, we're getting into rate-control flags πŸ’…


🌸 NAME 🌸

enum mac80211_rate_control_flags β€” the per-rate flags that get set by the Rate Control algorithm. that's it, that's the vibe. πŸ’–


✨ SYNOPSIS ✨

here's the whole enum, exactly as it lives, no edits, no cap:

enum mac80211_rate_control_flags {
    IEEE80211_TX_RC_USE_RTS_CTS ,
    IEEE80211_TX_RC_USE_CTS_PROTECT ,
    IEEE80211_TX_RC_USE_SHORT_PREAMBLE ,
    IEEE80211_TX_RC_MCS ,
    IEEE80211_TX_RC_GREEN_FIELD ,
    IEEE80211_TX_RC_40_MHZ_WIDTH ,
    IEEE80211_TX_RC_DUP_DATA ,
    IEEE80211_TX_RC_SHORT_GI ,
    IEEE80211_TX_RC_VHT_MCS ,
    IEEE80211_TX_RC_80_MHZ_WIDTH ,
    IEEE80211_TX_RC_160_MHZ_WIDTH

};

πŸŽ€ CONSTANTS πŸŽ€

okay so each one of these little guys is a flag, and here's what each one means, fr fr:

  • IEEE80211_TX_RC_USE_RTS_CTS β€” bestie, use an RTS/CTS exchange for this rate. 🫢
  • IEEE80211_TX_RC_USE_CTS_PROTECT β€” CTS-to-self protection is required. this one gets set if the current BSS requires ERP protection. periodt.
  • IEEE80211_TX_RC_USE_SHORT_PREAMBLE β€” use short preamble. short and sweet, we love her. ✨
  • IEEE80211_TX_RC_MCS β€” HT rate. that's it. that's the whole flag. πŸ’€
  • IEEE80211_TX_RC_GREEN_FIELD β€” says whether this rate should be used in Greenfield mode. green flag energy (the literal kind, not the dating kind) 🌿
  • IEEE80211_TX_RC_40_MHZ_WIDTH β€” says whether the Channel Width should be 40 MHz. big bandwidth moment.
  • IEEE80211_TX_RC_DUP_DATA β€” the frame should be transmitted on both of the adjacent 20 MHz channels, if the current channel type is NL80211_CHAN_HT40MINUS or NL80211_CHAN_HT40PLUS. like, both of them, at once, slay. πŸ”₯
  • IEEE80211_TX_RC_SHORT_GI β€” Short Guard interval should be used for this rate. yes ma'am. πŸ’…
  • IEEE80211_TX_RC_VHT_MCS β€” VHT MCS rate. and in this case the idx field is split into a higher 4 bits (Nss) and lower 4 bits (MCS number). iykyk, the bit-splitting is giving main character energy. πŸ‘‘
  • IEEE80211_TX_RC_80_MHZ_WIDTH β€” indicates 80 MHz transmission. iconic. 🌈
  • IEEE80211_TX_RC_160_MHZ_WIDTH β€” indicates 160 MHz transmission. and heads up bestie: 80+80 isn't supported yet. πŸ™ˆ

πŸ’œ DESCRIPTION πŸ’œ

so like, the whole deal is this: these flags are set by the Rate control algorithm for each rate during tx, in the flags member of struct ieee80211_tx_rate. that's the tea. πŸ“


⭐ SEE ALSO ⭐

okay this list is LONG, like the group chat when somebody says "guess what". every single one, in order, no skips, no cap: πŸ’€


k that's literally everything, bestie. go forth and set your flags. πŸ§šβ€β™€οΈ

and like, a cute lil sign-off before you close the tab: this page comes from ./include/net, it's dated October 2026, and the footer calls it enum mac8021...ontrol_flags(9) β€” yes the truncation is literally in there, i'm not fixing it, it's canon now πŸ’– πŸŽ€ ✨

πŸ“¦ where this page comes from