]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/net/ixgbe/ixgbe_main.c
ixgbe: Fix usage of netif_*_all_queues() with netif_carrier_{off|on}()
[karo-tx-linux.git] / drivers / net / ixgbe / ixgbe_main.c
index b3be579b47ed90a89565d39b125453620fbaf99d..d1f80dd88bc9ff572812f52e190d249fd1949b4f 100644 (file)
@@ -1997,6 +1997,9 @@ static int ixgbe_up_complete(struct ixgbe_adapter *adapter)
 
        ixgbe_irq_enable(adapter);
 
+       /* enable transmits */
+       netif_tx_start_all_queues(netdev);
+
        /* bring the link up in the watchdog, this could race with our first
         * link up interrupt but shouldn't be a problem */
        adapter->flags |= IXGBE_FLAG_NEED_LINK_UPDATE;
@@ -3247,7 +3250,6 @@ static void ixgbe_watchdog_task(struct work_struct *work)
                                 (FLOW_TX ? "TX" : "None"))));
 
                        netif_carrier_on(netdev);
-                       netif_tx_wake_all_queues(netdev);
                } else {
                        /* Force detection of hung controller */
                        adapter->detect_tx_hung = true;
@@ -3258,7 +3260,6 @@ static void ixgbe_watchdog_task(struct work_struct *work)
                if (netif_carrier_ok(netdev)) {
                        DPRINTK(LINK, INFO, "NIC Link is Down\n");
                        netif_carrier_off(netdev);
-                       netif_tx_stop_all_queues(netdev);
                }
        }
 
@@ -3943,7 +3944,6 @@ static int __devinit ixgbe_probe(struct pci_dev *pdev,
        }
 
        netif_carrier_off(netdev);
-       netif_tx_stop_all_queues(netdev);
 
        ixgbe_napi_add_all(adapter);
 
@@ -4041,7 +4041,7 @@ static pci_ers_result_t ixgbe_io_error_detected(struct pci_dev *pdev,
                                                 pci_channel_state_t state)
 {
        struct net_device *netdev = pci_get_drvdata(pdev);
-       struct ixgbe_adapter *adapter = netdev->priv;
+       struct ixgbe_adapter *adapter = netdev_priv(netdev);
 
        netif_device_detach(netdev);
 
@@ -4062,7 +4062,7 @@ static pci_ers_result_t ixgbe_io_error_detected(struct pci_dev *pdev,
 static pci_ers_result_t ixgbe_io_slot_reset(struct pci_dev *pdev)
 {
        struct net_device *netdev = pci_get_drvdata(pdev);
-       struct ixgbe_adapter *adapter = netdev->priv;
+       struct ixgbe_adapter *adapter = netdev_priv(netdev);
 
        if (pci_enable_device(pdev)) {
                DPRINTK(PROBE, ERR,
@@ -4090,7 +4090,7 @@ static pci_ers_result_t ixgbe_io_slot_reset(struct pci_dev *pdev)
 static void ixgbe_io_resume(struct pci_dev *pdev)
 {
        struct net_device *netdev = pci_get_drvdata(pdev);
-       struct ixgbe_adapter *adapter = netdev->priv;
+       struct ixgbe_adapter *adapter = netdev_priv(netdev);
 
        if (netif_running(netdev)) {
                if (ixgbe_up(adapter)) {