diff options
| author | CNSS_WLAN Service <cnssbldsw@qualcomm.com> | 2018-06-26 05:26:55 -0700 |
|---|---|---|
| committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2018-06-26 05:26:55 -0700 |
| commit | bf3e9557173992e8250f37ae07b3ad0a622b423e (patch) | |
| tree | 40004c6edc587097144cc93149ee8a1d564efe3b | |
| parent | 8d1f0e0d05811002c4c3dd9781a012a780d50600 (diff) | |
| parent | aacc47bed53493e5484aed95bc968254b0672a44 (diff) | |
Merge "qcacld-2.0: Restart all SAP while MCC to SCC switch" into wlan-cld2.driver.lnx.1.0
| -rw-r--r-- | CORE/HDD/src/wlan_hdd_main.c | 34 |
1 files changed, 26 insertions, 8 deletions
diff --git a/CORE/HDD/src/wlan_hdd_main.c b/CORE/HDD/src/wlan_hdd_main.c index a2c9a749ebf5..91785e661b33 100644 --- a/CORE/HDD/src/wlan_hdd_main.c +++ b/CORE/HDD/src/wlan_hdd_main.c @@ -19667,6 +19667,9 @@ void wlan_hdd_check_sta_ap_concurrent_ch_intf(void *data) hdd_ap_ctx_t *pHddApCtx; uint16_t intf_ch = 0, vht_channel_width = 0; eCsrBand orig_band, new_band; + uint16_t ch_width; + hdd_adapter_list_node_t *adapter_node = NULL, *next = NULL; + VOS_STATUS status; if ((pHddCtx->cfg_ini->WlanMccToSccSwitchMode == VOS_MCC_TO_SCC_SWITCH_DISABLE) || !(vos_concurrent_open_sessions_running() @@ -19714,6 +19717,7 @@ void wlan_hdd_check_sta_ap_concurrent_ch_intf(void *data) } } } + ch_width = pHddApCtx->sapConfig.ch_width_orig; hddLog(VOS_TRACE_LEVEL_INFO, FL("SAP restarts due to MCC->SCC switch, orig chan: %d, new chan: %d"), @@ -19735,14 +19739,28 @@ void wlan_hdd_check_sta_ap_concurrent_ch_intf(void *data) hdd_sta_state_sap_notify(pHddCtx, STA_NOTIFY_CONNECTED, csa_info); }else{ #endif - pHddApCtx->bss_stop_reason = BSS_STOP_DUE_TO_MCC_SCC_SWITCH; - sme_SelectCBMode(hHal, - pHddApCtx->sapConfig.SapHw_mode, - pHddApCtx->sapConfig.channel, - pHddApCtx->sapConfig.sec_ch, - &vht_channel_width, pHddApCtx->sapConfig.ch_width_orig); - wlan_sap_set_vht_ch_width(pHddApCtx->sapContext, vht_channel_width); - wlan_hdd_restart_sap(ap_adapter); + status = hdd_get_front_adapter (pHddCtx, &adapter_node); + while (NULL != adapter_node && VOS_STATUS_SUCCESS == status) { + ap_adapter = adapter_node->pAdapter; + if (ap_adapter && ap_adapter->device_mode == WLAN_HDD_SOFTAP) { + if (test_bit(SOFTAP_INIT_DONE, &ap_adapter->event_flags)) { + pHddApCtx = WLAN_HDD_GET_AP_CTX_PTR(ap_adapter); + hHal = WLAN_HDD_GET_HAL_CTX(ap_adapter); + pHddApCtx->sapConfig.channel = intf_ch; + pHddApCtx->bss_stop_reason = BSS_STOP_DUE_TO_MCC_SCC_SWITCH; + sme_SelectCBMode(hHal, + pHddApCtx->sapConfig.SapHw_mode, + pHddApCtx->sapConfig.channel, + pHddApCtx->sapConfig.sec_ch, + &vht_channel_width, ch_width); + wlan_sap_set_vht_ch_width(pHddApCtx->sapContext, vht_channel_width); + hddLog(VOS_TRACE_LEVEL_INFO, FL("Restart prev SAP session ")); + wlan_hdd_restart_sap(ap_adapter); + } + } + status = hdd_get_next_adapter (pHddCtx, adapter_node, &next); + adapter_node = next; + } #ifdef WLAN_FEATURE_SAP_TO_FOLLOW_STA_CHAN } #endif |
