phy_start_cable_test_tdr(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸŽ€ phy_start_cable_test_tdr πŸŽ€

okay bestie, welcome to the Kernel API Manual, section 9 β€” sit down, grab a lil snack, we're doing cable diagnostics today 🫢

✨ NAME ✨

phy_start_cable_test_tdr β€” start a raw TDR cable test πŸ’… (TDR = time-domain reflectometry, iykyk β€” it's the thing that pings your cable and listens for the echo to find out where the boo-boo is πŸ”₯)

🌸 SYNOPSIS 🌸

int phy_start_cable_test_tdr (struct phy_device *phydev ,
                              struct netlink_ext_ack *extack ,
                              const struct phy_tdr_config *config );
it returns an int, so like… vibe check the return value, bestie 😭

πŸ¦‹ ARGUMENTS πŸ¦‹

so there are literally three (3) things you gotta hand over:

  • phydev β€” the phy_device struct πŸ’œ the main character, the PHY we're testing. no PHY, no test, no slay.
  • extack β€” the netlink_ext_ack used for reporting useful error messages πŸŽ€ so if it all goes sideways, this is how it tells you why it went sideways. very considerate of it ngl.
  • config β€” configuration of the test to run ⭐ it's a const struct phy_tdr_config *, i.e. the settings that tell this test exactly how to behave. read-only, don't you dare touch.

πŸ‘‘ SEE ALSO πŸ‘‘

kernel file ./drivers/net/phy/phy.c β€” and like, a truly iconic amount of friends. literally the whole PHY extended family came to the group chat πŸ’€:

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_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. whole family. no cap 🧚

and that's the page, bestie!! this one's from the kernel tree at ./drivers/net/phy, dated October 2026, and it lives in that Kernel API Manual energy forever πŸ’– go forth and reflect on some cables πŸ¦‹

πŸ“¦ where this page comes from