]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
RDMA/bnxt_re: Support extended stats for Thor2 VF
authorAjit Khaparde <ajit.khaparde@broadcom.com>
Fri, 23 May 2025 07:59:52 +0000 (13:29 +0530)
committerLeon Romanovsky <leon@kernel.org>
Sun, 25 May 2025 10:24:21 +0000 (06:24 -0400)
The driver currently checks if the user is querying VF RoCE statistics.
It will not send the query_roce_stats_ext HWRM command if it is for a
VF. But Thor2 VF can support extended statistics.
Allow query of extended stats for Thor2 VFs.

Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
Signed-off-by: Shravya KN <shravya.k-n@broadcom.com>
Link: https://patch.msgid.link/20250523075952.1267827-1-kalesh-anakkur.purayil@broadcom.com
Reviewed-by: Damodharam Ammepalli <damodharam.ammepalli@broadcom.com>
Reviewed-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Signed-off-by: Leon Romanovsky <leon@kernel.org>
drivers/infiniband/hw/bnxt_re/qplib_fp.c
drivers/infiniband/hw/bnxt_re/qplib_sp.c

index 457eecb99f9691f3f1b7c20e23d648a1b29970ec..be34c605d5167292fbe1dbffad878f15e8ba9709 100644 (file)
@@ -1113,7 +1113,7 @@ int bnxt_qplib_create_qp(struct bnxt_qplib_res *res, struct bnxt_qplib_qp *qp)
                qp_flags |= CMDQ_CREATE_QP_QP_FLAGS_FORCE_COMPLETION;
        if (qp->wqe_mode == BNXT_QPLIB_WQE_MODE_VARIABLE)
                qp_flags |= CMDQ_CREATE_QP_QP_FLAGS_VARIABLE_SIZED_WQE_ENABLED;
-       if (_is_ext_stats_supported(res->dattr->dev_cap_flags) && !res->is_vf)
+       if (bnxt_ext_stats_supported(res->cctx, res->dattr->dev_cap_flags, res->is_vf))
                qp_flags |= CMDQ_CREATE_QP_QP_FLAGS_EXT_STATS_ENABLED;
 
        req.qp_flags = cpu_to_le32(qp_flags);
index f231e886ad9d5547edc5b25f437ab56dad93be04..9efd32a3dc55f58e5285a8a44dbfa8deb112ac17 100644 (file)
@@ -846,7 +846,12 @@ int bnxt_qplib_qext_stat(struct bnxt_qplib_rcfw *rcfw, u32 fid,
 
        req.resp_size = sbuf.size / BNXT_QPLIB_CMDQE_UNITS;
        req.resp_addr = cpu_to_le64(sbuf.dma_addr);
-       req.function_id = cpu_to_le32(fid);
+       if (bnxt_qplib_is_chip_gen_p7(rcfw->res->cctx) && rcfw->res->is_vf)
+               req.function_id =
+                       cpu_to_le32(CMDQ_QUERY_ROCE_STATS_EXT_VF_VALID |
+                                   (fid << CMDQ_QUERY_ROCE_STATS_EXT_VF_NUM_SFT));
+       else
+               req.function_id = cpu_to_le32(fid);
        req.flags = cpu_to_le16(CMDQ_QUERY_ROCE_STATS_EXT_FLAGS_FUNCTION_ID);
 
        bnxt_qplib_fill_cmdqmsg(&msg, &req, &resp, &sbuf, sizeof(req),