idpf_tx_clean_complq(9)
π¦ idpf_tx_clean_complq β literally the completion-queue cleanup bestie
okay so this one is a kernel API manual page, section 9, all about idpf_tx_clean_complq. Yes that's a mouthful, yes it's giving "I memorized the whole driver source" energy, and yes I'm gonna walk you through it π
β¨ NAME β¨
idpf_tx_clean_complq β reclaim resources on the completion queue. That's the whole vibe: stuff got done, now we tidy up, no cap π§Ή
πΈ SYNOPSIS πΈ
bool idpf_tx_clean_complq (struct idpf_compl_queue *complq , int budget
, int *cleaned );
Like, three whole arguments. She's not complicated, she's just specific π
π ARGUMENTS π
complqβ the Tx ring to clean. Yep, that's what the docs say, bestie, I'm not gonna pretend otherwise π«Άbudgetβ used to determine if we are in netpoll. Sneaky little context flag, love that for her βcleanedβ returns the number of packets cleaned. She's an out-param, she reports back, main character energy fr fr π«
π₯ RETURN π₯
true if there's any budget left (e.g. the clean is finished). So like β true means done-done, which lowkey reads backwards but that's the documented behavior and we respect it π
π SEE ALSO π
okay this is the part where the manpage just absolutely goes off. Buckle up, there are SO many cross-references, I'm listing every single one because I refuse to leave any of them out π
Also, the kernel file itself lives at ./drivers/net/ethernet/intel/idpf/idpf_txrx.c β go look, she's iconic π
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)idpf_tx_read_tstamp(9)idpf_tx_splitq_clean(9)idpf_tx_clean_bufs(9)idpf_tx_handle_rs_completion(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)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_dis_dim_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)idpf_config_rss(9)idpf_fill_dflt_rss_lut(9)idpf_init_rss_lut(9)idpf_deinit_rss_lut(9)
that's the whole list, bestie. I counted. I did not skip a single one. eat your heart out, whoever wrote the original πβ¨
π sign-off π
This little beauty ships out of ./drivers/net/ethernet/intel/idpf, and the date stamped on her is October 2026. Yeah. October 2026. She's from the future and she's still cleaning TX completion queues. obsessed. byeee π¦ππΈ
π¦ 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