|
@@ -1325,7 +1325,10 @@ e1000_sw_init(struct e1000_adapter *adapter)
|
|
spin_lock_init(&adapter->tx_queue_lock);
|
|
spin_lock_init(&adapter->tx_queue_lock);
|
|
#endif
|
|
#endif
|
|
|
|
|
|
- atomic_set(&adapter->irq_sem, 1);
|
|
|
|
|
|
+ /* Explicitly disable IRQ since the NIC can be in any state. */
|
|
|
|
+ atomic_set(&adapter->irq_sem, 0);
|
|
|
|
+ e1000_irq_disable(adapter);
|
|
|
|
+
|
|
spin_lock_init(&adapter->stats_lock);
|
|
spin_lock_init(&adapter->stats_lock);
|
|
|
|
|
|
set_bit(__E1000_DOWN, &adapter->flags);
|
|
set_bit(__E1000_DOWN, &adapter->flags);
|
|
@@ -1431,6 +1434,10 @@ e1000_open(struct net_device *netdev)
|
|
/* From here on the code is the same as e1000_up() */
|
|
/* From here on the code is the same as e1000_up() */
|
|
clear_bit(__E1000_DOWN, &adapter->flags);
|
|
clear_bit(__E1000_DOWN, &adapter->flags);
|
|
|
|
|
|
|
|
+#ifdef CONFIG_E1000_NAPI
|
|
|
|
+ netif_poll_enable(netdev);
|
|
|
|
+#endif
|
|
|
|
+
|
|
e1000_irq_enable(adapter);
|
|
e1000_irq_enable(adapter);
|
|
|
|
|
|
/* fire a link status change interrupt to start the watchdog */
|
|
/* fire a link status change interrupt to start the watchdog */
|