STRUCT IWL_MLD_LINK(9)
π struct iwl_mld_link(9) π
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. abool. 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 todrv_conf_txper each AC, and then notified once withBSS_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
- 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