lkml.org 
[lkml]   [2007]   [Oct]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    SubjectRe: WARNING: at net/core/dev.c:2161 net_rx_action()
    From
    From: Ingo Molnar <mingo@elte.hu>
    Date: Tue, 16 Oct 2007 00:03:57 +0200

    > * David Miller <davem@davemloft.net> wrote:
    >
    > > From: Ingo Molnar <mingo@elte.hu>
    > > 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;
    >
    > shouldnt that be "pkts <= budget"? But even that shouldnt cause a larger
    > than limit return. Weird.

    No, not in this case. The driver must only netif_rx_complete()
    if it consumed strictly less than "budget" worth of work.

    > there are two networking cards in the system, the other one is a:
    >
    > eth1: RealTek RTL8139 at 0xf080e000, 00:c0:df:03:68:5d, IRQ 11
    > eth1: Identified 8139 chip type 'RTL-8139B'
    >
    > but this one should be inactive (not plugged into the network). Should i
    > try to get a debug print out of the actual 'weight' and 'work' integers,
    > and of the n->poll function address?

    That might help.

    I don't see any possible nv_rx_process{,_optimized}() can return "work
    > budget" either. But I do notice these loops unconditionally execute
    at least once, perhaps budget is being passed erroneously in as zero?
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2007-10-16 00:21    [W:0.028 / U:24.340 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site