igb_phy_has_link(9)
β¨ igb_phy_has_link(9) β¨
okay so bestie, welcome to the igb_phy_has_link page π this one lives in the Kernel API Manual, and it's giving "tiny function, very specific job, absolutely iconic" energy. Let's get into it π«Ά
πΈ NAME πΈ
igb_phy_has_link β literally just polls the PHY for link π that's it, that's the whole vibe
π SYNOPSIS π
s32 igb_phy_has_link (struct e1000_hw *hw , u32 iterations , u32
usec_interval , bool *success );
no cap, that's the exact signature β copy it character for character or the compiler will absolutely humble you π
π¦ ARGUMENTS π¦
hwβ pointer to the HW structure π like, the hardware context you're working withiterationsβ number of times to poll for link π how many chances you're giving it, bestieusec_intervalβ delay between polling attempts β³ the lil breather in between each trysuccessβ pointer to whether polling was successful or not β the receipts get written here
π DESCRIPTION π
So here's the tea: this function polls the PHY status register for link, and it does it iterations number of times π₯ that's the entire bit. Main character behavior honestly.
ngl it's a polling loop, so it's gonna keep checking until it's done checking β plan your wait time accordingly π°οΈ
π SEE ALSO π
If you liked this one, the whole extended universe is right here β go read the source, it's literally in the kernel tree:
Kernel file ./drivers/net/ethernet/intel/igb/e1000_phy.c
and the friend group π:
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_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_hw_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)
periodt π
and that's the page, bestie π§ββοΈ brought to you from ./drivers/net/ethernet/intel/igb, dated October 2026 β mwah, go touch some grass (or a PHY status register) πβ
π¦ 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