STRUCT IWL_MVM_STA(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

✨ NAME ✨

okay so bestie, this is the struct iwl_mvm_sta(9) page from the Kernel API Manual, and it is literally the driver’s representation of a station:

struct iwl_mvm_sta β€” representation of a station in the driver πŸ’…


🌸 SYNOPSIS 🌸

here’s the whole struct, no skips, copy-paste energy 🫢:

       struct iwl_mvm_sta {
           u32 tfd_queue_msk;
           u32 mac_id_n_color;
           u16 tid_disable_agg;
           u8 sta_type;
           enum ieee80211_sta_state sta_state;
           bool bt_reduced_txpower;
           bool next_status_eosp;
           bool authorized;
           spinlock_t lock;
           struct iwl_mvm_tid_data tid_data[IWL_MAX_TID_COUNT + 1];
           u8 tid_to_baid[IWL_MAX_TID_COUNT];
           struct ieee80211_vif *vif;
           struct iwl_mvm_key_pn *ptk_pn[4];
           struct iwl_mvm_rxq_dup_data *dup_data;
           u8 reserved_queue;
           s8 tx_protection;
           bool tt_tx_protection;
           bool disable_tx;
           u16 amsdu_enabled;
           u16 max_amsdu_len;
           bool sleeping;
           u8 agg_tids;
           u8 sleep_tx_count;
           u8 tx_ant;
           u32 pairwise_cipher;
           struct iwl_mvm_link_sta deflink;
           struct iwl_mvm_link_sta *link[IEEE80211_MLD_MAX_NUM_LINKS];
        };

πŸŽ€ Members πŸŽ€

every member gets its moment, periodt. πŸ’…

  • tfd_queue_msk β€” the tfd queues used by the station
  • mac_id_n_color β€” the MAC context this station is linked to
  • tid_disable_agg β€” bitmap: if bit(tid) is set, the fw won’t send ampdus for tid.
  • sta_type β€” station type
  • sta_state β€” station state according to enum ieee80211_sta_state
  • bt_reduced_txpower β€” is reduced tx power enabled for this station
  • next_status_eosp β€” the next reclaimed packet is a PS-Poll response and we need to signal the EOSP
  • authorized β€” indicates station is authorized
  • lock β€” lock to protect the whole struct. Since tid_data is access from Tx and from Tx response flow, it needs a spinlock.
  • tid_data β€” per tid data + mgmt. Look at iwl_mvm_tid_data.
  • tid_to_baid β€” a simple map of TID to baid
  • vif β€” a vif pointer
  • ptk_pn β€” per-queue PTK PN data structures
  • dup_data β€” per queue duplicate packet detection data
  • reserved_queue β€” the queue reserved for this STA for DQA purposes Every STA has is given one reserved queue to allow it to operate. If no such queue can be guaranteed, the STA addition will fail.
  • tx_protection β€” reference counter for controlling the Tx protection.
  • tt_tx_protection β€” is thermal throttling enable Tx protection?
  • disable_tx β€” is tx to this STA disabled?
  • amsdu_enabled β€” bitmap of TX AMSDU allowed TIDs. In case TLC offload is not active it is either 0xFFFF or 0.
  • max_amsdu_len β€” max AMSDU length
  • sleeping β€” sta sleep transitions in power management
  • agg_tids β€” bitmap of tids whose status is operational aggregated (IWL_AGG_ON)
  • sleep_tx_count β€” the number of frames that we told the firmware to let out even when that station is asleep. This is useful in case the queue gets empty before all the frames were sent, which can happen when we are sending frames from an AMPDU queue and there was a hole in the BA window. To be used for UAPSD only.
  • tx_ant β€” the index of the antenna to use for data tx to this station. Only used during connection establishment (e.g. for the 4 way handshake exchange).
  • pairwise_cipher β€” used to feed iwlmei upon authorization
  • deflink β€” the default link station, for non-MLO STA, all link specific data is accessed via deflink (or link[0]). For MLO, it will hold data of the first added link STA.
  • link β€” per link sta entries. For non-MLO only link[0] holds data. For MLO, link[0] points to deflink and link[link_id] is allocated when new link sta is added.

πŸ¦‹ Description πŸ¦‹

When mac80211 creates a station it reserves some space (hw->sta_data_size) in the structure for use by driver. This structure is placed in that space.


πŸ”₯ SEE ALSO πŸ”₯

go read these too, iykyk πŸ‘‘

  • Kernel file ./drivers/net/wireless/intel/iwlwifi/mvm/sta.h
  • DQA - Dynamic Queue Allocation -introduction(9)
  • station table - introduction(9)
  • station table - locking(9)
  • station table - internal stations(9)
  • station table - AP Station in STA mode(9)
  • station table - Drain vs. Flush(9)
  • station table - fw restart(9)
  • AP mode - PS(9)
  • enum iwl_mvm_agg_state(9)
  • struct iwl_mvm_tid_data(9)
  • enum iwl_mvm_rxq_notif_type(9)
  • struct iwl_mvm_internal_rxq_notif(9)
  • struct iwl_mvm_rxq_dup_data(9)
  • struct iwl_mvm_link_sta(9)
  • struct iwl_mvm_int_sta(9)
  • iwl_mvm_sta_send_to_fw(9)
  • struct iwl_mvm_sta_state_ops(9)

mwah πŸ’‹ this page came from ./drivers/net/wireless/intel/i..., dated October 2026, and it’s literally the struct iwl_mvm_sta(9) manual page. byeee 🫢

πŸ“¦ where this page comes from