]> git.openfabrics.org - ~shefty/librdmacm.git/commitdiff
librdmacm: Add support for XRC qp types
authorSean Hefty <sean.hefty@intel.com>
Tue, 7 Jun 2011 21:10:08 +0000 (14:10 -0700)
committerSean Hefty <sean.hefty@intel.com>
Mon, 22 Aug 2011 21:00:51 +0000 (14:00 -0700)
Support XRC send/receive qp types.

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
src/addrinfo.c

index 428baf6ac3fa2b62440e659614994d7d4e6a3bc1..695430b0d5621cee724957fc1ae5a92980c30344 100755 (executable)
 #include <rdma/rdma_cma.h>
 #include <infiniband/ib.h>
 
+#ifdef IBV_XRC_OPS
+#define RDMA_QPT_XRC_SEND IBV_QPT_XRC_SEND
+#define RDMA_QPT_XRC_RECV IBV_QPT_XRC_RECV
+#else
+#define RDMA_QPT_XRC_SEND 9
+#define RDMA_QPT_XRC_RECV 10
+#endif
+
 static void ucma_convert_to_ai(struct addrinfo *ai, struct rdma_addrinfo *rai)
 {
        memset(ai, 0, sizeof *ai);
@@ -54,6 +62,9 @@ static void ucma_convert_to_ai(struct addrinfo *ai, struct rdma_addrinfo *rai)
 
        switch (rai->ai_qp_type) {
        case IBV_QPT_RC:
+       case IBV_QPT_UC:
+       case RDMA_QPT_XRC_SEND:
+       case RDMA_QPT_XRC_RECV:
                ai->ai_socktype = SOCK_STREAM;
                break;
        case IBV_QPT_UD:
@@ -96,13 +107,17 @@ static int ucma_convert_to_rai(struct rdma_addrinfo *rai,
 
        rai->ai_family = ai->ai_family;
 
-       switch (ai->ai_socktype) {
-       case SOCK_STREAM:
-               rai->ai_qp_type = IBV_QPT_RC;
-               break;
-       case SOCK_DGRAM:
-               rai->ai_qp_type = IBV_QPT_UD;
-               break;
+       if (hints && hints->ai_qp_type) {
+               rai->ai_qp_type = hints->ai_qp_type;
+       } else {
+               switch (ai->ai_socktype) {
+               case SOCK_STREAM:
+                       rai->ai_qp_type = IBV_QPT_RC;
+                       break;
+               case SOCK_DGRAM:
+                       rai->ai_qp_type = IBV_QPT_UD;
+                       break;
+               }
        }
 
        if (hints && hints->ai_port_space) {