libeth_xdp_process_buff(9)
libeth_xdp_process_buff(9) π
okay so this is the Kernel API Manual entry for libeth_xdp_process_buff(9), and it's literally all about attaching an Rx buffer to a &libeth_xdp_buff, bestie. no cap.
β¨ NAME β¨
libeth_xdp_process_buff β attach Rx buffer to &libeth_xdp_buff π«Ά
π SYNOPSIS π
bool libeth_xdp_process_buff (struct libeth_xdp_buff *xdp , const struct
libeth_fqe *fqe , u32 len );
πΈ ARGUMENTS πΈ
xdpβ the XDP buffer you're attaching the Rx buffer to, periodt.fqeβ the Rx buffer to process. iconic little thing.lenβ received data length from the descriptor, fr fr.
π¦ DESCRIPTION π¦
so here's the vibe: if the XDP buffer is empty, this attaches the Rx buffer as head and initializes the required fields. otherwise, it attaches the buffer as a frag. π
it already performs DMA sync-for-CPU and frame start prefetch β and that prefetch is for head buffers only, iykyk. β¨
π RETURN π
returns true on success, and false if the descriptor must be skipped β that's when it's empty or there's no space for a new frag. π
skip means skip, bestie. don't make it a whole thing. π
π SEE ALSO π
the whole friend group is here, no cap:
- Kernel file
./include/net/libeth/xdp.h 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_prepare_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)
mwah π this page comes from the source path ./include/net/libeth, dated October 2026, and it's the libeth_xdp_process_buff(9) manual page. slay. π
π¦ 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