qcacld-3.0: Don't stop SAP while CSA in progress
1. If CSA failed for last CSA in progress, can't stop SAP, SAP stop and SAP CSA concurrency may lead to assert. 2. When access global var like pm_conc_connection_list, always need add lock protection. 3. During CSA in progress, NAN CSA don't block current thread, just return. 4. When SAP CSA completed, need check whether need CSA again for NAN started during CSA. Change-Id: I076ecad7395a265bbe83aaf97617a9a8b6c8b41a CRs-Fixed: 3357265
This commit is contained in:

committed by
Madan Koyyalamudi

parent
92095b0158
commit
fff3e6bb11
@@ -1998,7 +1998,6 @@ void policy_mgr_nan_sap_post_enable_conc_check(struct wlan_objmgr_psoc *psoc)
|
||||
struct policy_mgr_conc_connection_info *sap_info = NULL;
|
||||
uint8_t i;
|
||||
qdf_freq_t nan_freq_2g, nan_freq_5g;
|
||||
QDF_STATUS status;
|
||||
|
||||
pm_ctx = policy_mgr_get_context(psoc);
|
||||
if (!pm_ctx) {
|
||||
@@ -2006,6 +2005,7 @@ void policy_mgr_nan_sap_post_enable_conc_check(struct wlan_objmgr_psoc *psoc)
|
||||
return;
|
||||
}
|
||||
|
||||
qdf_mutex_acquire(&pm_ctx->qdf_conc_list_lock);
|
||||
for (i = 0; i < MAX_NUMBER_OF_CONC_CONNECTIONS; i++) {
|
||||
if (pm_conc_connection_list[i].mode == PM_SAP_MODE &&
|
||||
pm_conc_connection_list[i].in_use) {
|
||||
@@ -2013,6 +2013,8 @@ void policy_mgr_nan_sap_post_enable_conc_check(struct wlan_objmgr_psoc *psoc)
|
||||
break;
|
||||
}
|
||||
}
|
||||
qdf_mutex_release(&pm_ctx->qdf_conc_list_lock);
|
||||
|
||||
if (!sap_info)
|
||||
goto end;
|
||||
if (sap_info->freq == 0)
|
||||
@@ -2029,12 +2031,8 @@ void policy_mgr_nan_sap_post_enable_conc_check(struct wlan_objmgr_psoc *psoc)
|
||||
|
||||
if (pm_ctx->hdd_cbacks.hdd_is_chan_switch_in_progress &&
|
||||
pm_ctx->hdd_cbacks.hdd_is_chan_switch_in_progress()) {
|
||||
policy_mgr_debug("wait as channel switch is already in progress");
|
||||
status = qdf_wait_single_event(
|
||||
&pm_ctx->channel_switch_complete_evt,
|
||||
CHANNEL_SWITCH_COMPLETE_TIMEOUT);
|
||||
if (QDF_IS_STATUS_ERROR(status))
|
||||
policy_mgr_err("wait for event failed, still continue with channel switch");
|
||||
policy_mgr_debug("channel switch is already in progress");
|
||||
return;
|
||||
}
|
||||
|
||||
if (pm_ctx->hdd_cbacks.wlan_hdd_set_sap_csa_reason)
|
||||
|
Reference in New Issue
Block a user