STRUCT IWL_MVM_ADD_STA_CMD_V7(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– struct iwl_mvm_add_sta_cmd_v7 β€” the Kernel API Manual glow-up πŸ’–

okay so bestie, gather round, because today we're getting into struct iwl_mvm_add_sta_cmd_v7 from the Kernel API Manual and honestly? it's giving "I hold the whole station table together" energy. this is the struct you use to add/modify a station in the fw's sta table (and yes, REPLY_ADD_STA = 0x18, write it down πŸ“).


✨ SYNOPSIS ✨

like, here's the whole vibe, character for character, no notes:

struct iwl_mvm_add_sta_cmd_v7 {
    u8 add_modify;
    u8 awake_acs;
    __le16 tid_disable_tx;
    __le32 mac_id_n_color;
    u8 addr[ETH_ALEN];
    __le16 reserved2;
    u8 sta_id;
    u8 modify_mask;
    __le16 reserved3;
    __le32 station_flags;
    __le32 station_flags_msk;
    u8 add_immediate_ba_tid;
    u8 remove_immediate_ba_tid;
    __le16 add_immediate_ba_ssn;
    __le16 sleep_tx_count;
    __le16 sleep_state_flags;
    __le16 assoc_id;
    __le16 beamform_flags;
    __le32 tfd_queue_msk;
};

she's long, she's structured, she's iconic. πŸ’…


πŸŽ€ Members πŸŽ€

every single field, explained with love:

  • add_modify β€” the mood setter, fr. see enum iwl_sta_mode.
  • awake_acs β€” the ACs to transmit data on while the station is sleeping (for U-APSD). she's awake even when she's asleep, main character energy.
  • tid_disable_tx β€” this is tid BIT(tid) enabled for Tx. clear BIT(x) to enable AMPDU for tid x. and to change this field? set STA_MODIFY_TID_DISABLE_TX. iykyk.
  • mac_id_n_color β€” the Mac context this station belongs to, see enum iwl_ctxt_id_and_color.
  • addr β€” station's MAC address. the whole identity, honestly.
  • reserved2 β€” reserved. she's just vibing, don't touch her. 🫢
  • sta_id β€” index of station in uCode's station table.
  • modify_mask β€” from enum iwl_sta_modify_flag, selects what to change. this is the "what are we editing today bestie" field.
  • reserved3 β€” reserved. again. respectfully. πŸ™ˆ
  • station_flags β€” look at enum iwl_sta_flags.
  • station_flags_msk β€” what of station_flags have changed, also enum iwl_sta_flags. the diff, basically ✨
  • add_immediate_ba_tid β€” tid for which to add block-ack support (Rx). set STA_MODIFY_ADD_BA_TID to use this field, and also set add_immediate_ba_ssn. both or it doesn't count, periodt.
  • remove_immediate_ba_tid β€” tid for which to remove block-ack support (Rx). set STA_MODIFY_REMOVE_BA_TID to use this field.
  • add_immediate_ba_ssn β€” ssn for the Rx block-ack session. used together with add_immediate_ba_tid. they're a package deal πŸŽ€
  • sleep_tx_count β€” number of packets to transmit to station even though it is asleep. used to synchronise PS-poll and u-APSD responses while ucode keeps track of STA sleep state. the way that she keeps receipts 😭
  • sleep_state_flags β€” look at enum iwl_sta_sleep_flag.
  • assoc_id β€” assoc_id to be sent in VHT PLCP (9-bit), for grp use 0, for AP mac-addr.
  • beamform_flags β€” beam forming controls. 🌈
  • tfd_queue_msk β€” tfd queues used by this station.

πŸ’€ Description πŸ’€

so the device contains an internal table of per-station information, with info on security keys, aggregation parameters, and Tx rates for initial Tx attempt and any retries (set by REPLY_TX_LINK_QUALITY_CMD). that's the lore. πŸ”₯

and ADD_STA sets up the table entry for one station β€” either creating a new entry, or modifying a pre-existing one. that's it, that's the whole job, and she does it flawlessly. no cap.

ngl bestie, remember this is a V7 version of the struct β€” the manpage lists the V7 layout up there, so don't go mixing her fields up with some other version's. πŸ‘‘

πŸ¦‹ SEE ALSO πŸ¦‹

go read these next, they're all in the kernel file ./drivers/net/wireless/intel/iwlwifi/fw/api/sta.h:

  • enum iwl_sta_flags(9)
  • enum iwl_sta_key_flag(9)
  • enum iwl_sta_modify_flag(9)
  • enum iwl_sta_mode(9)
  • enum iwl_sta_sleep_flag(9)
  • enum iwl_sta_type(9)
  • struct iwl_mvm_add_sta_cmd(9)
  • struct iwl_mvm_add_sta_key_common(9)
  • struct iwl_mvm_add_sta_key_cmd_v1(9)
  • struct iwl_mvm_add_sta_key_cmd(9)
  • enum iwl_mvm_add_sta_rsp_status(9)
  • struct iwl_mvm_rm_sta_cmd(9)
  • struct iwl_mvm_mgmt_mcast_key_cmd_v1(9)
  • struct iwl_mvm_mgmt_mcast_key_cmd(9)
  • struct iwl_mvm_eosp_notification(9)

aaaand that's the page!! πŸ“ this one comes from ./drivers/net/wireless/intel/i..., dated October 2026, and the manual name is struct iwl_...d_sta_cmd_v7(9) β€” yes she got abbreviated in the header and yes she still ate. mwah, go forth and add your stations bestie πŸ’œπŸ’–βœ¨

πŸ“¦ where this page comes from