Lines Matching refs:srq
1018 struct ib_srq *srq; in ib_create_srq_user() local
1021 srq = rdma_zalloc_drv_obj(pd->device, ib_srq); in ib_create_srq_user()
1022 if (!srq) in ib_create_srq_user()
1025 srq->device = pd->device; in ib_create_srq_user()
1026 srq->pd = pd; in ib_create_srq_user()
1027 srq->event_handler = srq_init_attr->event_handler; in ib_create_srq_user()
1028 srq->srq_context = srq_init_attr->srq_context; in ib_create_srq_user()
1029 srq->srq_type = srq_init_attr->srq_type; in ib_create_srq_user()
1030 srq->uobject = uobject; in ib_create_srq_user()
1032 if (ib_srq_has_cq(srq->srq_type)) { in ib_create_srq_user()
1033 srq->ext.cq = srq_init_attr->ext.cq; in ib_create_srq_user()
1034 atomic_inc(&srq->ext.cq->usecnt); in ib_create_srq_user()
1036 if (srq->srq_type == IB_SRQT_XRC) { in ib_create_srq_user()
1037 srq->ext.xrc.xrcd = srq_init_attr->ext.xrc.xrcd; in ib_create_srq_user()
1038 if (srq->ext.xrc.xrcd) in ib_create_srq_user()
1039 atomic_inc(&srq->ext.xrc.xrcd->usecnt); in ib_create_srq_user()
1043 rdma_restrack_new(&srq->res, RDMA_RESTRACK_SRQ); in ib_create_srq_user()
1044 rdma_restrack_parent_name(&srq->res, &pd->res); in ib_create_srq_user()
1046 ret = pd->device->ops.create_srq(srq, srq_init_attr, udata); in ib_create_srq_user()
1048 rdma_restrack_put(&srq->res); in ib_create_srq_user()
1049 atomic_dec(&srq->pd->usecnt); in ib_create_srq_user()
1050 if (srq->srq_type == IB_SRQT_XRC && srq->ext.xrc.xrcd) in ib_create_srq_user()
1051 atomic_dec(&srq->ext.xrc.xrcd->usecnt); in ib_create_srq_user()
1052 if (ib_srq_has_cq(srq->srq_type)) in ib_create_srq_user()
1053 atomic_dec(&srq->ext.cq->usecnt); in ib_create_srq_user()
1054 kfree(srq); in ib_create_srq_user()
1058 rdma_restrack_add(&srq->res); in ib_create_srq_user()
1060 return srq; in ib_create_srq_user()
1064 int ib_modify_srq(struct ib_srq *srq, in ib_modify_srq() argument
1068 return srq->device->ops.modify_srq ? in ib_modify_srq()
1069 srq->device->ops.modify_srq(srq, srq_attr, srq_attr_mask, in ib_modify_srq()
1074 int ib_query_srq(struct ib_srq *srq, in ib_query_srq() argument
1077 return srq->device->ops.query_srq ? in ib_query_srq()
1078 srq->device->ops.query_srq(srq, srq_attr) : -EOPNOTSUPP; in ib_query_srq()
1082 int ib_destroy_srq_user(struct ib_srq *srq, struct ib_udata *udata) in ib_destroy_srq_user() argument
1086 if (atomic_read(&srq->usecnt)) in ib_destroy_srq_user()
1089 ret = srq->device->ops.destroy_srq(srq, udata); in ib_destroy_srq_user()
1093 atomic_dec(&srq->pd->usecnt); in ib_destroy_srq_user()
1094 if (srq->srq_type == IB_SRQT_XRC && srq->ext.xrc.xrcd) in ib_destroy_srq_user()
1095 atomic_dec(&srq->ext.xrc.xrcd->usecnt); in ib_destroy_srq_user()
1096 if (ib_srq_has_cq(srq->srq_type)) in ib_destroy_srq_user()
1097 atomic_dec(&srq->ext.cq->usecnt); in ib_destroy_srq_user()
1098 rdma_restrack_del(&srq->res); in ib_destroy_srq_user()
1099 kfree(srq); in ib_destroy_srq_user()
1184 qp->srq = NULL; in create_xrc_qp_user()
1226 qp->srq = attr->srq; in create_qp()
1310 if (qp->srq) in ib_qp_usecnt_inc()
1311 atomic_inc(&qp->srq->usecnt); in ib_qp_usecnt_inc()
1321 if (qp->srq) in ib_qp_usecnt_dec()
1322 atomic_dec(&qp->srq->usecnt); in ib_qp_usecnt_dec()
2893 if (!qp->srq) in ib_drain_qp()