RDMA/bnxt_re: Fix max_qp count for virtual functions
authorKalesh AP <kalesh-anakkur.purayil@broadcom.com>
Thu, 3 Aug 2023 08:45:21 +0000 (01:45 -0700)
committerLeon Romanovsky <leon@kernel.org>
Mon, 7 Aug 2023 13:39:42 +0000 (16:39 +0300)
Driver has not accounted QP1 for virtual functions
when fetching device attributes and hence max_qp
count is one less than active_qp count. Fixed driver
so that it counts QP1 for virtual functions as well
while fetching device attributes

Fixes: ccd9d0d3dffc ("RDMA/bnxt_re: Enable RoCE on virtual functions")
Signed-off-by: Saravanan Vajravel <saravanan.vajravel@broadcom.com>
Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Signed-off-by: Selvin Xavier <selvin.xavier@broadcom.com>
Link: https://lore.kernel.org/r/1691052326-32143-2-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_sp.c
drivers/infiniband/hw/bnxt_re/qplib_sp.h

index d658e6798bbfdd1b2d2e887e2567d33693dc0012..bbda694e9a76a0143a5ac5c9416a4cc4d06f0046 100644 (file)
@@ -1152,8 +1152,7 @@ static int bnxt_re_alloc_res(struct bnxt_re_dev *rdev)
 
        /* Configure and allocate resources for qplib */
        rdev->qplib_res.rcfw = &rdev->rcfw;
-       rc = bnxt_qplib_get_dev_attr(&rdev->rcfw, &rdev->dev_attr,
-                                    rdev->is_virtfn);
+       rc = bnxt_qplib_get_dev_attr(&rdev->rcfw, &rdev->dev_attr);
        if (rc)
                goto fail;
 
@@ -1531,8 +1530,7 @@ static int bnxt_re_dev_init(struct bnxt_re_dev *rdev, u8 wqe_mode)
                        rdev->pacing.dbr_pacing = false;
                }
        }
-       rc = bnxt_qplib_get_dev_attr(&rdev->rcfw, &rdev->dev_attr,
-                                    rdev->is_virtfn);
+       rc = bnxt_qplib_get_dev_attr(&rdev->rcfw, &rdev->dev_attr);
        if (rc)
                goto disable_rcfw;
 
index 7e57faab4f782da72691a17da2b585143989bcff..b77928ac0217d8a494d58317f2e6a4b477018856 100644 (file)
@@ -89,7 +89,7 @@ static void bnxt_qplib_query_version(struct bnxt_qplib_rcfw *rcfw,
 }
 
 int bnxt_qplib_get_dev_attr(struct bnxt_qplib_rcfw *rcfw,
-                           struct bnxt_qplib_dev_attr *attr, bool vf)
+                           struct bnxt_qplib_dev_attr *attr)
 {
        struct creq_query_func_resp resp = {};
        struct bnxt_qplib_cmdqmsg msg = {};
@@ -121,9 +121,8 @@ int bnxt_qplib_get_dev_attr(struct bnxt_qplib_rcfw *rcfw,
 
        /* Extract the context from the side buffer */
        attr->max_qp = le32_to_cpu(sb->max_qp);
-       /* max_qp value reported by FW for PF doesn't include the QP1 for PF */
-       if (!vf)
-               attr->max_qp += 1;
+       /* max_qp value reported by FW doesn't include the QP1 */
+       attr->max_qp += 1;
        attr->max_qp_rd_atom =
                sb->max_qp_rd_atom > BNXT_QPLIB_MAX_OUT_RD_ATOM ?
                BNXT_QPLIB_MAX_OUT_RD_ATOM : sb->max_qp_rd_atom;
index 264ef3cedc45b0e3e1b6847b03fc177e62a04505..d33c78b96217a8c76cd603d489328afd85937c69 100644 (file)
@@ -322,7 +322,7 @@ int bnxt_qplib_update_sgid(struct bnxt_qplib_sgid_tbl *sgid_tbl,
                           struct bnxt_qplib_gid *gid, u16 gid_idx,
                           const u8 *smac);
 int bnxt_qplib_get_dev_attr(struct bnxt_qplib_rcfw *rcfw,
-                           struct bnxt_qplib_dev_attr *attr, bool vf);
+                           struct bnxt_qplib_dev_attr *attr);
 int bnxt_qplib_set_func_resources(struct bnxt_qplib_res *res,
                                  struct bnxt_qplib_rcfw *rcfw,
                                  struct bnxt_qplib_ctx *ctx);