phy_speed_down(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– phy_speed_down(9) πŸ’–

okay so real talk, this is a page from the Kernel API Manual and it's genuinely not that deep, bestie, let me walk you through it 🫢


✨ NAME ✨

phy_speed_down β€” sets the speed to the lowest speed that both link partners support. that's it, that's the whole vibe 🌸


πŸŽ€ SYNOPSIS πŸŽ€

int phy_speed_down (struct phy_device *phydev , bool sync );

like, it returns an int, and it takes two things. slay πŸ’…


πŸ¦‹ ARGUMENTS πŸ¦‹

  • phydev β€” the phy_device struct. literally the star of the show, the main character energy 🌟
  • sync β€” perform the action synchronously. yes, it matters, keep reading πŸ‘€

🌈 DESCRIPTION 🌈

so the typical use case here is saving energy while you're just sitting there waiting for a WoL packet to show up. lowkey energy-efficient icon behaviour βš‘πŸ’œ

⚠️ WARNING, and I'm so serious rn: setting sync to false may cause the system to be unable to suspend in case the PHY generates an interrupt when it finishes the autonegotiation 😭 that interrupt may wake the system up immediately after suspend. so like, only use sync = false if you're sure it's safe with the respective network chip. no cap, be careful fr fr πŸ’€

πŸ”₯ SEE ALSO πŸ”₯

Kernel file ./drivers/net/phy/phy.c β€” and here's the whole squad, all of them, every single one, I'm not skipping anybody πŸ‘‘

phy_print_status(9), phy_get_rate_matching(9), phy_config_interrupt(9), phy_restart_aneg(9), phy_aneg_done(9), phy_supported_speeds(9), phy_check_valid(9), phy_sanitize_settings(9), phy_mii_ioctl(9), phy_do_ioctl(9), phy_do_ioctl_running(9), __phy_hwtstamp_get(9), __phy_hwtstamp_set(9), phy_queue_state_machine(9), phy_trigger_machine(9), phy_ethtool_get_strings(9), phy_ethtool_get_sset_count(9), phy_ethtool_get_stats(9), __phy_ethtool_get_phy_stats(9), __phy_ethtool_get_link_ext_stats(9), phy_ethtool_get_plca_cfg(9), plca_check_valid(9), phy_ethtool_set_plca_cfg(9), phy_ethtool_get_plca_status(9), phy_start_cable_test(9), phy_start_cable_test_tdr(9), phy_check_link_status(9), phy_inband_caps(9), phy_config_inband(9), _phy_start_aneg(9), phy_start_aneg(9), phy_speed_up(9), phy_start_machine(9), phy_stop_machine(9), phy_error(9), phy_write_barrier(9), phy_disable_interrupts(9), phy_interrupt(9), phy_enable_interrupts(9), phy_update_stats(9), phy_request_interrupt(9), phy_free_interrupt(9), phy_get_next_update_time(9), phy_state_machine(9), phy_stop(9), phy_start(9), phy_mac_interrupt(9), phy_loopback(9), phy_eee_tx_clock_stop_capable(9), phy_eee_rx_clock_stop(9), phy_init_eee(9), phy_get_eee_err(9), phy_ethtool_get_eee(9), phy_ethtool_set_eee_noneg(9), phy_ethtool_set_eee(9), phy_ethtool_set_wol(9), phy_ethtool_get_wol(9), phy_ethtool_nway_reset(9) πŸ’–βœ¨


and that's the page!! this came out of ./drivers/net/phy, dated October 2026, for phy_speed_down(9) β€” go read the others too, iykyk πŸ§šπŸ’…πŸŽ€
πŸ“¦ where this page comes from