libeth_xdp_prepare_buff(9)
π libeth_xdp_prepare_buff β from the Kernel API Manual, bestie
Okay so real talk, this is libeth_xdp_prepare_buff(9), and it lives in the Kernel API Manual. It's the little helper that fills up your &libeth_xdp_buff with the head FQE data. Lowkey iconic, ngl. β¨
πΈ NAME πΈ
libeth_xdp_prepare_buff β fill &libeth_xdp_buff with head FQE data π«Ά
β¨ SYNOPSIS β¨
void libeth_xdp_prepare_buff (struct libeth_xdp_buff *xdp , const struct
libeth_fqe *fqe , u32 len );
π ARGUMENTS π
xdpβ the XDP buffer you're attaching the head to. It's the main character here πfqeβ the FQE that's carrying the head buffer. Your little payload bestie πlenβ the buffer len, and it's passed from HW, so it's not yours to make up fr fr
π¦ DESCRIPTION π¦
So this one is internal β meaning hands off, bestie, use libeth_xdp_process_buff instead. π Not me warning you, it's literally in the page.
What it does: it initializes the XDP buffer head with all the Rx buffer data β the data pointer, the length, the headroom, and the truesize/tailroom. Then it zeroes the flags. That's it. Clean, simple, ate. π₯
π SEE ALSO π
Kernel file ./include/net/libeth/xdp.h, plus the whole extended universe:
struct libeth_xdp_buff(9),__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_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)
Ok that's the whole page, go be great π
And that's a wrap, bestie! This one comes from ./include/net/libeth, dated October 2026, and it's page libeth_xdp_prepare_buff(9) in the Kernel API Manual. Slay, go touch some Rx buffers ππ
π¦ 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