* BCM4331 fails to associate after suspend @ 2012-02-03 22:28 Seth Forshee 2012-02-03 22:37 ` John Schoenick 2012-02-04 10:44 ` Arend van Spriel 0 siblings, 2 replies; 12+ messages in thread From: Seth Forshee @ 2012-02-03 22:28 UTC (permalink / raw) To: Rafał Miłecki, Scott Sanbar; +Cc: linux-wireless, b43-dev I've been looking into some association problems seen with a MacBook Pro 8,2 that has BCM4331 wireless, which I've confirmed still exist in wireless-testing. The association failures reliably start appearing after the machine is resumed from s3 without external power applied (whether or not power is applied when the machine is suspended doesn't matter). When the association failures are happening the BCM4331 seems to be able to receive packets okay, as it can scan successfully. Transmissions don't work though; no frames from the BCM4331 are ever seen on the air, as though the tx path is off. Reloading both the b43 and bcma drivers gets things working again, but reloading just b43 does not. I've been looking around a bit in the b43 and bcma drivers, but so far I haven't found the reason why this happens. Any help would be appreciated. Let me know if there's additional information I can provide. Thanks, Seth ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: BCM4331 fails to associate after suspend 2012-02-03 22:28 BCM4331 fails to associate after suspend Seth Forshee @ 2012-02-03 22:37 ` John Schoenick 2012-02-04 10:44 ` Arend van Spriel 1 sibling, 0 replies; 12+ messages in thread From: John Schoenick @ 2012-02-03 22:37 UTC (permalink / raw) To: Seth Forshee Cc: Rafał Miłecki, Scott Sanbar, linux-wireless, b43-dev On 02/03/2012 02:28 PM, Seth Forshee wrote: > I've been looking into some association problems seen with a MacBook Pro > 8,2 that has BCM4331 wireless, which I've confirmed still exist in > wireless-testing. The association failures reliably start appearing > after the machine is resumed from s3 without external power applied > (whether or not power is applied when the machine is suspended doesn't > matter). > > When the association failures are happening the BCM4331 seems to be able > to receive packets okay, as it can scan successfully. Transmissions > don't work though; no frames from the BCM4331 are ever seen on the air, > as though the tx path is off. Reloading both the b43 and bcma drivers > gets things working again, but reloading just b43 does not. > > I've been looking around a bit in the b43 and bcma drivers, but so far I > haven't found the reason why this happens. Any help would be > appreciated. Let me know if there's additional information I can > provide. > > Thanks, > Seth > > _______________________________________________ > b43-dev mailing list > b43-dev@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/b43-dev I can add that reloading the modules after a suspend/resumes restores functionality, though oddly adding them to SUSPEND_MODULES in pm-utils config does not. ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: BCM4331 fails to associate after suspend 2012-02-03 22:28 BCM4331 fails to associate after suspend Seth Forshee 2012-02-03 22:37 ` John Schoenick @ 2012-02-04 10:44 ` Arend van Spriel 2012-02-04 14:25 ` Seth Forshee 1 sibling, 1 reply; 12+ messages in thread From: Arend van Spriel @ 2012-02-04 10:44 UTC (permalink / raw) To: Seth Forshee Cc: Rafał Miłecki, Scott Sanbar, linux-wireless@vger.kernel.org, b43-dev@lists.infradead.org On 02/03/2012 11:28 PM, Seth Forshee wrote: > > I've been looking around a bit in the b43 and bcma drivers, but so far I > haven't found the reason why this happens. Any help would be > appreciated. Let me know if there's additional information I can > provide. > With which kernel version do you see these issues? BCMA suspend/resume code has a fix in 3.3-rc1. So if you are seeing it on a 3.2 kernel, please give it a try. Gr. AvS ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: BCM4331 fails to associate after suspend 2012-02-04 10:44 ` Arend van Spriel @ 2012-02-04 14:25 ` Seth Forshee 2012-02-06 16:56 ` Rafał Miłecki 0 siblings, 1 reply; 12+ messages in thread From: Seth Forshee @ 2012-02-04 14:25 UTC (permalink / raw) To: Arend van Spriel Cc: Rafał Miłecki, Scott Sanbar, linux-wireless@vger.kernel.org, b43-dev@lists.infradead.org On Sat, Feb 04, 2012 at 11:44:23AM +0100, Arend van Spriel wrote: > On 02/03/2012 11:28 PM, Seth Forshee wrote: > > > > I've been looking around a bit in the b43 and bcma drivers, but so far I > > haven't found the reason why this happens. Any help would be > > appreciated. Let me know if there's additional information I can > > provide. > > > > With which kernel version do you see these issues? BCMA suspend/resume > code has a fix in 3.3-rc1. So if you are seeing it on a 3.2 kernel, > please give it a try. I've tried 3.3-rc2 and the wirless-testing tree, and the problem still exists in both. Seth ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: BCM4331 fails to associate after suspend 2012-02-04 14:25 ` Seth Forshee @ 2012-02-06 16:56 ` Rafał Miłecki 2012-02-06 17:37 ` Seth Forshee 0 siblings, 1 reply; 12+ messages in thread From: Rafał Miłecki @ 2012-02-06 16:56 UTC (permalink / raw) To: Seth Forshee Cc: Arend van Spriel, Scott Sanbar, linux-wireless@vger.kernel.org, b43-dev@lists.infradead.org 2012/2/4 Seth Forshee <seth.forshee@canonical.com>: > On Sat, Feb 04, 2012 at 11:44:23AM +0100, Arend van Spriel wrote: >> On 02/03/2012 11:28 PM, Seth Forshee wrote: >> > >> > I've been looking around a bit in the b43 and bcma drivers, but so far I >> > haven't found the reason why this happens. Any help would be >> > appreciated. Let me know if there's additional information I can >> > provide. >> > >> >> With which kernel version do you see these issues? BCMA suspend/resume >> code has a fix in 3.3-rc1. So if you are seeing it on a 3.2 kernel, >> please give it a try. > > I've tried 3.3-rc2 and the wirless-testing tree, and the problem still > exists in both. I don't have access to suspendable machine with Mini PCIe card, not to mention BCM4331 which is available for Mac-specific slot only (or routers as embedded wifi). It may be b43 needs to fix but I'm not really able to work on that. Plus the whole BCM4331 code is really tricky, as it comes from RE based on dumps only :( -- Rafał ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: BCM4331 fails to associate after suspend 2012-02-06 16:56 ` Rafał Miłecki @ 2012-02-06 17:37 ` Seth Forshee 2012-02-06 19:13 ` Hauke Mehrtens 0 siblings, 1 reply; 12+ messages in thread From: Seth Forshee @ 2012-02-06 17:37 UTC (permalink / raw) To: Rafał Miłecki Cc: Arend van Spriel, Scott Sanbar, linux-wireless@vger.kernel.org, b43-dev@lists.infradead.org On Mon, Feb 06, 2012 at 05:56:20PM +0100, Rafał Miłecki wrote: > 2012/2/4 Seth Forshee <seth.forshee@canonical.com>: > > On Sat, Feb 04, 2012 at 11:44:23AM +0100, Arend van Spriel wrote: > >> On 02/03/2012 11:28 PM, Seth Forshee wrote: > >> > > >> > I've been looking around a bit in the b43 and bcma drivers, but so far I > >> > haven't found the reason why this happens. Any help would be > >> > appreciated. Let me know if there's additional information I can > >> > provide. > >> > > >> > >> With which kernel version do you see these issues? BCMA suspend/resume > >> code has a fix in 3.3-rc1. So if you are seeing it on a 3.2 kernel, > >> please give it a try. > > > > I've tried 3.3-rc2 and the wirless-testing tree, and the problem still > > exists in both. > > I don't have access to suspendable machine with Mini PCIe card, not to > mention BCM4331 which is available for Mac-specific slot only (or > routers as embedded wifi). It may be b43 needs to fix but I'm not > really able to work on that. Plus the whole BCM4331 code is really > tricky, as it comes from RE based on dumps only :( Okay, I'll keep poking at it to see if I can come up with anything. If you've got any suggestions on things I should be looking at or trying, I'm all ears. Seth ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: BCM4331 fails to associate after suspend 2012-02-06 17:37 ` Seth Forshee @ 2012-02-06 19:13 ` Hauke Mehrtens 2012-02-06 22:34 ` Seth Forshee 0 siblings, 1 reply; 12+ messages in thread From: Hauke Mehrtens @ 2012-02-06 19:13 UTC (permalink / raw) To: Seth Forshee Cc: Rafał Miłecki, Arend van Spriel, Scott Sanbar, linux-wireless@vger.kernel.org, b43-dev@lists.infradead.org On 02/06/2012 06:37 PM, Seth Forshee wrote: > On Mon, Feb 06, 2012 at 05:56:20PM +0100, Rafał Miłecki wrote: >> 2012/2/4 Seth Forshee <seth.forshee@canonical.com>: >>> On Sat, Feb 04, 2012 at 11:44:23AM +0100, Arend van Spriel wrote: >>>> On 02/03/2012 11:28 PM, Seth Forshee wrote: >>>>> >>>>> I've been looking around a bit in the b43 and bcma drivers, but so far I >>>>> haven't found the reason why this happens. Any help would be >>>>> appreciated. Let me know if there's additional information I can >>>>> provide. >>>>> >>>> >>>> With which kernel version do you see these issues? BCMA suspend/resume >>>> code has a fix in 3.3-rc1. So if you are seeing it on a 3.2 kernel, >>>> please give it a try. >>> >>> I've tried 3.3-rc2 and the wirless-testing tree, and the problem still >>> exists in both. >> >> I don't have access to suspendable machine with Mini PCIe card, not to >> mention BCM4331 which is available for Mac-specific slot only (or >> routers as embedded wifi). It may be b43 needs to fix but I'm not >> really able to work on that. Plus the whole BCM4331 code is really >> tricky, as it comes from RE based on dumps only :( > > Okay, I'll keep poking at it to see if I can come up with anything. If > you've got any suggestions on things I should be looking at or trying, > I'm all ears. > > Seth According to the Broadcom SDK for SoCs bcma_pcicore_serdes_workaround() should be called when coming out of standby/hibernate. The code wl uses to do the same thing as bcma does is open source. You find it in the GPL package of many Broadcom based Wifi Routers. Hauke ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: BCM4331 fails to associate after suspend 2012-02-06 19:13 ` Hauke Mehrtens @ 2012-02-06 22:34 ` Seth Forshee 2012-02-07 7:04 ` Rafał Miłecki 0 siblings, 1 reply; 12+ messages in thread From: Seth Forshee @ 2012-02-06 22:34 UTC (permalink / raw) To: Hauke Mehrtens Cc: Rafał Miłecki, Arend van Spriel, Scott Sanbar, linux-wireless@vger.kernel.org, b43-dev@lists.infradead.org On Mon, Feb 06, 2012 at 08:13:11PM +0100, Hauke Mehrtens wrote: > On 02/06/2012 06:37 PM, Seth Forshee wrote: > > On Mon, Feb 06, 2012 at 05:56:20PM +0100, Rafał Miłecki wrote: > >> 2012/2/4 Seth Forshee <seth.forshee@canonical.com>: > >>> On Sat, Feb 04, 2012 at 11:44:23AM +0100, Arend van Spriel wrote: > >>>> On 02/03/2012 11:28 PM, Seth Forshee wrote: > >>>>> > >>>>> I've been looking around a bit in the b43 and bcma drivers, but so far I > >>>>> haven't found the reason why this happens. Any help would be > >>>>> appreciated. Let me know if there's additional information I can > >>>>> provide. > >>>>> > >>>> > >>>> With which kernel version do you see these issues? BCMA suspend/resume > >>>> code has a fix in 3.3-rc1. So if you are seeing it on a 3.2 kernel, > >>>> please give it a try. > >>> > >>> I've tried 3.3-rc2 and the wirless-testing tree, and the problem still > >>> exists in both. > >> > >> I don't have access to suspendable machine with Mini PCIe card, not to > >> mention BCM4331 which is available for Mac-specific slot only (or > >> routers as embedded wifi). It may be b43 needs to fix but I'm not > >> really able to work on that. Plus the whole BCM4331 code is really > >> tricky, as it comes from RE based on dumps only :( > > > > Okay, I'll keep poking at it to see if I can come up with anything. If > > you've got any suggestions on things I should be looking at or trying, > > I'm all ears. > > > > Seth > > According to the Broadcom SDK for SoCs bcma_pcicore_serdes_workaround() > should be called when coming out of standby/hibernate. > The code wl uses to do the same thing as bcma does is open source. You > find it in the GPL package of many Broadcom based Wifi Routers. Thanks for the suggestion. Unfortunately calling bcma_pcicore_serdes_workaround() during resume doesn't help. I'll look at the wl code to see if I can learn anything there. Seth ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: BCM4331 fails to associate after suspend 2012-02-06 22:34 ` Seth Forshee @ 2012-02-07 7:04 ` Rafał Miłecki 2012-02-07 7:08 ` Rafał Miłecki 0 siblings, 1 reply; 12+ messages in thread From: Rafał Miłecki @ 2012-02-07 7:04 UTC (permalink / raw) To: Seth Forshee Cc: Hauke Mehrtens, Arend van Spriel, Scott Sanbar, linux-wireless@vger.kernel.org, b43-dev@lists.infradead.org 2012/2/6 Seth Forshee <seth.forshee@canonical.com>: > On Mon, Feb 06, 2012 at 08:13:11PM +0100, Hauke Mehrtens wrote: >> According to the Broadcom SDK for SoCs bcma_pcicore_serdes_workaround() >> should be called when coming out of standby/hibernate. >> The code wl uses to do the same thing as bcma does is open source. You >> find it in the GPL package of many Broadcom based Wifi Routers. > > Thanks for the suggestion. Unfortunately calling > bcma_pcicore_serdes_workaround() during resume doesn't help. I'll look > at the wl code to see if I can learn anything there. Can you try diff --git a/drivers/bcma/main.c b/drivers/bcma/main.c index febbc0a..a097a26 100644 --- a/drivers/bcma/main.c +++ b/drivers/bcma/main.c @@ -267,6 +267,13 @@ int bcma_bus_resume(struct bcma_bus *bus) bcma_core_chipcommon_init(&bus->drv_cc); } + /* Init PCIE core */ + core = bcma_find_core(bus, BCMA_CORE_PCIE); + if (core) { + bus->drv_pci.setup_done = false; + bcma_core_pci_init(&bus->drv_pci); + } + list_for_each_entry(core, &bus->cores, list) { struct device_driver *drv = core->dev.driver; if (drv) { ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: BCM4331 fails to associate after suspend 2012-02-07 7:04 ` Rafał Miłecki @ 2012-02-07 7:08 ` Rafał Miłecki 2012-02-07 15:29 ` Seth Forshee 0 siblings, 1 reply; 12+ messages in thread From: Rafał Miłecki @ 2012-02-07 7:08 UTC (permalink / raw) To: Seth Forshee Cc: Hauke Mehrtens, Arend van Spriel, Scott Sanbar, linux-wireless@vger.kernel.org, b43-dev@lists.infradead.org W dniu 7 lutego 2012 08:04 użytkownik Rafał Miłecki <zajec5@gmail.com> napisał: > 2012/2/6 Seth Forshee <seth.forshee@canonical.com>: >> On Mon, Feb 06, 2012 at 08:13:11PM +0100, Hauke Mehrtens wrote: >>> According to the Broadcom SDK for SoCs bcma_pcicore_serdes_workaround() >>> should be called when coming out of standby/hibernate. >>> The code wl uses to do the same thing as bcma does is open source. You >>> find it in the GPL package of many Broadcom based Wifi Routers. >> >> Thanks for the suggestion. Unfortunately calling >> bcma_pcicore_serdes_workaround() during resume doesn't help. I'll look >> at the wl code to see if I can learn anything there. > > Can you try > > > diff --git a/drivers/bcma/main.c b/drivers/bcma/main.c > index febbc0a..a097a26 100644 > --- a/drivers/bcma/main.c > +++ b/drivers/bcma/main.c > @@ -267,6 +267,13 @@ int bcma_bus_resume(struct bcma_bus *bus) > bcma_core_chipcommon_init(&bus->drv_cc); > } > > + /* Init PCIE core */ > + core = bcma_find_core(bus, BCMA_CORE_PCIE); > + if (core) { > + bus->drv_pci.setup_done = false; > + bcma_core_pci_init(&bus->drv_pci); > + } > + > list_for_each_entry(core, &bus->cores, list) { > struct device_driver *drv = core->dev.driver; > if (drv) { If this doesn't work out of box, please check if reloading b43 is enough. AFAIR now you have to reload both: b43 and bcma. I hope this patch will let you avoid reloading at least bcma. -- Rafał ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: BCM4331 fails to associate after suspend 2012-02-07 7:08 ` Rafał Miłecki @ 2012-02-07 15:29 ` Seth Forshee 2012-02-16 14:55 ` Seth Forshee 0 siblings, 1 reply; 12+ messages in thread From: Seth Forshee @ 2012-02-07 15:29 UTC (permalink / raw) To: Rafał Miłecki Cc: Hauke Mehrtens, Arend van Spriel, Scott Sanbar, linux-wireless@vger.kernel.org, b43-dev@lists.infradead.org On Tue, Feb 07, 2012 at 08:08:11AM +0100, Rafał Miłecki wrote: > W dniu 7 lutego 2012 08:04 użytkownik Rafał Miłecki <zajec5@gmail.com> napisał: > > 2012/2/6 Seth Forshee <seth.forshee@canonical.com>: > >> On Mon, Feb 06, 2012 at 08:13:11PM +0100, Hauke Mehrtens wrote: > >>> According to the Broadcom SDK for SoCs bcma_pcicore_serdes_workaround() > >>> should be called when coming out of standby/hibernate. > >>> The code wl uses to do the same thing as bcma does is open source. You > >>> find it in the GPL package of many Broadcom based Wifi Routers. > >> > >> Thanks for the suggestion. Unfortunately calling > >> bcma_pcicore_serdes_workaround() during resume doesn't help. I'll look > >> at the wl code to see if I can learn anything there. > > > > Can you try > > > > > > diff --git a/drivers/bcma/main.c b/drivers/bcma/main.c > > index febbc0a..a097a26 100644 > > --- a/drivers/bcma/main.c > > +++ b/drivers/bcma/main.c > > @@ -267,6 +267,13 @@ int bcma_bus_resume(struct bcma_bus *bus) > > bcma_core_chipcommon_init(&bus->drv_cc); > > } > > > > + /* Init PCIE core */ > > + core = bcma_find_core(bus, BCMA_CORE_PCIE); > > + if (core) { > > + bus->drv_pci.setup_done = false; > > + bcma_core_pci_init(&bus->drv_pci); > > + } > > + > > list_for_each_entry(core, &bus->cores, list) { > > struct device_driver *drv = core->dev.driver; > > if (drv) { > > If this doesn't work out of box, please check if reloading b43 is > enough. AFAIR now you have to reload both: b43 and bcma. I hope this > patch will let you avoid reloading at least bcma. I tried exactly that yesterday, but it doesn't fix the issue. I just checked to see if it allows reloading only b43, and it does not. I still have to reload bcma to get the wireless working again. Seth ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: BCM4331 fails to associate after suspend 2012-02-07 15:29 ` Seth Forshee @ 2012-02-16 14:55 ` Seth Forshee 0 siblings, 0 replies; 12+ messages in thread From: Seth Forshee @ 2012-02-16 14:55 UTC (permalink / raw) To: Rafał Miłecki Cc: Hauke Mehrtens, Arend van Spriel, Scott Sanbar, linux-wireless@vger.kernel.org, b43-dev@lists.infradead.org On Tue, Feb 07, 2012 at 09:29:21AM -0600, Seth Forshee wrote: > On Tue, Feb 07, 2012 at 08:08:11AM +0100, Rafał Miłecki wrote: > > W dniu 7 lutego 2012 08:04 użytkownik Rafał Miłecki <zajec5@gmail.com> napisał: > > > 2012/2/6 Seth Forshee <seth.forshee@canonical.com>: > > >> On Mon, Feb 06, 2012 at 08:13:11PM +0100, Hauke Mehrtens wrote: > > >>> According to the Broadcom SDK for SoCs bcma_pcicore_serdes_workaround() > > >>> should be called when coming out of standby/hibernate. > > >>> The code wl uses to do the same thing as bcma does is open source. You > > >>> find it in the GPL package of many Broadcom based Wifi Routers. > > >> > > >> Thanks for the suggestion. Unfortunately calling > > >> bcma_pcicore_serdes_workaround() during resume doesn't help. I'll look > > >> at the wl code to see if I can learn anything there. > > > > > > Can you try > > > > > > > > > diff --git a/drivers/bcma/main.c b/drivers/bcma/main.c > > > index febbc0a..a097a26 100644 > > > --- a/drivers/bcma/main.c > > > +++ b/drivers/bcma/main.c > > > @@ -267,6 +267,13 @@ int bcma_bus_resume(struct bcma_bus *bus) > > > bcma_core_chipcommon_init(&bus->drv_cc); > > > } > > > > > > + /* Init PCIE core */ > > > + core = bcma_find_core(bus, BCMA_CORE_PCIE); > > > + if (core) { > > > + bus->drv_pci.setup_done = false; > > > + bcma_core_pci_init(&bus->drv_pci); > > > + } > > > + > > > list_for_each_entry(core, &bus->cores, list) { > > > struct device_driver *drv = core->dev.driver; > > > if (drv) { > > > > If this doesn't work out of box, please check if reloading b43 is > > enough. AFAIR now you have to reload both: b43 and bcma. I hope this > > patch will let you avoid reloading at least bcma. > > I tried exactly that yesterday, but it doesn't fix the issue. I just > checked to see if it allows reloading only b43, and it does not. I still > have to reload bcma to get the wireless working again. I've been pounding on this quite a bit in the past week, but I haven't been able to get anywhere so far. Any relevant workarounds I found in wl have no effect, and neither does any amount of reinitialization. I'm still digging into the drivers to see if I can learn anything, but if anyone has more suggestions I'll happily give them a try. Seth ^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2012-02-16 14:56 UTC | newest] Thread overview: 12+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2012-02-03 22:28 BCM4331 fails to associate after suspend Seth Forshee 2012-02-03 22:37 ` John Schoenick 2012-02-04 10:44 ` Arend van Spriel 2012-02-04 14:25 ` Seth Forshee 2012-02-06 16:56 ` Rafał Miłecki 2012-02-06 17:37 ` Seth Forshee 2012-02-06 19:13 ` Hauke Mehrtens 2012-02-06 22:34 ` Seth Forshee 2012-02-07 7:04 ` Rafał Miłecki 2012-02-07 7:08 ` Rafał Miłecki 2012-02-07 15:29 ` Seth Forshee 2012-02-16 14:55 ` Seth Forshee
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).