STRUCT IWL_LQ_CMD(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

okay bestie, this is from the Kernel API Manual (the struct iwl_lq_cmd(9) page, to be exact), and it's literally the link quality command. no cap, it's giving "here's the whole struct, every field, don't skip a single one" energy. let's get into it 🫢


✨ SYNOPSIS ✨

like, here's the whole thing, character for character, because we do NOT paraphrase code in this house πŸ’–

struct iwl_lq_cmd {
    u8 sta_id;
    u8 reduced_tpc;
    __le16 control;
    u8 flags;
    u8 mimo_delim;
    u8 single_stream_ant_msk;
    u8 dual_stream_ant_msk;
    u8 initial_rate_index[AC_NUM];
    __le16 agg_time_limit;
    u8 agg_disable_start_th;
    u8 agg_frame_cnt_limit;
    __le32 reserved2;
    __le32 rs_table[LQ_MAX_RETRY_NUM];
    __le32 ss_params;
 };

πŸŽ€ Members πŸŽ€

okay so, field by field, no skipping, that's the rule πŸ‘‘

  • sta_id β€” the station you're updating. that's it, that's the whole vibe ✨
  • reduced_tpc β€” reduced transmit power control value 🌸
  • control β€” not used. iconic honestly, just vibing there πŸ’€
  • flags β€” a combination of LQ_FLAG_* πŸ¦‹
  • mimo_delim β€” the first SISO index in rs_table, which separates MIMO and SISO rates. she's the divider, the boundary, the main character of rate separation πŸ’…
  • single_stream_ant_msk β€” best antenna for SISO (can be dual in CDD). Should be ANT_[ABC] ⭐
  • dual_stream_ant_msk β€” best antennas for MIMO, combination of ANT_[ABC] πŸ”₯
  • initial_rate_index β€” first index from rs_table per AC category 🌈
  • agg_time_limit β€” aggregation max time threshold in usec/100, meaning value of 100 is one usec. Range is 100 to 8000. bestie read that twice, the units are sneaky πŸ™ˆ
  • agg_disable_start_th β€” try-count threshold for starting aggregation. If a frame has higher try-count, it should not be selected for starting an aggregation sequence. like, if you already tried too hard, you're not starting the group project, sorry πŸ’€
  • agg_frame_cnt_limit β€” max frame count in an aggregation. 0: no limit. 1: no aggregation (one frame per aggregation). 2 - 0x3f: maximal number of frames (up to 3f == 63) πŸ“
  • reserved2 β€” reserved. respectfully reserved. she's not participating today πŸŽ€
  • rs_table β€” array of rates for each TX try, each is rate_n_flags, meaning it is a combination of RATE_MCS_* and IWL_RATE_*_PLCP πŸ’œ
  • ss_params β€” single stream features. declare whether STBC or BFER are allowed. it's giving "fill out the permission slip" energy 🧚

🌸 SEE ALSO 🌸

go read these next, bestie, the whole extended universe:

Kernel file ./drivers/net/wireless/intel/iwlwifi/fw/api/rs.h β€” plus enum iwl_tlc_mng_cfg_flags(9), enum iwl_tlc_mng_cfg_cw(9), enum iwl_tlc_mng_cfg_chains(9), enum iwl_tlc_mng_cfg_mode(9), enum iwl_tlc_mng_ht_rates(9), enum IWL_TLC_MCS_PER_BW(9), struct iwl_tlc_config_cmd_v3(9), struct iwl_tlc_config_cmd_v4(9), struct iwl_tlc_config_cmd(9), enum iwl_tlc_update_flags(9), struct iwl_tlc_update_notif(9), enum iwl_tlc_debug_types(9), struct iwl_dhc_tlc_cmd(9)

ngl that's a long list but every single one is on here for a reason, so don't come for me 😭

and that's the page!! this one came from ./drivers/net/wireless/intel/i..., dated October 2026 β€” ty for coming to my ted talk, ily, go update your link quality commands responsibly πŸ’–βœ¨πŸ‘‘

πŸ“¦ where this page comes from