[ofa-general] ib_cm question

Terry Greeniaus tgree at relay.phys.ualberta.ca
Fri Sep 5 12:38:17 PDT 2008


Hello all,

We are porting out application to run on the OFED stack.  As part of the
porting process, I have a series of CM unit tests that I need to get to
run.  I am having trouble with one in particular.

At a high level, the unit test implements a simple protocol for 
establishing a connection between a client and a server to test basic CM 
functionality.  The protocol uses the private data field of the CM 
packets to exchange a key that is generated randomly by the server on a 
per-connection basis.  Essentially, the client sends a REQ with a 
randomly chosen key which will not match the server's.  When the server 
initially receives a REQ for a particular connection, it generates a 
random key and compares it against the key stored in the REQ.  Since 
they don't match, the server sends a REJ back to the client, and the REJ 
contains the correct key in the private data field.  Finally, the client 
resends the REQ, this time with the correct key:

Client			Server
REQ ------------------->
w/ bad key

    <------------------- REJ
                     w/ good key

REQ ------------------->
w/ good key

                         REP/etc.

Everything works well until the second REQ is received at the server.  
It appears that instead of reusing the previous ib_cm_id, the OFED CM
generates a new ib_cm_id to handle the second REQ.  The unit test thinks
that a new connection attempt is being requested instead of a retry of
the original attempt and so it generates a new random key, resulting in
the protocol being unable to establish a connection.

Is something like I have described above supported by the OFED CM?  I 
can try and distill this down to a fairly short code example if that 
would make things clearer.

Thanks,
TG



More information about the general mailing list