]> www.infradead.org Git - users/hch/configfs.git/commitdiff
ice: Fix entering Safe Mode
authorMarcin Szycik <marcin.szycik@linux.intel.com>
Tue, 24 Sep 2024 10:04:23 +0000 (12:04 +0200)
committerTony Nguyen <anthony.l.nguyen@intel.com>
Tue, 8 Oct 2024 21:08:19 +0000 (14:08 -0700)
If DDP package is missing or corrupted, the driver should enter Safe Mode.
Instead, an error is returned and probe fails.

To fix this, don't exit init if ice_init_ddp_config() returns an error.

Repro:
* Remove or rename DDP package (/lib/firmware/intel/ice/ddp/ice.pkg)
* Load ice

Fixes: cc5776fe1832 ("ice: Enable switching default Tx scheduler topology")
Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
Signed-off-by: Marcin Szycik <marcin.szycik@linux.intel.com>
Reviewed-by: Brett Creeley <brett.creeley@amd.com>
Tested-by: Pucha Himasekhar Reddy <himasekharx.reddy.pucha@intel.com> (A Contingent worker at Intel)
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
drivers/net/ethernet/intel/ice/ice_main.c

index fbab72fab79ca75e1eaa42adb9508e8a49a87b26..da1352dc26affb4edb42cdd0c7ddd198412415a3 100644 (file)
@@ -4767,14 +4767,12 @@ int ice_init_dev(struct ice_pf *pf)
        ice_init_feature_support(pf);
 
        err = ice_init_ddp_config(hw, pf);
-       if (err)
-               return err;
 
        /* if ice_init_ddp_config fails, ICE_FLAG_ADV_FEATURES bit won't be
         * set in pf->state, which will cause ice_is_safe_mode to return
         * true
         */
-       if (ice_is_safe_mode(pf)) {
+       if (err || ice_is_safe_mode(pf)) {
                /* we already got function/device capabilities but these don't
                 * reflect what the driver needs to do in safe mode. Instead of
                 * adding conditional logic everywhere to ignore these