mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2024-12-28 00:32:00 +00:00
l2tp: Handle eth stats using NETDEV_PCPU_STAT_DSTATS.
l2tp_eth uses the TSTATS infrastructure (dev_sw_netstats_*()) for RX and TX packet counters and DEV_STATS_INC for dropped counters. Consolidate that using the DSTATS infrastructure, which can handle both packet counters and packet drops. Statistics that don't fit DSTATS are still updated atomically with DEV_STATS_INC(). This change is inspired by the introduction of DSTATS helpers and their use in other udp tunnel drivers: Link: https://lore.kernel.org/all/cover.1733313925.git.gnault@redhat.com/ Signed-off-by: James Chapman <jchapman@katalix.com> Reviewed-by: Guillaume Nault <gnault@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
54d3970548
commit
c0b8980e60
@ -73,9 +73,9 @@ static netdev_tx_t l2tp_eth_dev_xmit(struct sk_buff *skb, struct net_device *dev
|
||||
int ret = l2tp_xmit_skb(session, skb);
|
||||
|
||||
if (likely(ret == NET_XMIT_SUCCESS))
|
||||
dev_sw_netstats_tx_add(dev, 1, len);
|
||||
dev_dstats_tx_add(dev, len);
|
||||
else
|
||||
DEV_STATS_INC(dev, tx_dropped);
|
||||
dev_dstats_tx_dropped(dev);
|
||||
|
||||
return NETDEV_TX_OK;
|
||||
}
|
||||
@ -84,7 +84,6 @@ static const struct net_device_ops l2tp_eth_netdev_ops = {
|
||||
.ndo_init = l2tp_eth_dev_init,
|
||||
.ndo_uninit = l2tp_eth_dev_uninit,
|
||||
.ndo_start_xmit = l2tp_eth_dev_xmit,
|
||||
.ndo_get_stats64 = dev_get_tstats64,
|
||||
.ndo_set_mac_address = eth_mac_addr,
|
||||
};
|
||||
|
||||
@ -100,7 +99,7 @@ static void l2tp_eth_dev_setup(struct net_device *dev)
|
||||
dev->lltx = true;
|
||||
dev->netdev_ops = &l2tp_eth_netdev_ops;
|
||||
dev->needs_free_netdev = true;
|
||||
dev->pcpu_stat_type = NETDEV_PCPU_STAT_TSTATS;
|
||||
dev->pcpu_stat_type = NETDEV_PCPU_STAT_DSTATS;
|
||||
}
|
||||
|
||||
static void l2tp_eth_dev_recv(struct l2tp_session *session, struct sk_buff *skb, int data_len)
|
||||
@ -128,7 +127,7 @@ static void l2tp_eth_dev_recv(struct l2tp_session *session, struct sk_buff *skb,
|
||||
goto error_rcu;
|
||||
|
||||
if (dev_forward_skb(dev, skb) == NET_RX_SUCCESS)
|
||||
dev_sw_netstats_rx_add(dev, data_len);
|
||||
dev_dstats_rx_add(dev, data_len);
|
||||
else
|
||||
DEV_STATS_INC(dev, rx_errors);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user