On Sat, May 18, 2013 at 9:53 PM, Arend van Spriel <arend@xxxxxxxxxxxx> wrote: > On 03/24/2013 01:45 AM, Hauke Mehrtens wrote: >> >> Replaced the usage with pub->associated. >> >> Signed-off-by: Hauke Mehrtens <hauke@xxxxxxxxxx> >> --- >> drivers/net/wireless/brcm80211/brcmsmac/main.c | 12 +++--------- >> drivers/net/wireless/brcm80211/brcmsmac/main.h | 2 -- >> 2 files changed, 3 insertions(+), 11 deletions(-) > > > Hi Hauke, > > I had a problem with bcm43224 in STA mode and bisecting it shows this change > as culprit. On laptop I installed kernel with brcmsmac compiled as module. > It comes up and associates during boot, but after logging in there is no > connectivity. Triggering reassoc gives connectivity for some time, but after > a while (1-2 min) it stops. > > I am looking into it. Given the function name below (brcms_c_ps_allowed) it > may be power-save related. I will keep you informed. Looking at the (old) code; static bool brcms_c_ps_allowed(struct brcms_c_info *wlc) { return false; } should restore the old behavior. As for this actual old code: static bool brcms_c_ps_allowed(struct brcms_c_info *wlc) { struct brcms_bss_cfg *cfg = wlc->bsscfg; /* disallow PS when one of the following global conditions meets */ if (!wlc->pub->associated) return false; /* disallow PS when one of these meets when not scanning */ if (wlc->filter_flags & FIF_PROMISC_IN_BSS) return false; if (cfg->associated) return false; return true; } The only way to return true here is if wlc->pub->associated == true and cfg->associated == false, but the only place setting these is/was brcms_c_associate_upd() which sets both to the same value. Therefore the code will always return false. Hauke's change made it possible for the code to return true, which looks at a first glance what might have been originally intended here, and the bug is somewhere else. But what do I know, I'm no Broadcom engineer ;-) Jonas -- 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