i40e_napi_poll(9)
π i40e_napi_poll(9) β like, the NAPI polling Rx/Tx cleanup routine, bestie π
okay so real talk: this page lives in the Kernel API Manual, and the star of the show is i40e_napi_poll. It's the function that does the polling cleanup for Rx and Tx, and honestly? it's giving main character energy in the i40e driver. let's get into it π«Ά
β¨ NAME β¨
i40e_napi_poll β NAPI polling Rx/Tx cleanup routine π
π SYNOPSIS π
int i40e_napi_poll (struct napi_struct *napi , int budget );
like, that's the whole signature. no cap. πΈ
π¦ ARGUMENTS π¦
napiβ thenapistruct, and bestie it's got all our device's info tucked inside it πbudgetβ how much work the driver is allowed to do this pass, measured in packets. that's the snack allowance for this round π
π DESCRIPTION π
so what does it actually do? this function will clean all queues associated with a q_vector. literally all of them. that's the vibe check and it passes β¨
and then it returns the amount of work done π₯
ngl that's the entire description. short, sweet, iconic. periodt π
β SEE ALSO β
the kernel file is ./drivers/net/ethernet/intel/i40e/i40e_txrx.c β that's where the magic lives, iykyk π
and here's the whole friend group, no one left out:
flow director besties π«
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)
tx cleanup squad π§Ή
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)
ring setup + buffer crew π
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)
rx processing girlies (and xdp too, obsessed) πΈ
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_build_skb(9),i40e_is_non_eop(9),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)
interrupts + the whole tx transmit path, ate π
i40e_buildreg_itr(9),i40e_update_enable_itr(9),i40e_atr(9),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)
ππ and that's the page!! this one came from ./drivers/net/ethernet/intel/i40e, dated October 2026, and honestly it was a whole moment. mwah πβ¨ go read your kernel source bestie, ily π«Άπ
π¦ 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