STRUCT IWL_TRANS_CONFIG(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– 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 before start_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 the SEQ_RX_FRAME bit on some notifications 😭 so this is the list of such notifications to filter. Max length is MAX_NO_RECLAIM_CMDS.
  • rx_buf_size β€” the RX buffer size needed for A-MSDUs. If it's unset, 4k will 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 inside skb->cb to 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 to 0 for using the older SCD_QUEUE_CFG, set to the version of SCD_QUEUE_CONFIG_CMD otherwise. Pick your fighter πŸ₯Š
  • wide_cmd_header β€” true when 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 the rx_mpdu_cmd πŸ“
  • dsbr_urm_fw_dependent β€” switch to URM based on fw settings πŸ”„
  • dsbr_urm_permanent β€” switch to URM permanently ♾️
  • ext_32khz_clock_valid β€” if true, 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