Skip to content

Commit 1305dad

Browse files
author
Guillaume Nault
committed
bareudp: Fix device stats updates.
JIRA: https://issues.redhat.com/browse/RHEL-59593 Upstream Status: linux.git commit 4963d23 Author: Guillaume Nault <gnault@redhat.com> Date: Fri Aug 30 17:31:07 2024 +0200 bareudp: Fix device stats updates. Bareudp devices update their stats concurrently. Therefore they need proper atomic increments. Fixes: 571912c ("net: UDP tunnel encapsulation module for tunnelling different protocols like MPLS, IP, NSH etc.") Signed-off-by: Guillaume Nault <gnault@redhat.com> Reviewed-by: Willem de Bruijn <willemb@google.com> Link: https://patch.msgid.link/04b7b9d0b480158eb3ab4366ec80aa2ab7e41fcb.1725031794.git.gnault@redhat.com Signed-off-by: Jakub Kicinski <kuba@kernel.org> Signed-off-by: Guillaume Nault <gnault@redhat.com>
1 parent f747a99 commit 1305dad

File tree

1 file changed

+11
-11
lines changed

1 file changed

+11
-11
lines changed

drivers/net/bareudp.c

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ static int bareudp_udp_encap_recv(struct sock *sk, struct sk_buff *skb)
8383

8484
if (skb_copy_bits(skb, BAREUDP_BASE_HLEN, &ipversion,
8585
sizeof(ipversion))) {
86-
bareudp->dev->stats.rx_dropped++;
86+
DEV_STATS_INC(bareudp->dev, rx_dropped);
8787
goto drop;
8888
}
8989
ipversion >>= 4;
@@ -93,7 +93,7 @@ static int bareudp_udp_encap_recv(struct sock *sk, struct sk_buff *skb)
9393
} else if (ipversion == 6 && bareudp->multi_proto_mode) {
9494
proto = htons(ETH_P_IPV6);
9595
} else {
96-
bareudp->dev->stats.rx_dropped++;
96+
DEV_STATS_INC(bareudp->dev, rx_dropped);
9797
goto drop;
9898
}
9999
} else if (bareudp->ethertype == htons(ETH_P_MPLS_UC)) {
@@ -107,7 +107,7 @@ static int bareudp_udp_encap_recv(struct sock *sk, struct sk_buff *skb)
107107
ipv4_is_multicast(tunnel_hdr->daddr)) {
108108
proto = htons(ETH_P_MPLS_MC);
109109
} else {
110-
bareudp->dev->stats.rx_dropped++;
110+
DEV_STATS_INC(bareudp->dev, rx_dropped);
111111
goto drop;
112112
}
113113
} else {
@@ -123,7 +123,7 @@ static int bareudp_udp_encap_recv(struct sock *sk, struct sk_buff *skb)
123123
(addr_type & IPV6_ADDR_MULTICAST)) {
124124
proto = htons(ETH_P_MPLS_MC);
125125
} else {
126-
bareudp->dev->stats.rx_dropped++;
126+
DEV_STATS_INC(bareudp->dev, rx_dropped);
127127
goto drop;
128128
}
129129
}
@@ -135,15 +135,15 @@ static int bareudp_udp_encap_recv(struct sock *sk, struct sk_buff *skb)
135135
proto,
136136
!net_eq(bareudp->net,
137137
dev_net(bareudp->dev)))) {
138-
bareudp->dev->stats.rx_dropped++;
138+
DEV_STATS_INC(bareudp->dev, rx_dropped);
139139
goto drop;
140140
}
141141

142142
__set_bit(IP_TUNNEL_KEY_BIT, key);
143143

144144
tun_dst = udp_tun_rx_dst(skb, family, key, 0, 0);
145145
if (!tun_dst) {
146-
bareudp->dev->stats.rx_dropped++;
146+
DEV_STATS_INC(bareudp->dev, rx_dropped);
147147
goto drop;
148148
}
149149
skb_dst_set(skb, &tun_dst->dst);
@@ -169,8 +169,8 @@ static int bareudp_udp_encap_recv(struct sock *sk, struct sk_buff *skb)
169169
&((struct ipv6hdr *)oiph)->saddr);
170170
}
171171
if (err > 1) {
172-
++bareudp->dev->stats.rx_frame_errors;
173-
++bareudp->dev->stats.rx_errors;
172+
DEV_STATS_INC(bareudp->dev, rx_frame_errors);
173+
DEV_STATS_INC(bareudp->dev, rx_errors);
174174
goto drop;
175175
}
176176
}
@@ -473,11 +473,11 @@ static netdev_tx_t bareudp_xmit(struct sk_buff *skb, struct net_device *dev)
473473
dev_kfree_skb(skb);
474474

475475
if (err == -ELOOP)
476-
dev->stats.collisions++;
476+
DEV_STATS_INC(dev, collisions);
477477
else if (err == -ENETUNREACH)
478-
dev->stats.tx_carrier_errors++;
478+
DEV_STATS_INC(dev, tx_carrier_errors);
479479

480-
dev->stats.tx_errors++;
480+
DEV_STATS_INC(dev, tx_errors);
481481
return NETDEV_TX_OK;
482482
}
483483

0 commit comments

Comments
 (0)