> 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