diff --git a/Documentation/networking/udplite.txt b/Documentation/networking/udplite.txt index b6409cab075ca53aa3a5f4a6276403e0a0463c89..3870f280280b34e6f81cce2229b896357091f7c6 100644 --- a/Documentation/networking/udplite.txt +++ b/Documentation/networking/udplite.txt @@ -236,7 +236,7 @@ This displays UDP-Lite statistics variables, whose meaning is as follows. - InDatagrams: Total number of received datagrams. + InDatagrams: The total number of datagrams delivered to users. NoPorts: Number of packets received to an unknown port. These cases are counted separately (not as InErrors). diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c index 03c400ca14c5af07db1ab22686d95621b5cc8813..3465d4ad301be911a023e68521229e35705c1279 100644 --- a/net/ipv4/udp.c +++ b/net/ipv4/udp.c @@ -873,6 +873,8 @@ int udp_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg, if (err) goto out_free; + UDP_INC_STATS_USER(UDP_MIB_INDATAGRAMS, is_udplite); + sock_recv_timestamp(msg, sk, skb); /* Copy the address. */ @@ -966,10 +968,8 @@ int udp_queue_rcv_skb(struct sock * sk, struct sk_buff *skb) int ret; ret = (*up->encap_rcv)(sk, skb); - if (ret <= 0) { - UDP_INC_STATS_BH(UDP_MIB_INDATAGRAMS, up->pcflag); + if (ret <= 0) return -ret; - } } /* FALLTHROUGH -- it's a UDP Packet */ @@ -1023,7 +1023,6 @@ int udp_queue_rcv_skb(struct sock * sk, struct sk_buff *skb) goto drop; } - UDP_INC_STATS_BH(UDP_MIB_INDATAGRAMS, up->pcflag); return 0; drop: diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c index ee1cc3f8599fd110bca8e77e38e2e9f50b607402..b0474a618bbe6afd8024d19e3c5bf68d7b8ca6fe 100644 --- a/net/ipv6/udp.c +++ b/net/ipv6/udp.c @@ -164,6 +164,8 @@ int udpv6_recvmsg(struct kiocb *iocb, struct sock *sk, 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);