[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <D5C1322C3E673F459512FB59E0DDC32902D424F4@orsmsx414.amr.corp.intel.com>
Date: Fri, 11 May 2007 11:13:06 -0700
From: "Waskiewicz Jr, Peter P" <peter.p.waskiewicz.jr@...el.com>
To: <hadi@...erus.ca>
Cc: "Herbert Xu" <herbert@...dor.apana.org.au>,
"David Miller" <davem@...emloft.net>, <netdev@...r.kernel.org>
Subject: RE: [RFC] make qdisc_restart more readable
> 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 majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists