[ofa-general] Re: [PATCH] IPoIB: Remove redundant check in xmit handler

Krishna Kumar2 krkumar2 at in.ibm.com
Mon Nov 19 21:52:19 PST 2007


I forgot to mention, maybe the RUNNING bit was added as part of this bug
fix,
which means no LLTX driver need to really check for this condition again in
their xmit handler. That might explain the problem you faced then.

thanks,

- KK

Krishna Kumar2/India/IBM wrote on 11/20/2007 10:57:31 AM:

> Hi Roland,
>
> Roland Dreier <rdreier at cisco.com> 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




More information about the general mailing list