STRUCT IWL_TRANS_CONFIG(9)
π NAME π
struct iwl_trans_config β the transport configuration, bestie. It's the big struct of settings you fill in before the transport wakes up and starts doing its thing β¨
π¦ SYNOPSIS π¦
struct iwl_trans_config {
u8 cmd_queue;
u8 cmd_fifo;
u8 n_no_reclaim_cmds;
u8 no_reclaim_cmds[MAX_NO_RECLAIM_CMDS];
enum iwl_amsdu_size rx_buf_size;
bool scd_set_active;
const struct iwl_hcmd_arr *command_groups;
int command_groups_size;
u8 cb_data_offs;
bool fw_reset_handshake;
u8 queue_alloc_cmd_ver;
bool wide_cmd_header;
u8 rx_mpdu_cmd, rx_mpdu_cmd_hdr_size;
u8 dsbr_urm_fw_dependent:1, dsbr_urm_permanent:1,
ext_32khz_clock_valid:1;
u32 mbx_addr_0_step;
u32 mbx_addr_1_step;
};
Like, yes, those last three are bitfields sharing one u8, we don't make the rules, we just vibe with them π
π MEMBERS π
cmd_queueβ the index of the command queue. It must be set beforestart_fwβ no cap, this one's a hard requirement πcmd_fifoβ the fifo for host commands πn_no_reclaim_cmdsβ the # of commands in the list (yes, that list, the next one)no_reclaim_cmdsβ some devices erroneously don't set theSEQ_RX_FRAMEbit on some notifications π so this is the list of such notifications to filter. Max length isMAX_NO_RECLAIM_CMDS.rx_buf_sizeβ the RX buffer size needed for A-MSDUs. If it's unset,4kwill be the RX buffer size. Defaults, we love them π«Άscd_set_activeβ should the transport configure the SCD for the HCMD queue? That's the whole question πcommand_groupsβ array of command groups, each member is an array of the commands in the group; for debugging only πcommand_groups_sizeβ number of command groups, so we don't do illegal access (protected mode: on) π‘οΈcb_data_offsβ offset insideskb->cbto store transport data at; must have space for at least two pointers βfw_reset_handshakeβ firmware supports reset flow handshake π€queue_alloc_cmd_verβ queue allocation command version. Set to0for using the olderSCD_QUEUE_CFG, set to the version ofSCD_QUEUE_CONFIG_CMDotherwise. Pick your fighter π₯wide_cmd_headerβtruewhen ucode supports wide command header format πrx_mpdu_cmdβ MPDU RX command ID, must be assigned by opmode before starting the firmware, used for tracing π΅οΈββοΈrx_mpdu_cmd_hdr_sizeβ used for tracing, the amount of data before the start of the 802.11 header in therx_mpdu_cmdπdsbr_urm_fw_dependentβ switch to URM based on fw settings πdsbr_urm_permanentβ switch to URM permanently βΎοΈext_32khz_clock_validβ iftrue, the external 32 KHz clock can be used π°οΈmbx_addr_0_stepβ step address data 0 π¬mbx_addr_1_stepβ step address data 1 π
π DESCRIPTION π
These values should be set before iwl_trans_op_mode_enter. Like, before, bestie. Not after. Timing is everything, it's giving main character energy β°β¨
Seriously though β fill these in first. This is the setup, not the cleanup π
π SEE ALSO π
- Kernel file
./drivers/net/wireless/intel/iwlwifi/iwl-trans.h - Transport layer - what is it ?(9)
- Life cycle of the transport layer(9)
enum CMD_MODE(9)struct iwl_device_cmd(9)struct iwl_device_tx_cmd(9)enum iwl_hcmd_dataflag(9)struct iwl_host_cmd(9)enum iwl_trans_status(9)struct iwl_dump_sanitize_ops(9)struct iwl_trans_rxq_dma_data(9)struct iwl_pnvm_image(9)enum iwl_trans_state(9)- Platform power management(9)
enum iwl_ini_cfg_state(9)struct iwl_dram_data(9)struct iwl_dram_regions(9)struct iwl_fw_mon(9)struct iwl_self_init_dram(9)struct iwl_imr_data(9)struct iwl_pc_data(9)struct iwl_trans_debug(9)struct iwl_trans_info(9)struct iwl_trans(9)iwl_trans_resched_with_nic_access(9)
okay that's literally the whole page, go read the source bestie π
This one's from the Kernel API Manual β ./drivers/net/wireless/intel/i..., dated October 2026, and the page is struct iwl_trans_config(9). Slay, see you in the next manpage ππ¦
π¦ 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