Re: [PATCH net-next] net: udp: introduce UDP_MIB_MEMERRORS for udp_mem

From: Jakub Kicinski
Date: Thu Nov 05 2020 - 17:16:09 EST


On Thu, 5 Nov 2020 02:16:11 -0500 menglong8.dong@xxxxxxxxx wrote:
> From: Menglong Dong <dong.menglong@xxxxxxxxxx>
>
> When udp_memory_allocated is at the limit, __udp_enqueue_schedule_skb
> will return a -ENOBUFS, and skb will be dropped in __udp_queue_rcv_skb
> without any counters being done. It's hard to find out what happened
> once this happen.
>
> So we introduce a UDP_MIB_MEMERRORS to do this job. Well, this change
> looks friendly to the existing users, such as netstat:
>
> $ netstat -u -s
> Udp:
> 0 packets received
> 639 packets to unknown port received.
> 158689 packet receive errors
> 180022 packets sent
> RcvbufErrors: 20930
> MemErrors: 137759
> UdpLite:
> IpExt:
> InOctets: 257426235
> OutOctets: 257460598
> InNoECTPkts: 181177
>
> Signed-off-by: Menglong Dong <dong.menglong@xxxxxxxxxx>

Please CC Paolo since he have you feedback on v1 and Willem de Bruijn
<willemb@xxxxxxxxxx>.

> diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c
> index 09f0a23d1a01..aa1bd53dd9f9 100644
> --- a/net/ipv4/udp.c
> +++ b/net/ipv4/udp.c
> @@ -2038,6 +2038,9 @@ static int __udp_queue_rcv_skb(struct sock *sk, struct sk_buff *skb)
> if (rc == -ENOMEM)
> UDP_INC_STATS(sock_net(sk), UDP_MIB_RCVBUFERRORS,
> is_udplite);
> + else
> + UDP_INC_STATS(sock_net(sk), UDP_MIB_MEMERRORS,
> + is_udplite);

The alignment of the line above is off, just ignore it and align the
new code correctly so that checkpatch does not complain.