Lines Matching refs:xrcd

470 			srq->ext.xrc.xrcd = srq_init_attr->ext.xrc.xrcd;  in ib_create_srq()
472 atomic_inc(&srq->ext.xrc.xrcd->usecnt); in ib_create_srq()
505 struct ib_xrcd *uninitialized_var(xrcd); in ib_destroy_srq()
515 xrcd = srq->ext.xrc.xrcd; in ib_destroy_srq()
523 atomic_dec(&xrcd->usecnt); in ib_destroy_srq()
546 static void __ib_insert_xrcd_qp(struct ib_xrcd *xrcd, struct ib_qp *qp) in __ib_insert_xrcd_qp() argument
548 mutex_lock(&xrcd->tgt_qp_mutex); in __ib_insert_xrcd_qp()
549 list_add(&qp->xrcd_list, &xrcd->tgt_qp_list); in __ib_insert_xrcd_qp()
550 mutex_unlock(&xrcd->tgt_qp_mutex); in __ib_insert_xrcd_qp()
579 struct ib_qp *ib_open_qp(struct ib_xrcd *xrcd, in ib_open_qp() argument
588 mutex_lock(&xrcd->tgt_qp_mutex); in ib_open_qp()
589 list_for_each_entry(real_qp, &xrcd->tgt_qp_list, xrcd_list) { in ib_open_qp()
596 mutex_unlock(&xrcd->tgt_qp_mutex); in ib_open_qp()
607 device = pd ? pd->device : qp_init_attr->xrcd->device; in ib_create_qp()
623 qp->xrcd = qp_init_attr->xrcd; in ib_create_qp()
624 atomic_inc(&qp_init_attr->xrcd->usecnt); in ib_create_qp()
631 __ib_insert_xrcd_qp(qp_init_attr->xrcd, real_qp); in ib_create_qp()
650 qp->xrcd = NULL; in ib_create_qp()
1092 struct ib_xrcd *xrcd; in __ib_destroy_shared_qp() local
1097 xrcd = real_qp->xrcd; in __ib_destroy_shared_qp()
1099 mutex_lock(&xrcd->tgt_qp_mutex); in __ib_destroy_shared_qp()
1105 mutex_unlock(&xrcd->tgt_qp_mutex); in __ib_destroy_shared_qp()
1110 atomic_dec(&xrcd->usecnt); in __ib_destroy_shared_qp()
1112 __ib_insert_xrcd_qp(xrcd, real_qp); in __ib_destroy_shared_qp()
1403 struct ib_xrcd *xrcd; in ib_alloc_xrcd() local
1408 xrcd = device->alloc_xrcd(device, NULL, NULL); in ib_alloc_xrcd()
1409 if (!IS_ERR(xrcd)) { in ib_alloc_xrcd()
1410 xrcd->device = device; in ib_alloc_xrcd()
1411 xrcd->inode = NULL; in ib_alloc_xrcd()
1412 atomic_set(&xrcd->usecnt, 0); in ib_alloc_xrcd()
1413 mutex_init(&xrcd->tgt_qp_mutex); in ib_alloc_xrcd()
1414 INIT_LIST_HEAD(&xrcd->tgt_qp_list); in ib_alloc_xrcd()
1417 return xrcd; in ib_alloc_xrcd()
1421 int ib_dealloc_xrcd(struct ib_xrcd *xrcd) in ib_dealloc_xrcd() argument
1426 if (atomic_read(&xrcd->usecnt)) in ib_dealloc_xrcd()
1429 while (!list_empty(&xrcd->tgt_qp_list)) { in ib_dealloc_xrcd()
1430 qp = list_entry(xrcd->tgt_qp_list.next, struct ib_qp, xrcd_list); in ib_dealloc_xrcd()
1436 return xrcd->device->dealloc_xrcd(xrcd); in ib_dealloc_xrcd()