]> git.openfabrics.org - ~shefty/librdmacm.git/commitdiff
r9696: Add support for iwarp to librdmacm.
authorSteve Wise <swise@opengidcomputing.com>
Tue, 3 Oct 2006 21:35:30 +0000 (21:35 +0000)
committerSean Hefty <sean.hefty@intel.com>
Tue, 3 Oct 2006 21:35:30 +0000 (21:35 +0000)
Signed-off-by: Steve Wise <swise@opengidcomputing.com>
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
src/cma.c

index ef15636e6f4d7a0f2e5f1f68265164d91e3bd9ae..3ccfcb8e3f210f58896234307df9c7e59e4a49ca 100644 (file)
--- 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;