Subject: Re: [UPDATED] [NET-NEXT PATCH 1/2] pkt_sched: Add multiqueue scheduler support

From: Jarek Poplawski <[email-masked]>
Date: Tue, 2 Sep 2008 22:09:53 +0200

On Tue, Sep 02, 2008 at 10:18:36AM -0700, Duyck, Alexander H wrote:
> Jarek Poplawski wrote:
> > On Tue, Sep 02, 2008 at 05:54:11AM +0000, Jarek Poplawski wrote:
> > ...
> >> OK, but I wonder if it's not enough to treat this as a
> >> recommendation? Actually, since dequeuing is under the common lock
> >> here, the main difference seems to be this checking for
> >> subqueue_stopped could happen a bit earlier,
> >
> > Hmm.., actually a bit later... Then this should be a bit more exact?!
> > Anyway, still looks safe to me.
> >
> > Jarek P.
> 
> Let me give an example of how this can go wrong.  Lets say we use multiq as a leaf for each band in prio and two different bands have a packet for hw queue 1.  If prio band 0 tries to pull and the leaf finds that queue 1 is stopped then dequeue returns null.  A tx interrupt fires and the driver then wakes queue 1 since space is available.  Then prio pull from band 1 and enqueues the packet on hw queue 1.  The end result is the lower priority packet slipping in before the higher priority packet in the hardware queue.
> 
> The advantage to making this qdisc root is that you then have exactly one qdisc band per hardware queue.  You can then place whatever qdiscs you want on each of the bands and the behavior will be consistent per queue.
> 

Right. But since this doesn't cause this additional blocking I'm not
sure there is a reason to forbid this. IMHO documenting this could be
enough, and letting to do this could be useful even for testing. But,
of course, you are the author, so I don't persist with this.

Thanks,
Jarek P.