igb_phy_hw_reset(9)
π¦ igb_phy_hw_reset(9) β like, the PHY hardware reset bestie π
okay so this is from the Kernel API Manual and it's literally the whole glow-up ritual for your PHY hardware reset β¨ no cap, it's giving "main character energy" in ./drivers/net/ethernet/intel/igb/e1000_phy.c π
π NAME π
igb_phy_hw_reset β PHY hardware reset, the icon herself π
β¨ SYNOPSIS β¨
s32 igb_phy_hw_reset (struct e1000_hw *hw );
πΈ ARGUMENTS πΈ
hwβ pointer to the HW structure π«Ά that's it, that's the whole vibe, just hand her the hardware struct and let her cook
π₯ DESCRIPTION π₯
So here's the tea, bestie π β first thing she does is verify the reset block is not blocking us from resetting π like, vibe check on the reset block first, we are NOT walking into a blocked situation, no ma'am.
Then she acquires the semaphore (if necessary π yes, if necessary, it's conditional, read it and weep) and then she reads, sets, and writes the device control reset bit in the PHY. All three. Read it, set it, write it. Periodt π
After that she waits the appropriate delay time for the device to reset β³ (the appropriate delay, not just any delay, she's precise like that) and then releases the semaphore (again β if necessary π conditional queen).
So the whole flow lowkey is:
- Check the reset block isn't blocking the reset π§
- Grab the semaphore (if necessary) π
- Read / set / write the device control reset bit in the PHY ποΈ
- Wait the appropriate delay for the device to reset β°
- Release the semaphore (if necessary) π
and that's the whole function, slay π β¨
π SEE ALSO π
Kernel file: ./drivers/net/ethernet/intel/igb/e1000_phy.c π (the source of truth, the mothership)
And the whole friend group, fr fr β every single one of these icons π«Ά:
igb_check_reset_block(9)igb_get_phy_id(9)igb_phy_reset_dsp(9)igb_read_phy_reg_mdic(9)igb_write_phy_reg_mdic(9)igb_read_phy_reg_i2c(9)igb_write_phy_reg_i2c(9)igb_read_sfp_data_byte(9)igb_read_phy_reg_igp(9)igb_write_phy_reg_igp(9)igb_copper_link_setup_82580(9)igb_copper_link_setup_m88(9)igb_copper_link_setup_m88_gen2(9)igb_copper_link_setup_igp(9)igb_copper_link_autoneg(9)igb_phy_setup_autoneg(9)igb_setup_copper_link(9)igb_phy_force_speed_duplex_igp(9)igb_phy_force_speed_duplex_m88(9)igb_phy_force_speed_duplex_setup(9)igb_set_d3_lplu_state(9)igb_check_downshift(9)igb_check_polarity_m88(9)igb_check_polarity_igp(9)igb_wait_autoneg(9)igb_phy_has_link(9)igb_get_cable_length_m88(9)igb_get_cable_length_igp_2(9)igb_get_phy_info_m88(9)igb_get_phy_info_igp(9)igb_phy_sw_reset(9)igb_phy_init_script_igp3(9)igb_initialize_M88E1512_phy(9)igb_initialize_M88E1543_phy(9)igb_power_up_phy_copper(9)igb_power_down_phy_copper(9)igb_check_polarity_82580(9)igb_phy_force_speed_duplex_82580(9)igb_get_phy_info_82580(9)igb_get_cable_length_82580(9)igb_set_master_slave_mode(9)
okay that's the whole page bestie, go reset a PHY and be iconic about it ππ§β
this absolute baddie of a man page lives in the source tree at ./drivers/net/ethernet/intel/igb and it's dated October 2026 ππ mwah, bye π¦
π¦ 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