STRUCT IWL_FW_RUNTIME(9)
πΈ NAME πΈ
okay so bestie, this is the Kernel API Manual (section 9, yes, the kernel one π§) and today's main character is struct iwl_fw_runtime β literally the runtime data for firmware β¨ that's the whole vibe, that's the whole name.
β¨ SYNOPSIS β¨
here's the whole struct, copied exactly, don't touch a single character or she WILL notice π
struct iwl_fw_runtime {
struct iwl_trans *trans;
const struct iwl_fw *fw;
struct device *dev;
const struct iwl_fw_runtime_ops *ops;
void *ops_ctx;
const struct iwl_dump_sanitize_ops *sanitize_ops;
void *sanitize_ctx;
struct iwl_fw_paging fw_paging_db[NUM_OF_FW_PAGING_BLOCKS];
u16 num_of_paging_blk;
u16 num_of_pages_in_last_blk;
enum iwl_ucode_type cur_fw_img;
struct iwl_fwrt_shared_mem_cfg smem_cfg;
struct {
struct iwl_fwrt_wk_data wks[IWL_FW_RUNTIME_DUMP_WK_NUM];
unsigned long active_wks;
u8 conf;
unsigned long non_collect_ts_start[IWL_FW_INI_TIME_POINT_NUM];
u32 *d3_debug_data;
u32 lmac_err_id[MAX_NUM_LMAC];
u32 umac_err_id;
struct iwl_txf_iter_data txf_iter_data;
struct {
u8 type;
u8 subtype;
u32 lmac_major;
u32 lmac_minor;
u32 umac_major;
u32 umac_minor;
} fw_ver;
} dump;
struct {
#ifdef CONFIG_IWLWIFI_DEBUGFS;
struct delayed_work wk;
u32 delay;
#endif;
u64 seq;
} timestamp;
#ifdef CONFIG_IWLWIFI_DEBUGFS;
bool tpc_enabled;
#endif ;
struct iwl_sar_profile sar_profiles[BIOS_SAR_MAX_PROFILE_NUM];
u8 sar_chain_a_profile;
u8 sar_chain_b_profile;
u8 reduced_power_flags;
struct iwl_geo_profile geo_profiles[BIOS_GEO_MAX_PROFILE_NUM];
enum bios_source geo_bios_source;
u32 geo_rev;
u32 geo_num_profiles;
bool geo_enabled;
struct iwl_ppag_chain ppag_chains[IWL_NUM_CHAIN_LIMITS];
u32 ppag_flags;
u8 ppag_bios_rev;
u8 ppag_bios_source;
struct iwl_sar_offset_mapping_cmd sgom_table;
bool sgom_enabled;
struct iwl_mcc_allowed_ap_type_cmd ap_type_cmd;
bool ap_type_cmd_valid;
u8 uefi_tables_lock_status;
struct iwl_phy_specific_cfg phy_filters;
enum bios_source dsm_source;
u8 dsm_revision;
#if defined(CONFIG_ACPI) || defined(CONFIG_EFI);
u32 dsm_funcs_valid;
u32 dsm_values[DSM_FUNC_NUM_FUNCS];
#endif;
enum bios_source wbem_source;
u8 wbem_revision;
enum bios_source puncturing_source;
u8 puncturing_revision;
u32 bios_puncturing;
};
π Members π
okay now the member-by-member tour, no skipping, we're doing all of them fr fr π«Ά
transβ transport pointer. the plug, essentially πfwβ firmware imagedevβ device pointeropsβ user opsops_ctxβ user ops contextsanitize_opsβ dump sanitizer opssanitize_ctxβ context for dump sanitizerfw_paging_dbβ paging databasenum_of_paging_blkβ number of paging blocksnum_of_pages_in_last_blkβ number of pages in the last blockcur_fw_imgβ current firmware image. β οΈ heads up bestie: this one must be maintained by the driver by calling&iwl_fw_set_current_imageβ like, not optional, that's the rulesmem_cfgβ saved firmware SMEM configurationdumpβ debug dump datatimestampβ timestamp marker datatimestamp.wkβ timestamp marking workertimestamp.delayβ timestamp marking worker delaytimestamp.seqβ timestamp marking sequencetpc_enabledβ TPC enabledsar_profilesβ sar profiles as read from WRDS/EWRD BIOS tables πsar_chain_a_profileβ SAR chain A profilesar_chain_b_profileβ SAR chain B profilereduced_power_flagsβ reduced power flagsgeo_profilesβ geographic profiles as read from WGDS BIOS table πgeo_bios_sourceβ seeenum bios_sourcegeo_revβ geo profiles table revisiongeo_num_profilesβ number of geo profilesgeo_enabledβ WGDS table is presentppag_chainsβ PPAG table datappag_flagsβ PPAG flagsppag_bios_revβ PPAG BIOS revisionppag_bios_sourceβ seeenum bios_sourcesgom_tableβ SGOM tablesgom_enabledβ SGOM enabledap_type_cmdβ AP type tables (for enablement on 6 GHz) π‘ap_type_cmd_validβ ifap_type_cmdis validuefi_tables_lock_statusβ The status of the WIFI GUID UEFI variables lock:0: Unlocked,1and2: Locked. π Only read the UEFI variables if locked.phy_filtersβ specific phy filters as read from WPFC BIOS tabledsm_sourceβ one ofenum bios_source. UEFI, ACPI or NONEdsm_revisionβ the revision of the DSM tabledsm_funcs_validβ bitmap indicating which DSM values are valid. zero (default initialization) means it hasn't been read yet, andBIT(0)is set when it has, since function0also has this bitmap and is always supported. If the bit is set for a specific function, then the corresponding entry indsm_valuesis valid. π§ iykykdsm_valuesβ cache of the DSM values. The validity of each entry is determined bydsm_funcs_valid.wbem_sourceβ one ofenum bios_sourcefor the WBEM tablewbem_revisionβ the revision of the WBEM tablepuncturing_sourceβ one ofenum bios_sourcefor the puncturing tablepuncturing_revisionβ the revision of the puncturing tablebios_puncturingβ per-country puncturing enablement bitmap from BIOS
π¦ SEE ALSO π¦
go read these next, they're iconic, they're part of the lore:
- Kernel file
./drivers/net/wireless/intel/iwlwifi/fw/runtime.h struct iwl_fwrt_dump_data(9)struct iwl_fwrt_wk_data(9)struct iwl_txf_iter_data(9)
and that's the page!! π this came from the source at ./drivers/net/wireless/intel/i..., dated October 2026, bestie β go slay some firmware runtime data, periodt π
β¨π₯
π¦ 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