devices/e1000e/netdev-2.6.33-ethercat.c
changeset 2589 2b9c78543663
parent 2174 cedacf485d81
--- a/devices/e1000e/netdev-2.6.33-ethercat.c	Thu Sep 06 14:21:02 2012 +0200
+++ b/devices/e1000e/netdev-2.6.33-ethercat.c	Mon Nov 03 15:20:05 2014 +0100
@@ -2913,7 +2913,7 @@
 
 	clear_bit(__E1000_DOWN, &adapter->state);
 
-	if (!adapter->ecdev) 
+	if (!adapter->ecdev)
 		napi_enable(&adapter->napi);
 
 	if (adapter->msix_entries)
@@ -2947,7 +2947,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 */
@@ -3237,11 +3237,13 @@
 	/* From here on the code is the same as e1000e_up() */
 	clear_bit(__E1000_DOWN, &adapter->state);
 
-	napi_enable(&adapter->napi);
-
-	e1000_irq_enable(adapter);
-
-	netif_start_queue(netdev);
+	if (!adapter->ecdev) {
+		napi_enable(&adapter->napi);
+
+		e1000_irq_enable(adapter);
+
+		netif_start_queue(netdev);
+	}
 
 	/* fire a link status change interrupt to start the watchdog */
 	ew32(ICS, E1000_ICS_LSC);
@@ -3654,7 +3656,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 */
@@ -3754,7 +3756,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))
@@ -3762,7 +3764,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;
@@ -3797,8 +3799,7 @@
 
 	e1000e_update_adaptive(&adapter->hw);
 
-	if ((adapter->ecdev && !ecdev_get_link(adapter->ecdev)) 
-			|| (!adapter->ecdev && !netif_carrier_ok(netdev))) {
+	if (!adapter->ecdev && !netif_carrier_ok(netdev)) {
 		tx_pending = (e1000_desc_unused(tx_ring) + 1 <
 			       tx_ring->count);
 		if (tx_pending) {
@@ -4175,6 +4176,10 @@
 {
 	struct e1000_adapter *adapter = netdev_priv(netdev);
 
+	if (adapter->ecdev) {
+		return -EBUSY;
+	}
+
 	netif_stop_queue(netdev);
 	/*
 	 * Herbert's original patch had:
@@ -4859,7 +4864,7 @@
 	bool wake = false;
 	struct net_device *netdev = pci_get_drvdata(pdev);
 	struct e1000_adapter *adapter = netdev_priv(netdev);
-	
+
 	if (adapter->ecdev)
 		return;
 
@@ -5359,7 +5364,8 @@
 
 	adapter->ecdev = ecdev_offer(netdev,ec_poll,THIS_MODULE);
 	if (adapter->ecdev) {
-		if (ecdev_open(adapter->ecdev)) {
+		err = ecdev_open(adapter->ecdev);
+		if (err) {
 			ecdev_withdraw(adapter->ecdev);
 			goto err_register;
 		}