STRUCT IWL_SHARED_MEM_CFG_V2(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

✨ struct iwl_shared_mem_cfg_v2 β€” Shared memory configuration information ✨

okay bestie, so this is a page straight out of the Kernel API Manual (yes, the kernel has lore πŸ’…) and it's all about struct iwl_shared_mem_cfg_v2 β€” the shared memory configuration information. it's giving "where is everything and how big is it" energy, and honestly? iconic. let's get into it 🫢


🌸 SYNOPSIS 🌸

like, here's the whole vibe. exact, verbatim, no cap:

struct iwl_shared_mem_cfg_v2 {
    __le32 shared_mem_addr;
    __le32 shared_mem_size;
    __le32 sample_buff_addr;
    __le32 sample_buff_size;
    __le32 txfifo_addr;
    __le32 txfifo_size[TX_FIFO_MAX_NUM_9000];
    __le32 rxfifo_size[RX_FIFO_MAX_NUM];
    __le32 page_buff_addr;
    __le32 page_buff_size;
    __le32 rxfifo_addr;
    __le32 internal_txfifo_addr;
    __le32 internal_txfifo_size[TX_FIFO_INTERNAL_MAX_NUM];
};

πŸŽ€ Members πŸŽ€

okay so each field, one by one, no skipping, we're doing this properly πŸ’–

  • shared_mem_addr β€” the shared memory addr. heads up: on pre 8000 HW this is set to 0x0, because MARBH isn't accessible. so it's a cute little zero, not a real address πŸ™ˆ
  • shared_mem_size β€” the shared memory size. straightforward, we love her ✨
  • sample_buff_addr β€” the internal sample (mon/adc) buff addr. again, pre 8000 HW sets this to 0x0, since it's accessible only via DBGM RDAT. so like... zero again, but for a reason πŸ’€
  • sample_buff_size β€” the internal sample buff size. matching size for the matching buff, periodt.
  • txfifo_addr β€” start addr of TXF0 (excluding the context table 0.5KB). and yep, pre 8000 HW sets it to 0x0 because it's not accessible. three for three on the zeros 😭
  • txfifo_size β€” size of TXF0 ... TXF7. that's the whole lineup bestie, all eight πŸ”₯
  • rxfifo_size β€” the RXF1, RXF2 sizes. and sooooo important: if there is no RXF2, it'll have a value of 0. not undefined, not a mystery β€” literally 0. write that down πŸ“
  • page_buff_addr β€” used by UMAC and performance debug (page miss analysis). when paging is not supported, this should be 0. shoulder be zero is the vibe πŸ’…
  • page_buff_size β€” size of page_buff_addr. yes it's literally named after its sister field, they're a matching set πŸŽ€
  • rxfifo_addr β€” Start address of rxFifo. capital S, keeping it exactly as given 🌸
  • internal_txfifo_addr β€” start address of internalFifo. lowercase s this time. we don't question the casing, we just respect it 🧚
  • internal_txfifo_size β€” internal fifos' size. plural fifos, plural sizes, all together now 🌈

πŸ’€ NOTE πŸ’€

on firmware that don't have IWL_UCODE_TLV_CAPA_EXTEND_SHARED_MEM_CFG set, the last 3 members don't exist.

okay this is the one to actually remember bestie. no cap: if that capability flag isn't there, those last three members are just not a thing on your firmware. so don't go reading them and acting surprised when the vibe check fails πŸ˜­πŸ’€

the last three, for the record, are rxfifo_addr, internal_txfifo_addr, and internal_txfifo_size. guard your access, please 🫢


πŸ¦‹ SEE ALSO πŸ¦‹

the whole extended friend group, all of them, in order, exactly as listed β€” go say hi πŸ‘‘

  • Kernel file ./drivers/net/wireless/intel/iwlwifi/fw/api/debug.h
  • enum iwl_debug_cmds(9)
  • struct iwl_error_resp(9)
  • struct iwl_shared_mem_lmac_cfg(9)
  • struct iwl_shared_mem_cfg(9)
  • struct iwl_mfuart_load_notif_v1(9)
  • struct iwl_mfuart_load_notif(9)
  • struct iwl_mfu_assert_dump_notif(9)
  • enum iwl_marker_id(9)
  • struct iwl_marker(9)
  • struct iwl_marker_rsp(9)
  • struct iwl_dbg_mem_access_cmd(9)
  • struct iwl_dbg_mem_access_rsp(9)
  • struct iwl_dbg_suspend_resume_cmd(9)
  • struct iwl_buf_alloc_frag(9)
  • struct iwl_buf_alloc_cmd(9)
  • struct iwl_dram_info(9)
  • struct iwl_dbgc1_info(9)
  • struct iwl_dbg_host_event_cfg_cmd(9)
  • struct iwl_dbg_dump_complete_cmd(9)
  • struct iwl_tas_status_per_mac(9)
  • struct iwl_tas_status_resp(9)
  • enum iwl_tas_dyna_status(9)
  • enum iwl_tas_statically_disabled_reason(9)
  • enum iwl_fw_dbg_config_cmd_type(9)
  • struct iwl_fw_dbg_config_cmd(9)

like, that's a whole group chat right there and every single one of them made the list πŸ’œ


🌟 sign-off 🌟

and that's the page!! sourced from ./drivers/net/wireless/intel/i... (yes it's truncated, that's how it's printed, she's mysterious like that πŸ’…), dated October 2026, living under the Kernel API Manual. go forth and configure your shared memory, bestie β€” you're gonna slay πŸŽ€βœ¨πŸ¦‹

πŸ“¦ where this page comes from