diff options
Diffstat (limited to 'drivers/net/e1000')
-rw-r--r-- | drivers/net/e1000/e1000_main.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c index 56c7492e3e91..a373ccb308d8 100644 --- a/drivers/net/e1000/e1000_main.c +++ b/drivers/net/e1000/e1000_main.c | |||
@@ -3045,14 +3045,20 @@ void | |||
3045 | e1000_update_stats(struct e1000_adapter *adapter) | 3045 | e1000_update_stats(struct e1000_adapter *adapter) |
3046 | { | 3046 | { |
3047 | struct e1000_hw *hw = &adapter->hw; | 3047 | struct e1000_hw *hw = &adapter->hw; |
3048 | struct pci_dev *pdev = adapter->pdev; | ||
3048 | unsigned long flags; | 3049 | unsigned long flags; |
3049 | uint16_t phy_tmp; | 3050 | uint16_t phy_tmp; |
3050 | 3051 | ||
3051 | #define PHY_IDLE_ERROR_COUNT_MASK 0x00FF | 3052 | #define PHY_IDLE_ERROR_COUNT_MASK 0x00FF |
3052 | 3053 | ||
3053 | /* Prevent stats update while adapter is being reset */ | 3054 | /* |
3055 | * Prevent stats update while adapter is being reset, or if the pci | ||
3056 | * connection is down. | ||
3057 | */ | ||
3054 | if (adapter->link_speed == 0) | 3058 | if (adapter->link_speed == 0) |
3055 | return; | 3059 | return; |
3060 | if (pdev->error_state && pdev->error_state != pci_channel_io_normal) | ||
3061 | return; | ||
3056 | 3062 | ||
3057 | spin_lock_irqsave(&adapter->stats_lock, flags); | 3063 | spin_lock_irqsave(&adapter->stats_lock, flags); |
3058 | 3064 | ||