STRUCT NFP_NET_RX_RING(9)
π struct nfp_net_rx_ring(9) π
okay so bestie, we're in the Kernel API Manual today and the star of the show is struct nfp_net_rx_ring β like, literally the RX ring structure, the whole entire vibe of a receive ring in one struct. no cap, this is the group chat of pointers and counters. π
β¨ NAME β¨
struct nfp_net_rx_ring β RX ring structure π
π¦ SYNOPSIS π¦
struct nfp_net_rx_ring {
struct nfp_net_r_vector *r_vec;
u32 cnt;
u32 wr_p;
u32 rd_p;
u32 idx;
int fl_qcidx;
u8 __iomem *qcp_fl;
struct nfp_net_rx_buf *rxbufs;
struct nfp_net_xsk_rx_buf *xsk_rxbufs;
struct nfp_net_rx_desc *rxds;
struct xdp_rxq_info xdp_rxq;
dma_addr_t dma;
size_t size;
};
look at her. iconic. she ate and left no crumbs. π
πΈ Members πΈ
okay so let's meet the cast, main character energy only:
r_vecβ back pointer to the ring vector structure. she knows where she came from, periodt. π₯cntβ size of the queue, in number of descriptors. lowkey just the headcount of the squad.wr_pβ the FL/RX ring write pointer, and yes it's free running β it does NOT stop to check in with anyone. πββοΈrd_pβ the FL/RX ring read pointer, also free running. her andwr_pare literally the duo of all time. πidxβ the ring index from Linux's perspective. like, how Linux sees her, which is honestly so valid. π«Άfl_qcidxβ the Queue Controller Peripheral (QCP) queue index for the freelist. say it with me: Queue Controller Peripheral. β¨qcp_flβ pointer to the base of the QCP freelist queue. base. as in, she's the foundation. πrxbufsβ array of transmitted FL/RX buffers. the whole little family of them. πxsk_rxbufsβ array of transmitted FL/RX buffers, but make it AF_XDP. same energy, different flavor. π§rxdsβ virtual address of the FL/RX ring in host memory. host memory! she's in the computer, bestie. πxdp_rxqβ RX-ring info avail for XDP. avail, as in available. not me abbreviating on a manpage. πdmaβ the DMA address of the FL/RX ring. address of typedma_addr_t, we love a typed queen. βsizeβ size, in bytes, of the FL/RX ring β and it's needed to free, so like, don't lose it. this one's load-bearing. π
ngl the free-running pointers and that free-time size are the parts you absolutely cannot fumble β one keeps moving, the other keeps you from leaking. π₯
π SEE ALSO π
kernel file ./drivers/net/ethernet/netronome/nfp/nfp_net.h struct nfp_net_tx_ring(9), struct nfp_net_rx_buf(9), struct nfp_net_xsk_rx_buf(9), struct nfp_net_r_vector(9), struct nfp_net_dp(9), struct nfp_net(9), nfp_qcp_rd_ptr_add(9), nfp_qcp_wr_ptr_add(9), nfp_qcp_rd_ptr_read(9), nfp_qcp_wr_ptr_read(9)
like, the whole friend group π go read them iykyk
and that's the page, bestie!! π«Ά sourced from ./drivers/net/ethernet/netrono... and dated October 2026 β so like, future icon behavior π
β¨ slay responsibly, mwah π
π¦ 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