Lines Matching refs:srq
1015 struct ib_srq *srq; in ib_create_srq_user() local
1018 srq = rdma_zalloc_drv_obj(pd->device, ib_srq); in ib_create_srq_user()
1019 if (!srq) in ib_create_srq_user()
1022 srq->device = pd->device; in ib_create_srq_user()
1023 srq->pd = pd; in ib_create_srq_user()
1024 srq->event_handler = srq_init_attr->event_handler; in ib_create_srq_user()
1025 srq->srq_context = srq_init_attr->srq_context; in ib_create_srq_user()
1026 srq->srq_type = srq_init_attr->srq_type; in ib_create_srq_user()
1027 srq->uobject = uobject; in ib_create_srq_user()
1029 if (ib_srq_has_cq(srq->srq_type)) { in ib_create_srq_user()
1030 srq->ext.cq = srq_init_attr->ext.cq; in ib_create_srq_user()
1031 atomic_inc(&srq->ext.cq->usecnt); in ib_create_srq_user()
1033 if (srq->srq_type == IB_SRQT_XRC) { in ib_create_srq_user()
1034 srq->ext.xrc.xrcd = srq_init_attr->ext.xrc.xrcd; in ib_create_srq_user()
1035 if (srq->ext.xrc.xrcd) in ib_create_srq_user()
1036 atomic_inc(&srq->ext.xrc.xrcd->usecnt); in ib_create_srq_user()
1040 rdma_restrack_new(&srq->res, RDMA_RESTRACK_SRQ); in ib_create_srq_user()
1041 rdma_restrack_parent_name(&srq->res, &pd->res); in ib_create_srq_user()
1043 ret = pd->device->ops.create_srq(srq, srq_init_attr, udata); in ib_create_srq_user()
1045 rdma_restrack_put(&srq->res); in ib_create_srq_user()
1047 if (srq->srq_type == IB_SRQT_XRC && srq->ext.xrc.xrcd) in ib_create_srq_user()
1048 atomic_dec(&srq->ext.xrc.xrcd->usecnt); in ib_create_srq_user()
1049 if (ib_srq_has_cq(srq->srq_type)) in ib_create_srq_user()
1050 atomic_dec(&srq->ext.cq->usecnt); in ib_create_srq_user()
1051 kfree(srq); in ib_create_srq_user()
1055 rdma_restrack_add(&srq->res); in ib_create_srq_user()
1057 return srq; in ib_create_srq_user()
1061 int ib_modify_srq(struct ib_srq *srq, in ib_modify_srq() argument
1065 return srq->device->ops.modify_srq ? in ib_modify_srq()
1066 srq->device->ops.modify_srq(srq, srq_attr, srq_attr_mask, in ib_modify_srq()
1071 int ib_query_srq(struct ib_srq *srq, in ib_query_srq() argument
1074 return srq->device->ops.query_srq ? in ib_query_srq()
1075 srq->device->ops.query_srq(srq, srq_attr) : -EOPNOTSUPP; in ib_query_srq()
1079 int ib_destroy_srq_user(struct ib_srq *srq, struct ib_udata *udata) in ib_destroy_srq_user() argument
1083 if (atomic_read(&srq->usecnt)) in ib_destroy_srq_user()
1086 ret = srq->device->ops.destroy_srq(srq, udata); in ib_destroy_srq_user()
1090 atomic_dec(&srq->pd->usecnt); in ib_destroy_srq_user()
1091 if (srq->srq_type == IB_SRQT_XRC && srq->ext.xrc.xrcd) in ib_destroy_srq_user()
1092 atomic_dec(&srq->ext.xrc.xrcd->usecnt); in ib_destroy_srq_user()
1093 if (ib_srq_has_cq(srq->srq_type)) in ib_destroy_srq_user()
1094 atomic_dec(&srq->ext.cq->usecnt); in ib_destroy_srq_user()
1095 rdma_restrack_del(&srq->res); in ib_destroy_srq_user()
1096 kfree(srq); in ib_destroy_srq_user()
1181 qp->srq = NULL; in create_xrc_qp_user()
1223 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()
2963 if (!qp->srq) in ib_drain_qp()