2013-06-06 11:31:56

by Arend van Spriel

[permalink] [raw]
Subject: [PATCH for 3.10 V2] brcmsmac: disable power-save related functions

This patch fixes a regression introduced by:

commit 6da3b6c48d79da96a36c2632053cf4f53bf48fb2
Author: Hauke Mehrtens <[email protected]>
Date: Sun Mar 24 01:45:52 2013 +0100

brcmsmac: remove brcms_bss_cfg->associated

The regression behaviour was described on mailing list.

http://mid.gmane.org/[email protected]:
"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."

Before the mentioned commit the return value of
the function brcms_c_ps_allowed() was always false,
which is desired behaviour as power-save is not
supported at the moment. Therefor, the function is
changed to just return false instead of simply
reverting the mentioned commit.

Bug: 58471 <https://bugzilla.kernel.org/show_bug.cgi?id=58471>

Signed-off-by: Arend van Spriel <[email protected]>
Hi, John

The commit message has been updated based on feedback
from Kalle en Hauke.

Gr. AvS
drivers/net/wireless/brcm80211/brcmsmac/main.c | 17 ++---------------
1 file changed, 2 insertions(+), 15 deletions(-)

diff --git a/drivers/net/wireless/brcm80211/brcmsmac/main.c b/drivers/net/wireless/brcm80211/brcmsmac/main.c
index 28e7aee..9fd6f2f 100644
--- a/drivers/net/wireless/brcm80211/brcmsmac/main.c
+++ b/drivers/net/wireless/brcm80211/brcmsmac/main.c
@@ -3074,21 +3074,8 @@ static void brcms_b_antsel_set(struct brcms_hardware *wlc_hw, u32 antsel_avail)
static bool brcms_c_ps_allowed(struct brcms_c_info *wlc)
- /* 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 (wlc->bsscfg->type == BRCMS_TYPE_AP)
- return false;
- if (wlc->bsscfg->type == BRCMS_TYPE_ADHOC)
- return false;
- return true;
+ /* not supporting PS so always return false for now */
+ return false;

static void brcms_c_statsupd(struct brcms_c_info *wlc)