Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/next-queue
Jeff Kirsher says: ==================== Intel Wired LAN Driver Updates 2015-03-20 This series contains updates to ixgb, e1000e, igb and igbvf. Eliezer and Todd provide patches to fix a potential issue found during code inspection. When bringing down an interface netif_carrier_off() should be one of the first things we do, since this will prevent the stack from queueing more packets to this interface. Yanir provides a fix for e1000e that was found in validating i219, where the call to e1000e_write_protect_nvm_ich8lan() is no longer supported in newer hardware. Access to these registers causes a system freeze in early steppings and is ignored in later steppings. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
df814d96ed
|
@ -4084,6 +4084,8 @@ void e1000e_down(struct e1000_adapter *adapter, bool reset)
|
||||||
*/
|
*/
|
||||||
set_bit(__E1000_DOWN, &adapter->state);
|
set_bit(__E1000_DOWN, &adapter->state);
|
||||||
|
|
||||||
|
netif_carrier_off(netdev);
|
||||||
|
|
||||||
/* disable receives in the hardware */
|
/* disable receives in the hardware */
|
||||||
rctl = er32(RCTL);
|
rctl = er32(RCTL);
|
||||||
if (!(adapter->flags2 & FLAG2_NO_DISABLE_RX))
|
if (!(adapter->flags2 & FLAG2_NO_DISABLE_RX))
|
||||||
|
@ -4108,8 +4110,6 @@ void e1000e_down(struct e1000_adapter *adapter, bool reset)
|
||||||
del_timer_sync(&adapter->watchdog_timer);
|
del_timer_sync(&adapter->watchdog_timer);
|
||||||
del_timer_sync(&adapter->phy_info_timer);
|
del_timer_sync(&adapter->phy_info_timer);
|
||||||
|
|
||||||
netif_carrier_off(netdev);
|
|
||||||
|
|
||||||
spin_lock(&adapter->stats64_lock);
|
spin_lock(&adapter->stats64_lock);
|
||||||
e1000e_update_stats(adapter);
|
e1000e_update_stats(adapter);
|
||||||
spin_unlock(&adapter->stats64_lock);
|
spin_unlock(&adapter->stats64_lock);
|
||||||
|
@ -6874,7 +6874,8 @@ static int e1000_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
|
||||||
goto err_hw_init;
|
goto err_hw_init;
|
||||||
|
|
||||||
if ((adapter->flags & FLAG_IS_ICH) &&
|
if ((adapter->flags & FLAG_IS_ICH) &&
|
||||||
(adapter->flags & FLAG_READ_ONLY_NVM))
|
(adapter->flags & FLAG_READ_ONLY_NVM) &&
|
||||||
|
(hw->mac.type < e1000_pch_spt))
|
||||||
e1000e_write_protect_nvm_ich8lan(&adapter->hw);
|
e1000e_write_protect_nvm_ich8lan(&adapter->hw);
|
||||||
|
|
||||||
hw->mac.ops.get_bus_info(&adapter->hw);
|
hw->mac.ops.get_bus_info(&adapter->hw);
|
||||||
|
|
|
@ -1776,6 +1776,7 @@ void igb_down(struct igb_adapter *adapter)
|
||||||
wr32(E1000_RCTL, rctl & ~E1000_RCTL_EN);
|
wr32(E1000_RCTL, rctl & ~E1000_RCTL_EN);
|
||||||
/* flush and sleep below */
|
/* flush and sleep below */
|
||||||
|
|
||||||
|
netif_carrier_off(netdev);
|
||||||
netif_tx_stop_all_queues(netdev);
|
netif_tx_stop_all_queues(netdev);
|
||||||
|
|
||||||
/* disable transmits in the hardware */
|
/* disable transmits in the hardware */
|
||||||
|
@ -1797,12 +1798,9 @@ void igb_down(struct igb_adapter *adapter)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
del_timer_sync(&adapter->watchdog_timer);
|
del_timer_sync(&adapter->watchdog_timer);
|
||||||
del_timer_sync(&adapter->phy_info_timer);
|
del_timer_sync(&adapter->phy_info_timer);
|
||||||
|
|
||||||
netif_carrier_off(netdev);
|
|
||||||
|
|
||||||
/* record the stats before reset*/
|
/* record the stats before reset*/
|
||||||
spin_lock(&adapter->stats64_lock);
|
spin_lock(&adapter->stats64_lock);
|
||||||
igb_update_stats(adapter, &adapter->stats64);
|
igb_update_stats(adapter, &adapter->stats64);
|
||||||
|
|
|
@ -1519,6 +1519,7 @@ void igbvf_down(struct igbvf_adapter *adapter)
|
||||||
rxdctl = er32(RXDCTL(0));
|
rxdctl = er32(RXDCTL(0));
|
||||||
ew32(RXDCTL(0), rxdctl & ~E1000_RXDCTL_QUEUE_ENABLE);
|
ew32(RXDCTL(0), rxdctl & ~E1000_RXDCTL_QUEUE_ENABLE);
|
||||||
|
|
||||||
|
netif_carrier_off(netdev);
|
||||||
netif_stop_queue(netdev);
|
netif_stop_queue(netdev);
|
||||||
|
|
||||||
/* disable transmits in the hardware */
|
/* disable transmits in the hardware */
|
||||||
|
@ -1535,8 +1536,6 @@ void igbvf_down(struct igbvf_adapter *adapter)
|
||||||
|
|
||||||
del_timer_sync(&adapter->watchdog_timer);
|
del_timer_sync(&adapter->watchdog_timer);
|
||||||
|
|
||||||
netif_carrier_off(netdev);
|
|
||||||
|
|
||||||
/* record the stats before reset*/
|
/* record the stats before reset*/
|
||||||
igbvf_update_stats(adapter);
|
igbvf_update_stats(adapter);
|
||||||
|
|
||||||
|
|
|
@ -285,6 +285,8 @@ ixgb_down(struct ixgb_adapter *adapter, bool kill_watchdog)
|
||||||
/* prevent the interrupt handler from restarting watchdog */
|
/* prevent the interrupt handler from restarting watchdog */
|
||||||
set_bit(__IXGB_DOWN, &adapter->flags);
|
set_bit(__IXGB_DOWN, &adapter->flags);
|
||||||
|
|
||||||
|
netif_carrier_off(netdev);
|
||||||
|
|
||||||
napi_disable(&adapter->napi);
|
napi_disable(&adapter->napi);
|
||||||
/* waiting for NAPI to complete can re-enable interrupts */
|
/* waiting for NAPI to complete can re-enable interrupts */
|
||||||
ixgb_irq_disable(adapter);
|
ixgb_irq_disable(adapter);
|
||||||
|
@ -298,7 +300,6 @@ ixgb_down(struct ixgb_adapter *adapter, bool kill_watchdog)
|
||||||
|
|
||||||
adapter->link_speed = 0;
|
adapter->link_speed = 0;
|
||||||
adapter->link_duplex = 0;
|
adapter->link_duplex = 0;
|
||||||
netif_carrier_off(netdev);
|
|
||||||
netif_stop_queue(netdev);
|
netif_stop_queue(netdev);
|
||||||
|
|
||||||
ixgb_reset(adapter);
|
ixgb_reset(adapter);
|
||||||
|
|
Loading…
Reference in New Issue