STRUCT IDPF_RX_QUEUE(9)
πΈ NAME πΈ
struct idpf_rx_queue β software structure representing a receive queue.
hii bestie π this is the struct idpf_rx_queue(9) page from the Kernel API Manual, and it's literally the software structure representing a receive queue. no cap. we're gonna go through every single member together, including the anonymous unions, because we do not skip lore in this group chat π
β¨ SYNOPSIS β¨
struct idpf_rx_queue {
__cacheline_group_begin_aligned(read_mostly);
union {
union virtchnl2_rx_desc *rx;
struct virtchnl2_singleq_rx_buf_desc *single_buf;
void *desc_ring;
};
union {
struct {
struct idpf_bufq_set *bufq_sets;
struct napi_struct *napi;
struct bpf_prog *xdp_prog;
};
struct {
struct libeth_fqe *rx_buf;
struct page_pool *pp;
void __iomem *tail;
};
};
unsigned long flags[BITS_TO_LONGS( __IDPF_Q_FLAGS_NBITS)];
u16 idx;
u16 desc_count;
u32 num_xdp_txq;
union {
struct idpf_tx_queue **xdpsqs;
struct {
u32 rxdids;
u32 truesize;
};
};
const struct libeth_rx_pt *rx_ptype_lkup;
struct xdp_rxq_info xdp_rxq;
__cacheline_group_end_aligned(read_mostly);
__cacheline_group_begin_aligned(read_write);
u32 next_to_use;
u32 next_to_clean;
u32 next_to_alloc;
union {
struct libeth_xdp_buff_stash xdp;
struct {
struct libeth_xdp_buff *xsk;
struct xsk_buff_pool *pool;
};
};
u64 cached_phc_time;
struct u64_stats_sync stats_sync;
struct idpf_rx_queue_stats q_stats;
__cacheline_group_end_aligned(read_write);
__cacheline_group_begin_aligned(cold);
u32 q_id;
u32 size;
dma_addr_t dma;
struct idpf_q_vector *q_vector;
u16 rx_buffer_low_watermark;
u16 rx_hbuf_size;
u16 rx_buf_size;
u16 rx_max_pkt_size;
__cacheline_group_end_aligned(cold);
};
π Members π
okay bestie, here's every member, including the anonymous ones β we are not skipping a single one:
{unnamed_union}β anonymousrxβ universal receive descriptor arraysingle_bufβ buffer descriptor array in singleqdesc_ringβ virtual descriptor ring address
{unnamed_union}β anonymous{unnamed_struct}β anonymousbufq_setsβ Pointer to the array of buffer queues in splitq modenapiβ NAPI instance corresponding to this queue (splitq)xdp_progβ attached XDP program
{unnamed_struct}β anonymousrx_bufβ Seestruct libeth_fqeppβ Page pool pointer in singleq modetailβ Tail offset. Used for both queue models single and split.
flagsβ Seeenum idpf_queue_flags_tidxβ For RX queue, it is used to index to total RX queue across groups and used for skb reporting.desc_countβ Number of descriptorsnum_xdp_txqβ total number of XDP Tx queues{unnamed_union}β anonymousxdpsqsβ shortcut for XDP Tx queues array{unnamed_struct}β anonymousrxdidsβ Supported RX descriptor idstruesizeβ data buffer truesize in singleq
rx_ptype_lkupβ LUT of Rx ptypesxdp_rxqβ XDP queue infonext_to_useβ Next descriptor to usenext_to_cleanβ Next descriptor to cleannext_to_allocβ RX buffer to allocate at{unnamed_union}β anonymousxdpβ XDP buffer with the current frame{unnamed_struct}β anonymousxskβ current XDP buffer in XSk modepoolβ XSk pool if installed
cached_phc_timeβ Cached PHC time for the Rx queuestats_syncβ Seestruct u64_stats_syncq_statsβ Seeunion idpf_rx_queue_statsq_idβ Queue idsizeβ Length of descriptor ring in bytesdmaβ Physical address of ringq_vectorβ Backreference to associated vectorrx_buffer_low_watermarkβ RX buffer low watermarkrx_hbuf_sizeβ Header buffer sizerx_buf_sizeβ Buffer sizerx_max_pkt_sizeβ RX max packet size
and that's the whole struct, periodt π β¨
π¦ SEE ALSO π¦
Kernel file ./drivers/net/ethernet/intel/idpf/idpf_txrx.h plus the whole squad: struct idpf_tx_offload_params(9), struct idpf_tx_splitq_params(9), enum idpf_queue_flags_t(9), struct idpf_vec_regs(9), struct idpf_intr_reg(9), struct idpf_q_vector(9), struct idpf_tx_queue(9), struct idpf_buf_queue(9), struct idpf_compl_queue(9), struct idpf_sw_queue(9), struct idpf_rxq_set(9), struct idpf_bufq_set(9), struct idpf_rxq_group(9), struct idpf_txq_group(9), idpf_size_to_txd_count(9), idpf_tx_singleq_build_ctob(9), idpf_tx_splitq_build_desc(9), idpf_vport_intr_set_wb_on_itr(9), idpf_tx_splitq_get_free_bufs(9).
mwah π β source/version vibes: ./drivers/net/ethernet/intel/idpf, dated October 2026, and this page is struct idpf_rx_queue(9). bye bestie, go slay those receive queues π«Άβ¨
π¦ 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