Re: WARNING: at net/core/dev.c:2161 net_rx_action()

From: Jeff Garzik
Date: Mon Oct 15 2007 - 18:20:29 EST


Ingo Molnar wrote:
* David Miller <davem@xxxxxxxxxxxxx> wrote:

From: Ingo Molnar <mingo@xxxxxxx>
Date: Mon, 15 Oct 2007 13:24:30 +0200

got this warning with Linus' latest -git tree:

WARNING: at net/core/dev.c:2161 net_rx_action()
[<80564db4>] net_rx_action+0xce/0x186
[<8011ba98>] __do_softirq+0x6c/0xcf
[<8011bb2d>] do_softirq+0x32/0x36
[<8011bcae>] irq_exit+0x35/0x40
[<80104fdb>] do_IRQ+0x5c/0x71
[<801048cd>] do_nmi+0x8f/0x238
[<801033a3>] common_interrupt+0x23/0x30
=======================
This is a driver bug, the work "budget" passed into a driver's ->poll() handler should never be exceeded. That's what this warning assertion is checking.

What ethernet card is in your system and what driver is being used to drive it?

it's forcedeth.

i've checked nv_napi_poll(), and i dont see how it could return larger than 'limit' number of packets.

it could return packets == limit though:

pkts = nv_rx_process_optimized(dev, budget);
...

if (pkts < budget) {
/* re-enable receive interrupts */
spin_lock_irqsave(&np->lock, flags);

__netif_rx_complete(dev, napi);

...
return pkts;

FWIW, forcedeth has this funky disable_irq()-based locking mechanism that is currently the subject of some kernel.org bugzillas. I would also check and make sure that isn't perturbing your results (even though it seems unrelated, based on what I read here). That might include disabling MSI if it's enabled, and/or turning on spinlock debugging.

Jeff




-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/