diff options
Diffstat (limited to 'drivers/net/ethernet/intel/igc/igc_base.c')
| -rw-r--r-- | drivers/net/ethernet/intel/igc/igc_base.c | 6 | 
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/net/ethernet/intel/igc/igc_base.c b/drivers/net/ethernet/intel/igc/igc_base.c index 9fae8bdec2a7..1613b562d17c 100644 --- a/drivers/net/ethernet/intel/igc/igc_base.c +++ b/drivers/net/ethernet/intel/igc/igc_base.c @@ -68,6 +68,10 @@ static s32 igc_init_nvm_params_base(struct igc_hw *hw)  	u32 eecd = rd32(IGC_EECD);  	u16 size; +	/* failed to read reg and got all F's */ +	if (!(~eecd)) +		return -ENXIO; +  	size = FIELD_GET(IGC_EECD_SIZE_EX_MASK, eecd);  	/* Added to a constant, "size" becomes the left-shift value @@ -221,6 +225,8 @@ static s32 igc_get_invariants_base(struct igc_hw *hw)  	/* NVM initialization */  	ret_val = igc_init_nvm_params_base(hw); +	if (ret_val) +		goto out;  	switch (hw->mac.type) {  	case igc_i225:  		ret_val = igc_init_nvm_params_i225(hw);  | 
