diff options
| author | Matt Mackall <mpm@selenic.com> | 2004-04-13 06:07:53 -0400 |
|---|---|---|
| committer | Jeff Garzik <jgarzik@redhat.com> | 2004-04-13 06:07:53 -0400 |
| commit | 0c00a913fe06bb5a6f7dcf424df18d953172ea1f (patch) | |
| tree | 9919c48eaf0f1a7c2a9155057441f03e5fb2aab6 | |
| parent | ae50bfca6656c70dba5a2076037341bd8e8a2e68 (diff) | |
[PATCH] netpoll transmit busy bugfix
Fix for handling of full transmit queue when netpoll trap is enabled.
From Stelian Pop <stelian@popies.net>
| -rw-r--r-- | net/core/netpoll.c | 12 |
1 files changed, 3 insertions, 9 deletions
diff --git a/net/core/netpoll.c b/net/core/netpoll.c index d20a2392c3b6..32f946ee687e 100644 --- a/net/core/netpoll.c +++ b/net/core/netpoll.c @@ -163,21 +163,15 @@ repeat: spin_lock(&np->dev->xmit_lock); np->dev->xmit_lock_owner = smp_processor_id(); - 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); /* transmit busy */ - if(status) + if(status) { + netpoll_poll(np); goto repeat; + } } void netpoll_send_udp(struct netpoll *np, const char *msg, int len) |
