It was found that qed_pglueb_rbc_attn_handler() can produce a lot of
false-positive error detections on driver load/reload (especially after
crashes/recoveries) and spam the kernel log:

[    4.958275] [qed_pglueb_rbc_attn_handler:324()]ICPL error - 00d00ff0
[ 2079.146764] [qed_pglueb_rbc_attn_handler:324()]ICPL error - 00d80ff0
[ 2116.374631] [qed_pglueb_rbc_attn_handler:324()]ICPL error - 00d80ff0
[ 2135.250564] [qed_pglueb_rbc_attn_handler:324()]ICPL error - 00d80ff0
[...]

Reduce the logging level of two false-positive prone error messages from
notice to verbose on initialization (only) to not mix it with real error
attentions while debugging.

Fixes: 666db4862f2d ("qed: Revise load sequence to avoid PCI errors")
Signed-off-by: Alexander Lobakin <aloba...@marvell.com>
Signed-off-by: Igor Russkikh <irussk...@marvell.com>
Signed-off-by: Michal Kalderon <michal.kalde...@marvell.com>
---
 drivers/net/ethernet/qlogic/qed/qed_dev.c |  2 +-
 drivers/net/ethernet/qlogic/qed/qed_int.c | 50 +++++++++++++----------
 drivers/net/ethernet/qlogic/qed/qed_int.h |  4 +-
 3 files changed, 32 insertions(+), 24 deletions(-)

diff --git a/drivers/net/ethernet/qlogic/qed/qed_dev.c 
b/drivers/net/ethernet/qlogic/qed/qed_dev.c
index 9c26fde663b3..dbdac983ccde 100644
--- a/drivers/net/ethernet/qlogic/qed/qed_dev.c
+++ b/drivers/net/ethernet/qlogic/qed/qed_dev.c
@@ -3102,7 +3102,7 @@ int qed_hw_init(struct qed_dev *cdev, struct 
qed_hw_init_params *p_params)
                }
 
                /* Log and clear previous pglue_b errors if such exist */
-               qed_pglueb_rbc_attn_handler(p_hwfn, p_hwfn->p_main_ptt);
+               qed_pglueb_rbc_attn_handler(p_hwfn, p_hwfn->p_main_ptt, true);
 
                /* Enable the PF's internal FID_enable in the PXP */
                rc = qed_pglueb_set_pfid_enable(p_hwfn, p_hwfn->p_main_ptt,
diff --git a/drivers/net/ethernet/qlogic/qed/qed_int.c 
b/drivers/net/ethernet/qlogic/qed/qed_int.c
index 7e13a9d9b89c..5eec1fc6229d 100644
--- a/drivers/net/ethernet/qlogic/qed/qed_int.c
+++ b/drivers/net/ethernet/qlogic/qed/qed_int.c
@@ -257,9 +257,10 @@ static int qed_grc_attn_cb(struct qed_hwfn *p_hwfn)
 #define PGLUE_ATTENTION_ZLR_VALID              (1 << 25)
 #define PGLUE_ATTENTION_ILT_VALID              (1 << 23)
 
-int qed_pglueb_rbc_attn_handler(struct qed_hwfn *p_hwfn,
-                               struct qed_ptt *p_ptt)
+int qed_pglueb_rbc_attn_handler(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt,
+                               bool hw_init)
 {
+       char msg[256];
        u32 tmp;
 
        tmp = qed_rd(p_hwfn, p_ptt, PGLUE_B_REG_TX_ERR_WR_DETAILS2);
@@ -273,22 +274,23 @@ int qed_pglueb_rbc_attn_handler(struct qed_hwfn *p_hwfn,
                details = qed_rd(p_hwfn, p_ptt,
                                 PGLUE_B_REG_TX_ERR_WR_DETAILS);
 
-               DP_NOTICE(p_hwfn,
-                         "Illegal write by chip to [%08x:%08x] blocked.\n"
-                         "Details: %08x [PFID %02x, VFID %02x, VF_VALID 
%02x]\n"
-                         "Details2 %08x [Was_error %02x BME deassert %02x 
FID_enable deassert %02x]\n",
-                         addr_hi, addr_lo, details,
-                         (u8)GET_FIELD(details, PGLUE_ATTENTION_DETAILS_PFID),
-                         (u8)GET_FIELD(details, PGLUE_ATTENTION_DETAILS_VFID),
-                         GET_FIELD(details,
-                                   PGLUE_ATTENTION_DETAILS_VF_VALID) ? 1 : 0,
-                         tmp,
-                         GET_FIELD(tmp,
-                                   PGLUE_ATTENTION_DETAILS2_WAS_ERR) ? 1 : 0,
-                         GET_FIELD(tmp,
-                                   PGLUE_ATTENTION_DETAILS2_BME) ? 1 : 0,
-                         GET_FIELD(tmp,
-                                   PGLUE_ATTENTION_DETAILS2_FID_EN) ? 1 : 0);
+               snprintf(msg, sizeof(msg),
+                        "Illegal write by chip to [%08x:%08x] blocked.\n"
+                        "Details: %08x [PFID %02x, VFID %02x, VF_VALID %02x]\n"
+                        "Details2 %08x [Was_error %02x BME deassert %02x 
FID_enable deassert %02x]",
+                        addr_hi, addr_lo, details,
+                        (u8)GET_FIELD(details, PGLUE_ATTENTION_DETAILS_PFID),
+                        (u8)GET_FIELD(details, PGLUE_ATTENTION_DETAILS_VFID),
+                        !!GET_FIELD(details, PGLUE_ATTENTION_DETAILS_VF_VALID),
+                        tmp,
+                        !!GET_FIELD(tmp, PGLUE_ATTENTION_DETAILS2_WAS_ERR),
+                        !!GET_FIELD(tmp, PGLUE_ATTENTION_DETAILS2_BME),
+                        !!GET_FIELD(tmp, PGLUE_ATTENTION_DETAILS2_FID_EN));
+
+               if (hw_init)
+                       DP_VERBOSE(p_hwfn, NETIF_MSG_INTR, "%s\n", msg);
+               else
+                       DP_NOTICE(p_hwfn, "%s\n", msg);
        }
 
        tmp = qed_rd(p_hwfn, p_ptt, PGLUE_B_REG_TX_ERR_RD_DETAILS2);
