[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20090311113815.GB26526@newton.mathematik.tu-chemnitz.de>
Date: Wed, 11 Mar 2009 12:38:15 +0100
From: Steffen Klassert <klassert@...hematik.tu-chemnitz.de>
To: Andrew Morton <akpm@...ux-foundation.org>
Cc: shemminger@...tta.com, gerhard_pircher@....net,
netdev@...r.kernel.org
Subject: Re: 3c59x: shared interrupt problem
On Tue, Mar 10, 2009 at 02:55:42PM -0700, Andrew Morton wrote:
> >
> > This basically reverts a patch from akpm (bitkeeper cset 1.1046.95.8)
> > This patch was to workaround lots of "nobody cared" warnings generated by
> > boomerang_interrupt().
> > I added Andrew to the Cc, perhaps he can remember some details on this.
> >
>
> Beats me. Do you havea full copy of that patch, including changelog?
>
It was this one:
#### ChangeSet ####
2003-05-19 10:27:49-07:00, akpm@...eo.com
[PATCH] 3c59x irqreturn fix
Apparently boomerang_interrupt() is generating lots of "nobody cared"
warnings - one per packet it seems. Frankly, I don't have a clue why.
These are ancient cards and the driver is otherwise stable, so just
change it to return IRQ_HANDLED and move on...
==== drivers/net/3c59x.c ====
2003-05-17 14:09:34-07:00, akpm@...eo.com +2 -7
3c59x irqreturn fix
--- 1.34/drivers/net/3c59x.c 2003-04-20 22:41:08 -07:00
+++ 1.35/drivers/net/3c59x.c 2003-05-17 14:09:34 -07:00
@@ -2321,7 +2321,6 @@ boomerang_interrupt(int irq, void *dev_i
long ioaddr;
int status;
int work_done = max_interrupt_work;
- int handled;
ioaddr = dev->base_addr;
@@ -2336,18 +2335,14 @@ boomerang_interrupt(int irq, void *dev_i
if (vortex_debug > 6)
printk(KERN_DEBUG "boomerang_interrupt. status=0x%4x\n", status);
- if ((status & IntLatch) == 0) {
- handled = 0;
+ if ((status & IntLatch) == 0)
goto handler_exit; /* No interrupt: shared IRQs can cause this */
- }
if (status == 0xffff) { /* h/w no longer present (hotplug)? */
if (vortex_debug > 1)
printk(KERN_DEBUG "boomerang_interrupt(1): status = 0xffff\n");
- handled = 0;
goto handler_exit;
}
- handled = 1;
if (status & IntReq) {
status |= vp->deferred;
@@ -2442,7 +2437,7 @@ boomerang_interrupt(int irq, void *dev_i
dev->name, status);
handler_exit:
spin_unlock(&vp->lock);
- return IRQ_RETVAL(handled);
+ return IRQ_HANDLED;
}
static int vortex_rx(struct net_device *dev)
--
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