]> git.openfabrics.org - ~shefty/rdma-dev.git/commitdiff
rdma/ucm: add support for RDMA_PS_IB when creating an ID
authorSean Hefty <sean.hefty@intel.com>
Wed, 31 Mar 2010 00:22:33 +0000 (16:22 -0800)
committerSean Hefty <sean.hefty@intel.com>
Wed, 31 Mar 2010 00:22:33 +0000 (16:22 -0800)
In order to support RDMA_PS_IB, we need to know the qp type
to associated with the rdma cm id.  Receive the qp type from
user space using currently reserved fields.  Previous kernels
do not support RDMA_PS_IB, so we only read out the qp type
data if PS_IB has been selected.  This avoids issues reading
uninitialized data from existing applications.

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

index 9feb18b97d13cc7d9a01b069bfdb9cfe34fcb3de..7a59039db7798e0231859d8b786bf18a1fcdf0b4 100644 (file)
@@ -359,6 +359,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 1d165022c02d55880b16b42111ba590983141bab..d88c23c7c8bcde3fae5c6c6a64d81ad4f1c1a2b7 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 {