[openib-general] [RFC] CM reject handling and redirection
Sean Hefty
mshefty at ichips.intel.com
Wed Feb 16 17:25:06 PST 2005
I've started looking at the handling received rejects in the CM. Two
return codes of note:
* code 24 - Port and CM Redirection
* code 25 - Port Redirection
For the first case, it appears that the proper way to handle it is to
simply expose the rejection to the user. The user would need to issue
a second REQ using a new path record. Does this seem reasonable to
everyone?
For the second case, the issue becomes more complex. The CM is
instructed to send to the port associated with the original REQ, but
the connection is established to a separate port.
Currently, the CM sends to the port specified by the path record,
ib_cm_req_param::primary_path, that will be used by the connection. A
port redirection REJ message changes this behavior.
After the REJ message is given to the user, a subsequent call to send a
REQ will result in the CM sending the message to the new port. For the
CM to be able to send the REQ to the same port as the original REQ, it
would need to store yet more state information regarding previous
connection request attempts. Since it's possible that the user could
issue an unrelated REQ after receiving the REJ.
Should the CM try to maintain this state information, or should the API
be expanded to allow the user to specify where to send the CM messages,
or should we just ignore this reject code for now? The needed state
information would probably consist of: type of last message received,
last REJ reason, last DGID, service ID of last REQ. An expanded API
could let the CM destination be optional, with a default to send based
on the current path.
It's also not clear to me what effect this reject code has with respect
to port failover. Thoughts?
- Sean
More information about the general
mailing list