STRUCT IL_RX_QUEUE(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

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

okay so bestie, welcome to the Kernel API Manual β€” yes, that's the manual name, we're fancy now β€” and today's main character is struct il_rx_queue, aka the Rx queue. Receive queue. Incoming packets. The whole vibe. πŸ¦‹


✨ SYNOPSIS ✨

struct il_rx_queue {
    __le32 *bd;
    dma_addr_t bd_dma;
    struct il_rx_buf pool[RX_QUEUE_SIZE + RX_FREE_BUFFERS];
    struct il_rx_buf *queue[RX_QUEUE_SIZE];
    u32 read;
    u32 write;
    u32 free_count;
    u32 write_actual;
    struct list_head rx_free;
    struct list_head rx_used;
    int need_update;
    struct il_rb_status *rb_stts;
    dma_addr_t rb_stts_dma;
    spinlock_t lock;
 };

like, that's the whole struct, no crumbs left. πŸŽ€


🌸 Members 🌸

  • bd β€” the driver's pointer to the buffer of receive buffer descriptors (rbd). yes, "rbd" is the abbreviation, iykyk.
  • bd_dma β€” the bus address of that same buffer of receive buffer descriptors (rbd). pointer's DMA twin, basically.
  • read β€” shared idx pointing at the newest available Rx buffer.
  • write β€” shared idx pointing at the oldest written Rx packet.
  • free_count β€” how many pre-allocated buffers are sitting in rx_free.
  • rx_free β€” a list of free SKBs for use. free as in available, not free as in no money. 😭
  • rx_used β€” the list of Rx buffers with no SKB. sad little empty ones.
  • need_update β€” flag that says "we need to update the read/write idx". it's giving main character flag energy.
  • rb_stts β€” the driver's pointer to receive buffer status.
  • rb_stts_dma β€” the bus address of the receive buffer status. yep, the DMA twin again, slay.
ngl pool, queue, write_actual and lock live in the struct too, but the page itself stays quiet on them β€” so I'm not gonna invent lore. πŸ’…

🧚 NOTE 🧚

rx_free and rx_used are used as a FIFO for il_rx_bufs. periodt. first in, first out, no cutting the line bestie. πŸ”₯


🫢 SEE ALSO 🫢

Kernel file ./drivers/net/wireless/intel/iwlegacy/common.h

struct il_device_cmd(9), struct il_device_cmd_huge(9), struct il_ht_agg(9), struct il_vif_priv(9), struct il_hw_params(9), struct il_cfg(9), il_clear_driver_stations(9), il_sta_id_or_broadcast(9), il_queue_inc_wrap(9), il_queue_dec_wrap(9), il_beacon_time_mask_low(9), il_beacon_time_mask_high(9), struct il_rb_status(9), struct il_tfd_tb(9), struct il_tfd(9), struct il_rate_scale_data(9), struct il_scale_tbl_info(9), struct il_lq_sta(9), il3945_rate_scale_init(9)

like go read them all, I'll wait. πŸ“


and that's the page!! mwah πŸ’‹ β€” brought to you by the fine folks at ./drivers/net/wireless/intel/i..., October 2026. hope this helped bestie, go forth and queue responsibly πŸ’œ

πŸ“¦ where this page comes from