}
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)
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;
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;
}
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;