[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>
This commit is contained in:
committed by
David S. Miller
parent
6859d49475
commit
cb75994ec3
@@ -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);
|
||||
|
Reference in New Issue
Block a user