summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCNSS_WLAN Service <cnssbldsw@qualcomm.com>2018-06-26 05:26:55 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2018-06-26 05:26:55 -0700
commitbf3e9557173992e8250f37ae07b3ad0a622b423e (patch)
tree40004c6edc587097144cc93149ee8a1d564efe3b
parent8d1f0e0d05811002c4c3dd9781a012a780d50600 (diff)
parentaacc47bed53493e5484aed95bc968254b0672a44 (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.c34
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