e1000_check_...addr_generic(9)
π
e1000_check_alt_mac_addr_generic β a Kernel API Manual page, section 9 π
okay so bestie, welcome to page e1000_check_...addr_generic(9) of the Kernel API Manual β yes it's section 9, yes it's a driver-internals moment, and yes we're gonna get through it together. grab a strawberry π and let's go.
β¨ NAME β¨
e1000_check_alt_mac_addr_generic β literally just: check for alternate MAC addr π¦
πΈ SYNOPSIS πΈ
s32 e1000_check_alt_mac_addr_generic (struct e1000_hw *hw );
that's it. one function, one pointer, one s32 coming back at you. iconic honestly.
π ARGUMENTS π
hwβ pointer to the HW structure π this is your hardware bestie, the whole struct she's working with.
π DESCRIPTION π
ok so here's the vibe: this function checks the nvm for an alternate MAC address. periodt. π₯
and listen, an alternate MAC address can be set up by pre-boot software, and it has to be treated like a permanent address β no cap β and it must override the actual permanent MAC address. that's the whole point, iykyk.
if an alternate MAC address is found, it gets programmed into RAR0, replacing the permanent address that was installed into RAR0 by the Si on reset. the way that just swaps right in π
and the ending? this function will return SUCCESS unless it encounters an error while reading the EEPROM. that's the only way it's gonna be messy π
ngl the whole thing is giving "quietly fixes stuff at boot and takes zero credit" main character energy β¨
π«Ά SEE ALSO π«Ά
Kernel file ./drivers/net/ethernet/intel/e1000e/mac.c β that's where she lives, go say hi π
and now, the friend group π (all of these are (9) pages, all of them linked, none of them skipped):
e1000e_get_bus_info_pcie(9)e1000_set_lan_id_multi_port_pcie(9)e1000_set_lan_id_single_port(9)e1000_clear_vfta_generic(9)e1000_write_vfta_generic(9)e1000e_init_rx_addrs(9)e1000e_rar_set_generic(9)e1000_hash_mc_addr(9)e1000e_update_mc_addr_list_generic(9)e1000e_clear_hw_cntrs_base(9)e1000e_check_for_copper_link(9)e1000e_check_for_fiber_link(9)e1000e_check_for_serdes_link(9)e1000_set_default_fc_generic(9)e1000e_setup_link_generic(9)e1000_commit_fc_settings_generic(9)e1000_poll_fiber_serdes_link_generic(9)e1000e_setup_fiber_serdes_link(9)e1000e_config_collision_dist_generic(9)e1000e_set_fc_watermarks(9)e1000e_force_mac_fc(9)e1000e_config_fc_after_link_up(9)e1000e_get_speed_and_duplex_copper(9)e1000e_get_speed_and_duplex_fiber_serdes(9)e1000e_get_hw_semaphore(9)e1000e_put_hw_semaphore(9)e1000e_get_auto_rd_done(9)e1000e_valid_led_default(9)e1000e_id_led_init_generic(9)e1000e_setup_led_generic(9)e1000e_cleanup_led_generic(9)e1000e_blink_led_generic(9)e1000e_led_on_generic(9)e1000e_led_off_generic(9)e1000e_set_pcie_no_snoop(9)e1000e_disable_pcie_master(9)e1000e_reset_adaptive(9)e1000e_update_adaptive(9)
and that's the page, bestie π β¨
cute little sign-off: this one shipped from ./drivers/net/ethernet/intel/e... (the source path, slightly truncated and living its truth), dated October 2026, and it answers to the name e1000_check_...addr_generic(9). go forth and check those alternate MAC addresses π¦ππ
π¦ 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