__libeth_xdp_complete_tx(9)
π
__libeth_xdp_complete_tx(9) π
okay so welcome to the Kernel API Manual entry for this lil internal helper β itβs giving βcleanup crew with main character energy,β and honestly? iconic. π
πΈ NAME πΈ
__libeth_xdp_complete_tx β complete sent XDPSQE, periodt.
π¦ SYNOPSIS π¦
void __libeth_xdp_complete_tx (struct libeth_sqe *sqe , struct
libeth_cq_pp *cp , typeof(libeth_xdp_return_buff_bulk) bulk ,
typeof(libeth_xsk_buff_free_slow) xsk );
π ARGUMENTS π
sqeβ SQ element / Tx buffer to complete. this is the thing getting wrapped up, bestie.cpβ Tx polling/completion params. the completion-param situation, no cap.bulkβ internal callback to bulk-freeXDP_TXbuffers.xskβ internal callback to free XSkXDP_TXbuffers.
π DESCRIPTION π
β οΈ real talk: use the non-underscored version in drivers instead. this one is shared internally with libeth_tx_complete_any, iykyk.
it completes an XDPSQE of any type of XDP frame. the way that this includes DMA unmapping when needed, buffer freeing, stats update, and SQE invalidation? obsessed. itβs literally the whole cleanup checklist in one function. β¨
π SEE ALSO π
Kernel file ./include/net/libeth/xdp.h, plus 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_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_set_features(9)libeth_xdp_set_features_noredir(9)
mwah π this page is from ./include/net/libeth, dated October 2026 β bye bestie, go complete those XDPSQEs responsibly π«Άβ¨
π¦ 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