.. | .. |
---|
469 | 469 | struct bnxt_re_mr *mr = NULL; |
---|
470 | 470 | dma_addr_t dma_addr = 0; |
---|
471 | 471 | struct ib_mw *mw; |
---|
472 | | - u64 pbl_tbl; |
---|
473 | 472 | int rc; |
---|
474 | 473 | |
---|
475 | 474 | dma_addr = dma_map_single(dev, fence->va, BNXT_RE_FENCE_BYTES, |
---|
.. | .. |
---|
504 | 503 | mr->ib_mr.lkey = mr->qplib_mr.lkey; |
---|
505 | 504 | mr->qplib_mr.va = (u64)(unsigned long)fence->va; |
---|
506 | 505 | mr->qplib_mr.total_size = BNXT_RE_FENCE_BYTES; |
---|
507 | | - pbl_tbl = dma_addr; |
---|
508 | | - rc = bnxt_qplib_reg_mr(&rdev->qplib_res, &mr->qplib_mr, &pbl_tbl, |
---|
509 | | - BNXT_RE_FENCE_PBL_SIZE, false, PAGE_SIZE); |
---|
| 506 | + rc = bnxt_qplib_reg_mr(&rdev->qplib_res, &mr->qplib_mr, NULL, |
---|
| 507 | + BNXT_RE_FENCE_PBL_SIZE, PAGE_SIZE); |
---|
510 | 508 | if (rc) { |
---|
511 | 509 | ibdev_err(&rdev->ibdev, "Failed to register fence-MR\n"); |
---|
512 | 510 | goto fail; |
---|
.. | .. |
---|
3249 | 3247 | udwr.remote_qkey = gsi_sqp->qplib_qp.qkey; |
---|
3250 | 3248 | |
---|
3251 | 3249 | /* post data received in the send queue */ |
---|
3252 | | - rc = bnxt_re_post_send_shadow_qp(rdev, gsi_sqp, swr); |
---|
3253 | | - |
---|
3254 | | - return 0; |
---|
| 3250 | + return bnxt_re_post_send_shadow_qp(rdev, gsi_sqp, swr); |
---|
3255 | 3251 | } |
---|
3256 | 3252 | |
---|
3257 | 3253 | static void bnxt_re_process_res_rawqp1_wc(struct ib_wc *wc, |
---|
.. | .. |
---|
3588 | 3584 | struct bnxt_re_pd *pd = container_of(ib_pd, struct bnxt_re_pd, ib_pd); |
---|
3589 | 3585 | struct bnxt_re_dev *rdev = pd->rdev; |
---|
3590 | 3586 | struct bnxt_re_mr *mr; |
---|
3591 | | - u64 pbl = 0; |
---|
3592 | 3587 | int rc; |
---|
3593 | 3588 | |
---|
3594 | 3589 | mr = kzalloc(sizeof(*mr), GFP_KERNEL); |
---|
.. | .. |
---|
3607 | 3602 | |
---|
3608 | 3603 | mr->qplib_mr.hwq.level = PBL_LVL_MAX; |
---|
3609 | 3604 | mr->qplib_mr.total_size = -1; /* Infinte length */ |
---|
3610 | | - rc = bnxt_qplib_reg_mr(&rdev->qplib_res, &mr->qplib_mr, &pbl, 0, false, |
---|
| 3605 | + rc = bnxt_qplib_reg_mr(&rdev->qplib_res, &mr->qplib_mr, NULL, 0, |
---|
3611 | 3606 | PAGE_SIZE); |
---|
3612 | 3607 | if (rc) |
---|
3613 | 3608 | goto fail_mr; |
---|
.. | .. |
---|
3778 | 3773 | return rc; |
---|
3779 | 3774 | } |
---|
3780 | 3775 | |
---|
3781 | | -static int fill_umem_pbl_tbl(struct ib_umem *umem, u64 *pbl_tbl_orig, |
---|
3782 | | - int page_shift) |
---|
3783 | | -{ |
---|
3784 | | - u64 *pbl_tbl = pbl_tbl_orig; |
---|
3785 | | - u64 page_size = BIT_ULL(page_shift); |
---|
3786 | | - struct ib_block_iter biter; |
---|
3787 | | - |
---|
3788 | | - rdma_umem_for_each_dma_block(umem, &biter, page_size) |
---|
3789 | | - *pbl_tbl++ = rdma_block_iter_dma_address(&biter); |
---|
3790 | | - |
---|
3791 | | - return pbl_tbl - pbl_tbl_orig; |
---|
3792 | | -} |
---|
3793 | | - |
---|
3794 | 3776 | /* uverbs */ |
---|
3795 | 3777 | struct ib_mr *bnxt_re_reg_user_mr(struct ib_pd *ib_pd, u64 start, u64 length, |
---|
3796 | 3778 | u64 virt_addr, int mr_access_flags, |
---|
.. | .. |
---|
3800 | 3782 | struct bnxt_re_dev *rdev = pd->rdev; |
---|
3801 | 3783 | struct bnxt_re_mr *mr; |
---|
3802 | 3784 | struct ib_umem *umem; |
---|
3803 | | - u64 *pbl_tbl = NULL; |
---|
3804 | 3785 | unsigned long page_size; |
---|
3805 | 3786 | int umem_pgs, rc; |
---|
3806 | 3787 | |
---|
.. | .. |
---|
3854 | 3835 | } |
---|
3855 | 3836 | |
---|
3856 | 3837 | umem_pgs = ib_umem_num_dma_blocks(umem, page_size); |
---|
3857 | | - pbl_tbl = kcalloc(umem_pgs, sizeof(*pbl_tbl), GFP_KERNEL); |
---|
3858 | | - if (!pbl_tbl) { |
---|
3859 | | - rc = -ENOMEM; |
---|
3860 | | - goto free_umem; |
---|
3861 | | - } |
---|
3862 | | - |
---|
3863 | | - /* Map umem buf ptrs to the PBL */ |
---|
3864 | | - umem_pgs = fill_umem_pbl_tbl(umem, pbl_tbl, order_base_2(page_size)); |
---|
3865 | | - rc = bnxt_qplib_reg_mr(&rdev->qplib_res, &mr->qplib_mr, pbl_tbl, |
---|
3866 | | - umem_pgs, false, page_size); |
---|
| 3838 | + rc = bnxt_qplib_reg_mr(&rdev->qplib_res, &mr->qplib_mr, umem, |
---|
| 3839 | + umem_pgs, page_size); |
---|
3867 | 3840 | if (rc) { |
---|
3868 | 3841 | ibdev_err(&rdev->ibdev, "Failed to register user MR"); |
---|
3869 | | - goto fail; |
---|
| 3842 | + goto free_umem; |
---|
3870 | 3843 | } |
---|
3871 | | - |
---|
3872 | | - kfree(pbl_tbl); |
---|
3873 | 3844 | |
---|
3874 | 3845 | mr->ib_mr.lkey = mr->qplib_mr.lkey; |
---|
3875 | 3846 | mr->ib_mr.rkey = mr->qplib_mr.lkey; |
---|
3876 | 3847 | atomic_inc(&rdev->mr_count); |
---|
3877 | 3848 | |
---|
3878 | 3849 | return &mr->ib_mr; |
---|
3879 | | -fail: |
---|
3880 | | - kfree(pbl_tbl); |
---|
3881 | 3850 | free_umem: |
---|
3882 | 3851 | ib_umem_release(umem); |
---|
3883 | 3852 | free_mrw: |
---|