]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
RDMA/bnxt_re: Fix the statistics for Gen P7 VF
authorSelvin Xavier <selvin.xavier@broadcom.com>
Tue, 4 Feb 2025 08:21:25 +0000 (00:21 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 7 Mar 2025 17:25:26 +0000 (18:25 +0100)
[ Upstream commit 8238c7bd84209c8216b1381ab0dbe6db9e203769 ]

Gen P7 VF support the extended stats and is prevented
by a VF check. Fix the check to issue the FW command
for GenP7 VFs also.

Fixes: 1801d87b3598 ("RDMA/bnxt_re: Support new 5760X P7 devices")
Signed-off-by: Selvin Xavier <selvin.xavier@broadcom.com>
Link: https://patch.msgid.link/1738657285-23968-5-git-send-email-selvin.xavier@broadcom.com
Signed-off-by: Leon Romanovsky <leon@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/infiniband/hw/bnxt_re/hw_counters.c
drivers/infiniband/hw/bnxt_re/qplib_res.h

index 656c150e38e6f83c64e93efb4898adef15936035..f51adb0a97e6670c512d728356beb334b1e348a2 100644 (file)
@@ -357,8 +357,8 @@ int bnxt_re_ib_get_hw_stats(struct ib_device *ibdev,
                        goto done;
                }
                bnxt_re_copy_err_stats(rdev, stats, err_s);
-               if (_is_ext_stats_supported(rdev->dev_attr->dev_cap_flags) &&
-                   !rdev->is_virtfn) {
+               if (bnxt_ext_stats_supported(rdev->chip_ctx, rdev->dev_attr->dev_cap_flags,
+                                            rdev->is_virtfn)) {
                        rc = bnxt_re_get_ext_stat(rdev, stats);
                        if (rc) {
                                clear_bit(BNXT_RE_FLAG_ISSUE_ROCE_STATS,
index 0bef58bd44e77aada537129d78ba5f34c4df176e..b40cff8252bc4d01335b9d64ca5eaf0ec1d928b2 100644 (file)
@@ -544,6 +544,14 @@ static inline bool _is_ext_stats_supported(u16 dev_cap_flags)
                CREQ_QUERY_FUNC_RESP_SB_EXT_STATS;
 }
 
+static inline int bnxt_ext_stats_supported(struct bnxt_qplib_chip_ctx *ctx,
+                                          u16 flags, bool virtfn)
+{
+       /* ext stats supported if cap flag is set AND is a PF OR a Thor2 VF */
+       return (_is_ext_stats_supported(flags) &&
+               ((virtfn && bnxt_qplib_is_chip_gen_p7(ctx)) || (!virtfn)));
+}
+
 static inline bool _is_hw_retx_supported(u16 dev_cap_flags)
 {
        return dev_cap_flags &