net: vrf: move to generic dstat helpers
The vrf driver has its own dstats-to-rtnl_link_stats64 collection, but we now have a generic implementation for dstats collection, so switch to this. In doing so, we fix a minor issue where the (non-percpu) dev->stats->tx_errors value was never collected into rtnl_link_stats64, as the generic dev_get_dstats64() consumes the starting values from dev->stats. Signed-off-by: Jeremy Kerr <jk@codeconstruct.com.au> Reviewed-by: Simon Horman <horms@kernel.org> Reviewed-by: David Ahern <dsahern@kernel.org> Link: https://lore.kernel.org/r/20240607-dstats-v3-3-cc781fe116f7@codeconstruct.com.au Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
94b601bc4f
commit
2202576d46
@ -137,33 +137,6 @@ static void vrf_tx_error(struct net_device *vrf_dev, struct sk_buff *skb)
|
||||
kfree_skb(skb);
|
||||
}
|
||||
|
||||
static void vrf_get_stats64(struct net_device *dev,
|
||||
struct rtnl_link_stats64 *stats)
|
||||
{
|
||||
int i;
|
||||
|
||||
for_each_possible_cpu(i) {
|
||||
const struct pcpu_dstats *dstats;
|
||||
u64 tbytes, tpkts, tdrops, rbytes, rpkts;
|
||||
unsigned int start;
|
||||
|
||||
dstats = per_cpu_ptr(dev->dstats, i);
|
||||
do {
|
||||
start = u64_stats_fetch_begin(&dstats->syncp);
|
||||
tbytes = u64_stats_read(&dstats->tx_bytes);
|
||||
tpkts = u64_stats_read(&dstats->tx_packets);
|
||||
tdrops = u64_stats_read(&dstats->tx_drops);
|
||||
rbytes = u64_stats_read(&dstats->rx_bytes);
|
||||
rpkts = u64_stats_read(&dstats->rx_packets);
|
||||
} while (u64_stats_fetch_retry(&dstats->syncp, start));
|
||||
stats->tx_bytes += tbytes;
|
||||
stats->tx_packets += tpkts;
|
||||
stats->tx_dropped += tdrops;
|
||||
stats->rx_bytes += rbytes;
|
||||
stats->rx_packets += rpkts;
|
||||
}
|
||||
}
|
||||
|
||||
static struct vrf_map *netns_vrf_map(struct net *net)
|
||||
{
|
||||
struct netns_vrf *nn_vrf = net_generic(net, vrf_net_id);
|
||||
@ -1201,7 +1174,6 @@ static const struct net_device_ops vrf_netdev_ops = {
|
||||
.ndo_uninit = vrf_dev_uninit,
|
||||
.ndo_start_xmit = vrf_xmit,
|
||||
.ndo_set_mac_address = eth_mac_addr,
|
||||
.ndo_get_stats64 = vrf_get_stats64,
|
||||
.ndo_add_slave = vrf_add_slave,
|
||||
.ndo_del_slave = vrf_del_slave,
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user