STRUCT LIBETH_XDP_TX_BULK(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… struct libeth_xdp_tx_bulk(9) πŸ’…

okay so bestie, welcome to the Kernel API Manual moment of your day β€” this is the page for struct libeth_xdp_tx_bulk, and it's literally the XDP Tx frame bulk for bulk sending. that's the whole vibe. πŸ¦‹


✨ NAME ✨

struct libeth_xdp_tx_bulk β€” XDP Tx frame bulk for bulk sending πŸŽ€


🌸 SYNOPSIS 🌸

struct libeth_xdp_tx_bulk {
    const struct bpf_prog           *prog;
    struct net_device               *dev;
    void *xdpsq;
    u32 act_mask;
    u32 count;
    struct libeth_xdp_tx_frame      bulk[LIBETH_XDP_TX_BULK];
 };

like, that's the whole struct, no cap. πŸ‘‘


πŸ’– Members πŸ’–

  • prog β€” the currently active XDP program, bestie. it's NULL for .ndo_xdp_xmit, so don't come for it when it's not there. πŸ™ˆ
  • dev β€” the net_device that the frames actually get transmitted on. main character energy, honestly. ✨
  • xdpsq β€” a lil shortcut to the corresponding driver-specific XDPSQ structure. iykyk. πŸ”₯
  • act_mask β€” Rx only, queen: the mask of all the XDP prog verdicts for that NAPI session. πŸ’…
  • count β€” the current number of frames chilling in the bulk rn. πŸ“
  • bulk β€” the array of queued frames for bulk Tx. this is where the girlies line up. πŸŽ€

🧚 Description 🧚

so here's the tea β˜• β€” all XDP Tx operations except XSk xmit queue each frame to the bulk first, and then flush it when count reaches the array end. that's the whole flow, periodt. 🌈

the bulk is always placed on the stack for performance β€” like, she lives on the stack, that's her home, we don't move her. πŸ’œ

one bulk element contains all the data necessary for sending a frame and then freeing it on completion. so it's giving self-sufficient, iconic, does-it-all. ✨

and for XSk xmit? the Tx descriptor array from xsk_buff_pool is casted directly to libeth_xdp_tx_frame β€” because they're compatible, bestie 😭 β€” and the bulk structure is not used in that case. nope, not invited to that party. πŸ’€


πŸ¦‹ SEE ALSO πŸ¦‹

Kernel file ./include/net/libeth/xdp.h and honestly a whole friend group:


ok that's the whole page bestie, go forth and bulk-send responsibly 🫢

πŸ’– sourced from ./include/net/libeth, dated October 2026, and yes this was struct libeth_xdp_tx_bulk(9) the whole time πŸ’–

πŸ“¦ where this page comes from