Subject: RE: [RFC] make qdisc_restart more readable

From: jamal <[email-masked]>
Date: Fri, 11 May 2007 14:35:59 -0400

On Fri, 2007-11-05 at 11:13 -0700, Waskiewicz Jr, Peter P wrote:

> After thinking about this a bit more: even if the queue is stopped,
> you'd end up requeueing anyways.  Plus, you'd need to re-acquire
> dev->queue_lock (which is what happens today).  I think the best way
> overall would be to check the queue state before you physically dequeue
> (whether it's in qdisc_restart() or in the qdisc's ->dequeue()).

For lockless drivers, I think it could be moved up; only thing is
nothing is stopping it from changing again at transmit time.
For drivers that are not lockless, i am wondering if its even useful
to have that check given we have already grabbed the tx lock.

>   That
> way you still hold dev->queue_lock in case the queue is stopped, and
> haven't yet pulled an skb causing a requeue event.

It certainly sounds like a useful optimization. Defer that thought - for
now i just want to make sure its doing what the previous code did.

I will repost the fixed patch later today after some testing; if you
have time i will appreciate some eyeballing. That piece of code is
hairy. Hopefully we can make it bald.

cheers,
jamal