]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/net/ethernet/nvidia/forcedeth.c
forcedeth: prevent TX timeouts after reboot
[karo-tx-linux.git] / drivers / net / ethernet / nvidia / forcedeth.c
index 8b82457c1682d66827a7d459793d30a5c0b663f5..876beceaf2d7154f07d9de46bbb75fba3b1f0c43 100644 (file)
@@ -5905,11 +5905,19 @@ static int __devinit nv_probe(struct pci_dev *pci_dev, const struct pci_device_i
                goto out_error;
        }
 
+       netif_carrier_off(dev);
+
+       /* Some NICs freeze when TX pause is enabled while NIC is
+        * down, and this stays across warm reboots. The sequence
+        * below should be enough to recover from that state.
+        */
+       nv_update_pause(dev, 0);
+       nv_start_tx(dev);
+       nv_stop_tx(dev);
+
        if (id->driver_data & DEV_HAS_VLAN)
                nv_vlan_mode(dev, dev->features);
 
-       netif_carrier_off(dev);
-
        dev_info(&pci_dev->dev, "ifname %s, PHY OUI 0x%x @ %d, addr %pM\n",
                 dev->name, np->phy_oui, np->phyaddr, dev->dev_addr);