If DDP package is missing or corrupted, the driver should enter Safe Mode. Instead, an error is returned and probe fails.
Don't check return value of ice_init_ddp_config() to fix this. Change ice_init_ddp_config() type to void, as now its return is never checked. 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.kits...@intel.com> Signed-off-by: Marcin Szycik <marcin.szy...@linux.intel.com> --- v2: Change ice_init_ddp_config() type to void --- drivers/net/ethernet/intel/ice/ice_main.c | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/drivers/net/ethernet/intel/ice/ice_main.c b/drivers/net/ethernet/intel/ice/ice_main.c index 0f5c9d347806..aeebf4ae25ae 100644 --- a/drivers/net/ethernet/intel/ice/ice_main.c +++ b/drivers/net/ethernet/intel/ice/ice_main.c @@ -4548,34 +4548,27 @@ ice_init_tx_topology(struct ice_hw *hw, const struct firmware *firmware) * * This function loads DDP file from the disk, then initializes Tx * topology. At the end DDP package is loaded on the card. - * - * Return: zero when init was successful, negative values otherwise. */ -static int ice_init_ddp_config(struct ice_hw *hw, struct ice_pf *pf) +static void ice_init_ddp_config(struct ice_hw *hw, struct ice_pf *pf) { struct device *dev = ice_pf_to_dev(pf); const struct firmware *firmware = NULL; int err; err = ice_request_fw(pf, &firmware); - if (err) { + if (err) dev_err(dev, "Fail during requesting FW: %d\n", err); - return err; - } err = ice_init_tx_topology(hw, firmware); if (err) { dev_err(dev, "Fail during initialization of Tx topology: %d\n", err); release_firmware(firmware); - return err; } /* Download firmware to device */ ice_load_pkg(firmware, pf); release_firmware(firmware); - - return 0; } /** @@ -4748,9 +4741,7 @@ int ice_init_dev(struct ice_pf *pf) ice_init_feature_support(pf); - err = ice_init_ddp_config(hw, pf); - if (err) - return err; + ice_init_ddp_config(hw, pf); /* 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 -- 2.45.0