Lines Matching refs:srq
970 struct ib_srq *srq; in ib_create_srq() local
976 srq = rdma_zalloc_drv_obj(pd->device, ib_srq); in ib_create_srq()
977 if (!srq) in ib_create_srq()
980 srq->device = pd->device; in ib_create_srq()
981 srq->pd = pd; in ib_create_srq()
982 srq->event_handler = srq_init_attr->event_handler; in ib_create_srq()
983 srq->srq_context = srq_init_attr->srq_context; in ib_create_srq()
984 srq->srq_type = srq_init_attr->srq_type; in ib_create_srq()
986 if (ib_srq_has_cq(srq->srq_type)) { in ib_create_srq()
987 srq->ext.cq = srq_init_attr->ext.cq; in ib_create_srq()
988 atomic_inc(&srq->ext.cq->usecnt); in ib_create_srq()
990 if (srq->srq_type == IB_SRQT_XRC) { in ib_create_srq()
991 srq->ext.xrc.xrcd = srq_init_attr->ext.xrc.xrcd; in ib_create_srq()
992 atomic_inc(&srq->ext.xrc.xrcd->usecnt); in ib_create_srq()
996 ret = pd->device->ops.create_srq(srq, srq_init_attr, NULL); in ib_create_srq()
998 atomic_dec(&srq->pd->usecnt); in ib_create_srq()
999 if (srq->srq_type == IB_SRQT_XRC) in ib_create_srq()
1000 atomic_dec(&srq->ext.xrc.xrcd->usecnt); in ib_create_srq()
1001 if (ib_srq_has_cq(srq->srq_type)) in ib_create_srq()
1002 atomic_dec(&srq->ext.cq->usecnt); in ib_create_srq()
1003 kfree(srq); in ib_create_srq()
1007 return srq; in ib_create_srq()
1011 int ib_modify_srq(struct ib_srq *srq, in ib_modify_srq() argument
1015 return srq->device->ops.modify_srq ? in ib_modify_srq()
1016 srq->device->ops.modify_srq(srq, srq_attr, srq_attr_mask, in ib_modify_srq()
1021 int ib_query_srq(struct ib_srq *srq, in ib_query_srq() argument
1024 return srq->device->ops.query_srq ? in ib_query_srq()
1025 srq->device->ops.query_srq(srq, srq_attr) : -EOPNOTSUPP; in ib_query_srq()
1029 int ib_destroy_srq_user(struct ib_srq *srq, struct ib_udata *udata) in ib_destroy_srq_user() argument
1031 if (atomic_read(&srq->usecnt)) in ib_destroy_srq_user()
1034 srq->device->ops.destroy_srq(srq, udata); in ib_destroy_srq_user()
1036 atomic_dec(&srq->pd->usecnt); in ib_destroy_srq_user()
1037 if (srq->srq_type == IB_SRQT_XRC) in ib_destroy_srq_user()
1038 atomic_dec(&srq->ext.xrc.xrcd->usecnt); in ib_destroy_srq_user()
1039 if (ib_srq_has_cq(srq->srq_type)) in ib_destroy_srq_user()
1040 atomic_dec(&srq->ext.cq->usecnt); in ib_destroy_srq_user()
1041 kfree(srq); in ib_destroy_srq_user()
1134 qp->srq = NULL; in create_xrc_qp_user()
1158 qp_init_attr->srq || qp_init_attr->cap.max_recv_wr || in ib_create_qp_user()
1208 qp->srq = NULL; in ib_create_qp_user()
1213 qp->srq = qp_init_attr->srq; in ib_create_qp_user()
1214 if (qp->srq) in ib_create_qp_user()
1215 atomic_inc(&qp_init_attr->srq->usecnt); in ib_create_qp_user()
1872 struct ib_srq *srq; in ib_destroy_qp_user() local
1888 srq = qp->srq; in ib_destroy_qp_user()
1911 if (srq) in ib_destroy_qp_user()
1912 atomic_dec(&srq->usecnt); in ib_destroy_qp_user()
2784 if (!qp->srq) in ib_drain_qp()