From 51d4968942ca325cd64208f2e5c52f65648f846a Mon Sep 17 00:00:00 2001 From: Steve Wise Date: Tue, 3 Oct 2006 21:35:30 +0000 Subject: [PATCH] r9696: Add support for iwarp to librdmacm. Signed-off-by: Steve Wise Signed-off-by: Sean Hefty --- src/cma.c | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/cma.c b/src/cma.c index ef15636e..3ccfcb8e 100644 --- a/src/cma.c +++ b/src/cma.c @@ -643,6 +643,17 @@ static int ucma_modify_qp_rts(struct rdma_cm_id *id) return ibv_modify_qp(id->qp, &qp_attr, qp_attr_mask); } +static int ucma_modify_qp_sqd(struct rdma_cm_id *id) +{ + struct ibv_qp_attr qp_attr; + + if (!id->qp) + return 0; + + qp_attr.qp_state = IBV_QPS_SQD; + return ibv_modify_qp(id->qp, &qp_attr, IBV_QP_STATE); +} + static int ucma_modify_qp_err(struct rdma_cm_id *id) { struct ibv_qp_attr qp_attr; @@ -890,7 +901,16 @@ int rdma_disconnect(struct rdma_cm_id *id) void *msg; int ret, size; - ret = ucma_modify_qp_err(id); + switch (id->verbs->device->transport_type) { + case IBV_TRANSPORT_IB: + ret = ucma_modify_qp_err(id); + break; + case IBV_TRANSPORT_IWARP: + ret = ucma_modify_qp_sqd(id); + break; + default: + ret = -EINVAL; + } if (ret) return ret; -- 2.46.0