diff options
Diffstat (limited to 'drivers/net/e1000e/ich8lan.c')
| -rw-r--r-- | drivers/net/e1000e/ich8lan.c | 9 | 
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/net/e1000e/ich8lan.c b/drivers/net/e1000e/ich8lan.c index 523b9716a54..d115a6d30f2 100644 --- a/drivers/net/e1000e/ich8lan.c +++ b/drivers/net/e1000e/ich8lan.c @@ -1893,12 +1893,17 @@ static s32 e1000_reset_hw_ich8lan(struct e1000_hw *hw)  		ctrl |= E1000_CTRL_PHY_RST;  	}  	ret_val = e1000_acquire_swflag_ich8lan(hw); +	/* Whether or not the swflag was acquired, we need to reset the part */  	hw_dbg(hw, "Issuing a global reset to ich8lan");  	ew32(CTRL, (ctrl | E1000_CTRL_RST));  	msleep(20); -	/* release the swflag because it is not reset by hardware reset */ -	e1000_release_swflag_ich8lan(hw); +	if (!ret_val) { +		/* release the swflag because it is not reset by +		 * hardware reset +		 */ +		e1000_release_swflag_ich8lan(hw); +	}  	ret_val = e1000e_get_auto_rd_done(hw);  	if (ret_val) {  |