STRUCT NFP_NET_RX_RING(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– 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 and wr_p are 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 type dma_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