[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