STRUCT IWL_FW(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

✨ struct iwl_fw(9) ✨

okay bestie, gather round, because this is the struct iwl_fw page from the Kernel API Manual and it's literally the whole vibe closet for the firmware πŸ’– like every variable the firmware needs to be its main character lives in here.


🌸 NAME 🌸

struct iwl_fw β€” variables associated with the firmware

like, all the firmware's little accessories and IDs and secret diary entries, bundled into one struct πŸŽ€


πŸ¦‹ SYNOPSIS πŸ¦‹

no cap, here's the whole thing, character for character, don't touch it:

struct iwl_fw {
    u32 ucode_ver;
    char fw_version[128];
    struct fw_img img[IWL_UCODE_TYPE_MAX];
    size_t iml_len;
    u8 *iml;
    struct iwl_ucode_capabilities ucode_capa;
    bool enhance_sensitivity_table;
    u32 init_evtlog_ptr, init_evtlog_size, init_errlog_ptr;
    u32 inst_evtlog_ptr, inst_evtlog_size, inst_errlog_ptr;
    struct iwl_tlv_calib_ctrl default_calib[IWL_UCODE_TYPE_MAX];
    u32 phy_config;
    u8 valid_tx_ant;
    u8 valid_rx_ant;
    enum iwl_fw_type type;
    u8 human_readable[FW_VER_HUMAN_READABLE_SZ];
    struct iwl_fw_dbg dbg;
    u8 *phy_integration_ver;
    u32 phy_integration_ver_len;
    struct iwl_dump_exclude dump_excl[2], dump_excl_wowlan[2];
    const void *pnvm_data;
    u32 pnvm_size;
 };

she's long, she's gorgeous, she's giving "I memorized the whole seating chart" energy πŸ‘‘


πŸ‘‘ Members πŸ‘‘

okay so member by member, let's go, no skipping, we do not skip in this house πŸ’…

  • ucode_ver β€” the ucode version, straight out of the ucode file fr fr
  • fw_version β€” the firmware version string, her little name tag 🏷️
  • img β€” the ucode image(s), like ucode_rt, ucode_init, ucode_wowlan. three besties, one field.
  • iml_len β€” length of the image loader image (just the length, not the image itself, she's the measuring tape πŸ“)
  • iml β€” the image loader fw image itself, the actual thing
  • ucode_capa β€” capabilities parsed from the ucode file, i.e. what she can actually do πŸ’ͺ
  • enhance_sensitivity_table β€” bool, tells you the device can do enhanced sensitivity ✨ (yes, sensitivity, she's in her feelings)
  • init_evtlog_ptr β€” event log offset for init ucode
  • init_evtlog_size β€” event log size for init ucode
  • init_errlog_ptr β€” error log offset for init ucode
  • inst_evtlog_ptr β€” event log offset for runtime ucode
  • inst_evtlog_size β€” event log size for runtime ucode
  • inst_errlog_ptr β€” error log offset for runtime ucode 🫢 (init versions above, runtime versions here, keep them straight)
  • default_calib β€” default calibration data, the factory settings of it all
  • phy_config β€” PHY configuration flags 🚩
  • valid_tx_ant β€” valid TX antenna bitmap
  • valid_rx_ant β€” valid RX antenna bitmap (tx gets one, rx gets one, equality, slay)
  • type β€” firmware type, and it's an enum iwl_fw_type
  • human_readable β€” the human readable version we get from the ALIVE from the uCode 🧚 like she translated it for us so we don't have to
  • dbg β€” debug data, see struct iwl_fw_dbg πŸ”
  • phy_integration_ver β€” PHY integration version string
  • phy_integration_ver_len β€” length of phy_integration_ver (yes, she has a matching length field, it's a matching set, we love consistency)
  • dump_excl β€” image dump exclusion areas for the RT image
  • dump_excl_wowlan β€” image dump exclusion areas for the WoWLAN image 😴
  • pnvm_data β€” PNVM data embedded in the .ucode file, if any (if any!! sometimes there isn't, don't assume)
  • pnvm_size β€” size of the embedded PNVM data
no invented lore up in here, every one of those is straight from the source. if it's not listed above, it's not a member. periodt πŸ’€

πŸ”₯ SEE ALSO πŸ”₯

go read these next, they're the friend group:

  • Kernel file ./drivers/net/wireless/intel/iwlwifi/fw/img.h enum
  • iwl_ucode_type(9)
  • struct iwl_fw_paging(9)
  • enum iwl_fw_type(9)
  • struct iwl_fw_dbg(9)

and that's the whole page bestie, you ate that πŸ“

sign-off era: this glorious artifact comes to you from ./drivers/net/wireless/intel/i... and it's dated October 2026 β€” a whole little time capsule, and honestly? iconic πŸ’œ

πŸ“¦ where this page comes from