@@ -321,8 +323,14 @@ int qed_pglueb_rbc_attn_handler(struct qed_hwfn *p_hwfn,
        }
 
        tmp = qed_rd(p_hwfn, p_ptt, PGLUE_B_REG_TX_ERR_WR_DETAILS_ICPL);
-       if (tmp & PGLUE_ATTENTION_ICPL_VALID)
-               DP_NOTICE(p_hwfn, "ICPL error - %08x\n", tmp);
+       if (tmp & PGLUE_ATTENTION_ICPL_VALID) {
+               snprintf(msg, sizeof(msg), "ICPL error - %08x", tmp);
+
+               if (hw_init)
+                       DP_VERBOSE(p_hwfn, NETIF_MSG_INTR, "%s\n", msg);
+               else
+                       DP_NOTICE(p_hwfn, "%s\n", msg);
+       }
 
        tmp = qed_rd(p_hwfn, p_ptt, PGLUE_B_REG_MASTER_ZLR_ERR_DETAILS);
        if (tmp & PGLUE_ATTENTION_ZLR_VALID) {
@@ -361,7 +369,7 @@ int qed_pglueb_rbc_attn_handler(struct qed_hwfn *p_hwfn,
 
 static int qed_pglueb_rbc_attn_cb(struct qed_hwfn *p_hwfn)
 {
-       return qed_pglueb_rbc_attn_handler(p_hwfn, p_hwfn->p_dpc_ptt);
+       return qed_pglueb_rbc_attn_handler(p_hwfn, p_hwfn->p_dpc_ptt, false);
 }
 
 static int qed_fw_assertion(struct qed_hwfn *p_hwfn)
diff --git a/drivers/net/ethernet/qlogic/qed/qed_int.h 
b/drivers/net/ethernet/qlogic/qed/qed_int.h
index e09db3386367..110169e90121 100644
--- a/drivers/net/ethernet/qlogic/qed/qed_int.h
+++ b/drivers/net/ethernet/qlogic/qed/qed_int.h
@@ -442,7 +442,7 @@ int qed_int_set_timer_res(struct qed_hwfn *p_hwfn, struct 
qed_ptt *p_ptt,
 
 #define QED_MAPPING_MEMORY_SIZE(dev)   (NUM_OF_SBS(dev))
 
-int qed_pglueb_rbc_attn_handler(struct qed_hwfn *p_hwfn,
-                               struct qed_ptt *p_ptt);
+int qed_pglueb_rbc_attn_handler(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt,
+                               bool hw_init);
 
 #endif
-- 
2.25.1

Reply via email to