Lines Matching refs:xrcd
1031 srq->ext.xrc.xrcd = srq_init_attr->ext.xrc.xrcd; in ib_create_srq_user()
1032 if (srq->ext.xrc.xrcd) in ib_create_srq_user()
1033 atomic_inc(&srq->ext.xrc.xrcd->usecnt); in ib_create_srq_user()
1044 if (srq->srq_type == IB_SRQT_XRC && srq->ext.xrc.xrcd) in ib_create_srq_user()
1045 atomic_dec(&srq->ext.xrc.xrcd->usecnt); in ib_create_srq_user()
1088 if (srq->srq_type == IB_SRQT_XRC && srq->ext.xrc.xrcd) in ib_destroy_srq_user()
1089 atomic_dec(&srq->ext.xrc.xrcd->usecnt); in ib_destroy_srq_user()
1147 struct ib_qp *ib_open_qp(struct ib_xrcd *xrcd, in ib_open_qp() argument
1155 down_read(&xrcd->tgt_qps_rwsem); in ib_open_qp()
1156 real_qp = xa_load(&xrcd->tgt_qps, qp_open_attr->qp_num); in ib_open_qp()
1158 up_read(&xrcd->tgt_qps_rwsem); in ib_open_qp()
1163 up_read(&xrcd->tgt_qps_rwsem); in ib_open_qp()
1179 qp->xrcd = qp_init_attr->xrcd; in create_xrc_qp_user()
1180 atomic_inc(&qp_init_attr->xrcd->usecnt); in create_xrc_qp_user()
1188 err = xa_err(xa_store(&qp_init_attr->xrcd->tgt_qps, real_qp->qp_num, in create_xrc_qp_user()
2048 struct ib_xrcd *xrcd; in __ib_destroy_shared_qp() local
2053 xrcd = real_qp->xrcd; in __ib_destroy_shared_qp()
2054 down_write(&xrcd->tgt_qps_rwsem); in __ib_destroy_shared_qp()
2057 xa_erase(&xrcd->tgt_qps, real_qp->qp_num); in __ib_destroy_shared_qp()
2060 up_write(&xrcd->tgt_qps_rwsem); in __ib_destroy_shared_qp()
2065 atomic_dec(&xrcd->usecnt); in __ib_destroy_shared_qp()
2463 struct ib_xrcd *xrcd; in ib_alloc_xrcd_user() local
2469 xrcd = rdma_zalloc_drv_obj(device, ib_xrcd); in ib_alloc_xrcd_user()
2470 if (!xrcd) in ib_alloc_xrcd_user()
2473 xrcd->device = device; in ib_alloc_xrcd_user()
2474 xrcd->inode = inode; in ib_alloc_xrcd_user()
2475 atomic_set(&xrcd->usecnt, 0); in ib_alloc_xrcd_user()
2476 init_rwsem(&xrcd->tgt_qps_rwsem); in ib_alloc_xrcd_user()
2477 xa_init(&xrcd->tgt_qps); in ib_alloc_xrcd_user()
2479 ret = device->ops.alloc_xrcd(xrcd, udata); in ib_alloc_xrcd_user()
2482 return xrcd; in ib_alloc_xrcd_user()
2484 kfree(xrcd); in ib_alloc_xrcd_user()
2494 int ib_dealloc_xrcd_user(struct ib_xrcd *xrcd, struct ib_udata *udata) in ib_dealloc_xrcd_user() argument
2498 if (atomic_read(&xrcd->usecnt)) in ib_dealloc_xrcd_user()
2501 WARN_ON(!xa_empty(&xrcd->tgt_qps)); in ib_dealloc_xrcd_user()
2502 ret = xrcd->device->ops.dealloc_xrcd(xrcd, udata); in ib_dealloc_xrcd_user()
2505 kfree(xrcd); in ib_dealloc_xrcd_user()