Skip to content

Commit 2827de8

Browse files
j-c-hNipaLocal
authored andcommitted
l2tp: l2tp_eth: use per-cpu counters from dev->tstats
l2tp_eth uses old-style dev->stats for fastpath packet/byte counters. Convert it to use dev->tstats per-cpu counters. Signed-off-by: James Chapman <jchapman@katalix.com> Signed-off-by: Tom Parkin <tparkin@katalix.com> Signed-off-by: NipaLocal <nipa@local>
1 parent e690f52 commit 2827de8

File tree

1 file changed

+10
-22
lines changed

1 file changed

+10
-22
lines changed

net/l2tp/l2tp_eth.c

Lines changed: 10 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -72,31 +72,19 @@ static netdev_tx_t l2tp_eth_dev_xmit(struct sk_buff *skb, struct net_device *dev
7272
unsigned int len = skb->len;
7373
int ret = l2tp_xmit_skb(session, skb);
7474

75-
if (likely(ret == NET_XMIT_SUCCESS)) {
76-
DEV_STATS_ADD(dev, tx_bytes, len);
77-
DEV_STATS_INC(dev, tx_packets);
78-
} else {
75+
if (likely(ret == NET_XMIT_SUCCESS))
76+
dev_sw_netstats_tx_add(dev, 1, len);
77+
else
7978
DEV_STATS_INC(dev, tx_dropped);
80-
}
81-
return NETDEV_TX_OK;
82-
}
8379

84-
static void l2tp_eth_get_stats64(struct net_device *dev,
85-
struct rtnl_link_stats64 *stats)
86-
{
87-
stats->tx_bytes = DEV_STATS_READ(dev, tx_bytes);
88-
stats->tx_packets = DEV_STATS_READ(dev, tx_packets);
89-
stats->tx_dropped = DEV_STATS_READ(dev, tx_dropped);
90-
stats->rx_bytes = DEV_STATS_READ(dev, rx_bytes);
91-
stats->rx_packets = DEV_STATS_READ(dev, rx_packets);
92-
stats->rx_errors = DEV_STATS_READ(dev, rx_errors);
80+
return NETDEV_TX_OK;
9381
}
9482

9583
static const struct net_device_ops l2tp_eth_netdev_ops = {
9684
.ndo_init = l2tp_eth_dev_init,
9785
.ndo_uninit = l2tp_eth_dev_uninit,
9886
.ndo_start_xmit = l2tp_eth_dev_xmit,
99-
.ndo_get_stats64 = l2tp_eth_get_stats64,
87+
.ndo_get_stats64 = dev_get_tstats64,
10088
.ndo_set_mac_address = eth_mac_addr,
10189
};
10290

@@ -112,6 +100,7 @@ static void l2tp_eth_dev_setup(struct net_device *dev)
112100
dev->features |= NETIF_F_LLTX;
113101
dev->netdev_ops = &l2tp_eth_netdev_ops;
114102
dev->needs_free_netdev = true;
103+
dev->pcpu_stat_type = NETDEV_PCPU_STAT_TSTATS;
115104
}
116105

117106
static void l2tp_eth_dev_recv(struct l2tp_session *session, struct sk_buff *skb, int data_len)
@@ -138,12 +127,11 @@ static void l2tp_eth_dev_recv(struct l2tp_session *session, struct sk_buff *skb,
138127
if (!dev)
139128
goto error_rcu;
140129

141-
if (dev_forward_skb(dev, skb) == NET_RX_SUCCESS) {
142-
DEV_STATS_INC(dev, rx_packets);
143-
DEV_STATS_ADD(dev, rx_bytes, data_len);
144-
} else {
130+
if (dev_forward_skb(dev, skb) == NET_RX_SUCCESS)
131+
dev_sw_netstats_rx_add(dev, data_len);
132+
else
145133
DEV_STATS_INC(dev, rx_errors);
146-
}
134+
147135
rcu_read_unlock();
148136

149137
return;

0 commit comments

Comments
 (0)