Lines Matching refs:srq
1010 struct ib_srq *srq; in ib_create_srq_user() local
1013 srq = rdma_zalloc_drv_obj(pd->device, ib_srq); in ib_create_srq_user()
1014 if (!srq) in ib_create_srq_user()
1017 srq->device = pd->device; in ib_create_srq_user()
1018 srq->pd = pd; in ib_create_srq_user()
1019 srq->event_handler = srq_init_attr->event_handler; in ib_create_srq_user()
1020 srq->srq_context = srq_init_attr->srq_context; in ib_create_srq_user()
1021 srq->srq_type = srq_init_attr->srq_type; in ib_create_srq_user()
1022 srq->uobject = uobject; in ib_create_srq_user()
1024 if (ib_srq_has_cq(srq->srq_type)) { in ib_create_srq_user()
1025 srq->ext.cq = srq_init_attr->ext.cq; in ib_create_srq_user()
1026 atomic_inc(&srq->ext.cq->usecnt); in ib_create_srq_user()
1028 if (srq->srq_type == IB_SRQT_XRC) { in ib_create_srq_user()
1029 srq->ext.xrc.xrcd = srq_init_attr->ext.xrc.xrcd; in ib_create_srq_user()
1030 if (srq->ext.xrc.xrcd) in ib_create_srq_user()
1031 atomic_inc(&srq->ext.xrc.xrcd->usecnt); in ib_create_srq_user()
1035 rdma_restrack_new(&srq->res, RDMA_RESTRACK_SRQ); in ib_create_srq_user()
1036 rdma_restrack_parent_name(&srq->res, &pd->res); in ib_create_srq_user()
1038 ret = pd->device->ops.create_srq(srq, srq_init_attr, udata); in ib_create_srq_user()
1040 rdma_restrack_put(&srq->res); in ib_create_srq_user()
1042 if (srq->srq_type == IB_SRQT_XRC && srq->ext.xrc.xrcd) in ib_create_srq_user()
1043 atomic_dec(&srq->ext.xrc.xrcd->usecnt); in ib_create_srq_user()
1044 if (ib_srq_has_cq(srq->srq_type)) in ib_create_srq_user()
1045 atomic_dec(&srq->ext.cq->usecnt); in ib_create_srq_user()
1046 kfree(srq); in ib_create_srq_user()
1050 rdma_restrack_add(&srq->res); in ib_create_srq_user()
1052 return srq; in ib_create_srq_user()
1056 int ib_modify_srq(struct ib_srq *srq, in ib_modify_srq() argument
1060 return srq->device->ops.modify_srq ? in ib_modify_srq()
1061 srq->device->ops.modify_srq(srq, srq_attr, srq_attr_mask, in ib_modify_srq()
1066 int ib_query_srq(struct ib_srq *srq, in ib_query_srq() argument
1069 return srq->device->ops.query_srq ? in ib_query_srq()
1070 srq->device->ops.query_srq(srq, srq_attr) : -EOPNOTSUPP; in ib_query_srq()
1074 int ib_destroy_srq_user(struct ib_srq *srq, struct ib_udata *udata) in ib_destroy_srq_user() argument
1078 if (atomic_read(&srq->usecnt)) in ib_destroy_srq_user()
1081 ret = srq->device->ops.destroy_srq(srq, udata); in ib_destroy_srq_user()
1085 atomic_dec(&srq->pd->usecnt); in ib_destroy_srq_user()
1086 if (srq->srq_type == IB_SRQT_XRC && srq->ext.xrc.xrcd) in ib_destroy_srq_user()
1087 atomic_dec(&srq->ext.xrc.xrcd->usecnt); in ib_destroy_srq_user()
1088 if (ib_srq_has_cq(srq->srq_type)) in ib_destroy_srq_user()
1089 atomic_dec(&srq->ext.cq->usecnt); in ib_destroy_srq_user()
1090 rdma_restrack_del(&srq->res); in ib_destroy_srq_user()
1091 kfree(srq); in ib_destroy_srq_user()
1176 qp->srq = NULL; in create_xrc_qp_user()
1218 qp->srq = attr->srq; in create_qp()
1305 if (qp->srq) in ib_qp_usecnt_inc()
1306 atomic_inc(&qp->srq->usecnt); in ib_qp_usecnt_inc()
1316 if (qp->srq) in ib_qp_usecnt_dec()
1317 atomic_dec(&qp->srq->usecnt); in ib_qp_usecnt_dec()
2891 if (!qp->srq) in ib_drain_qp()