]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
ethtool: RX software timestamp for all
authorGal Pressman <gal@nvidia.com>
Sun, 1 Sep 2024 11:27:49 +0000 (14:27 +0300)
committerJakub Kicinski <kuba@kernel.org>
Tue, 3 Sep 2024 22:17:47 +0000 (15:17 -0700)
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>
Reviewed-by: Willem de Bruijn <willemb@google.com>
Link: https://patch.msgid.link/20240901112803.212753-2-gal@nvidia.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/ethtool/common.c

index 00f93c58b319a311978d4a16c1bfeb57f9820904..781834ef57c36ddf5606a7a2f61c409fdc9987cd 100644 (file)
@@ -692,20 +692,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;
+       info->phc_index = -1;
 
        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);
+               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;
-       info->phc_index = -1;
+       info->so_timestamping |= SOF_TIMESTAMPING_RX_SOFTWARE |
+                                SOF_TIMESTAMPING_SOFTWARE;
 
-       return 0;
+       return err;
 }
 
 int ethtool_get_phc_vclocks(struct net_device *dev, int **vclock_index)