STRUCT IWL_TX_CMD_V6_PARAMS(9)
β¨ struct iwl_tx_cmd_v6_params β parameters of the TX β¨
okay bestie, so this is from the Kernel API Manual, section 9, and it's literally the struct page for struct iwl_tx_cmd_v6_params π. It's giving "the blueprint for one single TX command" and honestly? Iconic. Let's get into it.
πΈ SYNOPSIS πΈ
struct iwl_tx_cmd_v6_params {
__le16 len;
__le16 offload_assist;
__le32 tx_flags;
struct {
u8 try_cnt;
u8 btkill_cnt;
__le16 reserved;
} scratch;
__le32 rate_n_flags;
u8 sta_id;
u8 sec_ctl;
u8 initial_rate_index;
u8 reserved2;
u8 key[16];
__le32 reserved3;
__le32 life_time;
__le32 dram_lsb_ptr;
u8 dram_msb_ptr;
u8 rts_retry_limit;
u8 data_retry_limit;
u8 tid_tspec;
__le16 pm_frame_timeout;
__le16 reserved4;
};
like, look at her. so many little fields all vibing together π«Ά
π Members π
okay so here's the tea on every single field, no skips, no cap:
lenβ in bytes of the payload, and yes there's a whole breakdown of what counts, check the description below πoffload_assistβ the TX offload configuration β¨tx_flagsβ a combination ofTX_CMD_FLG_*, peepenum iwl_tx_flagsfor the full menu π₯scratchβ a scratch buffer that the device itself uses π§rate_n_flagsβ the rate for all Tx attempts, but only ifTX_CMD_FLG_STA_RATE_MSKis cleared. It's a combination ofRATE_MCS_*πsta_idβ index of the destination station in the FW station table π―sec_ctlβ security control,TX_CMD_SEC_*πinitial_rate_indexβ index into the rate table for the initial TX attempt. Applied ifTX_CMD_FLG_STA_RATE_MSKis set, and normally0for data frames βreserved2β reserved πkeyβ the security key πreserved3β reserved πlife_timeβ frame life time, and the manpage literally says "(usecs??)" so likeβ¦ nobody's fully sure, and I'm just passing that along verbatim, don't come for me πdram_lsb_ptrβ physical address of the scratch area in the command (try_cnt+btkill_cnd+reserved), the first 32 bits. Setting it to"0"disables usage β οΈdram_msb_ptrβ the upper bits of that scratch physical address π§©rts_retry_limitβ max attempts for RTS π¨data_retry_limitβ max attempts to send the data packet π¦tid_tspecβ TID/tspec πpm_frame_timeoutβ PM TX frame timeout β³reserved4β reserved π
π Description π
okay, this part is the actual math and you gotta keep it tight:
The byte count (both len and next_frame_len) includes the MAC header (24/26/30/32 bytes) + 2 bytes pad if the header size is 26/30 + 8 byte IV for CCM or TKIP (not used for WEP) + the Data payload + 8-byte MIC (not used for CCM/WEP).
It does not include post-MAC padding, i.e., MIC (CCM) 8 bytes, ICV (WEP/TKIP/CKIP) 4 bytes, CRC 4 bytes.
Range of len: 14-2342 bytes. bestie that range is specific and we respect it π«‘
π SEE ALSO π
all her friends, all of them, in the kernel file ./drivers/net/wireless/intel/iwlwifi/fw/api/tx.h:
enum iwl_tx_flags(9)enum iwl_tx_cmd_flags(9)enum iwl_tx_pm_timeouts(9)enum iwl_tx_cmd_sec_ctrl(9)enum iwl_tx_offload_assist_flags_pos(9)struct iwl_tx_cmd_v6(9)struct iwl_tx_cmd_v9(9)struct iwl_tx_cmd(9)struct agg_tx_status(9)struct iwl_tx_resp_v3(9)struct iwl_tx_resp(9)struct iwl_mvm_ba_notif(9)struct iwl_compressed_ba_tfd(9)struct iwl_compressed_ba_ratid(9)struct iwl_compressed_ba_notif(9)struct iwl_mac_beacon_cmd_v6(9)struct iwl_mac_beacon_cmd_v7(9)struct iwl_mac_beacon_cmd(9)struct iwl_extended_beacon_notif_v5(9)struct iwl_extended_beacon_notif(9)enum iwl_dump_control(9)struct iwl_tx_path_flush_cmd_v1(9)struct iwl_tx_path_flush_cmd(9)struct iwl_flush_queue_info(9)struct iwl_tx_path_flush_cmd_rsp(9)struct iwl_scd_txq_cfg_cmd(9)struct iwl_scd_txq_cfg_rsp(9)
okay and one last lil sign-off π β this page comes from source path./drivers/net/wireless/intel/i...(yes it's truncated like that in the original, love that for us) and it's dated October 2026, closing out withstruct iwl_tx_cmd_v6_params(9). read it, love it, slay π β¨π₯
π¦ 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