idpf_vport_intr_dis_dim_all(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– idpf_vport_intr_dis_dim_all(9) β€” bestie edition πŸ’–

okay so, welcome to the Kernel API Manual entry for idpf_vport_intr_dis_dim_all(9) β€” yes the name is a mouthful, yes I say it in one breath, and yes it's lowkey iconic. grab a snack πŸ“, this one is short and sweet but she's important.


✨ NAME ✨

idpf_vport_intr_dis_dim_all β€” Disable DIM work for all q_vectors πŸŽ€

like, all of them. no stragglers. periodt.


🌸 SYNOPSIS 🌸

void idpf_vport_intr_dis_dim_all (struct idpf_q_vec_rsrc *rsrc );

she takes one argument, returns void, and minds her own business πŸ’…


πŸ¦‹ ARGUMENTS πŸ¦‹

  • rsrc β€” pointer to queue and vector resources. that's the whole vibe check here, she just needs to know where the q_vectors live ✨

πŸ”₯ DESCRIPTION πŸ”₯

okay so here's the lore, and honestly it's giving "cleanup crew has to be thorough" 😭

The DIM works are embedded in the q_vector array that idpf_vport_intr_rel frees, and the poll arms them after napi_complete_done has already cleared NAPI_STATE_SCHED.

read that again bestie, because it matters: the works live inside stuff that gets freed, and the poll can arm them at a moment when things are already deep into teardown. messy.

so the move is β€” Disable rather than just cancel, so that a poll tail still running past napi_disable cannot queue them again behind the drain. not cancel, disable. that distinction is the whole main character energy of this function πŸ‘‘

ngl the difference between "cancel" and "disable" here is exactly the kind of tiny detail that saves you from a very bad day πŸ’€

🌈 SEE ALSO 🌈

Kernel file ./drivers/net/ethernet/intel/idpf/idpf_txrx.c β€” go read the source, iykyk 🫢

and now the friend group, and bestie it is a large friend group, buckle up:

idpf_chk_linearize(9), idpf_tx_timeout(9), idpf_tx_buf_rel_all(9), idpf_tx_desc_rel(9), idpf_compl_desc_rel(9), idpf_tx_desc_rel_all(9), idpf_tx_buf_alloc_all(9), idpf_tx_desc_alloc(9), idpf_compl_desc_alloc(9), idpf_tx_desc_alloc_all(9), idpf_rx_page_rel(9), idpf_rx_hdr_buf_rel_all(9), idpf_rx_buf_rel_bufq(9), idpf_rx_buf_rel_all(9), idpf_rx_desc_rel(9), idpf_rx_desc_rel_bufq(9), idpf_rx_desc_rel_all(9), idpf_rx_buf_hw_update(9), idpf_rx_hdr_buf_alloc_all(9), idpf_post_buf_refill(9), idpf_rx_post_buf_desc(9), idpf_rx_post_init_bufs(9), idpf_rx_buf_alloc_singleq(9), idpf_rx_bufs_init_singleq(9), idpf_rx_buf_alloc_all(9), idpf_rx_bufs_init(9), idpf_rx_bufs_init_all(9), idpf_rx_desc_alloc(9), idpf_bufq_desc_alloc(9), idpf_rx_desc_alloc_all(9), idpf_vector_to_queue_set(9), idpf_qp_switch(9), idpf_txq_group_rel(9), idpf_rxq_sw_queue_rel(9), idpf_rxq_group_rel(9), idpf_vport_queue_grp_rel_all(9), idpf_vport_queues_rel(9), idpf_vport_init_fast_path_txqs(9), idpf_vport_init_num_qs(9), idpf_vport_calc_num_q_desc(9), idpf_vport_calc_total_qs(9), idpf_vport_calc_num_q_groups(9), idpf_vport_calc_numq_per_grp(9), idpf_rxq_set_descids(9), idpf_txq_group_alloc(9), idpf_rxq_group_alloc(9), idpf_vport_queue_grp_alloc_all(9), idpf_vport_queues_alloc(9)

still going, don't scroll away on me πŸ’€

idpf_tx_read_tstamp(9), idpf_tx_splitq_clean(9), idpf_tx_clean_bufs(9), idpf_tx_handle_rs_completion(9), idpf_tx_clean_complq(9), idpf_wait_for_sw_marker_completion(9), idpf_tx_splitq_build_ctb(9), idpf_tx_splitq_build_flow_desc(9), idpf_txq_has_room(9), idpf_tx_maybe_stop_splitq(9), idpf_tx_buf_hw_update(9), idpf_tx_res_count_required(9), idpf_tx_splitq_bump_ntu(9), idpf_tx_get_free_buf_id(9), idpf_tx_splitq_pkt_err_unmap(9), idpf_tx_splitq_map(9), idpf_tso(9), idpf_tx_splitq_get_ctx_desc(9), idpf_tx_drop_skb(9), idpf_tx_tstamp(9), idpf_tx_set_tstamp_desc(9), idpf_tx_splitq_need_re(9), idpf_tx_splitq_frame(9), idpf_tx_start(9), idpf_rx_hash(9), idpf_rx_csum(9), idpf_rx_splitq_extract_csum_bits(9), idpf_rx_rsc(9), idpf_rx_hwtstamp(9), __idpf_rx_process_skb_fields(9), idpf_rx_hsplit_wa(9), idpf_rx_splitq_test_staterr(9), idpf_rx_splitq_is_eop(9), idpf_rx_splitq_clean(9), idpf_rx_update_bufq_desc(9), idpf_rx_clean_refillq(9), idpf_rx_clean_refillq_all(9)

and the interrupt girlies, our actual neighbors, hi besties 🫢

idpf_vport_intr_clean_queues(9), idpf_vport_intr_napi_del_all(9), idpf_vport_intr_napi_dis_all(9), idpf_vport_intr_rel(9), idpf_vport_intr_rel_irq(9), idpf_vport_intr_dis_irq_all(9), idpf_vport_intr_buildreg_itr(9), idpf_update_dim_sample(9), idpf_net_dim(9), idpf_vport_intr_update_itr_ena_irq(9), idpf_vport_intr_req_irq(9), idpf_vport_intr_write_itr(9), idpf_vport_intr_ena_irq_all(9), idpf_vport_intr_deinit(9), idpf_tx_dim_work(9), idpf_rx_dim_work(9), idpf_init_dim(9), idpf_vport_intr_napi_ena_all(9), idpf_tx_splitq_clean_all(9), idpf_rx_splitq_clean_all(9), idpf_vport_splitq_napi_poll(9), idpf_vport_intr_map_vector_to_qs(9), idpf_vport_intr_init_vec_idx(9), idpf_vport_intr_napi_add_all(9), idpf_vport_intr_alloc(9), idpf_vport_intr_init(9)

and the rss crew closing us out, absolute legends 🌟

idpf_config_rss(9), idpf_fill_dflt_rss_lut(9), idpf_init_rss_lut(9), idpf_deinit_rss_lut(9)


that's the whole page, no cap πŸ’œ

πŸŽ€ little sign-off from the source: ./drivers/net/ethernet/intel/idpf, dated October 2026. go off, queen, thanks for the docs 🫢✨
πŸ“¦ where this page comes from