Hi Roland, Roland Dreier <[EMAIL PROTECTED]> wrote on 11/20/2007 09:55:00 AM:
> > qdisc_run() first checks netif_queue_stopped(dev), and then if > > it can get the __LINK_STATE_QDISC_RUNNING bit, it calls > > __qdisc_run() which will do the actual xmit. Subsequent calls > > to xmit within __qdisc_run checks for netif_queue_stopped. > > > > So there is no way that xmit can be called with a stopped queue > > as the core does it for every skb. And no other cpu can execute > > this at the same time as the RUNNING bit is held. So this is a > > completely safe removal of check for every skb. > > Hmm, I don't see any changes that prevent the race I originally > described in http://oss.sgi.com/archives/netdev/2004-12/msg00474.html > Maybe your test may just not be able to hit the race, or am I missing > something? (Thanks for the link, I hadn't seen this earlier) That race will not happen as CPU#2 cannot call qdisc_restart when CPU#1 is holding the RUNNING bit. In this case, CPU#2 simply queue's the skb to dev->q and returns, while CPU#1 finds this new skb in it's iteration of __qdisc_run (and ends up processing all queue'd skb after checking for stopped queue). > Anyway medium-term I want to move IPoIB away from LLTX so this doesn't > matter that much. Are you planning for 2.6.25? Thanks, - KK _______________________________________________ general mailing list [email protected] http://lists.openfabrics.org/cgi-bin/mailman/listinfo/general To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general
