]> git.openfabrics.org - ~shefty/rdma-dev.git/commitdiff
rdma/ucm: Allow user to specify qp type when creating id
authorSean Hefty <sean.hefty@intel.com>
Tue, 14 Jun 2011 23:31:53 +0000 (16:31 -0700)
committerSean Hefty <sean.hefty@intel.com>
Mon, 22 Aug 2011 18:39:59 +0000 (11:39 -0700)
Allow the user to indicate the QP type separate from the
port space when allocating an rdma_cm_id.  With RDMA_PS_IB,
there is no longer a 1:1 relationship between the QP type and
port space, so we need to switch on the QP type to select
between UD and connected QPs.

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
drivers/infiniband/core/ucma.c
include/rdma/rdma_user_cm.h

index 71be5eebd683a52605096ecf7745ee0d93af758d..eb0a8e8a6943a2594c243a3d1ac94ac856d34951 100644 (file)
@@ -276,7 +276,7 @@ static int ucma_event_handler(struct rdma_cm_id *cm_id,
        ucma_set_event_context(ctx, event, uevent);
        uevent->resp.event = event->event;
        uevent->resp.status = event->status;
-       if (cm_id->ps == RDMA_PS_UDP || cm_id->ps == RDMA_PS_IPOIB)
+       if (cm_id->qp_type == IB_QPT_UD)
                ucma_copy_ud_event(&uevent->resp.param.ud, &event->param.ud);
        else
                ucma_copy_conn_event(&uevent->resp.param.conn,
@@ -377,6 +377,9 @@ static int ucma_get_qp_type(struct rdma_ucm_create_id *cmd, enum ib_qp_type *qp_
        case RDMA_PS_IPOIB:
                *qp_type = IB_QPT_UD;
                return 0;
+       case RDMA_PS_IB:
+               *qp_type = cmd->qp_type;
+               return 0;
        default:
                return -EINVAL;
        }
index fc82c1896f751a0e9f1c94c6761433f7ac7a8ad6..5348a000c8f31f4472c6802afea665c4938ad01d 100644 (file)
@@ -77,7 +77,8 @@ struct rdma_ucm_create_id {
        __u64 uid;
        __u64 response;
        __u16 ps;
-       __u8  reserved[6];
+       __u8  qp_type;
+       __u8  reserved[5];
 };
 
 struct rdma_ucm_create_id_resp {