STRUCT IWL_RX_MEM_BUFFER(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ¦‹ struct iwl_rx_mem_buffer(9) β€” the kernel API manual, bestie edition πŸ¦‹

Okay so this is a page from the Kernel API Manual (that's the manual name, iykyk) and it's literally all about struct iwl_rx_mem_buffer β€” the driver-side RX buffer descriptor. One struct, six members, zero drama. Let's get into it πŸ’…


✨ NAME ✨

struct iwl_rx_mem_buffer β€” the driver-side RX buffer descriptor. That's it, that's the whole vibe. It's the lil' receipt the driver keeps for every receive buffer 🧾


🌸 SYNOPSIS 🌸

Here's the whole shape of her, no cap:

struct iwl_rx_mem_buffer {
    dma_addr_t page_dma;
    struct page *page;
    struct list_head list;
    u32 offset;
    u16 vid;
    bool invalid;
 };

Iconic. Immaculate. Six fields and every single one of them is doing its job 🫢


πŸ’– Members πŸ’–

page_dma

The bus address of the rxb page. That's the address the hardware side cares about, fr fr 🚌

page

The driver's own pointer to the rxb page β€” this is the CPU-side view of the same thing, bestie 🌷

list

The list entry for the membuffer. Gotta link 'em all somehow ✨

offset

This one indicates which offset of the page (in bytes) this buffer uses β€” and yes, that's specifically for when multiple RBs fit into one page. Lowkey efficient πŸ’…

vid

The index of this rxb in the global table. Like a little name tag at the world's nerdiest party πŸŽ€

invalid

Okay so this means the rxb is in driver ownership β€” not owned by HW. So if invalid is set, the hardware does not have it, the driver does. Important distinction, don't sleep on it πŸ™ˆ


πŸ¦‹ SEE ALSO πŸ¦‹

Go touch some other docs too, bestie:

  • Kernel file ./drivers/net/wireless/intel/iwlwifi/pcie/gen1_2/internal.h
  • struct iwl_rx_transfer_desc(9), struct iwl_rx_completion_desc(9), struct iwl_rx_completion_desc_bz(9), struct iwl_rxq(9), struct iwl_rb_allocator(9), iwl_get_closed_rb_stts(9), enum iwl_fw_mon_dbgfs_state(9), enum iwl_shared_irq_flags(9), enum iwl_image_response_code(9), struct cont_rec(9), enum iwl_pcie_imr_status(9), struct iwl_txq(9), struct iwl_pcie_txqs(9), struct iwl_trans_pcie(9), iwl_txq_inc_wrap(9), iwl_txq_dec_wrap(9)

And that's the whole page! 🌈 Signing off from ./drivers/net/wireless/intel/i... with a date stamp of October 2026 β€” same time, same channel, struct iwl_rx_mem_buffer(9) forever πŸ‘‘πŸ’œ

πŸ“¦ where this page comes from