@@ -63,4 +63,5 @@ rdma_kernel_provider_abi(
rdma/nes-abi.h
rdma/qedr-abi.h
rdma/rdma_user_rxe.h
+ rdma/vmw_pvrdma-abi.h
)
@@ -239,15 +239,15 @@ struct ibv_cq *pvrdma_create_cq(struct ibv_context *context, int cqe,
cq->ring_state = cq->buf.buf;
- cmd.udata.buf_addr = (uintptr_t) cq->buf.buf;
- cmd.udata.buf_size = cq->buf.length;
+ cmd.buf_addr = (uintptr_t) cq->buf.buf;
+ cmd.buf_size = cq->buf.length;
ret = ibv_cmd_create_cq(context, cqe, channel, comp_vector,
&cq->ibv_cq, &cmd.ibv_cmd, sizeof(cmd),
&resp.ibv_resp, sizeof(resp));
if (ret)
goto err_buf;
- cq->cqn = resp.udata.cqn;
+ cq->cqn = resp.cqn;
cq->cqe_cnt = cq->ibv_cq.cqe;
return &cq->ibv_cq;
similarity index 74%
rename from providers/vmw_pvrdma/pvrdma-abi-fix.h
rename to providers/vmw_pvrdma/pvrdma-abi.h
@@ -48,40 +48,17 @@
#include <infiniband/kern-abi.h>
#include <rdma/vmw_pvrdma-abi.h>
+#include <kernel-abi/vmw_pvrdma-abi.h>
-struct user_pvrdma_alloc_ucontext_resp {
- struct ib_uverbs_get_context_resp ibv_resp;
- struct pvrdma_alloc_ucontext_resp udata;
-};
-
-struct user_pvrdma_alloc_pd_resp {
- struct ib_uverbs_alloc_pd_resp ibv_resp;
- struct pvrdma_alloc_pd_resp udata;
-};
-
-struct user_pvrdma_create_cq {
- struct ibv_create_cq ibv_cmd;
- struct pvrdma_create_cq udata;
-};
-
-struct user_pvrdma_create_cq_resp {
- struct ib_uverbs_create_cq_resp ibv_resp;
- struct pvrdma_create_cq_resp udata;
-};
-
-struct user_pvrdma_create_srq {
- struct ibv_create_srq ibv_cmd;
- struct pvrdma_create_srq udata;
-};
-
-struct user_pvrdma_create_srq_resp {
- struct ib_uverbs_create_srq_resp ibv_resp;
- struct pvrdma_create_srq_resp udata;
-};
-
-struct user_pvrdma_create_qp {
- struct ibv_create_qp ibv_cmd;
- struct pvrdma_create_qp udata;
-};
+DECLARE_DRV_CMD(user_pvrdma_alloc_pd, IB_USER_VERBS_CMD_ALLOC_PD,
+ empty, pvrdma_alloc_pd_resp);
+DECLARE_DRV_CMD(user_pvrdma_create_cq, IB_USER_VERBS_CMD_CREATE_CQ,
+ pvrdma_create_cq, pvrdma_create_cq_resp);
+DECLARE_DRV_CMD(user_pvrdma_create_qp, IB_USER_VERBS_CMD_CREATE_QP,
+ pvrdma_create_qp, empty);
+DECLARE_DRV_CMD(user_pvrdma_create_srq, IB_USER_VERBS_CMD_CREATE_SRQ,
+ pvrdma_create_srq, pvrdma_create_srq_resp);
+DECLARE_DRV_CMD(user_pvrdma_alloc_ucontext, IB_USER_VERBS_CMD_GET_CONTEXT,
+ empty, pvrdma_alloc_ucontext_resp);
#endif /* __PVRDMA_ABI_FIX_H__ */
@@ -58,7 +58,7 @@
#include <ccan/minmax.h>
#include <util/compiler.h>
-#include "pvrdma-abi-fix.h"
+#include "pvrdma-abi.h"
#include "pvrdma_ring.h"
#define PFX "pvrdma: "
@@ -116,7 +116,7 @@ static int pvrdma_init_context_shared(struct pvrdma_context *context,
&resp.ibv_resp, sizeof(resp)))
return errno;
- context->qp_tbl = calloc(resp.udata.qp_tab_size & 0xFFFF,
+ context->qp_tbl = calloc(resp.qp_tab_size & 0xFFFF,
sizeof(struct pvrdma_qp *));
if (!context->qp_tbl)
return -ENOMEM;
@@ -137,8 +137,8 @@ struct ibv_srq *pvrdma_create_srq(struct ibv_pd *pd,
pvrdma_init_srq_queue(srq);
memset(&cmd, 0, sizeof(cmd));
- cmd.udata.buf_addr = (uintptr_t) srq->buf.buf;
- cmd.udata.buf_size = srq->buf.length;
+ cmd.buf_addr = (uintptr_t) srq->buf.buf;
+ cmd.buf_size = srq->buf.length;
ret = ibv_cmd_create_srq(pd, &srq->ibv_srq, attr,
&cmd.ibv_cmd, sizeof(cmd),
@@ -147,7 +147,7 @@ struct ibv_srq *pvrdma_create_srq(struct ibv_pd *pd,
if (ret)
goto err_free;
- srq->srqn = resp.udata.srqn;
+ srq->srqn = resp.srqn;
return &srq->ibv_srq;
@@ -276,11 +276,11 @@ struct ibv_qp *pvrdma_create_qp(struct ibv_pd *pd,
pvrdma_init_qp_queue(qp);
memset(&cmd, 0, sizeof(cmd));
- cmd.udata.sbuf_addr = (uintptr_t)qp->sbuf.buf;
- cmd.udata.sbuf_size = qp->sbuf.length;
- cmd.udata.rbuf_addr = (uintptr_t)qp->rbuf.buf;
- cmd.udata.rbuf_size = qp->rbuf.length;
- cmd.udata.qp_addr = (uintptr_t) qp;
+ cmd.sbuf_addr = (uintptr_t)qp->sbuf.buf;
+ cmd.sbuf_size = qp->sbuf.length;
+ cmd.rbuf_addr = (uintptr_t)qp->rbuf.buf;
+ cmd.rbuf_size = qp->rbuf.length;
+ cmd.qp_addr = (uintptr_t) qp;
ret = ibv_cmd_create_qp(pd, &qp->ibv_qp, attr,
&cmd.ibv_cmd, sizeof(cmd),
@@ -93,7 +93,7 @@ struct ibv_pd *pvrdma_alloc_pd(struct ibv_context *context)
return NULL;
}
- pd->pdn = resp.udata.pdn;
+ pd->pdn = resp.pdn;
return &pd->ibv_pd;
}