From cb75994ec311b2cd50e5205efdcc0696abd6675d Mon Sep 17 00:00:00 2001 From: Wang Chen Date: Mon, 3 Dec 2007 22:33:28 +1100 Subject: [UDP]: Defer InDataGrams increment until recvmsg() does checksum Thanks dave, herbert, gerrit, andi and other people for your discussion about this problem. UdpInDatagrams can be confusing because it counts packets that might be dropped later. Move UdpInDatagrams into recvmsg() as allowed by the RFC. Signed-off-by: Wang Chen Signed-off-by: Herbert Xu Signed-off-by: David S. Miller --- net/ipv6/udp.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'net/ipv6/udp.c') diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c index ee1cc3f8599..b0474a618bb 100644 --- a/net/ipv6/udp.c +++ b/net/ipv6/udp.c @@ -164,6 +164,8 @@ try_again: if (err) goto out_free; + UDP6_INC_STATS_USER(UDP_MIB_INDATAGRAMS, is_udplite); + sock_recv_timestamp(msg, sk, skb); /* Copy the address. */ @@ -292,7 +294,7 @@ int udpv6_queue_rcv_skb(struct sock * sk, struct sk_buff *skb) UDP6_INC_STATS_BH(UDP_MIB_RCVBUFERRORS, up->pcflag); goto drop; } - UDP6_INC_STATS_BH(UDP_MIB_INDATAGRAMS, up->pcflag); + return 0; drop: UDP6_INC_STATS_BH(UDP_MIB_INERRORS, up->pcflag); -- cgit v1.2.3