[ofa-general] Re: librdmacm code confusion wrt iWarp

Steve Wise swise at opengridcomputing.com
Tue Jun 26 08:53:43 PDT 2007


Sean Hefty wrote:
> Steve,
> 
> I'm looking at rdma_create_qp() in librdmacm.  There's a section of code in
> there:
> 
> if (id->ps == RDMA_PS_UDP)
> 	ret = ucma_init_ud_qp(id_priv, qp);
> else
> 	ret = ucma_init_ib_qp(id_priv, qp);
> 
> Both of these calls transition the QP to INIT, so that the user can post
> receives before trying to establish a connection.  iWarp is handled the same as
> IB, which confuses me, since it is treated differently in the kernel.  I'm
> assuming that the librdmacm works for you over iWarp, but I'd like to understand
> this better.
> 

The actual work for setting init-state qp attributes and moving the qp 
to INIT state is done in the kernel CMA modules.  Thus librdmacm doesn't 
need to do anything specific for iwarp in user mode.  It calls into the 
kernel and the ucma module ends up calling the kernel 
rdma_init_qp_attr() which does the switch on the transport type.

The design goal when Tom added iwarp into librdmacm was minimal impact 
to the existing code.  So there is very little code in librdmacm that 
switches on the transport type...

Steve.



More information about the general mailing list