e1000_init_hw(9)
π e1000_init_hw(9) β aka the Kernel API Manual glow-up
Okay bestie, welcome to the Kernel API Manual corner of the group chat π today we're doing e1000_init_hw, and yes it's exactly as much of a main-character ritual as it sounds. Let's get into it β¨
πΈ NAME
e1000_init_hw β bestie, this one Performs basic configuration of the adapter. That's it, that's the job. π
β¨ SYNOPSIS
s32 e1000_init_hw (struct e1000_hw *hw );
π¦ ARGUMENTS
hwβ this is the struct holding all the variables that get accessed by shared code π«Ά it's giving "communal apartment of variables" and honestly? iconic.
π DESCRIPTION
Okay so here's the vibe check π this function assumes that the controller has previously been reset and is in a post-reset uninitialized state. Like, it's not gonna reset anything for you β you gotta do that yourself. No cap.
Once you're there, it:
- Initializes the receive address registers π
- Initializes the multicast table π
- Initializes the VLAN filter table π·οΈ
- Calls routines to setup link configuration π
- Calls routines to setup flow control settings π
- Clears all on-chip counters π§Ή (fresh start energy fr fr)
And then β and this is the important part, don't skip it β it leaves the transmit and receive units disabled and uninitialized. So like, don't come for this function expecting a fully working NIC, because it literally says right there that TX and RX are left off. It's giving "I did my part, the rest is on you" π periodt.
π SEE ALSO
The whole squad, in order, no one left out π«Ά:
- Kernel file
./drivers/net/ethernet/intel/e1000/e1000_hw.c 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_adjust_serdes_amplitude(9),e1000_setup_link(9),e1000_setup_fiber_serdes_link(9)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_setup_copper_link(9),e1000_phy_setup_autoneg(9),e1000_phy_force_speed_duplex(9)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)e1000_raise_mdi_clk(9),e1000_lower_mdi_clk(9),e1000_shift_out_mdi_bits(9),e1000_shift_in_mdi_bits(9)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)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)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)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),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)e1000_enable_mng_pass_thru(9),e1000_get_auto_rd_done(9),e1000_get_phy_cfg_done(9)
π Real talk though: at least skim these before you go poking at the adapter, because the whole point is that e1000_init_hw is out here calling a bunch of them on your behalf. Iykyk.
And that's the page, bestie π§ this lil artifact came from ./drivers/net/ethernet/intel/e... (the source path in the footer is literally cut off like that, not my fault π) and it's dated October 2026 β so yeah, mark your calendars, slay ππ
π¦ 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