Re: net-sched: When TX over-limit happens on netdev, what does kernel do?

Liu ping fan <[email protected]> Mon, 2 Apr 2012 19:08:35 +0800
Newsgroups gmane.linux.kernel,gmane.linux.network.general
Message-ID <CAFgQCTvYmf=mVi9TceYQ8gDu_X5SM5-kexR8GwY-mHP2UBLY_g@mail.gmail.com>
On Sun, Apr 1, 2012 at 4:44 PM, Eric Dumazet <[email protected]> w=
rote:
> On Sun, 2012-04-01 at 16:27 +0800, Liu ping fan wrote:
>> Hi,
>>
>> Could anybody tell me when TX over-limit happens on netdev, what doe=
s kernel do?
>> Is skb buffered in Qdisc->q and the sending process keeps running?
>
> Are you referring to the NETDEV_TX_BUSY return code processing ?
>
Yes.
>> Or we block the sending process and make it scheduled?
>>
>
> We never block the sender process in qdisc layer.
>
=46or qdisc layer in softirq?

> Only upper protocol layers can eventually block if too many packets a=
re
> in flight on the socket.
>
>> Found some code in net/sched/sch_cbq.c
>> cbq_dequeue(struct Qdisc *sch) --> qdisc_watchdog_schedule(), =C2=A0=
so I
>> guess the skb is buffered in Qdisc, but what about sending process?
>
> sender queued its packet and doesnt care if the packet is sent or not=
=2E
>
> Only problem is when qdisc limit (number of packets in queue) is hit,
> then we can return an error to sender (packet dropped or congestion
> notification)
>
Got it, thanks.

Regards,
pingfan
>
>