STRUCT IWL_MLD_STA(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– struct iwl_mld_sta(9) πŸ’–

okay bestie, so this is from the Kernel API Manual β€” it's the page for struct iwl_mld_sta, which is literally just "representation of a station in the driver." That's the whole NAME vibe. Sit down, grab a strawberry drink πŸ“, and let's get into it.


✨ SYNOPSIS ✨

struct iwl_mld_sta {
    struct {
      enum ieee80211_sta_state sta_state;
      enum iwl_fw_sta_type sta_type;
    };
    struct iwl_mld *mld;
    struct ieee80211_vif *vif;
    struct iwl_mld_rxq_dup_data *dup_data;
    u8 tid_to_baid[IWL_MAX_TID_COUNT];
    u8 data_tx_ant;
    struct iwl_mld_link_sta deflink;
    struct iwl_mld_link_sta *link[IEEE80211_MLD_MAX_NUM_LINKS];
    struct iwl_mld_ptk_pn *ptk_pn[IWL_NUM_DEFAULT_KEYS];
    struct iwl_mld_per_q_mpdu_counter *mpdu_counters;
 };

like, that's the whole struct, no cap 🧚


πŸŽ€ Members πŸŽ€

  • {unnamed_struct} β€” anonymous. it's giving mysterious, it's giving "I have no name and I don't need one." πŸ’…
  • sta_state β€” the station state, as defined by enum ieee80211_sta_state.
  • sta_type β€” what kind of station this is. see enum iwl_fw_sta_type for the lore.
  • mld β€” a pointer to the iwl_mld object. yeah. that one.
  • vif β€” pointer to the vif object.
  • dup_data β€” per queue duplicate packet detection data πŸ¦‹
  • tid_to_baid β€” a simple map of TID to Block-Ack fw id. simple! iconic! we love a straightforward map ✨
  • data_tx_ant β€” stores the last TX antenna index. it gets used for setting TX rate_n_flags for injected data frames, and it toggles on every TX failure (yes, every single one, she's keeping score 😭).
  • deflink β€” this holds the default link STA information. for non MLO STA, all link specific STA information is accessed through deflink or through link[0] which points to the address of deflink. for MLO Link STA, the first added link STA will point to deflink. so deflink is lowkey the main character here πŸ‘‘
  • link β€” reference to Link Sta entries. for Non MLO STA, except 1st link, i.e link[0], all links would be assigned to NULL by default and would access link information via deflink or link[0]. for MLO STA, the first link STA being added will point its link pointer to deflink address and the remaining would be allocated and the address would be assigned to link[link_id] where link_id is the id assigned by the AP. okay so it's nested and slightly unhinged but we understood the assignment 🫢
  • ptk_pn β€” Array of pointers to PTK PN data, used to track the Packet Number per key index and per queue (TID). tracking queen behavior fr fr πŸ”₯
  • mpdu_counters β€” RX/TX MPDUs counters for each queue. counting her blessings, one MPDU at a time πŸ’€

🌈 Description 🌈

This represent the MLD-level sta, and will not be added to the FW. it's Embedded in ieee80211_sta. so she lives inside ieee80211_sta, she's cozy, she's not going to the firmware, periodt πŸ’œ

ngl this is the important part: MLD-level sta β†’ not added to the FW. do not try to send her to the firmware, she's not going. πŸ™ˆ

🌸 SEE ALSO 🌸

  • Kernel file ./drivers/net/wireless/intel/iwlwifi/mld/sta.h
  • struct iwl_mld_rxq_dup_data(9)
  • struct iwl_mld_link_sta(9)
  • struct iwl_mld_per_link_mpdu_counter(9)
  • struct iwl_mld_per_q_mpdu_counter(9)
  • struct iwl_mld_int_sta(9)

okay that's the whole page bestie, you ate that 🫢 this one comes straight from ./drivers/net/wireless/intel/i..., dated October 2026, and it's the struct iwl_mld_sta(9) page β€” go forth and read structs responsibly πŸ’–βœ¨πŸŽ€

πŸ“¦ where this page comes from