diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/e1000e/ich8lan.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/drivers/net/e1000e/ich8lan.c b/drivers/net/e1000e/ich8lan.c index dcd5db5e34e5..dddd0b3dd21b 100644 --- a/drivers/net/e1000e/ich8lan.c +++ b/drivers/net/e1000e/ich8lan.c | |||
@@ -889,8 +889,13 @@ static void e1000_release_swflag_ich8lan(struct e1000_hw *hw) | |||
889 | u32 extcnf_ctrl; | 889 | u32 extcnf_ctrl; |
890 | 890 | ||
891 | extcnf_ctrl = er32(EXTCNF_CTRL); | 891 | extcnf_ctrl = er32(EXTCNF_CTRL); |
892 | extcnf_ctrl &= ~E1000_EXTCNF_CTRL_SWFLAG; | 892 | |
893 | ew32(EXTCNF_CTRL, extcnf_ctrl); | 893 | if (extcnf_ctrl & E1000_EXTCNF_CTRL_SWFLAG) { |
894 | extcnf_ctrl &= ~E1000_EXTCNF_CTRL_SWFLAG; | ||
895 | ew32(EXTCNF_CTRL, extcnf_ctrl); | ||
896 | } else { | ||
897 | e_dbg("Semaphore unexpectedly released by sw/fw/hw\n"); | ||
898 | } | ||
894 | 899 | ||
895 | mutex_unlock(&swflag_mutex); | 900 | mutex_unlock(&swflag_mutex); |
896 | } | 901 | } |
@@ -3066,7 +3071,7 @@ static s32 e1000_reset_hw_ich8lan(struct e1000_hw *hw) | |||
3066 | msleep(20); | 3071 | msleep(20); |
3067 | 3072 | ||
3068 | if (!ret_val) | 3073 | if (!ret_val) |
3069 | e1000_release_swflag_ich8lan(hw); | 3074 | mutex_unlock(&swflag_mutex); |
3070 | 3075 | ||
3071 | if (ctrl & E1000_CTRL_PHY_RST) { | 3076 | if (ctrl & E1000_CTRL_PHY_RST) { |
3072 | ret_val = hw->phy.ops.get_cfg_done(hw); | 3077 | ret_val = hw->phy.ops.get_cfg_done(hw); |