summaryrefslogtreecommitdiff
path: root/net
diff options
context:
space:
mode:
authorJakub Kicinski <kuba@kernel.org>2021-01-12 20:17:11 -0800
committerJakub Kicinski <kuba@kernel.org>2021-01-12 20:17:12 -0800
commit8243fe8a9abbde5b25d9bc700e4007b60728bb6f (patch)
tree10164311574441be3fd5e618ce9696b470521309 /net
parent46e05e1df628ab054486eafcc06a3c6512b338a1 (diff)
parentbf9ce385932b61584684d31e2e5f8f485791e409 (diff)
Merge branch 'net-dsa-add-stats64-support'
Oleksij Rempel says: ==================== net: dsa: add stats64 support changes v8: - stats.no_handler should not be assigned from HW stats changes v7: - move raw.filtered from rx_errors to rx_dropped counter changes v6: - move stats64 callback to ethtool section - ar9331: diff. fixes - ar9331: move stats calculation to the worker - ar9331: extend rx/tx error counters - use spin lock instead of u64_stats* changes v5: - read all stats in one regmap_bulk_read() request - protect stats with u64_stats* helpers. changes v4: - do no read MIBs withing stats64 call - change polling frequency to 0.3Hz changes v3: - fix wrong multiplication - cancel port workers on remove changes v2: - use stats64 instead of get_ethtool_stats - add worked to poll for the stats ==================== Link: https://lore.kernel.org/r/20210111104658.21930-1-o.rempel@pengutronix.de Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'net')
-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,