genphy_update_link(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

okay bestie, gather round, because this one is short but it matters. It lives in the Kernel API Manual (yes, that's the whole manual name, no cap), and it's the lil function that makes sure your network interface knows whether the cable's actually plugged in. literally the vibe check of the PHY world. ✨


🌸 SYNOPSIS

int genphy_update_link (struct phy_device *phydev );

that's it. that's the whole signature. she's compact, she's iconic, she returns an int. πŸ’…


πŸŽ€ ARGUMENTS

  • phydev β€” the target phy_device struct. like, the specific PHY device you're trying to update. that one. the main character. 🫢

✨ DESCRIPTION

okay so here's the tea: this function updates the value in phydev->link so it reflects the current link value. basically syncing the struct up with reality. no cap.

and the way it does it?? it has to read the status register twice, keeping the second value. yes, twice. once is not enough, bestie β€” it reads, then reads again, and the second read is the one that gets kept. that's the whole method. that's the whole bit. 🀌


πŸ¦‹ SEE ALSO

the whole friend group, fr fr β€” first the kernel file it lives in: ./drivers/net/phy/phy_device.c, then: phy_uses_state_machine(9), phy_register_fixup(9), genphy_match_phy_device(9), get_phy_c45_ids(9), get_phy_c22_id(9), get_phy_device(9), phy_device_register(9), phy_device_remove(9), phy_get_c45_ids(9), phy_find_next(9), phy_prepare_link(9), phy_connect_direct(9), phy_connect(9), phy_disconnect(9), phy_poll_reset(9), phy_sfp_connect_phy(9), phy_sfp_disconnect_phy(9), phy_sfp_attach(9), phy_sfp_detach(9), phy_sfp_probe(9), phy_attach_direct(9), phy_detach(9), phy_reset_after_clk_enable(9), genphy_config_advert(9), genphy_c37_config_advert(9), genphy_setup_forced(9), genphy_restart_aneg(9).

and continuing because the squad is BIG: genphy_check_and_restart_aneg(9), __genphy_config_aneg(9), genphy_c37_config_aneg(9), genphy_aneg_done(9), genphy_read_status_fixed(9), genphy_read_status(9), genphy_c37_read_status(9), genphy_soft_reset(9), genphy_read_abilities(9), phy_remove_link_mode(9), phy_advertise_supported(9), phy_advertise_eee_all(9), phy_support_eee(9), phy_disable_eee(9), phy_support_sym_pause(9), phy_support_asym_pause(9), phy_set_sym_pause(9), phy_set_asym_pause(9), phy_validate_pause(9), phy_get_pause(9), phy_get_internal_delay(9), phy_get_tx_amplitude_gain(9), phy_get_mac_termination(9), phy_get_sfp_port(9).

last batch, promise πŸ“: fwnode_mdio_find_device(9), fwnode_phy_find_device(9), fwnode_get_phy_node(9), phy_probe(9), phy_driver_register(9).


lowkey a flex how many of these exist. go read them. iykyk. 🌈

and that's the whole page, bestie β€” sourced from ./drivers/net/phy, dated October 2026, the genphy_update_link(9) page from the Kernel API Manual, signed off with so much love. go read your status register twice, you icon. πŸ’œπŸŽ€πŸ¦‹

πŸ“¦ where this page comes from