igb_set_rx_mode(9)
π igb_set_rx_mode(9) β like, the kernel API manual page, bestie
okay so real talk: this is a page from the Kernel API Manual, section 9, and it's all about igb_set_rx_mode β the function that tells your Intel NIC who it's allowed to listen to. yes. that's the whole vibe. let's go π¦
β¨ NAME β¨
igb_set_rx_mode β Secondary Unicast, Multicast and Promiscuous mode set. she sets the modes. all of them. π
πΈ SYNOPSIS πΈ
void igb_set_rx_mode (struct net_device *netdev );
that's it. that's the whole call. void return, one argument, no cap.
π ARGUMENTS π
netdevβ the network interface device structure. the actual netdev she's working with, iykyk.
π§ DESCRIPTION π§
okay so picture this: the set_rx_mode entry point gets called whenever the unicast address lists get updated, or the multicast address lists get updated, or the network interface flags get updated. literally any of those three wiggle and she's up. π
and what does she actually do? this routine is responsible for configuring the hardware so it handles these correctly:
- unicast
- multicast
- promiscuous mode
- all-multi behavior
so basically the driver calls her and she goes and pokes the hardware registers so the NIC knows exactly which packets to grab and which to ignore. main character energy for real. β¨π₯
π quick vibe check: she doesn't decide the modes β she configures the hardware for them. the lists and flags get updated elsewhere, and she's the one who makes the hardware match. slay.
π SEE ALSO π
- Kernel file
./drivers/net/ethernet/intel/igb/igb_main.c
and the whole entire friend group of igb functions, in order, no skips, no cuts (i promised i wouldn't skip a single one π«Ά):
igb_get_i2c_data(9),igb_set_i2c_data(9),igb_set_i2c_clk(9),igb_get_i2c_clk(9),igb_get_hw_dev(9),igb_init_module(9),igb_exit_module(9),igb_cache_ring_register(9),igb_write_ivar(9),igb_configure_msix(9),igb_request_msix(9),igb_free_q_vector(9),igb_reset_q_vector(9),igb_free_q_vectors(9),igb_clear_interrupt_scheme(9),igb_set_interrupt_capability(9),igb_alloc_q_vector(9),igb_alloc_q_vectors(9),igb_init_interrupt_scheme(9),igb_request_irq(9),igb_irq_disable(9),igb_irq_enable(9),igb_release_hw_control(9),igb_get_hw_control(9),igb_config_tx_modes(9),igb_setup_tx_mode(9),igb_configure(9),igb_power_up_link(9),igb_power_down_link(9),igb_check_swap_media(9),igb_up(9),igb_set_i2c_bb(9),igb_set_fw_version(9),igb_init_mas(9),igb_init_i2c(9),igb_probe(9),igb_remove_i2c(9),igb_remove(9),igb_probe_vfs(9),igb_sw_init(9),__igb_open(9),__igb_close(9),igb_setup_tx_resources(9),igb_setup_all_tx_resources(9),igb_setup_tctl(9),igb_configure_tx_ring(9),igb_configure_tx(9),igb_setup_rx_resources(9),igb_setup_all_rx_resources(9),igb_setup_mrqc(9),igb_setup_rctl(9),igb_setup_srrctl(9),igb_configure_rx_ring(9),igb_configure_rx(9),igb_free_tx_resources(9),igb_free_all_tx_resources(9),igb_clean_tx_ring(9),igb_clean_all_tx_rings(9),igb_free_rx_resources(9),igb_free_all_rx_resources(9),igb_clean_rx_ring(9),igb_clean_all_rx_rings(9),igb_set_mac(9),igb_write_mc_addr_list(9),igb_has_link(9),igb_check_lvmmc(9),igb_watchdog(9),igb_update_ring_itr(9),igb_update_itr(9),igb_tx_timeout(9),igb_get_stats64(9),igb_change_mtu(9),igb_update_stats(9),igb_set_uta(9),igb_intr_msi(9),igb_intr(9),igb_poll(9),igb_clean_tx_irq(9),igb_reuse_rx_page(9),igb_add_rx_frag(9),igb_is_non_eop(9),igb_cleanup_headers(9),igb_process_skb_fields(9),igb_alloc_rx_buffers(9),igb_mii_ioctl(9),igb_ioctl(9),igb_io_error_detected(9),igb_io_slot_reset(9),igb_io_resume(9),igb_rar_set_index(9),igb_read_i2c_byte(9),igb_write_i2c_byte(9)
and that's the page, bestie π this whole thing lives in ./drivers/net/ethernet/intel/igb and it's dated October 2026, and yes it's igb_set_rx_mode(9) the whole way down. mwah πβ¨
π¦ 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