STRUCT IWL_FAMILY_BASE_PARAMS(9)
π struct iwl_family_base_params(9) π
okay so bestie, welcome to the Kernel API Manual, and buckle up because this one's literally the blueprint page β we're talking about struct iwl_family_base_params, aka the base parameters for an entire family π
Think of it as the group chat settings for a whole WiFi family β every sibling chip inherits the vibe. no cap.
β¨ NAME β¨
struct iwl_family_base_params β base parameters for an entire family, fr fr. one struct to rule the whole squad π
π¦ SYNOPSIS π¦
here's the whole lineup, character for character, no notes:
struct iwl_family_base_params {
unsigned int wd_timeout;
u16 eeprom_size;
u16 max_event_log_size;
u8 pll_cfg:1, shadow_ram_support:1, shadow_reg_enable:1,
pcie_l1_allowed:1, apmg_wake_up_wa:1, apmg_not_supported:1,
scd_chain_ext_wa:1;
u16 num_of_queues;
u32 max_tfd_queue_size;
u8 max_ll_items;
u8 led_compensation;
u16 ucode_api_max;
u16 ucode_api_min;
u32 mac_addr_from_csr:10;
u8 nvm_hw_section_num;
netdev_features_t features;
u32 smem_offset;
u32 smem_len;
u32 d3_debug_data_base_addr;
u32 d3_debug_data_length;
u32 min_txq_size;
u32 gp2_reg_addr;
u32 min_ba_txq_size;
const struct iwl_fw_mon_regs mon_dram_regs;
const struct iwl_fw_mon_regs mon_smem_regs;
const struct iwl_fw_mon_regs mon_dbgi_regs;
};
like. look at all those bitfields. she's been through things. π
π Members π
πΈ the timeout & storage girlies
wd_timeoutβ TX queues watchdog timeout. the clock is ticking bestie β°eeprom_sizeβ EEPROM size. how much room the EEPROM's got πmax_event_log_sizeβ size of event log buffer size for ucode event logging. yep, that's the wording, it's giving "buffer size of the buffer size" and honestly? iconic π
β the config flags (all packed into one u8, slay)
pll_cfgβ PLL configuration needed. is the PLL config needed? this bit knows π«shadow_ram_supportβ shadow support for OTP memoryshadow_reg_enableβ HW shadow register supportpcie_l1_allowedβ PCIe L1 state is allowedapmg_wake_up_waβ should the MAC access REQ be asserted when a command is in flight. This is due to a HW bug in 7260, 3160 and 7265. π yes it's a workaround, no we don't talk about itapmg_not_supportedβ there's no APMG. simple as that π«Άscd_chain_ext_waβ should the chain extension feature in SCD be disabled. another "should we" bit, another day another workaround π
π§ the queue & size numbers
num_of_queuesβ number of HW TX queues supportedmax_tfd_queue_sizeβ max number of entries in tfd queue.max_ll_itemsβ max number of OTP blocksled_compensationβ compensate on the led on/off time per HW according to the deviation to achieve the desired led frequency. The detail algorithm is described iniwl-led.cβ¨ (go read the source if you're nosy, iykyk)
π the uCode API versions
ucode_api_maxβ Highest version of uCode API supported by driver.ucode_api_minβ Lowest version of uCode API supported by driver.
high and low, the range is the range π
π the address & NVM bits
mac_addr_from_csrβ read HW address from CSR registers at this offsetnvm_hw_section_numβ the ID of the HW NVM sectionfeaturesβ hw features, any combination offeature_passlist
π¦ the SMEM & debug data
smem_offsetβ offset from which the SMEM beginssmem_lenβ the length of SMEMd3_debug_data_base_addrβ base address where D3 debug data is storedd3_debug_data_lengthβ length of the D3 debug data
debug data said "i'm stored AND i have a length" π main character energy
π₯ the TXQ minimums & timer register
min_txq_sizeβ minimum number of slots required in a TX queuegp2_reg_addrβ GP2 (timer) register addressmin_ba_txq_sizeβ minimum number of slots required in a TX queue used for aggregation
π the monitor registers (yes, three of them, and yes they're all const struct iwl_fw_mon_regs)
mon_dram_regsβ monitor DRAM registersmon_smem_regsβ monitor SMEM registersmon_dbgi_regsβ monitor DBGI registers
three little monitors, all in a row π
β SEE ALSO β
go touch these next, bestie:
- Kernel file
./drivers/net/wireless/intel/iwlwifi/iwl-config.henum iwl_nvm_type(9)struct iwl_fw_mon_reg(9)struct iwl_fw_mon_regs(9)struct iwl_tt_params(9)struct iwl_mac_cfg(9)struct iwl_rf_cfg(9)
ok that's the whole page, every single member, nothing skipped β the vibes are immaculate but the facts are untouched π
and that's a wrap, bestie π«Ά this came from ./drivers/net/wireless/intel/i..., October 2026, and it's filed under struct iwl_..._base_params(9). go forth and configure your family. 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