[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <200704282212.32443.sshtylyov@ru.mvista.com>
Date: Sat, 28 Apr 2007 22:12:32 +0400
From: Sergei Shtylyov <sshtylyov@...mvista.com>
To: davem@...emloft.net
Cc: netdev@...r.kernel.org, shemminger@...ux-foundation.org,
mpm@...enic.com
Subject: [PATCH] netpoll: fix TX queue overflow in trapped mode
CONFIG_NETPOLL_TRAP causes the TX queue controls to be completely bypassed in
the netpoll's "trapped" mode which easily causes overflows in the drivers with
short TX queues (most notably, in 8139too with its 4-deep queue). So, make
this option more sensible by making it only bypass the TX softirq wakeup.
Signed-off-by: Sergei Shtylyov <sshtylyov@...mvista.com>
---
Split this part form the initial patch as request by Matt Mackall.
include/linux/netdevice.h | 8 +++-----
2 files changed, 3 insertions(+), 10 deletions(-)
Index: linux-2.6/include/linux/netdevice.h
===================================================================
--- linux-2.6.orig/include/linux/netdevice.h
+++ linux-2.6/include/linux/netdevice.h
@@ -647,8 +647,10 @@ static inline void netif_start_queue(str
static inline void netif_wake_queue(struct net_device *dev)
{
#ifdef CONFIG_NETPOLL_TRAP
- if (netpoll_trap())
+ if (netpoll_trap()) {
+ clear_bit(__LINK_STATE_XOFF, &dev->state);
return;
+ }
#endif
if (test_and_clear_bit(__LINK_STATE_XOFF, &dev->state))
__netif_schedule(dev);
@@ -656,10 +658,6 @@ static inline void netif_wake_queue(stru
static inline void netif_stop_queue(struct net_device *dev)
{
-#ifdef CONFIG_NETPOLL_TRAP
- if (netpoll_trap())
- return;
-#endif
set_bit(__LINK_STATE_XOFF, &dev->state);
}
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists