> It seems the new API has too many constraints for XRC. There are a couple
> things that don't fit:
> 
> - XRC needs a domain, which must be created before creating the QP, but
> after we know
>   the device to use. In addition it also needs a file descriptor. The
> application may
>   want to use a different fd depending on the device. Currently the domain
> can only
>   be created in the middle of rdma_create_ep().

This looks like a gap in the APIs.  There's no easy way to associate the data 
returned by rdma_addrinfo to a specific ibv_device.  Part of the issue is that 
rdma_addrinfo may not have an ai_src_addr.  gurgle...

I agree with Jason that we can still change the newer calls.  In this case, the 
problem isn't limited to XRC.  The user will have issues just trying to specify 
the CQs that should be associated with the QP.  Maybe the 'fix' here is to 
remove rdma_create_qp() from rdma_create_ep() -- which basically replaces that 
API with rdma_create_id2(**id, *res).

> - The server side of the connection also needs an SRQ. It's not obvious
> whether it's
>   the application or rdma cm to create that SRQ. And that SRQ number must
> be
>   given to the client side, presumably in the private data.

The desired mapping of XRC to the librdmacm isn't clear to me.  For example, 
after 'connecting' is two-way communication possible (setting up INI/TGT pairs 
on both nodes), or is a connection only one-way (setup local INI to remote 
TGT)?  Also, as you point out, how are SRQ values exchanged?  Does private data 
carry one SRQ value, all SRQ values for remote processes, none?

- Sean
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to