STRUCT IWL_MVM_ADD_STA_CMD(9)
π¦ struct iwl_mvm_add_sta_cmd(9) π¦
okay so bestie, we're in the Kernel API Manual today and this is genuinely one of my fave little structs β it's the struct iwl_mvm_add_sta_cmd page, and it's giving "backstage pass to the firmware's guest list" energy π
β¨ NAME β¨
struct iwl_mvm_add_sta_cmd β Add/modify a station in the fw's sta table. ( REPLY_ADD_STA = 0x18 )
πΈ SYNOPSIS πΈ
struct iwl_mvm_add_sta_cmd {
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;
u8 sleep_state_flags;
u8 station_type;
__le16 assoc_id;
__le16 beamform_flags;
__le32 tfd_queue_msk;
__le16 rx_ba_window;
u8 sp_length;
u8 uapsd_acs;
};
π Members π
like, every field, and yes we're doing all of them, no skipping π«Ά
add_modifyβ seeenum iwl_sta_modeawake_acsβ the ACs to transmit data on while the station is sleeping (that's for U-APSD)tid_disable_txβ this one's asking "is tidBIT(tid)enabled for Tx?" ClearBIT(x)to enable AMPDU for tid x. And to actually change this field you gotta setSTA_MODIFY_TID_DISABLE_TX. iykyk.mac_id_n_colorβ the Mac context this station belongs to, seeenum iwl_ctxt_id_and_coloraddrβ station's MAC addressreserved2β reserved, it's literally just vibing theresta_idβ index of station in uCode's station tablemodify_maskβ fromenum iwl_sta_modify_flag, selects what to changereserved3β reserved, another filler queen πstation_flagsβ look atenum iwl_sta_flagsstation_flags_mskβ what ofstation_flagshave changed, alsoenum iwl_sta_flagsadd_immediate_ba_tidβ tid for which to add block-ack support (Rx). SetSTA_MODIFY_ADD_BA_TIDto use this field, and also setadd_immediate_ba_ssn. package deal, fr fr.remove_immediate_ba_tidβ tid for which to remove block-ack support (Rx). SetSTA_MODIFY_REMOVE_BA_TIDto use this fieldadd_immediate_ba_ssnβ ssn for the Rx block-ack session. Used together withadd_immediate_ba_tid. they're a duo, you can't split them π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. so it's like, "how many texts do I send while they're napping" energy πsleep_state_flagsβ Look atenum iwl_sta_sleep_flag.station_typeβ type of this station. Seeenum iwl_sta_type.assoc_idβassoc_idto be sent in VHT PLCP (9-bit), for grp use0, for AP mac-addr.beamform_flagsβ beam forming controls β¨ literally shaping the vibetfd_queue_mskβ tfd queues used by this station. Obselete β Obselete, their spelling not mine π β for new TX API (9 and above).rx_ba_windowβ aggregation window sizesp_lengthβ the size of the SP in actual number of framesuapsd_acsβ 4 LS bits are trigger enabled ACs, 4 MS bits are the deliver enabled ACs. half and half, like a lil snack split π
π Description π
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).
ADD_STA sets up the table entry for one station, either creating a new entry, or modifying a pre-existing one. so it's the "new friend or update your contact info" command, main character energy honestly π
β SEE ALSO β
Kernel file ./drivers/net/wireless/intel/iwlwifi/fw/api/sta.h and the whole friend group:
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)struct iwl_mvm_add_sta_cmd_v7(9)enum iwl_sta_type(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)
go read them all, bestie, do it for the plot π
kay that's the whole page! credits moment π¬: this one came from the kernel file ./drivers/net/wireless/intel/i... and it's dated October 2026, and it's filed under struct iwl_mvm_add_sta_cmd(9). slay, stan, and always read your manpages π
β¨π¦
π¦ 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