All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jeremy Fitzhardinge <jeremy@goop.org>
To: Matt Mackall <mpm@selenic.com>
Cc: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	netdev@vger.kernel.org
Subject: [PATCH RFC] netpoll: don't spin forever sending to stopped queues
Date: Thu, 08 Jun 2006 19:15:50 -0700	[thread overview]
Message-ID: <4488D9D6.6070205@goop.org> (raw)
In-Reply-To: <20060608210702.GD24227@waste.org>

Matt Mackall wrote:
> That's odd. Netpoll holds a reference to the device, of course, but so
> does a normal "up" interface. So that shouldn't be the problem.
> Another possibility is that outgoing packets from printks in the
> driver are causing difficulty. Not sure what can be done about that.
>   
Here's a patch.  I haven't tested it beyond compiling it, and I don't 
know if it is actually correct.  In this case, it seems pointless to 
spin waiting for an even which will never happen.  Should 
netif_poll_disable() cause netpoll_send_skb() (or something) to not even 
bother trying to send?  netif_poll_disable seems mysteriously simple to me.

    J

--

Subject: netpoll: don't spin forever sending to stopped queues

When transmitting a skb in netpoll_send_skb(), only retry a limited
number of times if the device queue is stopped.

Signed-off-by: Jeremy Fitzhardinge <jeremy@goop.org>

diff -r aac813f54617 net/core/netpoll.c
--- a/net/core/netpoll.c	Wed Jun 07 14:53:40 2006 -0700
+++ b/net/core/netpoll.c	Thu Jun 08 19:00:29 2006 -0700
@@ -280,15 +280,10 @@ static void netpoll_send_skb(struct netp
 		 * 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);
-			udelay(50);
-			continue;
-		}
-
-		status = np->dev->hard_start_xmit(skb, np->dev);
+		status = NETDEV_TX_BUSY;
+		if (!netif_queue_stopped(np->dev))
+			status = np->dev->hard_start_xmit(skb, np->dev);
+
 		np->dev->xmit_lock_owner = -1;
 		spin_unlock(&np->dev->xmit_lock);
 




  parent reply	other threads:[~2006-06-09  4:04 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-06-08 17:50 Using netconsole for debugging suspend/resume Jeremy Fitzhardinge
2006-06-08 20:35 ` Auke Kok
2006-06-08 20:40 ` Rafael J. Wysocki
2006-06-09  1:56   ` Jeremy Fitzhardinge
2006-06-09 10:34     ` Rafael J. Wysocki
2006-06-08 21:07 ` Matt Mackall
2006-06-09  1:54   ` Jeremy Fitzhardinge
2006-06-09  5:13     ` Auke Kok
2006-06-09  5:23       ` David Miller
2006-06-09  5:50         ` Andi Kleen
2006-06-09 17:14           ` Matt Mackall
2006-06-09  5:45       ` Jeremy Fitzhardinge
2006-06-09  2:15   ` Jeremy Fitzhardinge [this message]
2006-06-11 20:04     ` [PATCH RFC] netpoll: don't spin forever sending to stopped queues Matt Mackall
2006-06-12 20:57       ` Jeremy Fitzhardinge
2006-06-12 20:53         ` Matt Mackall
2006-06-12 21:20           ` Jeremy Fitzhardinge
2006-06-09  3:46 ` Using netconsole for debugging suspend/resume Andi Kleen
2006-06-09 15:24   ` Mark Lord
2006-06-12 11:21     ` Andi Kleen
2006-06-12 15:38       ` Mark Lord
2006-06-12 15:46         ` Andi Kleen
2006-06-12 21:25           ` Jeremy Fitzhardinge
2006-06-13  3:47             ` Andi Kleen
2006-06-13  4:49               ` David Miller
2006-06-13  4:54                 ` Andi Kleen
2006-06-13  5:03                   ` David Miller
2006-06-13  7:18                     ` Christoph Hellwig
2006-06-13  7:31                       ` David Miller
2006-06-09  8:34 ` Pavel Machek

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4488D9D6.6070205@goop.org \
    --to=jeremy@goop.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mpm@selenic.com \
    --cc=netdev@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.