Search Linux Wireless

Re: REGRESSION: v3.10-rc1: [PATCH 04/15] brcmsmac: remove brcms_bss_cfg->associated

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 05/18/2013 09:53 PM, Arend van Spriel 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.

Gr. AvS

diff --git a/drivers/net/wireless/brcm80211/brcmsmac/main.c
b/drivers/net/wireless/brcm80211/brcmsmac/main.c
index 90e6c0d..810b7e2 100644
--- a/drivers/net/wireless/brcm80211/brcmsmac/main.c
+++ b/drivers/net/wireless/brcm80211/brcmsmac/main.c
@@ -3049,8 +3049,6 @@ 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)
  {
-    struct brcms_bss_cfg *cfg = wlc->bsscfg;
-
      /* disallow PS when one of the following global conditions meets */
      if (!wlc->pub->associated)
          return false;
@@ -3059,9 +3057,6 @@ static bool brcms_c_ps_allowed(struct
brcms_c_info *wlc)
      if (wlc->filter_flags & FIF_PROMISC_IN_BSS)
          return false;

-    if (cfg->associated)
-        return false;
-

wlc->pub->associated and wlc->bsscfg->associated have the same value, which I guess was your motivation to remove it from struct brcms_bss_cfg. So before this patch the function brcms_c_ps_allowed() always returned false. As power-save is a unsupported feature for brcmsmac that was fine, but the removal below changed that behaviour.

As power-save is not supported this function can be changed to simply return false for now. I will send out a patch for that.

Regards,
Arend

      return true;
  }

@@ -3819,7 +3814,7 @@ static void brcms_c_set_home_chanspec(struct
brcms_c_info *wlc, u16 chanspec)
      if (wlc->home_chanspec != chanspec) {
          wlc->home_chanspec = chanspec;

-        if (wlc->bsscfg->associated)
+        if (wlc->pub->associated)
              wlc->bsscfg->current_bss->chanspec = chanspec;
      }
  }
@@ -5433,7 +5428,7 @@ static void brcms_c_ofdm_rateset_war(struct
brcms_c_info *wlc)
      u8 r;
      bool war = false;

-    if (wlc->bsscfg->associated)
+    if (wlc->pub->associated)
          r = wlc->bsscfg->current_bss->rateset.rates[0];
      else
          r = wlc->default_bss->rateset.rates[0];
@@ -5527,7 +5522,7 @@ int brcms_c_set_rateset(struct brcms_c_info
*wlc, struct brcm_rateset *rs)
      /* merge rateset coming in with the current mcsset */
      if (wlc->pub->_n_enab & SUPPORT_11N) {
          struct brcms_bss_info *mcsset_bss;
-        if (wlc->bsscfg->associated)
+        if (wlc->pub->associated)
              mcsset_bss = wlc->bsscfg->current_bss;
          else
              mcsset_bss = wlc->default_bss;
@@ -7496,7 +7491,6 @@ void brcms_c_scan_stop(struct brcms_c_info *wlc)
  void brcms_c_associate_upd(struct brcms_c_info *wlc, bool state)
  {
      wlc->pub->associated = state;
-    wlc->bsscfg->associated = state;
  }

  /*
diff --git a/drivers/net/wireless/brcm80211/brcmsmac/main.h
b/drivers/net/wireless/brcm80211/brcmsmac/main.h
index 0cfe782..96dc2f4 100644
--- a/drivers/net/wireless/brcm80211/brcmsmac/main.h
+++ b/drivers/net/wireless/brcm80211/brcmsmac/main.h
@@ -589,7 +589,6 @@ enum brcms_bss_type {
   * type: interface type
   * up: is this configuration up operational
   * enable: is this configuration enabled
- * associated: is BSS in ASSOCIATED state
   * SSID_len: the length of SSID
   * SSID: SSID string
   *
@@ -608,7 +607,6 @@ struct brcms_bss_cfg {
      enum brcms_bss_type type;
      bool up;
      bool enable;
-    bool associated;
      u8 SSID_len;
      u8 SSID[IEEE80211_MAX_SSID_LEN];
      u8 BSSID[ETH_ALEN];




--
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




[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux