wlan: Fix for IBSS in gDot11Mode=0
IBSS was picking up only 11A rates when gDot11Mode was configured
to 0. The AUTO mode needs to be handled gracefully for IBSS mode.
Change-Id: I90152fc38e971c4fcd81ead96ae0cbcf06e52b57
CRs-Fixed: 487737
diff --git a/CORE/SME/src/csr/csrApiRoam.c b/CORE/SME/src/csr/csrApiRoam.c
index f39780f..06cbeaf 100644
--- a/CORE/SME/src/csr/csrApiRoam.c
+++ b/CORE/SME/src/csr/csrApiRoam.c
@@ -10184,12 +10184,73 @@
break;
case eCSR_CFG_DOT11_MODE_11N:
cfgDot11Mode = eCSR_CFG_DOT11_MODE_11N;
- eBand = eCSR_BAND_24;
- break;
- //case eCSR_CFG_DOT11_MODE_BEST:
- // cfgDot11Mode = eCSR_CFG_DOT11_MODE_BEST;
- // eBand = eCSR_BAND_24;
- // break;
+ eBand = CSR_IS_CHANNEL_24GHZ(operationChn) ? eCSR_BAND_24 : eCSR_BAND_5G;
+ break;
+#ifdef WLAN_FEATURE_11AC
+ case eCSR_CFG_DOT11_MODE_11AC:
+ if (IS_FEATURE_SUPPORTED_BY_FW(DOT11AC))
+ {
+ cfgDot11Mode = eCSR_CFG_DOT11_MODE_11AC;
+ eBand = eCSR_BAND_5G;
+ }
+ else
+ {
+ cfgDot11Mode = eCSR_CFG_DOT11_MODE_11N;
+ eBand = CSR_IS_CHANNEL_24GHZ(operationChn) ? eCSR_BAND_24 : eCSR_BAND_5G;
+ }
+ break;
+ case eCSR_CFG_DOT11_MODE_11AC_ONLY:
+ if (IS_FEATURE_SUPPORTED_BY_FW(DOT11AC))
+ {
+ cfgDot11Mode = eCSR_CFG_DOT11_MODE_11AC_ONLY;
+ eBand = eCSR_BAND_5G;
+ }
+ else
+ {
+ eBand = CSR_IS_CHANNEL_24GHZ(operationChn) ? eCSR_BAND_24 : eCSR_BAND_5G;
+ cfgDot11Mode = eCSR_CFG_DOT11_MODE_11N;
+ }
+ break;
+#endif
+ case eCSR_CFG_DOT11_MODE_AUTO:
+ eBand = pMac->roam.configParam.eBand;
+ if (eCSR_BAND_24 == eBand)
+ {
+ // WiFi tests require IBSS networks to start in 11b mode
+ // without any change to the default parameter settings
+ // on the adapter. We use ACU to start an IBSS through
+ // creation of a startIBSS profile. This startIBSS profile
+ // has Auto MACProtocol and the adapter property setting
+ // for dot11Mode is also AUTO. So in this case, let's
+ // start the IBSS network in 11b mode instead of 11g mode.
+ // So this is for Auto=profile->MacProtocol && Auto=Global.
+ // dot11Mode && profile->channel is < 14, then start the IBSS
+ // in b mode.
+ //
+ // Note: we used to have this start as an 11g IBSS for best
+ // performance... now to specify that the user will have to
+ // set the do11Mode in the property page to 11g to force it.
+ cfgDot11Mode = eCSR_CFG_DOT11_MODE_11B;
+ }
+ else
+ {
+#ifdef WLAN_FEATURE_11AC
+ if (IS_FEATURE_SUPPORTED_BY_FW(DOT11AC))
+ {
+ cfgDot11Mode = eCSR_CFG_DOT11_MODE_11AC;
+ eBand = eCSR_BAND_5G;
+ }
+ else
+ {
+ cfgDot11Mode = eCSR_CFG_DOT11_MODE_11N;
+ eBand = CSR_IS_CHANNEL_24GHZ(operationChn) ? eCSR_BAND_24 : eCSR_BAND_5G;
+ }
+#else
+ cfgDot11Mode = eCSR_CFG_DOT11_MODE_11N;
+ eBand = CSR_IS_CHANNEL_24GHZ(operationChn) ? eCSR_BAND_24 : eCSR_BAND_5G;
+#endif
+ }
+ break;
default:
// Global dot11 Mode setting is 11a/b/g.
// use the channel number to determine the Mode setting.
@@ -10210,19 +10271,20 @@
}
else if ( CSR_IS_CHANNEL_24GHZ(operationChn) )
{
- // channel is a 2.4GHz channel. Set mode to 11g.
+ // WiFi tests require IBSS networks to start in 11b mode
+ // without any change to the default parameter settings
+ // on the adapter. We use ACU to start an IBSS through
+ // creation of a startIBSS profile. This startIBSS profile
+ // has Auto MACProtocol and the adapter property setting
+ // for dot11Mode is also AUTO. So in this case, let's
+ // start the IBSS network in 11b mode instead of 11g mode.
+ // So this is for Auto=profile->MacProtocol && Auto=Global.
+ // dot11Mode && profile->channel is < 14, then start the IBSS
+ // in b mode.
//
- // !!LAC - WiFi tests require IBSS networks to start in 11b mode without any change to the
- // default parameter settings on the adapter. We use ACU to start an IBSS through creation
- // of a startIBSS profile. this startIBSS profile has Auto MACProtocol and the
- // adapter property setting for dot11Mode is also AUTO. So in this case, let's start
- // the IBSS network in 11b mode instead of 11g mode.
- //
- // so this is for Auto=profile->MacProtocol && Auto=Global.dot11Mode && profile->channel is < 14,
- // then start the IBSS in b mode.
- //
- // Note: we used to have this start as an 11g IBSS for best performance... now to specify that
- // the user will have to set the do11Mode in the property page to 11g to force it.
+ // Note: we used to have this start as an 11g IBSS for best
+ // performance... now to specify that the user will have to
+ // set the do11Mode in the property page to 11g to force it.
cfgDot11Mode = eCSR_CFG_DOT11_MODE_11B;
eBand = eCSR_BAND_24;
}
@@ -10256,7 +10318,7 @@
{
eBand = eCSR_BAND_5G;
}
- }
+ }
if(pBand)
{
*pBand = eBand;