STRUCT IWL_AC_QOS(9)
π NAME π
struct iwl_ac_qos β the QOS timing params for MAC_CONTEXT_CMD, bestie β¨
okay so real quick, this page lives in the Kernel API Manual (that's the manual name, love that for it), and it's all about one tiny struct that tells your Wi-Fi firmware how to behave itself when it's time to transmit. no cap, it's lowkey important π
πΈ SYNOPSIS πΈ
struct iwl_ac_qos {
__le16 cw_min;
__le16 cw_max;
u8 aifsn;
u8 fifos_mask;
__le16 edca_txop;
};
like, that's the whole vibe. five fields, each one doing its little job π«Ά
π Members π
cw_minβ the contention window's start value, counted in numbers of slots. it should be a power-of-2, minus 1 (power-of-2, minus 1, iykyk). the device's default is0x0f. πcw_maxβ the contention window's max value, also counted in numbers of slots. same rule applies: it should be a power-of-2, minus 1. the device's default is0x3f. π₯aifsnβ how many slots go in the Arbitration Interframe Space (that's the pause before it does its random backoff timing, right before Tx). device default is1. βfifos_maskβ the FIFOs this MAC uses for this AC. literally just a mask πedca_txopβ the length of the Tx opportunity, measured in uSecs. device default is0. π
π¦ Description π¦
so there's one instance of this config struct for each of 4 EDCA access categories in struct iwl_qosparam_cmd. four of them, one per category, that's the whole point π
and here's the cute part: the device will automatically increase the contention window by (2*CW) + 1 for each transmission retry. obsessed. and when it needs to cap that CW value, it takes cw_max and uses it as a bit mask, ANDed with the new CW value. so cw_max isn't just a ceiling, it's a literal mask situation π
ngl, that retry math is doing main character energy. (2*CW) + 1 every single retry β the device handles it, you don't gotta do a thing π
π SEE ALSO π
the whole friend group lives in the kernel file ./drivers/net/wireless/intel/iwlwifi/fw/api/mac.h, and these are all the besties in it:
enum iwl_mac_protection_flags(9)enum iwl_mac_types(9)enum iwl_tsf_id(9)struct iwl_mac_data_ap(9)struct iwl_mac_data_ibss(9)enum iwl_mac_data_policy(9)struct iwl_mac_data_sta(9)struct iwl_mac_data_go(9)struct iwl_mac_data_p2p_sta(9)struct iwl_mac_data_pibss(9)enum iwl_mac_filter_flags(9)enum iwl_mac_qos_flags(9)struct iwl_mac_ctx_cmd(9)struct iwl_missed_beacons_notif_ver_3(9)struct iwl_missed_beacons_notif_v4(9)struct iwl_he_backoff_conf(9)enum iwl_he_pkt_ext_constellations(9)struct iwl_he_pkt_ext_v1(9)struct iwl_he_pkt_ext_v2(9)enum iwl_he_sta_ctxt_flags(9)enum iwl_he_htc_flags(9)struct iwl_he_sta_context_cmd_v1(9)struct iwl_he_sta_context_cmd_v2(9)struct iwl_he_sta_context_cmd_v3(9)struct iwl_he_monitor_cmd(9)
and that's the page!! β¨ this little cutie came from ./drivers/net/wireless/intel/i... and it's dated October 2026 β go read it, slay, and remember: cw_max is a mask, not a mood π
π«Ά bye bestie!!
π¦ 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