To the list: The beginnings of this thread were done off-list, but I want to 
let everyone know about
the problem, and to discover if anyone else has it. Since 2.6.23-rc1, Ehud has 
a problem in that the 
information his interface is transmitting is garbled. He did a bisection and 
discovered that the 
problem is involved with commit 85a83d26 "bcm43xx-mac80211: Rewrite and 
simplify handling of the 
initialization status.". Neither Michael nor I can reproduce the problem, nor 
is anything obviously 
wrong with the patch, other than this patch exposes an error in the location of 
the initial 
interrupt. I found this error on my old/slow notebook. Fixing that error did 
not resolve Ehud's 
problem. That fix is now in Linville's tree.

Ehud - please make your test tree current with a 'git checkout -f' command, and 
do a 'git pull' to
make certain you have the latest code. Then apply the trial patch below, which 
reverts a small part 
of Michael's patch, and see if it fixes the problem.

Larry


Index: wireless-dev/drivers/net/wireless/bcm43xx-mac80211/bcm43xx_main.c
===================================================================
--- wireless-dev.orig/drivers/net/wireless/bcm43xx-mac80211/bcm43xx_main.c
+++ wireless-dev/drivers/net/wireless/bcm43xx-mac80211/bcm43xx_main.c
@@ -1503,7 +1503,7 @@ static void bcm43xx_interrupt_ack(struct
  /* Interrupt handler top-half */
  static irqreturn_t bcm43xx_interrupt_handler(int irq, void *dev_id)
  {
-       irqreturn_t ret = IRQ_NONE;
+       irqreturn_t ret = IRQ_HANDLED;
        struct bcm43xx_wldev *dev = dev_id;
        u32 reason;

@@ -1512,12 +1512,11 @@ static irqreturn_t bcm43xx_interrupt_han

        spin_lock(&dev->wl->irq_lock);

-       if (bcm43xx_status(dev) < BCM43xx_STAT_STARTED)
-               goto out;
        reason = bcm43xx_read32(dev, BCM43xx_MMIO_GEN_IRQ_REASON);
-       if (reason == 0xffffffff) /* shared IRQ */
+       if (reason == 0xffffffff) { /* shared IRQ */
+               ret = IRQ_NONE;
                goto out;
-       ret = IRQ_HANDLED;
+       }
        reason &= bcm43xx_read32(dev, BCM43xx_MMIO_GEN_IRQ_MASK);
        if (!reason)
                goto out;

_______________________________________________
Bcm43xx-dev mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/bcm43xx-dev

Reply via email to