STRUCT LIBETH_XDP_BUFF(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– NAME πŸ’–

okay so this is the Kernel API Manual page for struct libeth_xdp_buff(9) β€” and the vibe is: struct libeth_xdp_buff β€” libeth extension over &xdp_buff. slay.


✨ SYNOPSIS ✨

no cap, here's the whole struct exactly as she appears:

struct libeth_xdp_buff {
    union {
      struct xdp_buff         base;
      void *data;
    };
    const void                      *desc;
    unsigned long                   priv[];
 };

🫢 Members 🫢

bestie we are going through every single member, no skipping:

  • {unnamed_union} β€” anonymous. mysterious. iconic.
  • base β€” main xdp_buff.
  • data β€” shortcut for base.data.
  • desc β€” RQ descriptor containing metadata for this buffer.
  • priv β€” driver-private scratchspace.

πŸ’¬ Description πŸ’¬

the main reason for this whole thing is to have a pointer to the descriptor so you can quickly get frame metadata from xdpmo and driver buff-to-xdp callbacks β€” plus bigger alignment, because we love that for her. she is pointer/layout-compatible with xdp_buff and xdp_buff_xsk. periodt.


πŸ‘€ SEE ALSO πŸ‘€

the kernel file is ./include/net/libeth/xdp.h, and the whole reference squad is: __LIBETH_XDP_ONSTACK_BUFF(9), LIBETH_XDP_ONSTACK_BUFF(9), libeth_xdpsq_num(9), libeth_xdpsq_shared(9), libeth_xdpsq_id(9), libeth_xdpsq_get(9), libeth_xdpsq_put(9), libeth_xdpsq_lock(9), libeth_xdpsq_unlock(9), libeth_xdpsq_deinit_timer(9), libeth_xdpsq_queue_timer(9), libeth_xdpsq_run_timer(9), enum (anonymous)(9), enum (anonymous)(9), struct libeth_xdp_tx_frame(9), struct libeth_xdp_tx_bulk(9), LIBETH_XDP_ONSTACK_BULK(9), struct libeth_xdpsq(9), struct libeth_xdp_tx_desc(9), libeth_xdp_ptr_to_priv(9), libeth_xdp_priv_to_ptr(9), libeth_xdp_tx_xmit_bulk(9), libeth_xdp_tx_queue_head(9), libeth_xdp_tx_queue_frag(9), libeth_xdp_tx_queue_bulk(9), libeth_xdp_tx_fill_stats(9), libeth_xdp_tx_fill_buf(9), __libeth_xdp_tx_flush_bulk(9), libeth_xdp_tx_flush_bulk(9), libeth_xdp_xmit_init_bulk(9), libeth_xdp_xmit_frame_dma(9), libeth_xdp_xmit_queue_head(9), libeth_xdp_xmit_queue_frag(9), libeth_xdp_xmit_queue_bulk(9), libeth_xdp_xmit_fill_buf(9), libeth_xdp_xmit_flush_bulk(9), __libeth_xdp_xmit_do_bulk(9), libeth_xdp_xmit_do_bulk(9), libeth_xdp_tx_init_bulk(9), libeth_xdp_init_buff(9), libeth_xdp_save_buff(9), libeth_xdp_return_stash(9), libeth_xdp_return_buff(9), libeth_xdp_prepare_buff(9), libeth_xdp_process_buff(9), libeth_xdp_buff_stats_frags(9), __libeth_xdp_run_prog(9), __libeth_xdp_run_flush(9), libeth_xdp_run_prog(9), __libeth_xdp_run_pass(9), libeth_xdp_run_pass(9), libeth_xdp_finalize_rx(9), LIBETH_XDP_DEFINE_TIMER(9), LIBETH_XDP_DEFINE_FLUSH_TX(9), LIBETH_XDP_DEFINE_FLUSH_XMIT(9), LIBETH_XDP_DEFINE_RUN_PROG(9), LIBETH_XDP_DEFINE_RUN_PASS(9), LIBETH_XDP_DEFINE_RUN(9), LIBETH_XDP_DEFINE_FINALIZE(9), libeth_xdp_buff_to_rq(9), libeth_xdpmo_rx_hash(9), __libeth_xdp_complete_tx(9), libeth_xdp_set_features(9), libeth_xdp_set_features_noredir(9).

xoxo, your local kernel bestie πŸ’… β€” this page lives in ./include/net/libeth, is dated October 2026, and is literally titled struct libeth_xdp_buff(9), okurrr πŸŽ€

πŸ“¦ where this page comes from