Lines Matching refs:iwmr
1292 * @iwmr: iwmr for IB's user page addresses
1296 static void i40iw_copy_user_pgaddrs(struct i40iw_mr *iwmr,
1300 struct ib_umem *region = iwmr->region;
1301 struct i40iw_pbl *iwpbl = &iwmr->iwpbl;
1309 if (iwmr->type == IW_MEMREG_TYPE_QP)
1312 rdma_umem_for_each_dma_block(region, &biter, iwmr->page_size) {
1373 * @iwmr: mr pointer for this memory registration
1377 struct i40iw_mr *iwmr,
1380 struct i40iw_pbl *iwpbl = &iwmr->iwpbl;
1389 status = i40iw_get_pble(&iwdev->sc_dev, iwdev->pble_rsrc, palloc, iwmr->page_cnt);
1399 pbl = iwmr->pgaddrmem;
1402 i40iw_copy_user_pgaddrs(iwmr, pbl, level);
1405 iwmr->pgaddrmem[0] = *pbl;
1423 struct i40iw_mr *iwmr = iwpbl->iwmr;
1427 u64 *arr = iwmr->pgaddrmem;
1434 pg_size = iwmr->page_size;
1436 err = i40iw_setup_pbles(iwdev, iwmr, use_pbles);
1449 if (iwmr->type == IW_MEMREG_TYPE_QP) {
1492 * @iwmr: iwarp mr pointer
1494 static int i40iw_hw_alloc_stag(struct i40iw_device *iwdev, struct i40iw_mr *iwmr)
1497 struct ib_pd *pd = iwmr->ibmr.pd;
1512 info->stag_idx = iwmr->stag >> I40IW_CQPSQ_STAG_IDX_SHIFT;
1514 info->total_len = iwmr->length;
1543 struct i40iw_mr *iwmr;
1548 iwmr = kzalloc(sizeof(*iwmr), GFP_KERNEL);
1549 if (!iwmr)
1558 iwmr->stag = stag;
1559 iwmr->ibmr.rkey = stag;
1560 iwmr->ibmr.lkey = stag;
1561 iwmr->ibmr.pd = pd;
1562 iwmr->ibmr.device = pd->device;
1563 iwpbl = &iwmr->iwpbl;
1564 iwpbl->iwmr = iwmr;
1565 iwmr->type = IW_MEMREG_TYPE_MEM;
1567 iwmr->page_cnt = max_num_sg;
1569 iwmr->length = max_num_sg * PAGE_SIZE;
1571 status = i40iw_get_pble(&iwdev->sc_dev, iwdev->pble_rsrc, palloc, iwmr->page_cnt);
1578 err_code = i40iw_hw_alloc_stag(iwdev, iwmr);
1583 return &iwmr->ibmr;
1589 kfree(iwmr);
1600 struct i40iw_mr *iwmr = to_iwmr(ibmr);
1601 struct i40iw_pbl *iwpbl = &iwmr->iwpbl;
1605 if (unlikely(iwmr->npages == iwmr->page_cnt))
1609 pbl[iwmr->npages++] = cpu_to_le64(addr);
1622 struct i40iw_mr *iwmr = to_iwmr(ibmr);
1624 iwmr->npages = 0;
1657 * @iwmr: iwarp mr pointer
1661 struct i40iw_mr *iwmr,
1664 struct i40iw_pbl *iwpbl = &iwmr->iwpbl;
1666 struct ib_pd *pd = iwmr->ibmr.pd;
1682 stag_info->stag_idx = iwmr->stag >> I40IW_CQPSQ_STAG_IDX_SHIFT;
1683 stag_info->stag_key = (u8)iwmr->stag;
1684 stag_info->total_len = iwmr->length;
1689 stag_info->page_size = iwmr->page_size;
1700 stag_info->reg_addr_pa = iwmr->pgaddrmem[0];
1738 struct i40iw_mr *iwmr;
1765 iwmr = kzalloc(sizeof(*iwmr), GFP_KERNEL);
1766 if (!iwmr) {
1771 iwpbl = &iwmr->iwpbl;
1772 iwpbl->iwmr = iwmr;
1773 iwmr->region = region;
1774 iwmr->ibmr.pd = pd;
1775 iwmr->ibmr.device = pd->device;
1777 iwmr->page_size = PAGE_SIZE;
1779 iwmr->page_size = ib_umem_find_best_pgsz(region, SZ_4K | SZ_2M,
1781 iwmr->length = region->length;
1786 iwmr->type = req.reg_type;
1787 iwmr->page_cnt = ib_umem_num_dma_blocks(region, iwmr->page_size);
1812 use_pbles = (iwmr->page_cnt != 1);
1815 err = i40iw_setup_pbles(iwdev, iwmr, use_pbles);
1820 ret = i40iw_check_mr_contiguous(palloc, iwmr->page_size);
1834 iwmr->stag = stag;
1835 iwmr->ibmr.rkey = stag;
1836 iwmr->ibmr.lkey = stag;
1838 err = i40iw_hwreg_mr(iwdev, iwmr, access);
1849 iwmr->type = req.reg_type;
1852 return &iwmr->ibmr;
1858 kfree(iwmr);
1879 struct i40iw_mr *iwmr;
1885 iwmr = kzalloc(sizeof(*iwmr), GFP_KERNEL);
1886 if (!iwmr)
1888 iwmr->ibmr.pd = pd;
1889 iwmr->ibmr.device = pd->device;
1890 iwpbl = &iwmr->iwpbl;
1891 iwpbl->iwmr = iwmr;
1892 iwmr->type = IW_MEMREG_TYPE_MEM;
1900 iwmr->stag = stag;
1901 iwmr->ibmr.rkey = stag;
1902 iwmr->ibmr.lkey = stag;
1903 iwmr->page_cnt = 1;
1904 iwmr->pgaddrmem[0] = addr;
1905 iwmr->length = size;
1906 status = i40iw_hwreg_mr(iwdev, iwmr, access);
1914 return &iwmr->ibmr;
1916 kfree(iwmr);
1934 * @iwmr: iwmr for IB's user page addresses
1937 static void i40iw_del_memlist(struct i40iw_mr *iwmr,
1940 struct i40iw_pbl *iwpbl = &iwmr->iwpbl;
1943 switch (iwmr->type) {
1973 struct i40iw_mr *iwmr = to_iwmr(ib_mr);
1977 struct i40iw_pbl *iwpbl = &iwmr->iwpbl;
1983 ib_umem_release(iwmr->region);
1985 if (iwmr->type != IW_MEMREG_TYPE_MEM) {
1987 if (iwmr->region) {
1994 i40iw_del_memlist(iwmr, ucontext);
1996 if (iwpbl->pbl_allocated && iwmr->type != IW_MEMREG_TYPE_QP)
1998 kfree(iwmr);
2025 i40iw_free_stag(iwdev, iwmr->stag);
2028 kfree(iwmr);
2218 struct i40iw_mr *iwmr = to_iwmr(reg_wr(ib_wr)->mr);
2220 struct i40iw_pble_alloc *palloc = &iwmr->iwpbl.pble_alloc;
2233 info.va = (void *)(uintptr_t)iwmr->ibmr.iova;
2234 info.total_len = iwmr->ibmr.length;
2240 if (iwmr->npages > I40IW_MIN_PAGES_PER_FMR)