Lines Matching refs:xrcd
632 srq->ext.xrc.xrcd = srq_init_attr->ext.xrc.xrcd; in ib_create_srq()
633 atomic_inc(&srq->ext.xrc.xrcd->usecnt); in ib_create_srq()
665 struct ib_xrcd *uninitialized_var(xrcd); in ib_destroy_srq()
677 xrcd = srq->ext.xrc.xrcd; in ib_destroy_srq()
683 atomic_dec(&xrcd->usecnt); in ib_destroy_srq()
706 static void __ib_insert_xrcd_qp(struct ib_xrcd *xrcd, struct ib_qp *qp) in __ib_insert_xrcd_qp() argument
708 mutex_lock(&xrcd->tgt_qp_mutex); in __ib_insert_xrcd_qp()
709 list_add(&qp->xrcd_list, &xrcd->tgt_qp_list); in __ib_insert_xrcd_qp()
710 mutex_unlock(&xrcd->tgt_qp_mutex); in __ib_insert_xrcd_qp()
747 struct ib_qp *ib_open_qp(struct ib_xrcd *xrcd, in ib_open_qp() argument
756 mutex_lock(&xrcd->tgt_qp_mutex); in ib_open_qp()
757 list_for_each_entry(real_qp, &xrcd->tgt_qp_list, xrcd_list) { in ib_open_qp()
764 mutex_unlock(&xrcd->tgt_qp_mutex); in ib_open_qp()
779 qp->xrcd = qp_init_attr->xrcd; in create_xrc_qp()
780 atomic_inc(&qp_init_attr->xrcd->usecnt); in create_xrc_qp()
788 __ib_insert_xrcd_qp(qp_init_attr->xrcd, real_qp); in create_xrc_qp()
795 struct ib_device *device = pd ? pd->device : qp_init_attr->xrcd->device; in ib_create_qp()
861 qp->xrcd = NULL; in ib_create_qp()
1421 struct ib_xrcd *xrcd; in __ib_destroy_shared_qp() local
1426 xrcd = real_qp->xrcd; in __ib_destroy_shared_qp()
1428 mutex_lock(&xrcd->tgt_qp_mutex); in __ib_destroy_shared_qp()
1434 mutex_unlock(&xrcd->tgt_qp_mutex); in __ib_destroy_shared_qp()
1439 atomic_dec(&xrcd->usecnt); in __ib_destroy_shared_qp()
1441 __ib_insert_xrcd_qp(xrcd, real_qp); in __ib_destroy_shared_qp()
1722 struct ib_xrcd *xrcd; in ib_alloc_xrcd() local
1727 xrcd = device->alloc_xrcd(device, NULL, NULL); in ib_alloc_xrcd()
1728 if (!IS_ERR(xrcd)) { in ib_alloc_xrcd()
1729 xrcd->device = device; in ib_alloc_xrcd()
1730 xrcd->inode = NULL; in ib_alloc_xrcd()
1731 atomic_set(&xrcd->usecnt, 0); in ib_alloc_xrcd()
1732 mutex_init(&xrcd->tgt_qp_mutex); in ib_alloc_xrcd()
1733 INIT_LIST_HEAD(&xrcd->tgt_qp_list); in ib_alloc_xrcd()
1736 return xrcd; in ib_alloc_xrcd()
1740 int ib_dealloc_xrcd(struct ib_xrcd *xrcd) in ib_dealloc_xrcd() argument
1745 if (atomic_read(&xrcd->usecnt)) in ib_dealloc_xrcd()
1748 while (!list_empty(&xrcd->tgt_qp_list)) { in ib_dealloc_xrcd()
1749 qp = list_entry(xrcd->tgt_qp_list.next, struct ib_qp, xrcd_list); in ib_dealloc_xrcd()
1755 return xrcd->device->dealloc_xrcd(xrcd); in ib_dealloc_xrcd()