phy_sanitize_settings(9)
β¨ phy_sanitize_settings β¨
okay so real talk, this one's from the Kernel API Manual β yes bestie, we're in the kernel now, put your big-girl hat on π
π NAME π
phy_sanitize_settings β the little function whose entire job is making sure the PHY is set to a speed and duplex it can actually handle. no cap, that's it, that's the whole vibe check π¦
πΈ SYNOPSIS πΈ
void phy_sanitize_settings (struct phy_device *phydev );
it returns nothing (void, she gives nothing and takes nothing π
) and it takes exactly one thing, which we're about to talk about π
π«Ά ARGUMENTS π«Ά
phydevβ the targetphy_devicestruct. your main character. the PHY we're about to sanitize, bestie π§
π₯ DESCRIPTION π₯
okay so picture this: the PHY needs to be set to speeds and duplexes that are actually supported. phy_sanitize_settings makes sure of that β¨
and if it has to drop down a level? it does it in this exact order, no skipping, no jumping around the queue:
1000/FULL1000/HALF100/FULL100/HALF10/FULL10/HALF
it's giving "we go down the list one at a time, in order, periodt" ππ like a very polite staircase of network speeds. iconic behaviour honestly π
π SEE ALSO π
okay this list is LONG, grab a snack π β everything here lives in the kernel file ./drivers/net/phy/phy.c:
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_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_down(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)
like I said. a LOT. iykyk ππ
ngl this page is short but she's doing her job and she's doing it well. lowkey obsessed with the tiny functions π«Ά
and that's a wrap, bestie! this lil page came from ./drivers/net/phy, dated October 2026 β go forth and sanitize those settings responsibly π
β¨π
π¦ 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