BCM4331 fails to associate after suspend

Seth Forshee seth.forshee at canonical.com
Tue Feb 7 10:29:21 EST 2012


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 at gmail.com> napisał:
> > 2012/2/6 Seth Forshee <seth.forshee at 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



More information about the b43-dev mailing list