igc_update_itr(9)
π igc_update_itr(9) β like, the glow-up your interrupt throttling deserves
okay so this is a page from the Kernel API Manual, bestie β specifically igc_update_itr(9), and we're about to make it make sense. sit down, grab a strawberry drink π, and let's get into it.
β¨ NAME β¨
igc_update_itr β update the dynamic ITR value based on statistics π¦
π SYNOPSIS π
void igc_update_itr (struct igc_q_vector *q_vector , struct
igc_ring_container *ring_container );
not me formatting a whole function signature and it's got a line break in the middle π literally just two pointers going in and void coming out, no return value, no drama.
πΈ ARGUMENTS πΈ
q_vectorβ a pointer to theq_vector. that's the whole vibe check, she points at things πring_containerβ the ring info to update the itr for. this is the one that actually matters for the math, bestie π₯
π DESCRIPTION π
so here's the tea β: this function stores a new ITR value based on the packets and byte counts from the last interrupt. that's it, that's the plot.
the advantage of doing this computation per interrupt is:
- faster updates β‘
- more accurate ITR for the current traffic pattern π―
the constants in this function were computed based on theoretical maximum wire speed, and the thresholds were set based on testing data β while also attempting to minimize response time while increasing bulk throughput. so like, it's giving "I did the math and then I also went to the lab" energy π§β¨
π NOTE π
these calculations are only valid when operating in a single-queue environment. that's not a suggestion, that's the law, bestie. multi-queue and you're on your own π
π SEE ALSO π
she's a Kernel file bestie first and foremost:
./drivers/net/ethernet/intel/igc/igc_main.c
and then, okay, brace yourself, this list is long β literally the entire igc friend group showed up to the party π«Ά:
igc_power_up_link(9), igc_release_hw_control(9), igc_get_hw_control(9), igc_clean_tx_ring(9), igc_free_tx_resources(9), igc_free_all_tx_resources(9), igc_clean_all_tx_rings(9), igc_disable_all_tx_rings_hw(9), igc_setup_tx_resources(9), igc_setup_all_tx_resources(9), igc_clean_rx_ring(9), igc_clean_all_rx_rings(9), igc_free_rx_resources(9), igc_free_all_rx_resources(9), igc_setup_rx_resources(9), igc_setup_all_rx_resources(9), igc_configure_rx_ring(9), igc_configure_rx(9), igc_configure_tx_ring(9), igc_configure_tx(9), igc_setup_mrqc(9), igc_setup_rctl(9), igc_setup_tctl(9), igc_set_mac_filter_hw(9), igc_clear_mac_filter_hw(9), igc_set_mac(9), igc_write_mc_addr_list(9), igc_process_skb_fields(9), igc_add_rx_frag(9), igc_reuse_rx_page(9), igc_is_non_eop(9), igc_cleanup_headers(9), igc_alloc_rx_buffers(9), igc_clean_tx_irq(9), igc_add_mac_filter(9), igc_del_mac_filter(9), igc_add_vlan_prio_filter(9), igc_del_vlan_prio_filter(9), igc_add_etype_filter(9), igc_del_etype_filter(9), igc_get_nfc_rule(9), igc_del_nfc_rule(9), igc_add_nfc_rule(9), igc_enable_empty_addr_recv(9), igc_set_rx_mode(9), igc_configure(9), igc_write_ivar(9), igc_configure_msix(9), igc_irq_enable(9), igc_irq_disable(9), igc_reset_q_vector(9), igc_free_q_vector(9), igc_free_q_vectors(9), igc_set_interrupt_capability(9), igc_update_ring_itr(9), igc_cache_ring_register(9), igc_poll(9), igc_alloc_q_vector(9), igc_alloc_q_vectors(9), igc_init_interrupt_scheme(9), igc_sw_init(9), igc_up(9), igc_update_stats(9), igc_down(9), igc_change_mtu(9), igc_tx_timeout(9), igc_get_stats64(9), igc_msix_other(9), igc_request_msix(9), igc_clear_interrupt_scheme(9), igc_has_link(9), igc_watchdog(9), igc_intr_msi(9), igc_intr(9), igc_request_irq(9), __igc_open(9), __igc_close(9), igc_probe(9), igc_remove(9), igc_io_error_detected(9), igc_io_slot_reset(9), igc_io_resume(9), igc_reinit_queues(9), igc_get_hw_dev(9), igc_init_module(9), igc_exit_module(9)
like I said. everyone is here. no cap π
and that's the page, bestie β mwah π
π¦ this cute lil' writeup is brought to you by the source tree ./drivers/net/ethernet/intel/igc and it's dated October 2026, so yes she's from the future and she's still iconic. 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