igc_poll(9)
π igc_poll β Kernel API Manual, but make it make sense
Okay so bestie, igc_poll(9) is literally the NAPI Rx polling callback for the igc driver, and honestly? It's giving main character energy in the network stack. Let me break it down for you π«Ά
β¨ SYNOPSIS β¨
int igc_poll (struct napi_struct *napi , int budget );
π ARGUMENTS π
napiβ the napi polling structure. That's the vibe check container, the whole reason this function exists, periodt. πbudgetβ literally just the count of how many packets we should handle. Like a lil snack limit for the poll loop. No cap. π
π SEE ALSO π
So like, this is the part where the manpage just dumps the entire friend group on you. Buckle up bestie, because the igc squad is long and every single one of them is iconic in their own way π
First up, the kernel file where all this lives, in case you want the raw ~lore~:
./drivers/net/ethernet/intel/igc/igc_main.c
π§ The setup & teardown crew
π₯ Tx ring besties (they keep the send side slaying)
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_tx_irq(9)igc_configure_tx_ring(9)igc_configure_tx(9)igc_setup_tctl(9)
π¦ Rx ring besties (receive side, the moment)
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_setup_rctl(9)
π The filter fam (MAC, VLAN, ethertype, NFC β all the vibes)
igc_setup_mrqc(9)igc_set_mac_filter_hw(9)igc_clear_mac_filter_hw(9)igc_set_mac(9)igc_add_mac_filter(9)igc_del_mac_filter(9)igc_write_mc_addr_list(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)
πΈ The ring/packet processing girlies
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)
π Interrupts & queue vectors (the dramatic ones)
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_update_itr(9)igc_set_interrupt_capability(9)igc_update_ring_itr(9)igc_cache_ring_register(9)igc_alloc_q_vector(9)igc_alloc_q_vectors(9)igc_init_interrupt_scheme(9)igc_clear_interrupt_scheme(9)igc_request_msix(9)igc_msix_other(9)igc_intr_msi(9)igc_intr(9)igc_request_irq(9)
π Bring-up, stats, watchdog, and lifecycle besties
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_has_link(9)igc_watchdog(9)__igc_open(9)__igc_close(9)igc_reinit_queues(9)igc_get_hw_dev(9)
π Probe/remove/PCI error handling (the grown-up stuff)
π Module init/exit (the beginning and the end, so poetic)
Not me listing every single one of these so you don't miss a thing π The squad is huge, but that's the igc driver for you β highkey built different.
Okay so that's the whole page bestie! This came straight out of the kernel API manual for the ./drivers/net/ethernet/intel/igc directory, and the original was dated October 2026. Go forth and poll responsibly π¦β¨π
π¦ 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