e1000: fix virtualization bug

a recent fix to e1000 (commit 15b2bee2) caused KVM/QEMU/VMware based
virtualized e1000 interfaces to begin failing when resetting.

This is because the driver in a virtual environment doesn't
get to run instructions *AT ALL* when an interrupt is asserted.
The interrupt code runs immediately and this recent bug fix
allows an interrupt to be possible when the interrupt handler
will reject it (due to the new code), when being called from
any path in the driver that holds the E1000_RESETTING flag.

the driver should use the __E1000_DOWN flag instead of the
__E1000_RESETTING flag to prevent interrupt execution
while reconfiguring the hardware.

Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by Jesse Brandeburg and committed by David S. Miller e151a60a 815bcc27

+1 -1
+1 -1
drivers/net/e1000/e1000_main.c
··· 3738 3738 struct e1000_hw *hw = &adapter->hw; 3739 3739 u32 rctl, icr = er32(ICR); 3740 3740 3741 - if (unlikely((!icr) || test_bit(__E1000_RESETTING, &adapter->flags))) 3741 + if (unlikely((!icr) || test_bit(__E1000_DOWN, &adapter->flags))) 3742 3742 return IRQ_NONE; /* Not our interrupt */ 3743 3743 3744 3744 /* IMS will not auto-mask if INT_ASSERTED is not set, and if it is