__libeth_xdp_tx_flush_bulk(9)
π
__libeth_xdp_tx_flush_bulk β NAME β¨
okay so bestie, this is __libeth_xdp_tx_flush_bulk β the internal helper to flush one XDP Tx bulk π¦ (and yes, she's from the Kernel API Manual, we're in kernel-land now, respect it π)
πΈ SYNOPSIS πΈ
bool __libeth_xdp_tx_flush_bulk (struct libeth_xdp_tx_bulk *bq , u32
flags , u32 (*prep)(void *xdpsq, struct libeth_xdpsq *sq) , struct
libeth_xdp_tx_desc (*fill)(struct libeth_xdp_tx_frame frm, u32 i, const
struct libeth_xdpsq *sq, u64 priv) , void (*xmit)(struct
libeth_xdp_tx_desc desc, u32 i, const struct libeth_xdpsq *sq, u64 priv)
);
like, it returns a bool and takes five things, and three of them are function pointers π she's highkey a whole vibe.
π ARGUMENTS π
bqβ the bulk to flush. this is the main character, the one getting flushed πflagsβ XDP TX flags (.ndo_xdp_xmit, XSk etc.). literally the flags, no cap.prepβ driver-specific callback to prepare the queue for sending. like getting ready before you go out, but for a queue πͺfillβ libeth_xdp callback to filllibeth_sqeandlibeth_xdp_tx_desc. she does the filling β¨xmitβ driver callback to fill a HW descriptor. the final send-off, periodt π₯
π¦ DESCRIPTION π¦
So what is she? __libeth_xdp_tx_flush_bulk is an internal abstraction to create bulk flush functions for drivers π β think of her as the blueprint bestie that drivers use to build their own flush functions.
She's used for everything except XSk xmit. that's the one party she doesn't go to π
β RETURN β
trueβ if anything was sent πfalseβ otherwise π«Ά
that's it. that's the whole vibe check.
π SEE ALSO π
okay bestie, buckle up, this list is long and she ate π everything here lives in the kernel file ./include/net/libeth/xdp.h, and here's the whole squad:
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_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)
(and yeah, enum (anonymous)(9) shows up twice β that's not me being messy, that's literally the list ππ₯)
ngl bestie, this one's internal β it's a helper for drivers, not something you call from your cute little userspace program. iykyk π
that's the whole page, bestie β mwah π«Ά this one's from ./include/net/libeth, dated October 2026, and she slayed the entire time πβ¨π
π¦ 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