]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
RDMA/bnxt_re: Add set_func_resources support for P5/P7 adapters
authorKalesh AP <kalesh-anakkur.purayil@broadcom.com>
Wed, 6 Nov 2024 08:44:36 +0000 (00:44 -0800)
committerLeon Romanovsky <leon@kernel.org>
Tue, 12 Nov 2024 08:04:04 +0000 (03:04 -0500)
Enable set_func_resources for P5 and P7 adapters to handle
VF resource distribution. Remove setting max resources per VF
during PF initialization. This change is required for firmwares
which does not support RoCE VF resource management by NIC driver.
The code is same for all adapters now.

Reviewed-by: Stephen Shi <stephen.shi@broadcom.com>
Reviewed-by: Rukhsana Ansari <rukhsana.ansari@broadcom.com>
Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Signed-off-by: Selvin Xavier <selvin.xavier@broadcom.com>
Link: https://patch.msgid.link/1730882676-24434-4-git-send-email-selvin.xavier@broadcom.com
Signed-off-by: Leon Romanovsky <leon@kernel.org>
drivers/infiniband/hw/bnxt_re/main.c
drivers/infiniband/hw/bnxt_re/qplib_rcfw.c

index dd528dd63d537db124c2bb7ff5891e55974071ba..cb61941672f628a423bafcf8880743c7e09fb7e1 100644 (file)
@@ -291,11 +291,12 @@ static void bnxt_re_vf_res_config(struct bnxt_re_dev *rdev)
         * available at this point.
         */
        rdev->num_vfs = pci_sriov_get_totalvfs(rdev->en_dev->pdev);
-       if (!bnxt_qplib_is_chip_gen_p5_p7(rdev->chip_ctx)) {
-               bnxt_re_set_resource_limits(rdev);
-               bnxt_qplib_set_func_resources(&rdev->qplib_res, &rdev->rcfw,
-                                             &rdev->qplib_ctx);
-       }
+       if (!rdev->num_vfs)
+               return;
+
+       bnxt_re_set_resource_limits(rdev);
+       bnxt_qplib_set_func_resources(&rdev->qplib_res, &rdev->rcfw,
+                                     &rdev->qplib_ctx);
 }
 
 static void bnxt_re_shutdown(struct auxiliary_device *adev)
index 005079b037f45443dc285094d2385bad736aeba8..70729916468de2ce08c490f9fb9580b011cf459b 100644 (file)
@@ -851,10 +851,8 @@ int bnxt_qplib_init_rcfw(struct bnxt_qplib_rcfw *rcfw,
         * shall setup this area for VF. Skipping the
         * HW programming
         */
-       if (is_virtfn)
+       if (is_virtfn || bnxt_qplib_is_chip_gen_p5_p7(rcfw->res->cctx))
                goto skip_ctx_setup;
-       if (bnxt_qplib_is_chip_gen_p5_p7(rcfw->res->cctx))
-               goto config_vf_res;
 
        lvl = ctx->qpc_tbl.level;
        pgsz = bnxt_qplib_base_pg_size(&ctx->qpc_tbl);
@@ -898,13 +896,6 @@ int bnxt_qplib_init_rcfw(struct bnxt_qplib_rcfw *rcfw,
        req.number_of_srq = cpu_to_le32(ctx->srqc_tbl.max_elements);
        req.number_of_cq = cpu_to_le32(ctx->cq_tbl.max_elements);
 
-config_vf_res:
-       req.max_qp_per_vf = cpu_to_le32(ctx->vf_res.max_qp_per_vf);
-       req.max_mrw_per_vf = cpu_to_le32(ctx->vf_res.max_mrw_per_vf);
-       req.max_srq_per_vf = cpu_to_le32(ctx->vf_res.max_srq_per_vf);
-       req.max_cq_per_vf = cpu_to_le32(ctx->vf_res.max_cq_per_vf);
-       req.max_gid_per_vf = cpu_to_le32(ctx->vf_res.max_gid_per_vf);
-
 skip_ctx_setup:
        if (BNXT_RE_HW_RETX(rcfw->res->dattr->dev_cap_flags))
                flags |= CMDQ_INITIALIZE_FW_FLAGS_HW_REQUESTER_RETX_SUPPORTED;