i40e_build_skb(9)
π i40e_build_skb β a kernel API manual, but make it make sense π
okay bestie, welcome to the i40e_build_skb(9) page, straight out of the Kernel API Manual β¨. yes it's a driver function, no it's not scary, sit down and let's go π
πΈ NAME πΈ
i40e_build_skb β literally builds an skb around a buffer that already exists. no cap, that's the whole vibe π¦
β¨ SYNOPSIS β¨
struct sk_buff * i40e_build_skb (struct i40e_ring *rx_ring , struct xdp_buff *xdp );
look at her. two args, one return, main character energy π
π«Ά ARGUMENTS π«Ά
rx_ringβ the Rx descriptor ring that's gonna transact packets on. it's the hangout spot for the packets, basically πxdpβ anxdp_buffpointing at the data. it's giving "i know a guy who knows where the bytes live" π
π DESCRIPTION π
so what she does is: this function builds an sk_buff around an Rx buffer that's already there β like, no new buffer, we're working with what we have, we're resourceful like that π
and the way she does it? taking care to set up the skb correctly and avoid any memcpy overhead. not me being obsessed with skipping the copy π that's the whole point. zero copying, maximum slay. π₯
π¦ SEE ALSO π¦
the kernel file we're talking about lives at ./drivers/net/ethernet/intel/i40e/i40e_txrx.c β go say hi π§
and then the whole extended friend group, in the order the page lists them (yes i'm keeping all of them, every single one, don't @ me):
i40e_fdir(9),i40e_program_fdir_filter(9),i40e_create_dummy_packet(9),i40e_create_dummy_udp_packet(9),i40e_create_dummy_tcp_packet(9),i40e_create_dummy_sctp_packet(9),i40e_prepare_fdir_filter(9),i40e_change_filter_num(9),i40e_add_del_fdir_udp(9),i40e_add_del_fdir_tcp(9),i40e_add_del_fdir_sctp(9),i40e_add_del_fdir_ip(9),i40e_add_del_fdir(9),i40e_fd_handle_status(9)β the whole fdir clique, iconic πi40e_unmap_and_free_tx_resource(9),i40e_clean_tx_ring(9),i40e_free_tx_resources(9),i40e_get_tx_pending(9),i40e_detect_recover_hung(9),i40e_clean_tx_irq(9),i40e_enable_wb_on_itr(9),i40e_force_wb(9),i40e_update_itr(9)β the tx-cleanup-and-interrupt-squad πi40e_reuse_rx_page(9),i40e_clean_programming_status(9),i40e_setup_tx_descriptors(9),i40e_clean_rx_ring(9),i40e_free_rx_resources(9),i40e_setup_rx_descriptors(9),i40e_release_rx_desc(9),i40e_alloc_mapped_page(9),i40e_alloc_rx_buffers(9)β setup and teardown besties πi40e_rx_checksum(9),i40e_rx_hash(9),i40e_process_skb_fields(9),i40e_cleanup_headers(9),i40e_can_reuse_rx_page(9),i40e_rx_buffer_flip(9),i40e_get_rx_buffer(9),i40e_put_rx_buffer(9),i40e_process_rx_buffs(9),i40e_construct_skb(9),i40e_is_non_eop(9)β the rx processing girlies, lowkey the real MVPs πi40e_run_xdp(9),i40e_xdp_ring_update_tail(9),i40e_update_rx_stats(9),i40e_finalize_xdp_rx(9),i40e_inc_ntp(9),i40e_add_xdp_frag(9),i40e_consume_xdp_buff(9),i40e_clean_rx_irq(9),i40e_buildreg_itr(9),i40e_update_enable_itr(9),i40e_napi_poll(9),i40e_atr(9)β xdp & napi crew, highkey underrated βi40e_tx_prepare_vlan_flags(9),i40e_tso(9),i40e_tsyn(9),i40e_tx_enable_csum(9),i40e_create_tx_ctx(9),__i40e_maybe_stop_tx(9),__i40e_chk_linearize(9),i40e_tx_map(9),i40e_xmit_xdp_ring(9),i40e_xmit_frame_ring(9),i40e_lan_xmit_frame(9),i40e_xdp_xmit(9)β offload + transmit squad, they ate and left no crumbs π
iykyk π
fr fr bestie, that's the whole page. no missing options, no hidden extras, we keep it accurate around here π«Ά
mwah π that's a wrap! this page came from the ./drivers/net/ethernet/intel/i40e corner of the kernel, dated October 2026 β and it's still i40e_build_skb(9), periodt. πβ¨
π¦ 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