STRUCT IWL_MLD_LINK(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

okay bestie, welcome to the Kernel API Manual β€” yes, that Kernel API Manual, the one that documents your fave kernel structs ✨. Today's main character is struct iwl_mld_link, aka the link configuration parameters. no cap, this one's a whole vibe. πŸ¦‹


🌸 NAME 🌸

struct iwl_mld_link β€” link configuration parameters. that's it, that's the whole name, and honestly? iconic. πŸ’–


✨ SYNOPSIS ✨

here's the shape of it, copy-pasted exactly because we do not mess with the code, periodt:

struct iwl_mld_link {
    struct rcu_head rcu_head;
    struct {
      u8 fw_id;
      bool active;
      s8 avg_signal;
      struct ieee80211_tx_queue_params queue_params[IEEE80211_NUM_ACS];
      struct ieee80211_chanctx_conf *chan_ctx;
      bool he_ru_2mhz_block;
      struct ieee80211_key_conf *tx_igtk;
      struct ieee80211_key_conf *bigtks[2];
      enum iwl_mld_link_chan_load_level chan_load_lvl;
    };
    struct iwl_mld_int_sta bcast_sta;
    struct iwl_mld_int_sta mcast_sta;
    struct iwl_mld_int_sta mon_sta;
    int last_cqm_rssi_event;
    struct ieee80211_key_conf *ap_early_keys[6];
    u32 average_beacon_energy;
    bool silent_deactivation;
    struct iwl_probe_resp_data *probe_resp_data;
 };

like, look at her. nested anonymous struct and everything. we stan a structured queen πŸ‘‘


πŸŽ€ MEMBERS πŸŽ€

okay so now we go member by member, because every single one deserves their moment. no skipping, we're not like that. 🫢

  • rcu_head β€” the RCU head for freeing this data. it's giving "cleanup crew but make it graceful" πŸ’€
  • {unnamed_struct} β€” anonymous. yes literally anonymous, no name, mysterious main character energy. we respect the privacy. πŸ™ˆ
  • fw_id β€” the fw id of the link. short, sweet, fw-coded. ⭐
  • active β€” if the link is active or not. a bool. simple. honest. we love a binary icon. ✨
  • avg_signal β€” the current average signal of beacons, measured in [dBm], retrieved from firmware per-link periodic stats (STATISTICS_OPER_NOTIF). highkey my fave stat ngl πŸ“Ά
  • queue_params β€” QoS data from mac80211. this gets updated with a call to drv_conf_tx per each AC, and then notified once with BSS_CHANGED_QOS. so we store it here and then send one link cmd for all the ACs. efficiency slay πŸ”₯
  • chan_ctx β€” pointer to the channel context assigned to the link. and listen: if a link has an assigned channel context, it means that it is active. that's the rule, that's the lore πŸ’…
  • he_ru_2mhz_block β€” when this is set, 26-tone RU OFDMA transmissions should be blocked. that's it. blocked. not today. 🚫
  • tx_igtk β€” here's the tea: FW can only have one IGTK per MAC at a time, whereas mac80211 can have two 😭. so this tracks the one IGTK that currently exists in FW, for TX purposes. the RX IGTKs are tracked per station. balance restored 🧚
  • bigtks β€” BIGTKs of the AP. only valid for STA mode. that's the whole note, don't come for me πŸ“
  • chan_load_lvl β€” current channel load level for a link, computed based on channel load by others on a link. very "how busy is this party" energy πŸŽ‰
  • bcast_sta β€” station used for broadcast packets. used in AP, GO and IBSS. group chat ambassador fr fr πŸ“£
  • mcast_sta β€” station used for multicast packets. used in AP, GO and IBSS. same trio, different crowd πŸ’œ
  • mon_sta β€” station used for TX injection in monitor interface. sneaky. observant. we see you πŸ‘€
  • last_cqm_rssi_event β€” rssi of the last cqm rssi event. lowercase description, lowercase vibes, still important 🌈
  • ap_early_keys β€” okay so the firmware cannot install keys before bcast/mcast STAs, but higher layers work differently πŸ™ƒ, so we store the keys here for later installation. it's a waiting room. a key waiting room. πŸ”‘
  • average_beacon_energy β€” average beacon energy for beacons received during client connections. energetic queen ⚑
  • silent_deactivation β€” next deactivation needs to be silent. shhh. 🀫
  • probe_resp_data β€” data from FW notification to store NOA related data to be inserted into probe response. very "save it for later, bestie" of her πŸ’Ύ

πŸ” SEE ALSO πŸ”

go poke around in these:

  • Kernel file ./drivers/net/wireless/intel/iwlwifi/mld/link.h
  • struct iwl_probe_resp_data(9)

πŸ’€ quick reminder bestie: this is documentation for kernel internals β€” treat the source file as the source of truth, always. iykyk.

and that's the whole page!! πŸ’– this was pulled from ./drivers/net/wireless/intel/i... (yes, truncated like that, that's how it came, don't @ me) and dated October 2026 in the struct iwl_mld_link(9) manual. mwah, go read the header file, ily, bye πŸŽ€βœ¨πŸ¦‹

πŸ“¦ where this page comes from