devices/e1000/e1000_main-2.6.24-ethercat.c
changeset 2589 2b9c78543663
parent 2050 a3e59f2a8589
--- a/devices/e1000/e1000_main-2.6.24-ethercat.c	Thu Sep 06 14:21:02 2012 +0200
+++ b/devices/e1000/e1000_main-2.6.24-ethercat.c	Mon Nov 03 15:20:05 2014 +0100
@@ -1177,7 +1177,8 @@
 	// offer device to EtherCAT master module
 	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;
 		}
@@ -1479,7 +1480,9 @@
 	clear_bit(__E1000_DOWN, &adapter->flags);
 
 #ifdef CONFIG_E1000_NAPI
-	napi_enable(&adapter->napi);
+	if (!adapter->ecdev) {
+		napi_enable(&adapter->napi);
+	}
 #endif
 
 	e1000_irq_enable(adapter);
@@ -2402,7 +2405,7 @@
 		/* No need to loop, because 82542 supports only 1 queue */
 		struct e1000_rx_ring *ring = &adapter->rx_ring[0];
 		e1000_configure_rx(adapter);
-		if (adapter->ecdev) { 
+		if (adapter->ecdev) {
 			/* fill rx ring completely! */
 			adapter->alloc_rx_buf(adapter, ring, ring->count);
 		} else {
@@ -3290,6 +3293,10 @@
 	struct e1000_adapter *adapter = netdev_priv(netdev);
 	struct e1000_tx_ring *tx_ring = adapter->tx_ring;
 
+	if (adapter->ecdev) {
+		return -EBUSY;
+	}
+
 	netif_stop_queue(netdev);
 	/* Herbert's original patch had:
 	 *  smp_mb__after_netif_stop_queue();
@@ -3849,7 +3856,7 @@
 	struct e1000_adapter *adapter = netdev_priv(netdev);
 	struct e1000_hw *hw = &adapter->hw;
 	int i;
-	
+
 	if (adapter->ecdev) {
 #ifdef CONFIG_E1000_NAPI
 		int ec_work_done = 0;
@@ -4013,7 +4020,7 @@
 			atomic_inc(&adapter->irq_sem);
 			E1000_WRITE_REG(hw, IMC, ~0);
 		}
-	
+
 		adapter->total_tx_bytes = 0;
 		adapter->total_rx_bytes = 0;
 		adapter->total_tx_packets = 0;