Message ID | 20240829144253.122215-2-gal@nvidia.com (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | RX software timestamp for all | expand |
On 29.08.2024 17:42:52, Gal Pressman wrote: > All devices support SOF_TIMESTAMPING_RX_SOFTWARE by virtue of > net_timestamp_check() being called in the device independent code. > > Move the responsibility of reporting SOF_TIMESTAMPING_RX_SOFTWARE and > SOF_TIMESTAMPING_SOFTWARE, and setting PHC index to -1 to the core. > Device drivers no longer need to use them. > > Suggested-by: Willem de Bruijn <willemdebruijn.kernel@gmail.com> > Link: https://lore.kernel.org/netdev/661550e348224_23a2b2294f7@willemb.c.googlers.com.notmuch/ > Co-developed-by: Rahul Rameshbabu <rrameshbabu@nvidia.com> > Signed-off-by: Rahul Rameshbabu <rrameshbabu@nvidia.com> > Signed-off-by: Gal Pressman <gal@nvidia.com> Reviewed-by: Marc Kleine-Budde <mkl@pengutronix.de> regards, Marc
Gal Pressman wrote: > All devices support SOF_TIMESTAMPING_RX_SOFTWARE by virtue of > net_timestamp_check() being called in the device independent code. > > Move the responsibility of reporting SOF_TIMESTAMPING_RX_SOFTWARE and > SOF_TIMESTAMPING_SOFTWARE, and setting PHC index to -1 to the core. > Device drivers no longer need to use them. > > Suggested-by: Willem de Bruijn <willemdebruijn.kernel@gmail.com> > Link: https://lore.kernel.org/netdev/661550e348224_23a2b2294f7@willemb.c.googlers.com.notmuch/ > Co-developed-by: Rahul Rameshbabu <rrameshbabu@nvidia.com> > Signed-off-by: Rahul Rameshbabu <rrameshbabu@nvidia.com> > Signed-off-by: Gal Pressman <gal@nvidia.com> Reviewed-by: Willem de Bruijn <willemb@google.com>
diff --git a/net/ethtool/common.c b/net/ethtool/common.c index 7257ae272296..aa7010f97152 100644 --- a/net/ethtool/common.c +++ b/net/ethtool/common.c @@ -695,20 +695,21 @@ int __ethtool_get_ts_info(struct net_device *dev, struct kernel_ethtool_ts_info { const struct ethtool_ops *ops = dev->ethtool_ops; struct phy_device *phydev = dev->phydev; + int err = 0; memset(info, 0, sizeof(*info)); info->cmd = ETHTOOL_GET_TS_INFO; - - 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); - - info->so_timestamping = SOF_TIMESTAMPING_RX_SOFTWARE | - SOF_TIMESTAMPING_SOFTWARE; info->phc_index = -1; - return 0; + if (phy_is_default_hwtstamp(phydev) && phy_has_tsinfo(phydev)) + err = phy_ts_info(phydev, info); + else if (ops->get_ts_info) + err = ops->get_ts_info(dev, info); + + info->so_timestamping |= SOF_TIMESTAMPING_RX_SOFTWARE | + SOF_TIMESTAMPING_SOFTWARE; + + return err; } int ethtool_get_phc_vclocks(struct net_device *dev, int **vclock_index)