|
|
@@ -4208,7 +4208,7 @@ void e1000e_up(struct e1000_adapter *adapter)
|
|
|
e1000_configure_msix(adapter);
|
|
|
e1000_irq_enable(adapter);
|
|
|
|
|
|
- netif_start_queue(adapter->netdev);
|
|
|
+ /* Tx queue started by watchdog timer when link is up */
|
|
|
|
|
|
e1000e_trigger_lsc(adapter);
|
|
|
}
|
|
|
@@ -4584,6 +4584,7 @@ int e1000e_open(struct net_device *netdev)
|
|
|
pm_runtime_get_sync(&pdev->dev);
|
|
|
|
|
|
netif_carrier_off(netdev);
|
|
|
+ netif_stop_queue(netdev);
|
|
|
|
|
|
/* allocate transmit descriptors */
|
|
|
err = e1000e_setup_tx_resources(adapter->tx_ring);
|
|
|
@@ -4644,7 +4645,6 @@ int e1000e_open(struct net_device *netdev)
|
|
|
e1000_irq_enable(adapter);
|
|
|
|
|
|
adapter->tx_hang_recheck = false;
|
|
|
- netif_start_queue(netdev);
|
|
|
|
|
|
hw->mac.get_link_status = true;
|
|
|
pm_runtime_put(&pdev->dev);
|
|
|
@@ -5266,6 +5266,7 @@ static void e1000_watchdog_task(struct work_struct *work)
|
|
|
if (phy->ops.cfg_on_link_up)
|
|
|
phy->ops.cfg_on_link_up(hw);
|
|
|
|
|
|
+ netif_wake_queue(netdev);
|
|
|
netif_carrier_on(netdev);
|
|
|
|
|
|
if (!test_bit(__E1000_DOWN, &adapter->state))
|
|
|
@@ -5279,6 +5280,7 @@ static void e1000_watchdog_task(struct work_struct *work)
|
|
|
/* Link status message must follow this format */
|
|
|
pr_info("%s NIC Link is Down\n", adapter->netdev->name);
|
|
|
netif_carrier_off(netdev);
|
|
|
+ netif_stop_queue(netdev);
|
|
|
if (!test_bit(__E1000_DOWN, &adapter->state))
|
|
|
mod_timer(&adapter->phy_info_timer,
|
|
|
round_jiffies(jiffies + 2 * HZ));
|