Lines Matching refs:xrcd
311 srq->ext.xrc.xrcd = srq_init_attr->ext.xrc.xrcd; in ib_create_srq()
313 atomic_inc(&srq->ext.xrc.xrcd->usecnt); in ib_create_srq()
346 struct ib_xrcd *uninitialized_var(xrcd); in ib_destroy_srq()
356 xrcd = srq->ext.xrc.xrcd; in ib_destroy_srq()
364 atomic_dec(&xrcd->usecnt); in ib_destroy_srq()
387 static void __ib_insert_xrcd_qp(struct ib_xrcd *xrcd, struct ib_qp *qp) in __ib_insert_xrcd_qp() argument
389 mutex_lock(&xrcd->tgt_qp_mutex); in __ib_insert_xrcd_qp()
390 list_add(&qp->xrcd_list, &xrcd->tgt_qp_list); in __ib_insert_xrcd_qp()
391 mutex_unlock(&xrcd->tgt_qp_mutex); in __ib_insert_xrcd_qp()
420 struct ib_qp *ib_open_qp(struct ib_xrcd *xrcd, in ib_open_qp() argument
429 mutex_lock(&xrcd->tgt_qp_mutex); in ib_open_qp()
430 list_for_each_entry(real_qp, &xrcd->tgt_qp_list, xrcd_list) { in ib_open_qp()
437 mutex_unlock(&xrcd->tgt_qp_mutex); in ib_open_qp()
448 device = pd ? pd->device : qp_init_attr->xrcd->device; in ib_create_qp()
464 qp->xrcd = qp_init_attr->xrcd; in ib_create_qp()
465 atomic_inc(&qp_init_attr->xrcd->usecnt); in ib_create_qp()
472 __ib_insert_xrcd_qp(qp_init_attr->xrcd, real_qp); in ib_create_qp()
491 qp->xrcd = NULL; in ib_create_qp()
950 struct ib_xrcd *xrcd; in __ib_destroy_shared_qp() local
955 xrcd = real_qp->xrcd; in __ib_destroy_shared_qp()
957 mutex_lock(&xrcd->tgt_qp_mutex); in __ib_destroy_shared_qp()
963 mutex_unlock(&xrcd->tgt_qp_mutex); in __ib_destroy_shared_qp()
968 atomic_dec(&xrcd->usecnt); in __ib_destroy_shared_qp()
970 __ib_insert_xrcd_qp(xrcd, real_qp); in __ib_destroy_shared_qp()
1378 struct ib_xrcd *xrcd; in ib_alloc_xrcd() local
1383 xrcd = device->alloc_xrcd(device, NULL, NULL); in ib_alloc_xrcd()
1384 if (!IS_ERR(xrcd)) { in ib_alloc_xrcd()
1385 xrcd->device = device; in ib_alloc_xrcd()
1386 xrcd->inode = NULL; in ib_alloc_xrcd()
1387 atomic_set(&xrcd->usecnt, 0); in ib_alloc_xrcd()
1388 mutex_init(&xrcd->tgt_qp_mutex); in ib_alloc_xrcd()
1389 INIT_LIST_HEAD(&xrcd->tgt_qp_list); in ib_alloc_xrcd()
1392 return xrcd; in ib_alloc_xrcd()
1396 int ib_dealloc_xrcd(struct ib_xrcd *xrcd) in ib_dealloc_xrcd() argument
1401 if (atomic_read(&xrcd->usecnt)) in ib_dealloc_xrcd()
1404 while (!list_empty(&xrcd->tgt_qp_list)) { in ib_dealloc_xrcd()
1405 qp = list_entry(xrcd->tgt_qp_list.next, struct ib_qp, xrcd_list); in ib_dealloc_xrcd()
1411 return xrcd->device->dealloc_xrcd(xrcd); in ib_dealloc_xrcd()