From: Ingo Molnar Date: Wed, 17 Oct 2007 00:44:59 +0000 (-0400) Subject: forcedeth: fix NAPI rx poll function X-Git-Tag: v2.6.24-rc1~819^2~17 X-Git-Url: http://pilppa.com/gitweb/?a=commitdiff_plain;h=bcb5febb248f7cc1e4a39ff61507f6343ba1c594;p=linux-2.6-omap-h63xx.git forcedeth: fix NAPI rx poll function fix the forcedeth NAPI poll function to not emit this warning: [ 186.635916] WARNING: at net/core/dev.c:2166 net_rx_action() [ 186.641351] [] net_rx_action+0x145/0x1b0 [ 186.646191] [] __do_softirq+0x42/0x90 [ 186.650784] [] do_softirq+0x26/0x30 [ 186.655202] [] local_bh_enable+0x48/0xa0 [ 186.660055] [] lock_sock_nested+0xa0/0xc0 [ 186.664995] [] tcp_recvmsg+0x16/0xbc0 [ 186.669588] [] __generic_file_aio_write_nolock+0x27b/0x520 [ 186.676001] [] sock_common_recvmsg+0x45/0x70 [ 186.681202] [] sock_aio_read+0x11f/0x140 [ 186.686054] [] do_sync_read+0xc6/0x110 [ 186.690735] [] autoremove_wake_function+0x0/0x40 [ 186.696280] [] net_tx_action+0x3c/0xe0 [ 186.700961] [] vfs_read+0x132/0x140 [ 186.705378] [] sys_read+0x41/0x70 [ 186.709625] [] sysenter_past_esp+0x5f/0x89 [ 186.714651] ======================= Signed-off-by: Ingo Molnar Signed-off-by: Jeff Garzik --- diff --git a/drivers/net/forcedeth.c b/drivers/net/forcedeth.c index dae30b73134..2e708150b01 100644 --- a/drivers/net/forcedeth.c +++ b/drivers/net/forcedeth.c @@ -2268,13 +2268,13 @@ static int nv_rx_process(struct net_device *dev, int limit) { struct fe_priv *np = netdev_priv(dev); u32 flags; - u32 rx_processed_cnt = 0; + int rx_work = 0; struct sk_buff *skb; int len; while((np->get_rx.orig != np->put_rx.orig) && !((flags = le32_to_cpu(np->get_rx.orig->flaglen)) & NV_RX_AVAIL) && - (rx_processed_cnt++ < limit)) { + (rx_work < limit)) { dprintk(KERN_DEBUG "%s: nv_rx_process: flags 0x%x.\n", dev->name, flags); @@ -2396,9 +2396,11 @@ next_pkt: np->get_rx.orig = np->first_rx.orig; if (unlikely(np->get_rx_ctx++ == np->last_rx_ctx)) np->get_rx_ctx = np->first_rx_ctx; + + rx_work++; } - return rx_processed_cnt; + return rx_work; } static int nv_rx_process_optimized(struct net_device *dev, int limit)