STRUCT IWL_FW(9)
β¨ 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 frfw_versionβ the firmware version string, her little name tag π·οΈimgβ the ucode image(s), likeucode_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 thingucode_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 ucodeinit_evtlog_sizeβ event log size for init ucodeinit_errlog_ptrβ error log offset for init ucodeinst_evtlog_ptrβ event log offset for runtime ucodeinst_evtlog_sizeβ event log size for runtime ucodeinst_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 allphy_configβ PHY configuration flags π©valid_tx_antβ valid TX antenna bitmapvalid_rx_antβ valid RX antenna bitmap (tx gets one, rx gets one, equality, slay)typeβ firmware type, and it's anenum iwl_fw_typehuman_readableβ the human readable version we get from the ALIVE from the uCode π§ like she translated it for us so we don't have todbgβ debug data, seestruct iwl_fw_dbgπphy_integration_verβ PHY integration version stringphy_integration_ver_lenβ length ofphy_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 imagedump_excl_wowlanβ image dump exclusion areas for the WoWLAN image π΄pnvm_dataβ PNVM data embedded in the.ucodefile, 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.henum 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
- 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