> On Fri, 2007-11-05 at 08:56 -0700, Waskiewicz Jr, Peter P wrote:
> 
> > In qdisc_restart(), you removed any check for if
> > (!netif_queue_stopped(dev)) before calling 
> dev_hard_start_xmit().  If 
> > the underlying queue is stopped and you send the skb, 
> you'll generate 
> > a requeue.  Is there a reason it was removed?
> > 
> 
> No - its a bug ;->
> Thanks for staring at this Peter. I will fix it.
> 
> cheers,
> jamal

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()).  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.

Just $0.02 on Friday.

Thx,

-PJ Waskiewicz
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to