From 45b8c8f9255c56a525e4acdc4de339f35680a863 Mon Sep 17 00:00:00 2001 From: Sean Hefty Date: Tue, 7 Jun 2011 14:10:08 -0700 Subject: [PATCH] librdmacm: Add support for XRC qp types Support XRC send/receive qp types. Signed-off-by: Sean Hefty --- src/addrinfo.c | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/src/addrinfo.c b/src/addrinfo.c index 428baf6a..695430b0 100755 --- a/src/addrinfo.c +++ b/src/addrinfo.c @@ -45,6 +45,14 @@ #include #include +#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) { -- 2.41.0