Fix an issue when firmware logging stops after devlink reload action
driver_reinit or driver reset. Fix it by restoring fw logging when
it was previously registered before these events.
Restoring fw logging in these cases was faultily removed with new
debugfs fw logging implementation.
Failure to init fw logging is not a critical error so it is safely
ignored.

Fixes: 73671c3162c8 ("ice: enable FW logging")
Reviewed-by: Przemek Kitszel <[email protected]>
Signed-off-by: Martyna Szapar-Mudlaw <[email protected]>
---
 drivers/net/ethernet/intel/ice/ice_main.c | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/drivers/net/ethernet/intel/ice/ice_main.c 
b/drivers/net/ethernet/intel/ice/ice_main.c
index a03e1819e6d5..6d6873003bcb 100644
--- a/drivers/net/ethernet/intel/ice/ice_main.c
+++ b/drivers/net/ethernet/intel/ice/ice_main.c
@@ -5151,6 +5151,13 @@ int ice_load(struct ice_pf *pf)
 
        devl_assert_locked(priv_to_devlink(pf));
 
+       if (pf->hw.fwlog_cfg.options & ICE_FWLOG_OPTION_IS_REGISTERED) {
+               err = ice_fwlog_register(&pf->hw);
+               if (err)
+                       pf->hw.fwlog_cfg.options &=
+                               ~ICE_FWLOG_OPTION_IS_REGISTERED;
+       }
+
        vsi = ice_get_main_vsi(pf);
 
        /* init channel list */
@@ -7701,6 +7708,13 @@ static void ice_rebuild(struct ice_pf *pf, enum 
ice_reset_req reset_type)
                goto err_init_ctrlq;
        }
 
+       if (hw->fwlog_cfg.options & ICE_FWLOG_OPTION_IS_REGISTERED) {
+               err = ice_fwlog_register(hw);
+               if (err)
+                       hw->fwlog_cfg.options &=
+                               ~ICE_FWLOG_OPTION_IS_REGISTERED;
+       }
+
        /* if DDP was previously loaded successfully */
        if (!ice_is_safe_mode(pf)) {
                /* reload the SW DB of filter tables */
-- 
2.47.0

Reply via email to