Lines Matching defs:xrcd
1034 srq->ext.xrc.xrcd = srq_init_attr->ext.xrc.xrcd;
1035 if (srq->ext.xrc.xrcd)
1036 atomic_inc(&srq->ext.xrc.xrcd->usecnt);
1047 if (srq->srq_type == IB_SRQT_XRC && srq->ext.xrc.xrcd)
1048 atomic_dec(&srq->ext.xrc.xrcd->usecnt);
1091 if (srq->srq_type == IB_SRQT_XRC && srq->ext.xrc.xrcd)
1092 atomic_dec(&srq->ext.xrc.xrcd->usecnt);
1160 struct ib_qp *ib_open_qp(struct ib_xrcd *xrcd,
1168 down_read(&xrcd->tgt_qps_rwsem);
1169 real_qp = xa_load(&xrcd->tgt_qps, qp_open_attr->qp_num);
1171 up_read(&xrcd->tgt_qps_rwsem);
1176 up_read(&xrcd->tgt_qps_rwsem);
1192 qp->xrcd = qp_init_attr->xrcd;
1193 atomic_inc(&qp_init_attr->xrcd->usecnt);
1201 err = xa_err(xa_store(&qp_init_attr->xrcd->tgt_qps, real_qp->qp_num,
2063 struct ib_xrcd *xrcd;
2068 xrcd = real_qp->xrcd;
2069 down_write(&xrcd->tgt_qps_rwsem);
2072 xa_erase(&xrcd->tgt_qps, real_qp->qp_num);
2075 up_write(&xrcd->tgt_qps_rwsem);
2080 atomic_dec(&xrcd->usecnt);
2481 struct ib_xrcd *xrcd;
2487 xrcd = rdma_zalloc_drv_obj(device, ib_xrcd);
2488 if (!xrcd)
2491 xrcd->device = device;
2492 xrcd->inode = inode;
2493 atomic_set(&xrcd->usecnt, 0);
2494 init_rwsem(&xrcd->tgt_qps_rwsem);
2495 xa_init(&xrcd->tgt_qps);
2497 ret = device->ops.alloc_xrcd(xrcd, udata);
2500 return xrcd;
2502 kfree(xrcd);
2509 * @xrcd: The XRC domain to deallocate.
2512 int ib_dealloc_xrcd_user(struct ib_xrcd *xrcd, struct ib_udata *udata)
2516 if (atomic_read(&xrcd->usecnt))
2519 WARN_ON(!xa_empty(&xrcd->tgt_qps));
2520 ret = xrcd->device->ops.dealloc_xrcd(xrcd, udata);
2523 kfree(xrcd);