Skip to contentSkip to conversation

netpoll: revert queue stopped change

PATCH New Matt Mackall 1 participant 1 message Aug 26, 2004 Networking

lore
Share & tools
lore
#0 lore raw

PATCH 2/5 netpoll: revert queue stopped change

From: Jeff Moyer <[email protected]>

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.

net/core/netpoll.c renamed from net/core/netpoll.c.orig +12 -0
@@ -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);
Signature · 1 line
Mathematics is the supreme nostalgia of our time.