libeth_xdp_tx_init_bulk(9)
π libeth_xdp_tx_init_bulk(9) β Kernel API Manual edition β¨
okay so this is libeth_xdp_tx_init_bulk(9) from the Kernel API Manual, and sheβs here to set up your XDP Tx bulk before the Rx NAPI poll loop does its thing. no cap, itβs giving βtiny setup step, big main-character energy.β π¦
β¨ NAME β¨
libeth_xdp_tx_init_bulk β initializes an XDP Tx bulk for Rx NAPI poll. π
πΈ SYNOPSIS πΈ
libeth_xdp_tx_init_bulk (bq , prog , dev , xdpsqs , num );
π ARGUMENTS π
bqβ the bulk youβre initializing, bestie. β¨progβ an RCU pointer to the XDP program; it can beNULL, fr fr. π«Άdevβ the targetnet_device.xdpsqsβ an array of driverXDPSQstructs.numβ the number of active XDPSQs, aka the length of that array above. π
π₯ DESCRIPTION π₯
okay so you call this on an onstack XDP Tx bulk before the NAPI polling loop kicks off. It initializes all the needed fields so the libeth_xdp functions can run. π§
If num == 0, it assumes XDP is not enabled β noted. π
π¨ Do not use this for XSk, okay? XSk has its own optimized helper, and this one is not it. periodt.
π SEE ALSO π
the SEE ALSO crew is huge and iconic, starting with this kernel file: ./include/net/libeth/xdp.h β plus all these besties:
- 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_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 thatβs the whole page, bestie: source ./include/net/libeth, date stamp October 2026, manual libeth_xdp_tx_init_bulk(9). mwah, go init that bulk π
π
π¦ 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