aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv6/udp.c
diff options
context:
space:
mode:
authorWang Chen <wangchen@cn.fujitsu.com>2007-12-03 06:33:28 -0500
committerDavid S. Miller <davem@davemloft.net>2008-01-28 17:55:47 -0500
commitcb75994ec311b2cd50e5205efdcc0696abd6675d (patch)
treeeb0fbb65bfe1b896a55ce8b987d6f4f3f4357e98 /net/ipv6/udp.c
parent6859d49475d4f32abe640372117e4b687906e6b6 (diff)
[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 <wangchen@cn.fujitsu.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv6/udp.c')
-rw-r--r--net/ipv6/udp.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c
index ee1cc3f8599f..b0474a618bbe 100644
--- a/net/ipv6/udp.c
+++ b/net/ipv6/udp.c
@@ -164,6 +164,8 @@ try_again:
164 if (err) 164 if (err)
165 goto out_free; 165 goto out_free;
166 166
167 UDP6_INC_STATS_USER(UDP_MIB_INDATAGRAMS, is_udplite);
168
167 sock_recv_timestamp(msg, sk, skb); 169 sock_recv_timestamp(msg, sk, skb);
168 170
169 /* Copy the address. */ 171 /* Copy the address. */
@@ -292,7 +294,7 @@ int udpv6_queue_rcv_skb(struct sock * sk, struct sk_buff *skb)
292 UDP6_INC_STATS_BH(UDP_MIB_RCVBUFERRORS, up->pcflag); 294 UDP6_INC_STATS_BH(UDP_MIB_RCVBUFERRORS, up->pcflag);
293 goto drop; 295 goto drop;
294 } 296 }
295 UDP6_INC_STATS_BH(UDP_MIB_INDATAGRAMS, up->pcflag); 297
296 return 0; 298 return 0;
297drop: 299drop:
298 UDP6_INC_STATS_BH(UDP_MIB_INERRORS, up->pcflag); 300 UDP6_INC_STATS_BH(UDP_MIB_INERRORS, up->pcflag);