|
@@ -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) {
|