> I have a fairly complex system that I've built over the last few years > as part of my PhD that uses reliable connections for message-passing > and RDMA. After reading a recent paper, I decided to compare the > performance of message-passing over unreliable connections for the > sake of completeness, but unfortunately, I've repeatedly run into > obstacles trying to switch to using the UC mode. I even wrote a tiny > client and server that simply opens a connection, sends a message, and > sends a response, and when I switch from RC to UC, the rdma_accept() > at the server always fails with EINVAL when trying to accept the > client's rdma_connect(). I'm afraid documentation, source code, and > experimentation have left me stymied. I have tried using RDMA_PS_IB > and RDMA_PS_UDP instead of RDMA_PS_TCP in rdma_create_id() to no > avail, I've experimented with qp_attr fields, and my MWE shows the > same problems as the larger system. Any assistance woudl be greatly > appreciated, and I'd be happy to provide more details about my setup > of the event channel, queue pair, buffers, and so on if necessary.
I believe you can get UC support by using the calls rdma_getaddrinfo and rdma_create_ep, which allows you to specify the qp_type as IBV_QPT_UC. For the port space, you will need RDMA_PS_IB. The TCP and UDP port spaces map to QP types RC and UD, respectively.
