diff --git a/devices/8139too-2.6.13-ethercat.c b/devices/8139too-2.6.13-ethercat.c
index b6c946785853d9a3cdccb0af0632c8742d663f59..bb9933b44c1bcb3832c9ebcfc9b0ad1c395ee711 100644
--- a/devices/8139too-2.6.13-ethercat.c
+++ b/devices/8139too-2.6.13-ethercat.c
@@ -1969,11 +1969,12 @@ static void rtl8139_tx_interrupt (struct net_device *dev,
 	}
 #endif /* RTL8139_NDEBUG */
 
-	if (dev != rtl_ec_net_dev) {
-		/* only wake the queue if we did work, and the queue is stopped */
-		if (tp->dirty_tx != dirty_tx) {
-			tp->dirty_tx = dirty_tx;
-			mb();
+	/* only wake the queue if we did work, and the queue is stopped */
+	if (tp->dirty_tx != dirty_tx) {
+		tp->dirty_tx = dirty_tx;
+		mb();
+
+		if (dev != rtl_ec_net_dev) {
 			netif_wake_queue (dev);
 		}
 	}
diff --git a/devices/8139too-2.6.17-ethercat.c b/devices/8139too-2.6.17-ethercat.c
index b8f60d1c4fa980bbf599ad0f565819889d5c0219..4103204badc66c08304a6c22761250adcdfcead1 100644
--- a/devices/8139too-2.6.17-ethercat.c
+++ b/devices/8139too-2.6.17-ethercat.c
@@ -1976,11 +1976,12 @@ static void rtl8139_tx_interrupt (struct net_device *dev,
 	}
 #endif /* RTL8139_NDEBUG */
 
-	if (dev != rtl_ec_net_dev) {
-		/* only wake the queue if we did work, and the queue is stopped */
-		if (tp->dirty_tx != dirty_tx) {
-			tp->dirty_tx = dirty_tx;
-			mb();
+	/* only wake the queue if we did work, and the queue is stopped */
+	if (tp->dirty_tx != dirty_tx) {
+		tp->dirty_tx = dirty_tx;
+		mb();
+
+		if (dev != rtl_ec_net_dev) {
 			netif_wake_queue (dev);
 		}
 	}