libeth_xdp_return_stash(9)
π libeth_xdp_return_stash β¨
okay so bestie, we're in the Kernel API Manual today and this one is a tiny little function with main character energy β it's the cleanup queen π§Ήβ¨. She's short, she's sweet, and if you skip her your queue leaks. no cap.
πΈ NAME πΈ
libeth_xdp_return_stash β free an XDP buffer stash from a queue π«Ά
π SYNOPSIS π
void libeth_xdp_return_stash (struct libeth_xdp_buff_stash *stash );
π¦ ARGUMENTS π¦
stashβ the stash you're freeing, bestie. that's it. that's the whole argument π
β¨ DESCRIPTION β¨
so here's the vibe check: your queue is about to be destroyed π, but plot twist β it's still holding onto an incompleted buffer stash. awkward!! π
if that's the sitch, you should call this helper to free it. that's literally the whole job. she frees the stash so nothing gets left behind. iconic cleanup behaviour, honestly π
fr fr: this is the "we're tearing down the queue but the stash is still sitting there" helper. don't leave the stash hanging β call her. π
π SEE ALSO π
literally the whole friend group, ok. the kernel file is ./include/net/libeth/xdp.h, and here's everybody else:
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_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)
(yes there are two enum (anonymous)(9) entries β that's not a typo, I promise, they're both actually there π)
and that's the whole page, bestie!! π this one lives in ./include/net/libeth and it's dated October 2026 β go free that stash and slay the teardown πβ¨
π¦ 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