[PATCH 2/5] netpoll: revert queue stopped change

From: Matt Mackall
Date: Thu Aug 26 2004 - 21:34:26 EST


From: Jeff Moyer <jmoyer@xxxxxxxxxx>

Here's the first of the broken out patch set. This puts the check for
netif_queue_stopped back into netpoll_send_skb. Network drivers are not
designed to have their hard_start_xmit routines called when the queue is
stopped.

Signed-off-by: Jeff Moyer <jmoyer@xxxxxxxxxx>
Signed-off-by: Matt Mackall <mpm@xxxxxxxxxxx>

--- linux-2.6.7/net/core/netpoll.c.orig 2004-08-16 11:57:46.890322256 -0400
+++ linux-2.6.7/net/core/netpoll.c 2004-08-16 12:17:34.477781520 -0400
@@ -168,6 +168,18 @@ repeat:
spin_lock(&np->dev->xmit_lock);
np->dev->xmit_lock_owner = smp_processor_id();

+ /*
+ * network drivers do not expect to be called if the queue is
+ * stopped.
+ */
+ if (netif_queue_stopped(np->dev)) {
+ np->dev->xmit_lock_owner = -1;
+ spin_unlock(&np->dev->xmit_lock);
+
+ netpoll_poll(np);
+ goto repeat;
+ }
+
status = np->dev->hard_start_xmit(skb, np->dev);
np->dev->xmit_lock_owner = -1;
spin_unlock(&np->dev->xmit_lock);


--
Mathematics is the supreme nostalgia of our time.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/