]> git.ipfire.org Git - thirdparty/kernel/linux.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)
committerLeon Romanovsky <leon@kernel.org>
Mon, 10 Feb 2025 08:39:25 +0000 (03:39 -0500)
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>
drivers/infiniband/hw/bnxt_re/hw_counters.c
drivers/infiniband/hw/bnxt_re/qplib_res.h

index 3ac47f4e61229e956c792a241cf2587f8d9c64e3..f039aefcaf675a01234d463297fd5ed7f8a04488 100644 (file)
@@ -348,8 +348,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 be5d907a036b63dd4a949f5f8e1d9bed29f9c705..711990232de1c91a2bcaf87912c85c363757b2b3 100644 (file)
@@ -547,6 +547,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 &