igc_process_skb_fields(9)
π igc_process_skb_fields(9) β a Kernel API Manual moment β¨
ok so bestie, welcome to the <pink>Kernel API Manual</pink> entry for igc_process_skb_fields(9). this is the little function that gives an skb its whole personality before it gets sent up the stack. let's get into it π
πΈ NAME πΈ
igc_process_skb_fields β populate skb header fields from the Rx descriptor. that's it, that's the whole job, and honestly? she ate. π
β¨ SYNOPSIS β¨
void igc_process_skb_fields (struct igc_ring *rx_ring , union
igc_adv_rx_desc *rx_desc , struct sk_buff *skb );
returns nothing, takes three things, no notes. slay. π«Ά
π¦ ARGUMENTS π¦
rx_ringβ the rx descriptor ring that the packet is being transacted on. like, this is the ring the whole situation is happening inside, ok.rx_descβ pointer to the EOP Rx descriptor. EOP = end of packet, in case you were wondering (iykyk). this is the descriptor doing the heavy lifting here.skbβ pointer to the current skb that's being populated. she's the main character and we're filling in her lore. β¨
π DESCRIPTION π
ok so here's the vibe: this function checks the ring, the descriptor, and the packet information β all three, no skipping β in order to populate the hash, checksum, VLAN, protocol, and other fields inside the skb.
like literally, that's the entire function. it does a vibe check on the ring + descriptor + packet, and then fills in skb's hash, checksum, VLAN, protocol, and the rest of the fields. no cap. π₯
bestie note: it checks ring/descriptor/packet info and populates the skb β those are the only two things this page tells you it does, so don't go reading extra behaviour into it. π
π SEE ALSO π
the kernel file this whole thing lives in:
./drivers/net/ethernet/intel/igc/igc_main.c
and now, the friend group. literally all of them, gathered below in their original order, so nobody gets left on read π
link + hw control energy:
TX ring housekeeping (the cleanup crew):
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)
RX ring housekeeping:
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)
configure era:
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)
mac filter girlies:
rx path helpers (next-door neighbours of this function):
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)
filter squad:
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)
configure + irq setup:
q_vector + interrupt scheme lore:
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_poll(9),igc_alloc_q_vector(9),igc_alloc_q_vectors(9),igc_init_interrupt_scheme(9)
open/close/up/down lifestyle:
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)
msix + irq request crew:
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)
the actual lifecycle icons:
pci error handling besties:
the rest of the group chat:
that's the whole page bestie, no crumbs left. π
k bye, this came from ./drivers/net/ethernet/intel/igc and it's dated October 2026 β go forth and populate those fields πβ¨π
π¦ 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