summaryrefslogtreecommitdiffstats
path: root/drivers/net/spider_net.c
diff options
context:
space:
mode:
authorLinas Vepstas <linas@austin.ibm.com>2007-06-11 20:59:21 +0200
committerJeff Garzik <jeff@garzik.org>2007-07-09 04:16:41 +0200
commite1fd9070729765910b144ffcf74ca199c766509b (patch)
tree96db3bcfbb1cf76444d05fe65539de9a3809023d /drivers/net/spider_net.c
parentspidernet: invalidate unused pointer. (diff)
downloadlinux-e1fd9070729765910b144ffcf74ca199c766509b.tar.xz
linux-e1fd9070729765910b144ffcf74ca199c766509b.zip
spidernet: service TX later.
When entering the netdev poll routine, empty out the RX chain first, before cleaning up the TX chain. This should help avoid RX buffer overflows. Signed-off-by: Linas Vepstas <linas@austin.ibm.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
Diffstat (limited to 'drivers/net/spider_net.c')
-rw-r--r--drivers/net/spider_net.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/net/spider_net.c b/drivers/net/spider_net.c
index 628efc01f273..946b2e244f65 100644
--- a/drivers/net/spider_net.c
+++ b/drivers/net/spider_net.c
@@ -1285,7 +1285,6 @@ spider_net_poll(struct net_device *netdev, int *budget)
int packets_to_do, packets_done = 0;
int no_more_packets = 0;
- spider_net_cleanup_tx_ring(card);
packets_to_do = min(*budget, netdev->quota);
while (packets_to_do) {
@@ -1310,6 +1309,8 @@ spider_net_poll(struct net_device *netdev, int *budget)
spider_net_refill_rx_chain(card);
spider_net_enable_rxdmac(card);
+ spider_net_cleanup_tx_ring(card);
+
/* if all packets are in the stack, enable interrupts and return 0 */
/* if not, return 1 */
if (no_more_packets) {