summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorManikandan Mohan <manikand@qca.qualcomm.com>2015-04-07 20:10:50 -0700
committerAnjaneeDevi Kapparapu <c_akappa@qti.qualcomm.com>2015-04-09 16:33:07 +0530
commit44f3b2cd7d3f248b9e9ed4c871117e29eb1dd988 (patch)
tree5b26d3d8cd88776652b61b906fd8534521052dc7
parent4dd351f093caea9af21aa7714483a45e54ffdb06 (diff)
qcacld: Fix STA connection failure after AP ACS
HDD updates ACS hw mode provided in SME config which is global for all STA and AP VIFs. Thus when ACS config set SME phymode to a particular band, STA VIF could not connect to external AP in other band. Fix this issue by passing the ACS hw mode via SAP config data struct instead of SME config. Change-Id: Idff9afd73c419e896bca78215fa9d785123111be CRs-fixed: 819280
-rw-r--r--CORE/HDD/src/wlan_hdd_cfg80211.c36
-rw-r--r--CORE/SAP/inc/sapApi.h2
-rw-r--r--CORE/SAP/src/sapModule.c2
3 files changed, 18 insertions, 22 deletions
diff --git a/CORE/HDD/src/wlan_hdd_cfg80211.c b/CORE/HDD/src/wlan_hdd_cfg80211.c
index b98b0b9f0d8d..34f5cbeb3a64 100644
--- a/CORE/HDD/src/wlan_hdd_cfg80211.c
+++ b/CORE/HDD/src/wlan_hdd_cfg80211.c
@@ -6202,13 +6202,6 @@ static int wlan_hdd_cfg80211_start_acs(hdd_adapter_t *adapter)
vos_mem_zero(&smeConfig, sizeof(smeConfig));
sme_GetConfigParam(hdd_ctx->hHal, &smeConfig);
- if (sap_config->acs_hw_mode == QCA_ACS_MODE_IEEE80211G)
- smeConfig.csrConfig.phyMode = eCSR_DOT11_MODE_11g;
- else if (sap_config->acs_hw_mode == QCA_ACS_MODE_IEEE80211B)
- smeConfig.csrConfig.phyMode = eCSR_DOT11_MODE_11b;
- else if (sap_config->acs_hw_mode == QCA_ACS_MODE_IEEE80211A)
- smeConfig.csrConfig.phyMode = eCSR_DOT11_MODE_11a;
-
if (sap_config->acs_ch_width == 40) {
switch (adapter->sap_dyn_ini_cfg.apOperatingBand) {
case eSAP_RF_SUBBAND_5_ALL_GHZ:
@@ -6221,7 +6214,7 @@ static int wlan_hdd_cfg80211_start_acs(hdd_adapter_t *adapter)
break;
}
- smeConfig.csrConfig.phyMode = eCSR_DOT11_MODE_11n;
+ sap_config->acs_hw_mode = eCSR_DOT11_MODE_11n;
#ifdef WLAN_FEATURE_11AC
/* Overwrite the hostapd setting for HW mode only for 11ac.
@@ -6235,23 +6228,21 @@ static int wlan_hdd_cfg80211_start_acs(hdd_adapter_t *adapter)
eHDD_DOT11_MODE_11ac) ||
(hdd_ctx->cfg_ini->dot11Mode ==
eHDD_DOT11_MODE_11ac_ONLY))) {
- if (hdd_ctx->cfg_ini->dot11Mode ==
- eHDD_DOT11_MODE_11ac_ONLY)
- smeConfig.csrConfig.phyMode =
- eCSR_DOT11_MODE_11ac_ONLY;
- else
- smeConfig.csrConfig.phyMode =
- eCSR_DOT11_MODE_11ac;
- /* for 2.4G */
if ((sap_config->acs_hw_mode
- == QCA_ACS_MODE_IEEE80211G) &&
+ == eCSR_DOT11_MODE_11g) &&
!hdd_ctx->cfg_ini->enableVhtFor24GHzBand)
- smeConfig.csrConfig.phyMode =
+ sap_config->acs_hw_mode =
eCSR_DOT11_MODE_11n;
+ else if (hdd_ctx->cfg_ini->dot11Mode ==
+ eHDD_DOT11_MODE_11ac_ONLY)
+ sap_config->acs_hw_mode =
+ eCSR_DOT11_MODE_11ac_ONLY;
+ else
+ sap_config->acs_hw_mode = eCSR_DOT11_MODE_11ac;
}
#endif
- hddLog(LOG1, FL("phyMode is %d"), smeConfig.csrConfig.phyMode);
+ hddLog(LOG1, FL("phyMode is %d"), sap_config->acs_hw_mode);
}
sme_UpdateConfig(hdd_ctx->hHal, &smeConfig);
@@ -6356,7 +6347,12 @@ static int wlan_hdd_cfg80211_do_acs(struct wiphy *wiphy,
*/
sap_config = &adapter->sessionCtx.ap.sapConfig;
sap_config->channel = AUTO_CHANNEL_SELECT;
- sap_config->acs_hw_mode = hw_mode;
+ if (hw_mode == QCA_ACS_MODE_IEEE80211G)
+ sap_config->acs_hw_mode = eCSR_DOT11_MODE_11g;
+ else if (hw_mode == QCA_ACS_MODE_IEEE80211B)
+ sap_config->acs_hw_mode = eCSR_DOT11_MODE_11b;
+ else if (hw_mode == QCA_ACS_MODE_IEEE80211A)
+ sap_config->acs_hw_mode = eCSR_DOT11_MODE_11a;
if (1 != hdd_ctx->is_dynamic_channel_range_set) {
if (hw_mode !=
diff --git a/CORE/SAP/inc/sapApi.h b/CORE/SAP/inc/sapApi.h
index 14056e28cccd..4dab41b452d2 100644
--- a/CORE/SAP/inc/sapApi.h
+++ b/CORE/SAP/inc/sapApi.h
@@ -488,7 +488,7 @@ typedef struct sap_Config {
v_U8_t apOperatingBand;
v_U8_t acs_case;
v_U8_t acs_ch_width;
- v_U8_t acs_hw_mode;
+ v_U32_t acs_hw_mode;
#ifdef FEATURE_WLAN_AP_AP_ACS_OPTIMIZE
v_U8_t skip_acs_scan_status;
v_U8_t skip_acs_scan_range1_stch;
diff --git a/CORE/SAP/src/sapModule.c b/CORE/SAP/src/sapModule.c
index cee7bbc48307..afdaa6b7a3f8 100644
--- a/CORE/SAP/src/sapModule.c
+++ b/CORE/SAP/src/sapModule.c
@@ -4119,7 +4119,7 @@ WLANSAP_ACS_CHSelect(v_PVOID_t pvosGCtx,
pMac = PMAC_STRUCT( hHal );
- sapContext->csrRoamProfile.phyMode = pMac->roam.configParam.phyMode;
+ sapContext->csrRoamProfile.phyMode = pConfig->acs_hw_mode;
if ((pConfig->channel == AUTO_CHANNEL_SELECT) &&
(sapContext->isScanSessionOpen == eSAP_FALSE)) {