STRUCT IWL_RB_ALLOCATOR(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– struct iwl_rb_allocator(9) πŸ’–

okay so bestie, welcome to the Kernel API Manual β€” this is the page for struct iwl_rb_allocator, aka the Rx allocator ✨ it's giving "the little struct that keeps your receive buffers fed" and honestly? iconic. πŸŽ€


✨ SYNOPSIS ✨

here's the whole glow-up, literally copy-pasted energy but make it fashion:

struct iwl_rb_allocator {
    atomic_t req_pending;
    atomic_t req_ready;
    struct list_head rbd_allocated;
    struct list_head rbd_empty;
    spinlock_t lock;
    struct workqueue_struct *alloc_wq;
    struct work_struct rx_alloc;
 };

no cap, that's the whole thing. now let's meet the cast 🫢


🌸 Members 🌸

  • req_pending β€” the number of requests the allcator had not processed yet. yes bestie, "allcator" β€” that's how the original spells it, I'm not gonna gaslight you πŸ’€ think of it as the to-do list that's still sitting there unread in the group chat.
  • req_ready β€” the number of requests that got honored and are ready for claiming. these ones already ate and are just waiting for somebody to come pick them up πŸ‘‘
  • rbd_allocated β€” RBDs with pages allocated and ready to be handled to the queue. this is a list of struct iwl_rx_mem_buffer. basically the fully-loaded ones, main character energy, ready to go πŸ¦‹
  • rbd_empty β€” RBDs with no page attached, for allocator use. this is a list of struct iwl_rx_mem_buffer. the empties, the blank canvases, the "not me being unloaded rn" vibes πŸ™ˆ
  • lock β€” protects the rbd_allocated and rbd_empty lists. it's the bouncer at the door of both lists, no queue-jumping allowed πŸ’…
  • alloc_wq β€” work queue for background calls. the behind-the-scenes crew, lowkey carrying the whole operation 🌈
  • rx_alloc β€” work struct for background calls. same energy, but this one's the actual work item, fr fr ⭐
heads up bestie: rbd_allocated and rbd_empty are both lists of struct iwl_rx_mem_buffer, and both of them live under lock. do not touch them without it, I'm begging 🫢

πŸ¦‹ SEE ALSO πŸ¦‹

the whole friend group, in the order the page gives them:

  • Kernel file ./drivers/net/wireless/intel/iwlwifi/pcie/gen1_2/internal.h
  • struct iwl_rx_mem_buffer(9)
  • struct iwl_rx_transfer_desc(9)
  • struct iwl_rx_completion_desc(9)
  • struct iwl_rx_completion_desc_bz(9)
  • struct iwl_rxq(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 page, bestie!! πŸ§šπŸ’œ sourced from ./drivers/net/wireless/intel/i... (it's struct iwl_rb_allocator(9) in the Kernel API Manual), dated October 2026 β€” slay, see you in the next manpage, mwah πŸ’‹πŸŽ€πŸ“

πŸ“¦ where this page comes from