[ofw] REJ after REQ received CM race

Sean Hefty sean.hefty at intel.com
Wed Jan 6 10:43:08 PST 2010


Looking at the IB CM code, it looks like there's a race handling receiving a REJ
after having received a REQ.

After receiving a req, the mad is queued with the listening cep and the user is
notified.  However, if a rej for the new cep is immediately received, then the
rej is queued with the new cep.  The result is that the rej message can be
reported to the user before or simultaneously to being notified of the req.

I didn't trace through all of the code above this, but I doubt that users can
handle this condition.  The code in al_cm.c and winverbs would not be able to at
least.

The simplest thing to do in this case is just to discard the REJ.  (Eventually,
the passive side will try to send a REP, which would then be rejected or
otherwise fail.)  It's probably only slightly more difficult to transition the
new cep to idle, which would result in the passive side receiving an error on
any CM call.

I believe that the only mad that needs to be handled in the REQ received state
is a REJ, so there shouldn't be issues with other mads.




More information about the ofw mailing list