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. _______________________________________________ ofw mailing list [email protected] http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ofw
