On Thu, 2006-06-01 at 16:42 +0200, Frederik Deweerdt wrote:
> This got rid of the oops for me, is it the right fix?
I don't think netlink will contend with hardirqs. Can you test with this
fix for ipw2200 driver?
Thanks,
-yi
diff -urp a/drivers/net/wireless/ipw2200.c b/drivers/net/wireless/ipw2200.c
--- a/drivers/net/wireless/ipw2200.c 2006-04-01 09:47:24.000000000 +0800
+++ b/drivers/net/wireless/ipw2200.c 2006-06-01 14:32:00.000000000 +0800
@@ -11058,11 +11058,9 @@ static irqreturn_t ipw_isr(int irq, void
if (!priv)
return IRQ_NONE;
- spin_lock(&priv->lock);
-
if (!(priv->status & STATUS_INT_ENABLED)) {
/* Shared IRQ */
- goto none;
+ return IRQ_NONE;
}
inta = ipw_read32(priv, IPW_INTA_RW);
@@ -11071,12 +11069,12 @@ static irqreturn_t ipw_isr(int irq, void
if (inta == 0xFFFFFFFF) {
/* Hardware disappeared */
IPW_WARNING("IRQ INTA == 0xFFFFFFFF\n");
- goto none;
+ return IRQ_NONE;
}
if (!(inta & (IPW_INTA_MASK_ALL & inta_mask))) {
/* Shared interrupt */
- goto none;
+ return IRQ_NONE;
}
/* tell the device to stop sending interrupts */
@@ -11091,12 +11089,7 @@ static irqreturn_t ipw_isr(int irq, void
tasklet_schedule(&priv->irq_tasklet);
- spin_unlock(&priv->lock);
-
return IRQ_HANDLED;
- none:
- spin_unlock(&priv->lock);
- return IRQ_NONE;
}
static void ipw_rf_kill(void *adapter)
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]