]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/commitdiff
[NET] netpoll: don't spin forever sending to stopped queues
authorJeremy Fitzhardinge <jeremy@goop.org>
Mon, 26 Jun 2006 07:03:40 +0000 (00:03 -0700)
committerDavid S. Miller <davem@davemloft.net>
Mon, 26 Jun 2006 07:03:40 +0000 (00:03 -0700)
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>
Acked-by: Matt Mackall <mpm@selenic.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/core/netpoll.c

index 9cb781830380242cc16b9204cfdb103381dc4234..377d1e7257b5f5be0c8b0d5727098856027bbe03 100644 (file)
@@ -279,14 +279,10 @@ static void netpoll_send_skb(struct netpoll *np, struct sk_buff *skb)
                 * network drivers do not expect to be called if the queue is
                 * stopped.
                 */
-               if (netif_queue_stopped(np->dev)) {
-                       netif_tx_unlock(np->dev);
-                       netpoll_poll(np);
-                       udelay(50);
-                       continue;
-               }
+               status = NETDEV_TX_BUSY;
+               if (!netif_queue_stopped(np->dev))
+                       status = np->dev->hard_start_xmit(skb, np->dev);
 
-               status = np->dev->hard_start_xmit(skb, np->dev);
                netif_tx_unlock(np->dev);
 
                /* success */