diff options
author | Kory Maincent <kory.maincent@bootlin.com> | 2024-07-09 15:53:36 +0200 |
---|---|---|
committer | Jakub Kicinski <kuba@kernel.org> | 2024-07-15 17:02:26 +0200 |
commit | 2dd35600590148d843367c04975acad3c1a527c3 (patch) | |
tree | 3133e7a29bd2cf1511c7a6c7889bc79fe4b8c964 /net/ethtool | |
parent | net_tstamp: Add TIMESTAMPING SOFTWARE and HARDWARE mask (diff) | |
download | linux-2dd35600590148d843367c04975acad3c1a527c3.tar.xz linux-2dd35600590148d843367c04975acad3c1a527c3.zip |
net: Change the API of PHY default timestamp to MAC
Change the API to select MAC default time stamping instead of the PHY.
Indeed the PHY is closer to the wire therefore theoretically it has less
delay than the MAC timestamping but the reality is different. Due to lower
time stamping clock frequency, latency in the MDIO bus and no PHC hardware
synchronization between different PHY, the PHY PTP is often less precise
than the MAC. The exception is for PHY designed specially for PTP case but
these devices are not very widespread. For not breaking the compatibility
default_timestamp flag has been introduced in phy_device that is set by
the phy driver to know we are using the old API behavior.
Reviewed-by: Rahul Rameshbabu <rrameshbabu@nvidia.com>
Signed-off-by: Kory Maincent <kory.maincent@bootlin.com>
Link: https://patch.msgid.link/20240709-feature_ptp_netnext-v17-4-b5317f50df2a@bootlin.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'net/ethtool')
-rw-r--r-- | net/ethtool/common.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/net/ethtool/common.c b/net/ethtool/common.c index 6b2a360dcdf0..01b7550f12c6 100644 --- a/net/ethtool/common.c +++ b/net/ethtool/common.c @@ -637,7 +637,7 @@ int __ethtool_get_ts_info(struct net_device *dev, struct ethtool_ts_info *info) memset(info, 0, sizeof(*info)); info->cmd = ETHTOOL_GET_TS_INFO; - if (phy_has_tsinfo(phydev)) + if (phy_is_default_hwtstamp(phydev) && phy_has_tsinfo(phydev)) return phy_ts_info(phydev, info); if (ops->get_ts_info) return ops->get_ts_info(dev, info); |