Subject: Re: [PATCH v2] pkt_sched: sch_drr: Fix drr_dequeue() loop

From: Patrick McHardy <[email-masked]>
Date: Mon, 24 Nov 2008 13:38:48 +0100

Jarek Poplawski wrote:
> On Mon, Nov 24, 2008 at 01:15:07PM +0100, Patrick McHardy wrote:
>> Jarek Poplawski wrote:
>>> (Changelog fixed only)
>>>
>>> pkt_sched: sch_drr: Fix drr_dequeue() loop
>>>
>>> If all child qdiscs of sch_drr are non-work-conserving (e.g. sch_tbf)
>>> drr_dequeue() will busy-loop waiting for skbs instead of leaving the
>>> job for a watchdog. Checking for list_empty() in each loop isn't
>>> necessary either, because this can never be true except the first time.
>> Thanks for the report. I don't like to overcomplicate treatment
>> of this broken configuration though, so this patch simply returns
>> NULL when the inner qdiscs is non-work-conserving.
> 
> Hmm... I don't agree with treating this as broken (IIRC Denys
> Fedoryshchenko wrote about some case when he prefers TBF over HTB,
> and with DRR this could be an interesting alternative), but of course
> you are the author and I respect your decision.

TBF with an inner DRR is fine. The other way around is broken
in the sense that the behaviour is undefined.