net: dont update dev->trans_start in 10GB drivers
[pandora-kernel.git] / drivers / net / ixgb / ixgb_main.c
index 4b0ea66..6eb7f37 100644 (file)
@@ -266,6 +266,8 @@ ixgb_up(struct ixgb_adapter *adapter)
        napi_enable(&adapter->napi);
        ixgb_irq_enable(adapter);
 
+       netif_wake_queue(netdev);
+
        mod_timer(&adapter->watchdog_timer, jiffies);
 
        return 0;
@@ -365,12 +367,12 @@ ixgb_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
        if (err)
                return err;
 
-       if (!(err = pci_set_dma_mask(pdev, DMA_64BIT_MASK)) &&
-           !(err = pci_set_consistent_dma_mask(pdev, DMA_64BIT_MASK))) {
+       if (!(err = pci_set_dma_mask(pdev, DMA_BIT_MASK(64))) &&
+           !(err = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(64)))) {
                pci_using_dac = 1;
        } else {
-               if ((err = pci_set_dma_mask(pdev, DMA_32BIT_MASK)) ||
-                   (err = pci_set_consistent_dma_mask(pdev, DMA_32BIT_MASK))) {
+               if ((err = pci_set_dma_mask(pdev, DMA_BIT_MASK(32))) ||
+                   (err = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(32)))) {
                        printk(KERN_ERR
                         "ixgb: No usable DMA configuration, aborting\n");
                        goto err_dma_mask;
@@ -471,10 +473,8 @@ ixgb_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
        if (err)
                goto err_register;
 
-       /* we're going to reset, so assume we have no link for now */
-
+       /* carrier off reporting is important to ethtool even BEFORE open */
        netif_carrier_off(netdev);
-       netif_stop_queue(netdev);
 
        DPRINTK(PROBE, INFO, "Intel(R) PRO/10GbE Network Connection\n");
        ixgb_check_options(adapter);
@@ -592,6 +592,8 @@ ixgb_open(struct net_device *netdev)
        if (err)
                goto err_setup_tx;
 
+       netif_carrier_off(netdev);
+
        /* allocate receive descriptors */
 
        err = ixgb_setup_rx_resources(adapter);
@@ -602,6 +604,8 @@ ixgb_open(struct net_device *netdev)
        if (err)
                goto err_up;
 
+       netif_start_queue(netdev);
+
        return 0;
 
 err_up:
@@ -1116,7 +1120,6 @@ ixgb_watchdog(unsigned long data)
                        adapter->link_speed = 10000;
                        adapter->link_duplex = FULL_DUPLEX;
                        netif_carrier_on(netdev);
-                       netif_wake_queue(netdev);
                }
        } else {
                if (netif_carrier_ok(netdev)) {
@@ -1125,8 +1128,6 @@ ixgb_watchdog(unsigned long data)
                        printk(KERN_INFO "ixgb: %s NIC Link is Down\n",
                               netdev->name);
                        netif_carrier_off(netdev);
-                       netif_stop_queue(netdev);
-
                }
        }
 
@@ -1139,6 +1140,8 @@ ixgb_watchdog(unsigned long data)
                         * to get done, so reset controller to flush Tx.
                         * (Do the reset outside of interrupt context). */
                        schedule_work(&adapter->tx_timeout_task);
+                       /* return immediately since reset is imminent */
+                       return;
                }
        }
 
@@ -1485,7 +1488,6 @@ ixgb_xmit_frame(struct sk_buff *skb, struct net_device *netdev)
 
        if (count) {
                ixgb_tx_queue(adapter, count, vlan_id, tx_flags);
-               netdev->trans_start = jiffies;
                /* Make sure there is space in the ring for the next send. */
                ixgb_maybe_stop_tx(netdev, &adapter->tx_ring, DESC_NEEDED);