From: Xinming Hu <[email protected]>

When assocaiting to an AP , mwifiex set supported data rates
based on target AP's capability. For 5G AP(11a mode), a/n/ac mode
would possibly be set.
However, for some chips which dont support 11AC mode current config_bands
will be used instead.

For example, if we join an IBSS in 11b mode ,adapter->config_bands
will be set to 1(11b mode). Then we leave IBSS ,and try to connect
5G a/n mode AP. At this time , only 11b mode data rates will be
supported in assoc request , which result in assoc failure with
reason code 18: Association denied due to requesting station not
supporting all rates.

This patch fix such a cornel case, by adding additional check for
current chip's 11ac capability.

Reported-by: Andreas Fenkart <[email protected]>
Signed-off-by: Xinming Hu <[email protected]>
Signed-off-by: Avinash Patil <[email protected]>
Signed-off-by: Amitkumar Karwar <[email protected]>
Signed-off-by: Marc Yang <[email protected]>
Signed-off-by: Cathy Luo <[email protected]>
---
 drivers/net/wireless/mwifiex/sta_ioctl.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/drivers/net/wireless/mwifiex/sta_ioctl.c 
b/drivers/net/wireless/mwifiex/sta_ioctl.c
index b95a29b..92f3eb8 100644
--- a/drivers/net/wireless/mwifiex/sta_ioctl.c
+++ b/drivers/net/wireless/mwifiex/sta_ioctl.c
@@ -287,10 +287,13 @@ int mwifiex_bss_start(struct mwifiex_private *priv, 
struct cfg80211_bss *bss,
                        return -1;
 
                if (mwifiex_band_to_radio_type(bss_desc->bss_band) ==
-                                               HostCmd_SCAN_RADIO_TYPE_BG)
+                                               HostCmd_SCAN_RADIO_TYPE_BG) {
                        config_bands = BAND_B | BAND_G | BAND_GN;
-               else
-                       config_bands = BAND_A | BAND_AN | BAND_AAC;
+               } else {
+                       config_bands = BAND_A | BAND_AN;
+                       if (adapter->fw_bands & BAND_AAC)
+                               config_bands |= BAND_AAC;
+               }
 
                if (!((config_bands | adapter->fw_bands) & ~adapter->fw_bands))
                        adapter->config_bands = config_bands;
-- 
1.8.1.4

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to