Yuval, Michael Buesch wrote: > > Can you dump PCI config space and SSB registers (TMSLOW, maybe others, too). > It looks like a random bus write disabled the device. Please incorporate the following patch and run your system. In addition, run the following command when the wireless is working and after it fails: sudo lspci -d 14e4:4312 -x Post the results of the above commands and any entries in /var/log/messages that dump registers. They should all be prefaced with **** Index: linux-2.6/drivers/net/wireless/b43/phy_common.c =================================================================== --- linux-2.6.orig/drivers/net/wireless/b43/phy_common.c +++ linux-2.6/drivers/net/wireless/b43/phy_common.c @@ -133,6 +133,11 @@ void b43_radio_lock(struct b43_wldev *de macctl = b43_read32(dev, B43_MMIO_MACCTL); B43_WARN_ON(macctl & B43_MACCTL_RADIOLOCK); + if (macctl & B43_MACCTL_RADIOLOCK) { + printk(KERN_INFO "****** b43: B43_MMIO_MACCTL 0x%X\n", macctl); + printk(KERN_INFO "****** b43: SSB_TMSLOW 0x%X\n", + ssb_read32(dev->dev, SSB_TMSLOW)); + } macctl |= B43_MACCTL_RADIOLOCK; b43_write32(dev, B43_MMIO_MACCTL, macctl); /* Commit the write and wait for the device @@ -150,6 +155,11 @@ void b43_radio_unlock(struct b43_wldev * /* unlock */ macctl = b43_read32(dev, B43_MMIO_MACCTL); B43_WARN_ON(!(macctl & B43_MACCTL_RADIOLOCK)); + if (macctl & B43_MACCTL_RADIOLOCK) { + printk(KERN_INFO "****** b43: B43_MMIO_MACCTL 0x%X\n", macctl); + printk(KERN_INFO "****** b43: SSB_TMSLOW 0x%X\n", + ssb_read32(dev->dev, SSB_TMSLOW)); + } macctl &= ~B43_MACCTL_RADIOLOCK; b43_write32(dev, B43_MMIO_MACCTL, macctl); } Index: linux-2.6/drivers/net/wireless/b43/rfkill.c =================================================================== --- linux-2.6.orig/drivers/net/wireless/b43/rfkill.c +++ linux-2.6/drivers/net/wireless/b43/rfkill.c @@ -63,6 +63,8 @@ static void b43_rfkill_poll(struct input report_change = 1; b43info(wl, "Radio hardware status changed to %s\n", enabled ? "ENABLED" : "DISABLED"); + b43info(wl, "******** B43_B43_MMIO_RADIO_HWENABLED_HI 0x%X\n", + b43_read32(dev, B43_MMIO_RADIO_HWENABLED_HI)); } mutex_unlock(&wl->mutex); -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html