e1000e: remove failed request for sw/fw/hw flag
authorBruce Allan <bruce.w.allan@intel.com>
Tue, 23 Sep 2008 22:46:38 +0000 (15:46 -0700)
committerJeff Garzik <jgarzik@redhat.com>
Thu, 25 Sep 2008 00:48:51 +0000 (20:48 -0400)
When the driver fails to acquire the control flag used to serialize
NVM and PHY accesses between the driver, firmware and hardware, remove the
request for the flag otherwise the hardware might grant the flag when it
becomes available but the driver will not release the flag.  This could
cause the firmware to prevent the driver getting the flag for all future
attempts.

Signed-off-by: Bruce Allan <bruce.w.allan@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
drivers/net/e1000e/ich8lan.c

index 019b9c0bcdcb9a950bf234002a5da3a73157ef9c..692251b60915999e79654d981401e3e2b69b2ffb 100644 (file)
@@ -398,6 +398,8 @@ static s32 e1000_acquire_swflag_ich8lan(struct e1000_hw *hw)
 
        if (!timeout) {
                hw_dbg(hw, "FW or HW has locked the resource for too long.\n");
+               extcnf_ctrl &= ~E1000_EXTCNF_CTRL_SWFLAG;
+               ew32(EXTCNF_CTRL, extcnf_ctrl);
                return -E1000_ERR_CONFIG;
        }