Lines Matching refs:xrcd

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()
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()
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()
1153 struct ib_qp *ib_open_qp(struct ib_xrcd *xrcd, in ib_open_qp() argument
1161 down_read(&xrcd->tgt_qps_rwsem); in ib_open_qp()
1162 real_qp = xa_load(&xrcd->tgt_qps, qp_open_attr->qp_num); in ib_open_qp()
1164 up_read(&xrcd->tgt_qps_rwsem); in ib_open_qp()
1169 up_read(&xrcd->tgt_qps_rwsem); in ib_open_qp()
1185 qp->xrcd = qp_init_attr->xrcd; in create_xrc_qp_user()
1186 atomic_inc(&qp_init_attr->xrcd->usecnt); in create_xrc_qp_user()
1194 err = xa_err(xa_store(&qp_init_attr->xrcd->tgt_qps, real_qp->qp_num, in create_xrc_qp_user()
1987 struct ib_xrcd *xrcd; in __ib_destroy_shared_qp() local
1992 xrcd = real_qp->xrcd; in __ib_destroy_shared_qp()
1993 down_write(&xrcd->tgt_qps_rwsem); in __ib_destroy_shared_qp()
1996 xa_erase(&xrcd->tgt_qps, real_qp->qp_num); in __ib_destroy_shared_qp()
1999 up_write(&xrcd->tgt_qps_rwsem); in __ib_destroy_shared_qp()
2004 atomic_dec(&xrcd->usecnt); in __ib_destroy_shared_qp()
2399 struct ib_xrcd *xrcd; in ib_alloc_xrcd_user() local
2405 xrcd = rdma_zalloc_drv_obj(device, ib_xrcd); in ib_alloc_xrcd_user()
2406 if (!xrcd) in ib_alloc_xrcd_user()
2409 xrcd->device = device; in ib_alloc_xrcd_user()
2410 xrcd->inode = inode; in ib_alloc_xrcd_user()
2411 atomic_set(&xrcd->usecnt, 0); in ib_alloc_xrcd_user()
2412 init_rwsem(&xrcd->tgt_qps_rwsem); in ib_alloc_xrcd_user()
2413 xa_init(&xrcd->tgt_qps); in ib_alloc_xrcd_user()
2415 ret = device->ops.alloc_xrcd(xrcd, udata); in ib_alloc_xrcd_user()
2418 return xrcd; in ib_alloc_xrcd_user()
2420 kfree(xrcd); in ib_alloc_xrcd_user()
2430 int ib_dealloc_xrcd_user(struct ib_xrcd *xrcd, struct ib_udata *udata) in ib_dealloc_xrcd_user() argument
2434 if (atomic_read(&xrcd->usecnt)) in ib_dealloc_xrcd_user()
2437 WARN_ON(!xa_empty(&xrcd->tgt_qps)); in ib_dealloc_xrcd_user()
2438 ret = xrcd->device->ops.dealloc_xrcd(xrcd, udata); in ib_dealloc_xrcd_user()
2441 kfree(xrcd); in ib_dealloc_xrcd_user()