[NET] 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> Acked-by: Matt Mackall <mpm@selenic.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
d83561a4d6
commit
8834807b43
1 changed files with 3 additions and 7 deletions
|
@ -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
|
* network drivers do not expect to be called if the queue is
|
||||||
* stopped.
|
* stopped.
|
||||||
*/
|
*/
|
||||||
if (netif_queue_stopped(np->dev)) {
|
status = NETDEV_TX_BUSY;
|
||||||
netif_tx_unlock(np->dev);
|
if (!netif_queue_stopped(np->dev))
|
||||||
netpoll_poll(np);
|
status = np->dev->hard_start_xmit(skb, np->dev);
|
||||||
udelay(50);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
status = np->dev->hard_start_xmit(skb, np->dev);
|
|
||||||
netif_tx_unlock(np->dev);
|
netif_tx_unlock(np->dev);
|
||||||
|
|
||||||
/* success */
|
/* success */
|
||||||
|
|
Loading…
Reference in a new issue