Lines Matching refs:xrcd
953 srq->ext.xrc.xrcd = srq_init_attr->ext.xrc.xrcd; in ib_create_srq()
954 atomic_inc(&srq->ext.xrc.xrcd->usecnt); in ib_create_srq()
986 struct ib_xrcd *uninitialized_var(xrcd); in ib_destroy_srq()
998 xrcd = srq->ext.xrc.xrcd; in ib_destroy_srq()
1004 atomic_dec(&xrcd->usecnt); in ib_destroy_srq()
1027 static void __ib_insert_xrcd_qp(struct ib_xrcd *xrcd, struct ib_qp *qp) in __ib_insert_xrcd_qp() argument
1029 mutex_lock(&xrcd->tgt_qp_mutex); in __ib_insert_xrcd_qp()
1030 list_add(&qp->xrcd_list, &xrcd->tgt_qp_list); in __ib_insert_xrcd_qp()
1031 mutex_unlock(&xrcd->tgt_qp_mutex); in __ib_insert_xrcd_qp()
1068 struct ib_qp *ib_open_qp(struct ib_xrcd *xrcd, in ib_open_qp() argument
1077 mutex_lock(&xrcd->tgt_qp_mutex); in ib_open_qp()
1078 list_for_each_entry(real_qp, &xrcd->tgt_qp_list, xrcd_list) { in ib_open_qp()
1085 mutex_unlock(&xrcd->tgt_qp_mutex); in ib_open_qp()
1100 qp->xrcd = qp_init_attr->xrcd; in ib_create_xrc_qp()
1101 atomic_inc(&qp_init_attr->xrcd->usecnt); in ib_create_xrc_qp()
1107 __ib_insert_xrcd_qp(qp_init_attr->xrcd, real_qp); in ib_create_xrc_qp()
1116 struct ib_device *device = pd ? pd->device : qp_init_attr->xrcd->device; in ib_create_qp()
1174 qp->xrcd = NULL; in ib_create_qp()
1785 struct ib_xrcd *xrcd; in __ib_destroy_shared_qp() local
1790 xrcd = real_qp->xrcd; in __ib_destroy_shared_qp()
1792 mutex_lock(&xrcd->tgt_qp_mutex); in __ib_destroy_shared_qp()
1798 mutex_unlock(&xrcd->tgt_qp_mutex); in __ib_destroy_shared_qp()
1803 atomic_dec(&xrcd->usecnt); in __ib_destroy_shared_qp()
1805 __ib_insert_xrcd_qp(xrcd, real_qp); in __ib_destroy_shared_qp()
2106 struct ib_xrcd *xrcd; in __ib_alloc_xrcd() local
2111 xrcd = device->alloc_xrcd(device, NULL, NULL); in __ib_alloc_xrcd()
2112 if (!IS_ERR(xrcd)) { in __ib_alloc_xrcd()
2113 xrcd->device = device; in __ib_alloc_xrcd()
2114 xrcd->inode = NULL; in __ib_alloc_xrcd()
2115 atomic_set(&xrcd->usecnt, 0); in __ib_alloc_xrcd()
2116 mutex_init(&xrcd->tgt_qp_mutex); in __ib_alloc_xrcd()
2117 INIT_LIST_HEAD(&xrcd->tgt_qp_list); in __ib_alloc_xrcd()
2120 return xrcd; in __ib_alloc_xrcd()
2124 int ib_dealloc_xrcd(struct ib_xrcd *xrcd) in ib_dealloc_xrcd() argument
2129 if (atomic_read(&xrcd->usecnt)) in ib_dealloc_xrcd()
2132 while (!list_empty(&xrcd->tgt_qp_list)) { in ib_dealloc_xrcd()
2133 qp = list_entry(xrcd->tgt_qp_list.next, struct ib_qp, xrcd_list); in ib_dealloc_xrcd()
2139 return xrcd->device->dealloc_xrcd(xrcd); in ib_dealloc_xrcd()