diff options
author | Eric Dumazet <edumazet@google.com> | 2024-01-04 17:36:33 +0100 |
---|---|---|
committer | Jakub Kicinski <kuba@kernel.org> | 2024-01-06 04:07:18 +0100 |
commit | c72a657b5cca1d415a26c871ae114bbb119ad0c2 (patch) | |
tree | 70b23d4f5ef8552622a3deb1a79d10735be58c57 /drivers/net/geneve.c | |
parent | Merge branch 'net-gro-reduce-extension-header-parsing-overhead' (diff) | |
download | linux-c72a657b5cca1d415a26c871ae114bbb119ad0c2.tar.xz linux-c72a657b5cca1d415a26c871ae114bbb119ad0c2.zip |
geneve: use DEV_STATS_INC()
geneve updates dev->stats fields locklessly.
Adopt DEV_STATS_INC() to avoid races.
Signed-off-by: Eric Dumazet <edumazet@google.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Link: https://lore.kernel.org/r/20240104163633.2070538-1-edumazet@google.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'drivers/net/geneve.c')
-rw-r--r-- | drivers/net/geneve.c | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/drivers/net/geneve.c b/drivers/net/geneve.c index acd9c615d1f4..32c51c244153 100644 --- a/drivers/net/geneve.c +++ b/drivers/net/geneve.c @@ -234,7 +234,7 @@ static void geneve_rx(struct geneve_dev *geneve, struct geneve_sock *gs, vni_to_tunnel_id(gnvh->vni), gnvh->opt_len * 4); if (!tun_dst) { - geneve->dev->stats.rx_dropped++; + DEV_STATS_INC(geneve->dev, rx_dropped); goto drop; } /* Update tunnel dst according to Geneve options. */ @@ -246,8 +246,8 @@ static void geneve_rx(struct geneve_dev *geneve, struct geneve_sock *gs, * since we don't support any... */ if (gnvh->critical) { - geneve->dev->stats.rx_frame_errors++; - geneve->dev->stats.rx_errors++; + DEV_STATS_INC(geneve->dev, rx_frame_errors); + DEV_STATS_INC(geneve->dev, rx_errors); goto drop; } } @@ -263,7 +263,7 @@ static void geneve_rx(struct geneve_dev *geneve, struct geneve_sock *gs, /* Ignore packet loops (and multicast echo) */ if (ether_addr_equal(eth_hdr(skb)->h_source, geneve->dev->dev_addr)) { - geneve->dev->stats.rx_errors++; + DEV_STATS_INC(geneve->dev, rx_errors); goto drop; } } else { @@ -296,8 +296,8 @@ static void geneve_rx(struct geneve_dev *geneve, struct geneve_sock *gs, #endif } if (err > 1) { - ++geneve->dev->stats.rx_frame_errors; - ++geneve->dev->stats.rx_errors; + DEV_STATS_INC(geneve->dev, rx_frame_errors); + DEV_STATS_INC(geneve->dev, rx_errors); goto drop; } } @@ -377,14 +377,14 @@ static int geneve_udp_encap_recv(struct sock *sk, struct sk_buff *skb) if (unlikely((!geneve->cfg.inner_proto_inherit && inner_proto != htons(ETH_P_TEB)))) { - geneve->dev->stats.rx_dropped++; + DEV_STATS_INC(geneve->dev, rx_dropped); goto drop; } opts_len = geneveh->opt_len * 4; if (iptunnel_pull_header(skb, GENEVE_BASE_HLEN + opts_len, inner_proto, !net_eq(geneve->net, dev_net(geneve->dev)))) { - geneve->dev->stats.rx_dropped++; + DEV_STATS_INC(geneve->dev, rx_dropped); goto drop; } @@ -1007,7 +1007,7 @@ static netdev_tx_t geneve_xmit(struct sk_buff *skb, struct net_device *dev) if (unlikely(!info || !(info->mode & IP_TUNNEL_INFO_TX))) { netdev_dbg(dev, "no tunnel metadata\n"); dev_kfree_skb(skb); - dev->stats.tx_dropped++; + DEV_STATS_INC(dev, tx_dropped); return NETDEV_TX_OK; } } else { @@ -1030,11 +1030,11 @@ static netdev_tx_t geneve_xmit(struct sk_buff *skb, struct net_device *dev) dev_kfree_skb(skb); if (err == -ELOOP) - dev->stats.collisions++; + DEV_STATS_INC(dev, collisions); else if (err == -ENETUNREACH) - dev->stats.tx_carrier_errors++; + DEV_STATS_INC(dev, tx_carrier_errors); - dev->stats.tx_errors++; + DEV_STATS_INC(dev, tx_errors); return NETDEV_TX_OK; } |