ice_run_xdp(9)
π ice_run_xdp(9) β a Kernel API Manual moment
okay so bestie, welcome to ice_run_xdp, one of those kernel API manual pages (that's the manual name btw, "Kernel API Manual" β iconic), and honestly this one is short but it's doing something. it runs an XDP program on an already-initialized xdp_buff. that's the whole vibe. no cap.
β¨ NAME β¨
ice_run_xdp β executes an XDP program on initialized xdp_buff π¦
like, it literally does what it says on the tin. the buff's already been set up, you're just here to run the program on it. slay.
πΈ SYNOPSIS πΈ
u32 ice_run_xdp (struct ice_rx_ring *rx_ring , struct libeth_xdp_buff
*xdp , struct bpf_prog *xdp_prog , struct ice_tx_ring *xdp_ring , union
ice_32b_rx_flex_desc *eop_desc );
five args, one u32 coming back out, that's the whole relationship. π€
π ARGUMENTS π
rx_ringβ the Rx ring π like the ring we're receiving on, bestie. that's it, that's the arg.xdpβ thexdp_buffthat gets fed in as input to the XDP program. it's the main character of this function ngl πxdp_progβ the actual XDP program we're running. the one doing the work. we're just the venue. β¨xdp_ringβ the ring that gets used for theXDP_TXaction. so if your program says "send this back out", this is the ring that handles it π€eop_descβ the last descriptor in the packet, and it's where we read the metadata from π "eop" = end of packet, iykyk
π₯ DESCRIPTION π₯
okay so hear me out: this function returns any of ICE_XDP_{PASS, CONSUMED, TX, REDIR}.
that's it. that's the description. short king. π it hands you back one of those four outcomes and you take it from there. lowkey the braces are doing a lot of work here but like β we respect it.
no extra lore here bestie, the page really is this brief. don't go inventing behaviour, that's not the vibe check we're going for π
π§ SEE ALSO π§
the kernel file it lives in β go look, it's right there:
Kernel file ./drivers/net/ethernet/intel/ice/ice_txrx.c
and the whole friend group (yes there are a lot of them, this driver has main character energy and a huge contact list) π
ice_prgm_fdir_fltr(9)ice_unmap_and_free_tx_buf(9)ice_clean_tstamp_ring(9)ice_free_tstamp_ring(9)ice_free_tx_tstamp_ring(9)ice_clean_tx_ring(9)ice_free_tx_ring(9)ice_clean_tx_irq(9)ice_alloc_tstamp_ring(9)ice_setup_tstamp_ring(9)ice_alloc_setup_tstamp_ring(9)ice_setup_tx_ring(9)ice_clean_rx_ring(9)ice_free_rx_ring(9)ice_setup_rx_ring(9)ice_xmit_xdp_ring(9)ice_xdp_xmit(9)ice_init_ctrl_rx_descs(9)ice_alloc_rx_bufs(9)ice_clean_ctrl_rx_irq(9)ice_clean_rx_irq(9)ice_net_dim(9)ice_buildreg_itr(9)ice_enable_interrupt(9)ice_set_wb_on_itr(9)ice_napi_poll(9)__ice_maybe_stop_tx(9)ice_maybe_stop_tx(9)ice_tx_map(9)ice_tx_csum(9)ice_tx_prepare_vlan_flags(9)ice_tso(9)ice_txd_use_count(9)ice_xmit_desc_count(9)__ice_chk_linearize(9)ice_chk_linearize(9)ice_tstamp(9)ice_xmit_frame_ring(9)ice_start_xmit(9)ice_get_dscp_up(9)ice_clean_ctrl_tx_irq(9)
and that's the page!! π mwah. this little gem lives over in ./drivers/net/ethernet/intel/ice, dated October 2026, and it's page ice_run_xdp(9) β go forth and run your XDP programs, bestie, you're gonna ate π«Άβ¨
π¦ 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