This commit adds SNMP drop count increment for the packets in per NUMA queues which were introduced in commit b650bf0977d3 ("udp: remove busylock and add per NUMA queues"). note that SNMP counters are incremented currently by the caller for skb. And that these skbs on the intermediate queue cannot be counted there so need similar logic in their error path. Signed-off-by: Mahdi Faramarzpour --- v6: - increasing a single counter based on socket family v5: https://lore.kernel.org/netdev/20260122185357.50922-1-mahdifrmx@gmail.com/ - check if drop counts are non-zero before increasing countrers v4: https://lore.kernel.org/netdev/20260108102950.49417-1-mahdifrmx@gmail.com/ - move all changes to unlikely(to_drop) branch v3: https://lore.kernel.org/netdev/20260105114732.140719-1-mahdifrmx@gmail.com/ - remove the unreachable UDP_MIB_RCVBUFERRORS code v2: https://lore.kernel.org/netdev/20260105071218.10785-1-mahdifrmx@gmail.com/ - change ENOMEM to ENOBUFS v1: https://lore.kernel.org/netdev/20260104105732.427691-1-mahdifrmx@gmail.com/ --- net/ipv4/udp.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c index ffe074cb5..dd302f5fb 100644 --- a/net/ipv4/udp.c +++ b/net/ipv4/udp.c @@ -1797,10 +1797,13 @@ int __udp_enqueue_schedule_skb(struct sock *sk, struct sk_buff *skb) skb = to_drop; to_drop = skb->next; skb_mark_not_on_list(skb); - /* TODO: update SNMP values. */ sk_skb_reason_drop(sk, skb, SKB_DROP_REASON_PROTO_MEM); } numa_drop_add(&udp_sk(sk)->drop_counters, nb); + SNMP_ADD_STATS(__UDPX_MIB(sk, (sk->sk_family == PF_INET)), + UDP_MIB_MEMERRORS, nb); + SNMP_ADD_STATS(__UDPX_MIB(sk, (sk->sk_family == PF_INET)), + UDP_MIB_INERRORS, nb); } atomic_sub(total_size, &udp_prod_queue->rmem_alloc); -- 2.34.1