diff -r 69056c46aa4d -r bc2d4bf9cbe5 devices/e1000e/netdev-2.6.34-ethercat.c --- a/devices/e1000e/netdev-2.6.34-ethercat.c Thu Sep 06 19:52:17 2012 +0200 +++ b/devices/e1000e/netdev-2.6.34-ethercat.c Thu Sep 06 20:22:24 2012 +0200 @@ -2892,7 +2892,7 @@ clear_bit(__E1000_DOWN, &adapter->state); - if (!adapter->ecdev) + if (!adapter->ecdev) napi_enable(&adapter->napi); if (adapter->msix_entries) @@ -2926,7 +2926,7 @@ ew32(RCTL, rctl & ~E1000_RCTL_EN); /* flush and sleep below */ - if (!adapter->ecdev) + if (!adapter->ecdev) netif_stop_queue(netdev); /* disable transmits in the hardware */ @@ -3634,7 +3634,7 @@ e1000_update_mng_vlan(adapter); if (link) { - if ((adapter->ecdev && !ecdev_get_link(adapter->ecdev)) + if ((adapter->ecdev && !ecdev_get_link(adapter->ecdev)) || (!adapter->ecdev && !netif_carrier_ok(netdev))) { bool txb2b = 1; /* update snapshot of PHY registers on LSC */ @@ -3728,7 +3728,7 @@ if (adapter->ecdev) ecdev_set_link(adapter->ecdev, 1); - else + else netif_carrier_on(netdev); if (!adapter->ecdev && !test_bit(__E1000_DOWN, &adapter->state)) @@ -3736,7 +3736,7 @@ round_jiffies(jiffies + 2 * HZ)); } } else { - if ((adapter->ecdev && ecdev_get_link(adapter->ecdev)) + if ((adapter->ecdev && ecdev_get_link(adapter->ecdev)) || (!adapter->ecdev && netif_carrier_ok(netdev))) { adapter->link_speed = 0; adapter->link_duplex = 0; @@ -3771,7 +3771,7 @@ e1000e_update_adaptive(&adapter->hw); - if ((adapter->ecdev && !ecdev_get_link(adapter->ecdev)) + if ((adapter->ecdev && !ecdev_get_link(adapter->ecdev)) || (!adapter->ecdev && !netif_carrier_ok(netdev))) { tx_pending = (e1000_desc_unused(tx_ring) + 1 < tx_ring->count); @@ -4855,7 +4855,7 @@ bool wake = false; struct net_device *netdev = pci_get_drvdata(pdev); struct e1000_adapter *adapter = netdev_priv(netdev); - + if (adapter->ecdev) return;