Skip to content

Commit c72a657

Browse files
edumazetkuba-moo
authored andcommitted
geneve: use DEV_STATS_INC()
geneve updates dev->stats fields locklessly. Adopt DEV_STATS_INC() to avoid races. Signed-off-by: Eric Dumazet <[email protected]> Reviewed-by: Simon Horman <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Jakub Kicinski <[email protected]>
1 parent ee93b1f commit c72a657

File tree

1 file changed

+12
-12
lines changed

1 file changed

+12
-12
lines changed

drivers/net/geneve.c

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -234,7 +234,7 @@ static void geneve_rx(struct geneve_dev *geneve, struct geneve_sock *gs,
234234
vni_to_tunnel_id(gnvh->vni),
235235
gnvh->opt_len * 4);
236236
if (!tun_dst) {
237-
geneve->dev->stats.rx_dropped++;
237+
DEV_STATS_INC(geneve->dev, rx_dropped);
238238
goto drop;
239239
}
240240
/* Update tunnel dst according to Geneve options. */
@@ -246,8 +246,8 @@ static void geneve_rx(struct geneve_dev *geneve, struct geneve_sock *gs,
246246
* since we don't support any...
247247
*/
248248
if (gnvh->critical) {
249-
geneve->dev->stats.rx_frame_errors++;
250-
geneve->dev->stats.rx_errors++;
249+
DEV_STATS_INC(geneve->dev, rx_frame_errors);
250+
DEV_STATS_INC(geneve->dev, rx_errors);
251251
goto drop;
252252
}
253253
}
@@ -263,7 +263,7 @@ static void geneve_rx(struct geneve_dev *geneve, struct geneve_sock *gs,
263263
/* Ignore packet loops (and multicast echo) */
264264
if (ether_addr_equal(eth_hdr(skb)->h_source,
265265
geneve->dev->dev_addr)) {
266-
geneve->dev->stats.rx_errors++;
266+
DEV_STATS_INC(geneve->dev, rx_errors);
267267
goto drop;
268268
}
269269
} else {
@@ -296,8 +296,8 @@ static void geneve_rx(struct geneve_dev *geneve, struct geneve_sock *gs,
296296
#endif
297297
}
298298
if (err > 1) {
299-
++geneve->dev->stats.rx_frame_errors;
300-
++geneve->dev->stats.rx_errors;
299+
DEV_STATS_INC(geneve->dev, rx_frame_errors);
300+
DEV_STATS_INC(geneve->dev, rx_errors);
301301
goto drop;
302302
}
303303
}
@@ -377,14 +377,14 @@ static int geneve_udp_encap_recv(struct sock *sk, struct sk_buff *skb)
377377

378378
if (unlikely((!geneve->cfg.inner_proto_inherit &&
379379
inner_proto != htons(ETH_P_TEB)))) {
380-
geneve->dev->stats.rx_dropped++;
380+
DEV_STATS_INC(geneve->dev, rx_dropped);
381381
goto drop;
382382
}
383383

384384
opts_len = geneveh->opt_len * 4;
385385
if (iptunnel_pull_header(skb, GENEVE_BASE_HLEN + opts_len, inner_proto,
386386
!net_eq(geneve->net, dev_net(geneve->dev)))) {
387-
geneve->dev->stats.rx_dropped++;
387+
DEV_STATS_INC(geneve->dev, rx_dropped);
388388
goto drop;
389389
}
390390

@@ -1007,7 +1007,7 @@ static netdev_tx_t geneve_xmit(struct sk_buff *skb, struct net_device *dev)
10071007
if (unlikely(!info || !(info->mode & IP_TUNNEL_INFO_TX))) {
10081008
netdev_dbg(dev, "no tunnel metadata\n");
10091009
dev_kfree_skb(skb);
1010-
dev->stats.tx_dropped++;
1010+
DEV_STATS_INC(dev, tx_dropped);
10111011
return NETDEV_TX_OK;
10121012
}
10131013
} else {
@@ -1030,11 +1030,11 @@ static netdev_tx_t geneve_xmit(struct sk_buff *skb, struct net_device *dev)
10301030
dev_kfree_skb(skb);
10311031

10321032
if (err == -ELOOP)
1033-
dev->stats.collisions++;
1033+
DEV_STATS_INC(dev, collisions);
10341034
else if (err == -ENETUNREACH)
1035-
dev->stats.tx_carrier_errors++;
1035+
DEV_STATS_INC(dev, tx_carrier_errors);
10361036

1037-
dev->stats.tx_errors++;
1037+
DEV_STATS_INC(dev, tx_errors);
10381038
return NETDEV_TX_OK;
10391039
}
10401040

0 commit comments

Comments
 (0)