diff options
author | Eric Dumazet <edumazet@google.com> | 2019-11-07 16:27:15 -0800 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2019-11-07 20:03:08 -0800 |
commit | dd5382a08157756510aa8d7269c662eccde775cb (patch) | |
tree | ab87e4101df24bc5d2bc30b4207cc4ce0a59c1c0 /drivers/net/loopback.c | |
parent | de7d5084d82794a8e83afb994fcb07f82da3cd7b (diff) | |
download | linux-dd5382a08157756510aa8d7269c662eccde775cb.tar.bz2 |
net: provide dev_lstats_add() helper
Many network drivers need it and hand-coded the same function.
In order to ease u64_stats_t adoption, it is time to factorize.
Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/loopback.c')
-rw-r--r-- | drivers/net/loopback.c | 12 |
1 files changed, 2 insertions, 10 deletions
diff --git a/drivers/net/loopback.c b/drivers/net/loopback.c index 92336ac4c5e6..47ad2478b9f3 100644 --- a/drivers/net/loopback.c +++ b/drivers/net/loopback.c @@ -68,7 +68,6 @@ EXPORT_SYMBOL(blackhole_netdev); static netdev_tx_t loopback_xmit(struct sk_buff *skb, struct net_device *dev) { - struct pcpu_lstats *lb_stats; int len; skb_tx_timestamp(skb); @@ -85,16 +84,9 @@ static netdev_tx_t loopback_xmit(struct sk_buff *skb, skb->protocol = eth_type_trans(skb, dev); - /* it's OK to use per_cpu_ptr() because BHs are off */ - lb_stats = this_cpu_ptr(dev->lstats); - len = skb->len; - if (likely(netif_rx(skb) == NET_RX_SUCCESS)) { - u64_stats_update_begin(&lb_stats->syncp); - lb_stats->bytes += len; - lb_stats->packets++; - u64_stats_update_end(&lb_stats->syncp); - } + if (likely(netif_rx(skb) == NET_RX_SUCCESS)) + dev_lstats_add(dev, len); return NETDEV_TX_OK; } |