]> www.infradead.org Git - users/hch/misc.git/commitdiff
net: dsa: implement get_ts_stats ethtool operation for user ports
authorVladimir Oltean <vladimir.oltean@nxp.com>
Thu, 16 Jan 2025 10:46:26 +0000 (12:46 +0200)
committerJakub Kicinski <kuba@kernel.org>
Sat, 18 Jan 2025 04:01:09 +0000 (20:01 -0800)
Integrate with the standard infrastructure for reporting hardware packet
timestamping statistics.

Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Reviewed-by: Jakub Kicinski <kuba@kernel.org>
Link: https://patch.msgid.link/20250116104628.123555-3-vladimir.oltean@nxp.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
include/net/dsa.h
net/dsa/user.c

index 9640d5c67f564dc8c4598affb6e6c7b83fd734a6..a0a9481c52c290f92e6f28433d5697175c0ca07b 100644 (file)
@@ -906,6 +906,8 @@ struct dsa_switch_ops {
        void    (*get_rmon_stats)(struct dsa_switch *ds, int port,
                                  struct ethtool_rmon_stats *rmon_stats,
                                  const struct ethtool_rmon_hist_range **ranges);
+       void    (*get_ts_stats)(struct dsa_switch *ds, int port,
+                               struct ethtool_ts_stats *ts_stats);
        void    (*get_stats64)(struct dsa_switch *ds, int port,
                                   struct rtnl_link_stats64 *s);
        void    (*get_pause_stats)(struct dsa_switch *ds, int port,
index c74f2b2b92dec480dc7009d9a4c3be3676e9dc0a..291ab1b4acc4d5fb3cd885544bc33c322eeb3817 100644 (file)
@@ -1150,6 +1150,16 @@ dsa_user_get_rmon_stats(struct net_device *dev,
                ds->ops->get_rmon_stats(ds, dp->index, rmon_stats, ranges);
 }
 
+static void dsa_user_get_ts_stats(struct net_device *dev,
+                                 struct ethtool_ts_stats *ts_stats)
+{
+       struct dsa_port *dp = dsa_user_to_port(dev);
+       struct dsa_switch *ds = dp->ds;
+
+       if (ds->ops->get_ts_stats)
+               ds->ops->get_ts_stats(ds, dp->index, ts_stats);
+}
+
 static void dsa_user_net_selftest(struct net_device *ndev,
                                  struct ethtool_test *etest, u64 *buf)
 {
@@ -2501,6 +2511,7 @@ static const struct ethtool_ops dsa_user_ethtool_ops = {
        .get_eth_mac_stats      = dsa_user_get_eth_mac_stats,
        .get_eth_ctrl_stats     = dsa_user_get_eth_ctrl_stats,
        .get_rmon_stats         = dsa_user_get_rmon_stats,
+       .get_ts_stats           = dsa_user_get_ts_stats,
        .set_wol                = dsa_user_set_wol,
        .get_wol                = dsa_user_get_wol,
        .set_eee                = dsa_user_set_eee,