e1000_setup_copper_link(9)
π NAME β¨
e1000_setup_copper_link β honestly the whole phy/speed/duplex setting situation, all in one function π
So this page? It lives in the Kernel API Manual (section 9, kernel-functions, iykyk), and it's basically the group chat where your network card figures out how fast it's allowed to go π₯
π¦ SYNOPSIS
s32 e1000_setup_copper_link (struct e1000_hw *hw );
πΈ ARGUMENTS
hwβ the struct holding all the variables that shared code pokes at π«Ά not me explaining pointers again, it's giving "everything you need is in here" energy.
π DESCRIPTION
Okay so real talk: this function detects which PHY is present and then sets up the speed and duplex. That's it, that's the vibe β¨
No cap β detect the PHY, sort out the speed, sort out the duplex. Iconic, lowkey does exactly what it says on the label π
π SEE ALSO
Bestie, buckle up, because the cross-references here are long. Like, my-whole-fyp-long. Every single one is your friend though, promise π
- The kernel file itself:
./drivers/net/ethernet/intel/e1000/e1000_hw.cπ¦
π phy / mac / media setup crew
e1000_set_phy_type(9),e1000_phy_init_script(9),e1000_set_mac_type(9),e1000_set_media_type(9),e1000_reset_hw(9),e1000_init_hw(9),e1000_adjust_serdes_amplitude(9),e1000_setup_link(9),e1000_setup_fiber_serdes_link(9)
π§ the copper link pipeline (the main character energy)
e1000_copper_link_rtl_setup(9),e1000_copper_link_preconfig(9),e1000_copper_link_igp_setup(9),e1000_copper_link_mgp_setup(9),e1000_copper_link_autoneg(9),e1000_copper_link_postconfig(9),e1000_phy_setup_autoneg(9),e1000_phy_force_speed_duplex(9)
π flow control + link-up besties
e1000_config_collision_dist(9),e1000_config_mac_to_phy(9),e1000_force_mac_fc(9),e1000_config_fc_after_link_up(9),e1000_check_for_serdes_link_generic(9),e1000_check_for_link(9),e1000_get_speed_and_duplex(9),e1000_wait_autoneg(9)
π MDI bit-shifting girlies
e1000_raise_mdi_clk(9),e1000_lower_mdi_clk(9),e1000_shift_out_mdi_bits(9),e1000_shift_in_mdi_bits(9)
β PHY register access (touch grass, then read a register)
e1000_read_phy_reg(9),e1000_write_phy_reg(9),e1000_phy_hw_reset(9),e1000_phy_reset(9),e1000_detect_gig_phy(9),e1000_phy_reset_dsp(9),e1000_phy_igp_get_info(9),e1000_phy_m88_get_info(9),e1000_phy_get_info(9)
π EEPROM squad (clock goes up, clock goes down, we all shift bits)
e1000_init_eeprom_params(9),e1000_raise_ee_clk(9),e1000_lower_ee_clk(9),e1000_shift_out_ee_bits(9),e1000_shift_in_ee_bits(9),e1000_acquire_eeprom(9),e1000_standby_eeprom(9),e1000_release_eeprom(9),e1000_spi_eeprom_ready(9),e1000_read_eeprom(9),e1000_validate_eeprom_checksum(9),e1000_update_eeprom_checksum(9),e1000_write_eeprom(9),e1000_write_eeprom_spi(9),e1000_write_eeprom_microwire(9)
π MAC address + filter tables (put some respect on the addressing)
e1000_read_mac_addr(9),e1000_init_rx_addrs(9),e1000_hash_mc_addr(9),e1000_rar_set(9),e1000_write_vfta(9),e1000_clear_vfta(9)
π₯ LEDs, counters, adaptive + bus stuff
e1000_setup_led(9),e1000_cleanup_led(9),e1000_led_on(9),e1000_led_off(9),e1000_clear_hw_cntrs(9),e1000_reset_adaptive(9),e1000_update_adaptive(9),e1000_get_bus_info(9),e1000_write_reg_io(9)
π¦ cable / DSP / phy-mode glow-up corner
e1000_get_cable_length(9),e1000_check_polarity(9),e1000_check_downshift(9),e1000_config_dsp_after_link_change(9),e1000_set_phy_mode(9),e1000_set_d3_lplu_state(9),e1000_set_vco_speed(9)
πΈ MNG + config-done finishers
π Friendly reminder from your girl: this page is from the source path ./drivers/net/ethernet/intel/e... and it's dated October 2026 β so if you're reading this from the future, hiii π«Ά
Okay that's the whole page, mwah, go configure your copper link bestie ππβ¨
π¦ 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