Lines Matching refs:xrcd
389 struct ib_xrcd *xrcd; member
395 struct ib_xrcd *xrcd) in xrcd_table_insert() argument
405 entry->xrcd = xrcd; in xrcd_table_insert()
456 return entry->xrcd; in find_xrcd()
481 struct ib_xrcd *xrcd = NULL; in ib_uverbs_open_xrcd() local
509 xrcd = find_xrcd(file->device, inode); in ib_uverbs_open_xrcd()
510 if (!xrcd && !(cmd.oflags & O_CREAT)) { in ib_uverbs_open_xrcd()
516 if (xrcd && cmd.oflags & O_EXCL) { in ib_uverbs_open_xrcd()
522 obj = (struct ib_uxrcd_object *)uobj_alloc(uobj_get_type(xrcd), in ib_uverbs_open_xrcd()
529 if (!xrcd) { in ib_uverbs_open_xrcd()
530 xrcd = ib_dev->alloc_xrcd(ib_dev, file->ucontext, &udata); in ib_uverbs_open_xrcd()
531 if (IS_ERR(xrcd)) { in ib_uverbs_open_xrcd()
532 ret = PTR_ERR(xrcd); in ib_uverbs_open_xrcd()
536 xrcd->inode = inode; in ib_uverbs_open_xrcd()
537 xrcd->device = ib_dev; in ib_uverbs_open_xrcd()
538 atomic_set(&xrcd->usecnt, 0); in ib_uverbs_open_xrcd()
539 mutex_init(&xrcd->tgt_qp_mutex); in ib_uverbs_open_xrcd()
540 INIT_LIST_HEAD(&xrcd->tgt_qp_list); in ib_uverbs_open_xrcd()
545 obj->uobject.object = xrcd; in ib_uverbs_open_xrcd()
552 ret = xrcd_table_insert(file->device, inode, xrcd); in ib_uverbs_open_xrcd()
556 atomic_inc(&xrcd->usecnt); in ib_uverbs_open_xrcd()
578 atomic_dec(&xrcd->usecnt); in ib_uverbs_open_xrcd()
582 ib_dealloc_xrcd(xrcd); in ib_uverbs_open_xrcd()
608 uobj = uobj_get_write(uobj_get_type(xrcd), cmd.xrcd_handle, in ib_uverbs_close_xrcd()
618 struct ib_xrcd *xrcd, in ib_uverbs_dealloc_xrcd() argument
624 inode = xrcd->inode; in ib_uverbs_dealloc_xrcd()
625 if (inode && !atomic_dec_and_test(&xrcd->usecnt)) in ib_uverbs_dealloc_xrcd()
628 ret = ib_dealloc_xrcd(xrcd); in ib_uverbs_dealloc_xrcd()
631 atomic_inc(&xrcd->usecnt); in ib_uverbs_dealloc_xrcd()
1365 struct ib_xrcd *xrcd = NULL; in create_qp() local
1418 xrcd_uobj = uobj_get_read(uobj_get_type(xrcd), cmd->pd_handle, in create_qp()
1426 xrcd = (struct ib_xrcd *)xrcd_uobj->object; in create_qp()
1427 if (!xrcd) { in create_qp()
1431 device = xrcd->device; in create_qp()
1477 attr.xrcd = xrcd; in create_qp()
1582 if (xrcd) { in create_qp()
1740 struct ib_xrcd *xrcd; in ib_uverbs_open_qp() local
1762 xrcd_uobj = uobj_get_read(uobj_get_type(xrcd), cmd.pd_handle, in ib_uverbs_open_qp()
1769 xrcd = (struct ib_xrcd *)xrcd_uobj->object; in ib_uverbs_open_qp()
1770 if (!xrcd) { in ib_uverbs_open_qp()
1784 qp = ib_open_qp(xrcd, &attr); in ib_uverbs_open_qp()
3554 xrcd_uobj = uobj_get_read(uobj_get_type(xrcd), cmd->xrcd_handle, in __uverbs_create_xsrq()
3561 attr.ext.xrc.xrcd = (struct ib_xrcd *)xrcd_uobj->object; in __uverbs_create_xsrq()
3562 if (!attr.ext.xrc.xrcd) { in __uverbs_create_xsrq()
3615 srq->ext.xrc.xrcd = attr.ext.xrc.xrcd; in __uverbs_create_xsrq()
3616 atomic_inc(&attr.ext.xrc.xrcd->usecnt); in __uverbs_create_xsrq()