summaryrefslogtreecommitdiff
path: root/net/dsa
diff options
context:
space:
mode:
authorOleksij Rempel <o.rempel@pengutronix.de>2021-01-11 11:46:57 +0100
committerJakub Kicinski <kuba@kernel.org>2021-01-12 20:17:09 -0800
commitc2ec5f2ecf6aeef60c63d1af9ddcacdcbf829d68 (patch)
treeb1342f26aa55ff2f20fd4e8ecdfaeda48b4540a7 /net/dsa
parent46e05e1df628ab054486eafcc06a3c6512b338a1 (diff)
net: dsa: add optional stats64 support
Allow DSA drivers to export stats64 Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de> Reviewed-by: Vladimir Oltean <olteanv@gmail.com> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'net/dsa')
-rw-r--r--net/dsa/slave.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/net/dsa/slave.c b/net/dsa/slave.c
index 5d7f6cada6a8..5a1769602e65 100644
--- a/net/dsa/slave.c
+++ b/net/dsa/slave.c
@@ -1569,6 +1569,18 @@ static struct devlink_port *dsa_slave_get_devlink_port(struct net_device *dev)
return dp->ds->devlink ? &dp->devlink_port : NULL;
}
+static void dsa_slave_get_stats64(struct net_device *dev,
+ struct rtnl_link_stats64 *s)
+{
+ struct dsa_port *dp = dsa_slave_to_port(dev);
+ struct dsa_switch *ds = dp->ds;
+
+ if (ds->ops->get_stats64)
+ ds->ops->get_stats64(ds, dp->index, s);
+ else
+ dev_get_tstats64(dev, s);
+}
+
static const struct net_device_ops dsa_slave_netdev_ops = {
.ndo_open = dsa_slave_open,
.ndo_stop = dsa_slave_close,
@@ -1588,7 +1600,7 @@ static const struct net_device_ops dsa_slave_netdev_ops = {
#endif
.ndo_get_phys_port_name = dsa_slave_get_phys_port_name,
.ndo_setup_tc = dsa_slave_setup_tc,
- .ndo_get_stats64 = dev_get_tstats64,
+ .ndo_get_stats64 = dsa_slave_get_stats64,
.ndo_get_port_parent_id = dsa_slave_get_port_parent_id,
.ndo_vlan_rx_add_vid = dsa_slave_vlan_rx_add_vid,
.ndo_vlan_rx_kill_vid = dsa_slave_vlan_rx_kill_vid,