STRUCT IWL_HOST_CMD(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– struct iwl_host_cmd(9) πŸ’–

okay bestie, welcome to the Kernel API Manual entry for struct iwl_host_cmd β€” it's giving "kernel internals but make it chic" and honestly? we're obsessed. this little struct is the host command to the uCode, and we're gonna walk through it together, no cap 🌸


✨ NAME ✨

struct iwl_host_cmd β€” host command to the uCode 🫢


🌈 SYNOPSIS 🌈

struct iwl_host_cmd {
    const void *data[IWL_MAX_CMD_TBS_PER_TFD];
    struct iwl_rx_packet *resp_pkt;
    unsigned long _rx_page_addr;
    u32 _rx_page_order;
    u32 flags;
    u32 id;
    u16 len[IWL_MAX_CMD_TBS_PER_TFD];
    u8 dataflags[IWL_MAX_CMD_TBS_PER_TFD];
 };

like, look at her. so neat. so structured. main character energy fr πŸ’…


πŸ‘‘ Members πŸ‘‘

  • data β€” an array of chunks that composes the data of the host command πŸŽ€ like, the actual payload pieces, one chunk at a time.
  • resp_pkt β€” the response packet, but ONLY if CMD_WANT_SKB was set. iykyk 😌 if you didn't set that flag, don't come looking here.
  • _rx_page_addr β€” (internally used to free response packet) πŸ™ˆ that's the whole vibe. internal business. just know she's there for the freeing.
  • _rx_page_order β€” (internally used to free response packet) πŸ’€ yes bestie, same energy, also internal, also about freeing the response packet.
  • flags β€” can be CMD_* ⭐ so like, whichever CMD_ prefixed flag you need, this is the spot.
  • id β€” the command id of the host command. and for wide commands, this encodes the version and group as well πŸ”₯ so it's doing a little extra work, love that for her.
  • len β€” array of the lengths of the chunks in data πŸŽ€ one length per chunk, matching up with data, keep them consistent bestie, that's the whole point.
  • dataflags β€” IWL_HCMD_DFL_* 🌸 yup, the IWL_HCMD_DFL_ prefixed data flags go right here.

πŸ¦‹ 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)
  • enum iwl_trans_status(9)
  • struct iwl_dump_sanitize_ops(9)
  • struct iwl_trans_config(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)

like okay that's a LOT of cross-references but that's the transport layer rabbit hole for you, click through at your own risk πŸ”₯


okay that's the whole page bestie, every last member accounted for, nothing skipped, periodt πŸ’œ

this gem came from ./drivers/net/wireless/intel/i... and it's dated October 2026 β€” shoutout to the kernel docs, you ate πŸŽ€βœ¨

πŸ“¦ where this page comes from