[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <4A9FCEC5.80409@gmail.com>
Date: Thu, 03 Sep 2009 16:12:21 +0200
From: Eric Dumazet <eric.dumazet@...il.com>
To: Christoph Lameter <cl@...ux-foundation.org>
CC: David Miller <davem@...emloft.net>, sri@...ibm.com,
dlstevens@...ibm.com, netdev@...r.kernel.org,
niv@...ux.vnet.ibm.com, mtk.manpages@...il.com
Subject: Re: [PATCH net-next-2.6] ip: Report qdisc packet drops
Christoph Lameter a écrit :
> On Thu, 3 Sep 2009, Eric Dumazet wrote:
>> index 29ebb0d..ebaaa7f 100644
>> --- a/net/ipv4/udp.c
>> +++ b/net/ipv4/udp.c
>> @@ -561,12 +561,18 @@ static int udp_push_pending_frames(struct sock *sk)
>>
>> send:
>> err = ip_push_pending_frames(sk);
>> + if (err) {
>> + if (err == -ENOBUFS && !inet->recverr) {
>> + UDP_INC_STATS_USER(sock_net(sk),
>> + UDP_MIB_SNDBUFERRORS, is_udplite);
>
> This means that we now do not increment SNDBUFERRORS if IP_RECVERR is set.
>
> I think it would be better to move UDP_INC_STATS_USER before the if
> statement. That will also simplify the code further.
>
>
I believe you already said this once Christoph on a previous patch, and I
replied that in case of IP_RECVERR set, udp_push_pending_frames()
returns -ENOBUFS to its caller : udp_sendmsg()
And the caller takes care of :
out:
ip_rt_put(rt);
if (free)
kfree(ipc.opt);
if (!err)
return len;
/*
* ENOBUFS = no kernel mem, SOCK_NOSPACE = no sndbuf space. Reporting
* ENOBUFS might not be good (it's not tunable per se), but otherwise
* we don't have a good statistic (IpOutDiscards but it can be too many
* things). We could add another new stat but at least for now that
* seems like overkill.
*/
if (err == -ENOBUFS || test_bit(SOCK_NOSPACE, &sk->sk_socket->flags)) {
UDP_INC_STATS_USER(sock_net(sk),
UDP_MIB_SNDBUFERRORS, is_udplite);
}
return err;
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists