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 > >