From 877a0bd827b0eda944911eb9bd75e4fac31b0553 Mon Sep 17 00:00:00 2001 From: Sean Hefty Date: Wed, 26 Sep 2012 11:07:11 -0700 Subject: [PATCH] Refresh of srq_ex --- include/infiniband/driver.h | 2 +- src/cmd.c | 14 +++++++++----- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/include/infiniband/driver.h b/include/infiniband/driver.h index ef4e3fe..30aa573 100644 --- a/include/infiniband/driver.h +++ b/include/infiniband/driver.h @@ -76,7 +76,7 @@ struct verbs_srq { struct ibv_srq srq; uint32_t comp_mask; enum ibv_srq_type srq_type; - struct ibv_xrcd *xrcd; + struct verbs_xrcd *xrcd; struct ibv_cq *cq; uint32_t srq_num; }; diff --git a/src/cmd.c b/src/cmd.c index 08d8e2a..cbdcfdb 100644 --- a/src/cmd.c +++ b/src/cmd.c @@ -482,10 +482,12 @@ int ibv_cmd_create_srq(struct ibv_pd *pd, } int ibv_cmd_create_srq_ex(struct ibv_pd *pd, - struct ibv_srq *srq, struct ibv_srq_init_attr_ex *attr_ex, + struct verbs_srq *srq, struct ibv_srq_init_attr_ex *attr_ex, struct ibv_create_xsrq *cmd, size_t cmd_size, struct ibv_create_srq_resp *resp, size_t resp_size) { + struct verbs_xrcd *vxrcd = NULL; + IBV_INIT_CMD_RESP(cmd, cmd_size, CREATE_XSRQ, resp, resp_size); if (attr_ex->comp_mask >= IBV_SRQ_INIT_ATTR_RESERVED) @@ -499,8 +501,10 @@ int ibv_cmd_create_srq_ex(struct ibv_pd *pd, cmd->srq_type = (attr_ex->comp_mask & IBV_SRQ_INIT_ATTR_TYPE) ? attr_ex->srq_type : IBV_SRQT_BASIC; - if (attr_ex->comp_mask & IBV_SRQ_INIT_ATTR_XRCD) - cmd->xrcd_handle = attr_ex->xrcd->handle; + if (attr_ex->comp_mask & IBV_SRQ_INIT_ATTR_XRCD) { + vxrcd = container_of(attr_ex->xrcd, struct verbs_xrcd, xrcd); + cmd->xrcd_handle = vxrcd->handle; + } if (attr_ex->comp_mask & IBV_SRQ_INIT_ATTR_CQ) cmd->cq_handle = attr_ex->cq->handle; @@ -509,7 +513,7 @@ int ibv_cmd_create_srq_ex(struct ibv_pd *pd, VALGRIND_MAKE_MEM_DEFINED(resp, resp_size); - srq->handle = resp->srq_handle; + srq->handle = resp->srq_handle; srq->context = pd->context; srq->srq_context = srq_init_attr_ex->srq_context; srq->pd = pd; @@ -526,7 +530,7 @@ int ibv_cmd_create_srq_ex(struct ibv_pd *pd, } if (srq_init_attr_ex->comp_mask & IBV_SRQ_INIT_ATTR_XRCD) { srq->comp_mask |= IBV_SRQ_XRCD; - srq->xrcd = srq_init_attr_ex->xrcd; + srq->xrcd = vxrcd; } if (srq_init_attr_ex->comp_mask & IBV_SRQ_INIT_ATTR_CQ) { srq->comp_mask |= IBV_SRQ_CQ; -- 2.41.0