aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv4/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/ipv4/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/ipv4/udp.c')
-rw-r--r--net/ipv4/udp.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c
index 03c400ca14c5..3465d4ad301b 100644
--- a/net/ipv4/udp.c
+++ b/net/ipv4/udp.c
@@ -873,6 +873,8 @@ try_again:
873 if (err) 873 if (err)
874 goto out_free; 874 goto out_free;
875 875
876 UDP_INC_STATS_USER(UDP_MIB_INDATAGRAMS, is_udplite);
877
876 sock_recv_timestamp(msg, sk, skb); 878 sock_recv_timestamp(msg, sk, skb);
877 879
878 /* Copy the address. */ 880 /* Copy the address. */
@@ -966,10 +968,8 @@ int udp_queue_rcv_skb(struct sock * sk, struct sk_buff *skb)
966 int ret; 968 int ret;
967 969
968 ret = (*up->encap_rcv)(sk, skb); 970 ret = (*up->encap_rcv)(sk, skb);
969 if (ret <= 0) { 971 if (ret <= 0)
970 UDP_INC_STATS_BH(UDP_MIB_INDATAGRAMS, up->pcflag);
971 return -ret; 972 return -ret;
972 }
973 } 973 }
974 974
975 /* FALLTHROUGH -- it's a UDP Packet */ 975 /* FALLTHROUGH -- it's a UDP Packet */
@@ -1023,7 +1023,6 @@ int udp_queue_rcv_skb(struct sock * sk, struct sk_buff *skb)
1023 goto drop; 1023 goto drop;
1024 } 1024 }
1025 1025
1026 UDP_INC_STATS_BH(UDP_MIB_INDATAGRAMS, up->pcflag);
1027 return 0; 1026 return 0;
1028 1027
1029drop: 1028drop: