STRUCT IL_AC_QOS(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… struct il_ac_qos(9) β€” the Kernel API Manual, but make it make sense πŸŽ€

Okay bestie, buckle up, because we're diving into struct il_ac_qos from the Kernel API Manual (section 9, kernel-functions hive, iykyk) ✨

✨ NAME ✨

struct il_ac_qos β€” literally the QOS timing params for C_QOS_PARAM, and you get one of these for each of the 4 EDCA access categories inside struct il_qosparam_cmd. Four little icons, one per access category 🫢


🌸 SYNOPSIS 🌸

struct il_ac_qos {
    __le16 cw_min;
    __le16 cw_max;
    u8 aifsn;
    u8 reserved1;
    __le16 edca_txop;
 };

No cap, that's the whole struct πŸ’€


πŸ¦‹ Members πŸ¦‹

Here's the vibe check on every single field, and yes we're doing all of them πŸ‘‘

  • cw_min β€” the contention win start value, counted in numbers of slots. It should be a power-of-2, minus 1. The device's default is 0x0f πŸ“
  • cw_max β€” the contention win max value, also in numbers of slots. Also should be a power-of-2, minus 1. Device's default is 0x3f 🌸
  • aifsn β€” number of slots in the Arbitration Interframe Space (that's the lil' pause before doing the random backoff timing, prior to Tx). Device default is 1 ⭐
  • reserved1 β€” it's reserved, bestie, we don't touch it πŸ™ˆ (it's in the SYNOPSIS up there but the manpage gives it no description, so no invented lore from me, fr fr)
  • edca_txop β€” length of the Tx opportunity, measured in uSecs. Device default is 0 πŸŽ€

πŸ’œ Description πŸ’œ

The device will automatically increase the contention win by (2*CW) + 1 for each transmission retry. Then it uses cw_max as a bit mask, ANDed with the new CW value, to cap the CW value πŸ’…

That's it. That's the whole behaviour. It ramps up, then it gets masked down. Main character energy from a hardware register, honestly.

πŸ”₯ SEE ALSO πŸ”₯

All the siblings in the kernel file ./drivers/net/wireless/intel/iwlegacy/commands.h, because this struct does not exist in a vacuum, bestie:

  • struct il_cmd_header(9)
  • struct il3945_tx_power(9)
  • struct il3945_power_per_rate(9)
  • union il4965_tx_power_dual_stream(9)
  • struct tx_power_dual_stream(9)
  • struct il4965_tx_power_db(9)
  • struct sta_id_modify(9)
  • struct il_link_qual_general_params(9)
  • struct il_link_qual_agg_params(9)
  • struct il_ssid_ie(9)
  • struct stats_tx_power(9)
  • struct il_sensitivity_cmd(9)

Sign-off time, angel πŸ’– This beauty lives in ./drivers/net/wireless/intel/i... (the manpage truncates it like that, and I refuse to guess at what the rest says 🌈), and this edition is dated October 2026. Go forth and slay your contention windows, and remember: power-of-2 minus 1, always πŸ’…βœ¨

πŸ“¦ where this page comes from