Lines Matching refs:xrcd
639 struct ib_xrcd *xrcd; member
645 struct ib_xrcd *xrcd) in xrcd_table_insert() argument
655 entry->xrcd = xrcd; in xrcd_table_insert()
706 return entry->xrcd; in find_xrcd()
730 struct ib_xrcd *xrcd = NULL; in ib_uverbs_open_xrcd() local
757 xrcd = find_xrcd(file->device, inode); in ib_uverbs_open_xrcd()
758 if (!xrcd && !(cmd.oflags & O_CREAT)) { in ib_uverbs_open_xrcd()
764 if (xrcd && cmd.oflags & O_EXCL) { in ib_uverbs_open_xrcd()
780 if (!xrcd) { in ib_uverbs_open_xrcd()
781 xrcd = file->device->ib_dev->alloc_xrcd(file->device->ib_dev, in ib_uverbs_open_xrcd()
783 if (IS_ERR(xrcd)) { in ib_uverbs_open_xrcd()
784 ret = PTR_ERR(xrcd); in ib_uverbs_open_xrcd()
788 xrcd->inode = inode; in ib_uverbs_open_xrcd()
789 xrcd->device = file->device->ib_dev; in ib_uverbs_open_xrcd()
790 atomic_set(&xrcd->usecnt, 0); in ib_uverbs_open_xrcd()
791 mutex_init(&xrcd->tgt_qp_mutex); in ib_uverbs_open_xrcd()
792 INIT_LIST_HEAD(&xrcd->tgt_qp_list); in ib_uverbs_open_xrcd()
797 obj->uobject.object = xrcd; in ib_uverbs_open_xrcd()
808 ret = xrcd_table_insert(file->device, inode, xrcd); in ib_uverbs_open_xrcd()
812 atomic_inc(&xrcd->usecnt); in ib_uverbs_open_xrcd()
838 atomic_dec(&xrcd->usecnt); in ib_uverbs_open_xrcd()
845 ib_dealloc_xrcd(xrcd); in ib_uverbs_open_xrcd()
865 struct ib_xrcd *xrcd = NULL; in ib_uverbs_close_xrcd() local
881 xrcd = uobj->object; in ib_uverbs_close_xrcd()
882 inode = xrcd->inode; in ib_uverbs_close_xrcd()
890 if (!inode || atomic_dec_and_test(&xrcd->usecnt)) { in ib_uverbs_close_xrcd()
898 atomic_inc(&xrcd->usecnt); in ib_uverbs_close_xrcd()
922 struct ib_xrcd *xrcd) in ib_uverbs_dealloc_xrcd() argument
926 inode = xrcd->inode; in ib_uverbs_dealloc_xrcd()
927 if (inode && !atomic_dec_and_test(&xrcd->usecnt)) in ib_uverbs_dealloc_xrcd()
930 ib_dealloc_xrcd(xrcd); in ib_uverbs_dealloc_xrcd()
1632 struct ib_xrcd *xrcd = NULL; in ib_uverbs_create_qp() local
1661 xrcd = idr_read_xrcd(cmd.pd_handle, file->ucontext, &xrcd_uobj); in ib_uverbs_create_qp()
1662 if (!xrcd) { in ib_uverbs_create_qp()
1666 device = xrcd->device; in ib_uverbs_create_qp()
1704 attr.xrcd = xrcd; in ib_uverbs_create_qp()
1769 if (xrcd) { in ib_uverbs_create_qp()
1802 if (xrcd) in ib_uverbs_create_qp()
1824 struct ib_xrcd *xrcd; in ib_uverbs_open_qp() local
1847 xrcd = idr_read_xrcd(cmd.pd_handle, file->ucontext, &xrcd_uobj); in ib_uverbs_open_qp()
1848 if (!xrcd) { in ib_uverbs_open_qp()
1862 qp = ib_open_qp(xrcd, &attr); in ib_uverbs_open_qp()
3006 attr.ext.xrc.xrcd = idr_read_xrcd(cmd->xrcd_handle, file->ucontext, &xrcd_uobj); in __uverbs_create_xsrq()
3007 if (!attr.ext.xrc.xrcd) { in __uverbs_create_xsrq()
3053 srq->ext.xrc.xrcd = attr.ext.xrc.xrcd; in __uverbs_create_xsrq()
3055 atomic_inc(&attr.ext.xrc.xrcd->usecnt); in __uverbs_create_xsrq()