mirror of
https://github.com/torvalds/linux.git
synced 2026-07-28 01:55:51 +02:00
ice: fix ice_init_link() error return preventing probe
ice_init_link() can return an error status from ice_update_link_info()
or ice_init_phy_user_cfg(), causing probe to fail.
An incorrect NVM update procedure can result in link/PHY errors, and
the recommended resolution is to update the NVM using the correct
procedure. If the driver fails probe due to link errors, the user
cannot update the NVM to recover. The link/PHY errors logged are
non-fatal: they are already annotated as 'not a fatal error if this
fails'.
Since none of the errors inside ice_init_link() should prevent probe
from completing, convert it to void and remove the error check in the
caller. All failures are already logged; callers have no meaningful
recovery path for link init errors.
Fixes: 5b246e533d ("ice: split probe into smaller functions")
Cc: stable@vger.kernel.org
Signed-off-by: Paul Greenwalt <paul.greenwalt@intel.com>
Signed-off-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Tested-by: Alexander Nowlin <alexander.nowlin@intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
This commit is contained in:
parent
2bf7744bc3
commit
eb50963868
|
|
@ -4789,16 +4789,14 @@ static void ice_init_wakeup(struct ice_pf *pf)
|
|||
device_set_wakeup_enable(ice_pf_to_dev(pf), false);
|
||||
}
|
||||
|
||||
static int ice_init_link(struct ice_pf *pf)
|
||||
static void ice_init_link(struct ice_pf *pf)
|
||||
{
|
||||
struct device *dev = ice_pf_to_dev(pf);
|
||||
int err;
|
||||
|
||||
err = ice_init_link_events(pf->hw.port_info);
|
||||
if (err) {
|
||||
if (err)
|
||||
dev_err(dev, "ice_init_link_events failed: %d\n", err);
|
||||
return err;
|
||||
}
|
||||
|
||||
/* not a fatal error if this fails */
|
||||
err = ice_init_nvm_phy_type(pf->hw.port_info);
|
||||
|
|
@ -4838,8 +4836,6 @@ static int ice_init_link(struct ice_pf *pf)
|
|||
} else {
|
||||
set_bit(ICE_FLAG_NO_MEDIA, pf->flags);
|
||||
}
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
static int ice_init_pf_sw(struct ice_pf *pf)
|
||||
|
|
@ -4982,13 +4978,11 @@ static int ice_init(struct ice_pf *pf)
|
|||
|
||||
ice_init_wakeup(pf);
|
||||
|
||||
err = ice_init_link(pf);
|
||||
if (err)
|
||||
goto err_init_link;
|
||||
ice_init_link(pf);
|
||||
|
||||
err = ice_send_version(pf);
|
||||
if (err)
|
||||
goto err_init_link;
|
||||
goto err_deinit_pf_sw;
|
||||
|
||||
ice_verify_cacheline_size(pf);
|
||||
|
||||
|
|
@ -5007,7 +5001,7 @@ static int ice_init(struct ice_pf *pf)
|
|||
|
||||
return 0;
|
||||
|
||||
err_init_link:
|
||||
err_deinit_pf_sw:
|
||||
ice_deinit_pf_sw(pf);
|
||||
err_init_pf_sw:
|
||||
ice_dealloc_vsis(pf);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user