]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
l2tp: Handle eth stats using NETDEV_PCPU_STAT_DSTATS.
authorJames Chapman <jchapman@katalix.com>
Mon, 9 Dec 2024 11:46:07 +0000 (11:46 +0000)
committerDavid S. Miller <davem@davemloft.net>
Wed, 11 Dec 2024 13:57:26 +0000 (13:57 +0000)
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>
net/l2tp/l2tp_eth.c

index d692b902e120ca0b2ec32897dc0dc516f3520839..e836910734967197dc5309e4ae93c58baa7ecef7 100644 (file)
@@ -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);