Subject: Re: [PATCH] pkt_sched: sch_netem: Limit packet re-ordering functionality to tfifo qdisc.

From: Patrick McHardy <[email-masked]>
Date: Wed, 22 Oct 2008 18:00:06 +0200

[Damn hotkeys for sending incomplete mails :)]

David Miller wrote:
> From: Jarek Poplawski <[email-masked]>
> Date: Fri, 17 Oct 2008 22:12:10 +0200
> 
>> pkt_sched: sch_netem: Limit packet re-ordering functionality to tfifo qdisc.
>>
>> After introducing qdisc->ops->peek() method the only remaining user of
>> qdisc->ops->requeue() is netem_enqueue() using this for packet
>> re-ordering. According to Patrick McHardy: "a lot of the functionality
>> of netem requires the inner tfifo anyways and rate-limiting is usually
>> done on top of netem. So I would suggest so either hard-wire the tfifo
>> qdisc or at least make the assumption that inner qdiscs are work-
>> conserving." This patch tries the former.
>>
>> Signed-off-by: Jarek Poplawski <[email-masked]>
> 
> This is an interesting patch.
> 
> But the thing that strikes me is this: Why don't we just let sch_netem do
> the reordering inside of itself entirely and just get rid of all of this
> ->requeue() business?

I fully agree, keeping all the ->requeue crap around just for this
cornercase doesn't seem like a good decision. Most of the ->requeue
functions are completely inconsistent in their behaviour anyways:
some undo ->enqueue state changes (which is obviously broken for
netem), some don't, some redo checks from ->enqueue (necessary for
netem), some don't (TBF), ...