staging: brcm80211: allow changing channel by mac80211 when associated
authorArend van Spriel <arend@broadcom.com>
Tue, 22 Feb 2011 10:12:09 +0000 (11:12 +0100)
committerGreg Kroah-Hartman <gregkh@suse.de>
Wed, 23 Feb 2011 22:07:30 +0000 (14:07 -0800)
When associated on 5G the driver receives a probe request for 2G with
a 2G rate specified. The driver asserts as the operating band is still
5G when the probe request packet is given. Root cause was that ioctl
function did fail upon setting the channel as requested by mac80211
when we are associated.

Signed-off-by: Arend van Spriel <arend@broadcom.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/staging/brcm80211/brcmsmac/wlc_bsscfg.h
drivers/staging/brcm80211/brcmsmac/wlc_mac80211.c

index 0bb4a212dd710444a609418805a052171e294280..8096b0f521563f4b85b44ccaf1934421c3f6acb9 100644 (file)
@@ -111,7 +111,6 @@ struct wlc_bsscfg {
        pmkid_t pmkid[MAXPMKID];        /* PMKID cache */
        uint npmkid;            /* num cached PMKIDs */
 
-       wlc_bss_info_t *target_bss;     /* BSS parms during tran. to ASSOCIATED state */
        wlc_bss_info_t *current_bss;    /* BSS parms in ASSOCIATED state */
 
        /* PM states */
index 05bcda3b3791ec559a5f4d17fb8421b7400282e4..fc3c6ab81d2eb76bf58d3b2e2c3f0eb11ea69fea 100644 (file)
@@ -789,7 +789,7 @@ void wlc_set_home_chanspec(struct wlc_info *wlc, chanspec_t chanspec)
                FOREACH_BSS(wlc, idx, cfg) {
                        if (!cfg->associated)
                                continue;
-                       cfg->target_bss->chanspec = chanspec;
+
                        cfg->current_bss->chanspec = chanspec;
                }
 
@@ -3209,7 +3209,7 @@ _wlc_ioctl(struct wlc_info *wlc, int cmd, void *arg, int len,
 
                        wlc->default_bss->chanspec = chspec;
                        /* wlc_BSSinit() will sanitize the rateset before using it.. */
-                       if (wlc->pub->up && !wlc->pub->associated &&
+                       if (wlc->pub->up &&
                            (WLC_BAND_PI_RADIO_CHANSPEC != chspec)) {
                                wlc_set_home_chanspec(wlc, chspec);
                                wlc_suspend_mac_and_wait(wlc);