qcacld-3.0: Force P2PGO to SCC only if other beacon entity is active

In case SAP+P2PGO+STA interface are present, with SAP in down state
and STA in conencted state and P2PGO is started, it uses API
policy_mgr_concurrent_beaconing_sessions_running checks if multiple
beaconing interface are present to force the P2PGO to SCC or DBS
channel and as SAP and P2PGO interface are present it returns true.
Now the API to get concurrent channel get the channel of STA
which is active and thus P2PGO moves to STA channel.

Thus use the api to get channel for concurrent beaconing interface
instead of any interface to take care of beaconing interface
concurrency scenareos. With this concurrent channel will be non 0 only
if any other beaconing entity is present and in up state and thus
P2PGO will move to SCC or DBS only in case any other beaconing
interface is actually up and beaconing on a channel.

Change-Id: Ic4bacc8cc45386499c11e09e79d095e926318400
CRs-Fixed: 2395530
This commit is contained in:
Abhishek Singh
2019-02-14 10:18:28 +05:30
committed by nshrivas
orang tua 83a2dd231a
melakukan b1954c63bc
5 mengubah file dengan 83 tambahan dan 27 penghapusan

Melihat File

@@ -541,7 +541,9 @@ void sap_dfs_set_current_channel(void *ctx)
uint16_t con_ch;
mac_handle_t handle = MAC_HANDLE(mac_ctx);
con_ch = sme_get_concurrent_operation_channel(handle);
con_ch =
sme_get_beaconing_concurrent_operation_channel(
handle, sap_ctx->sessionId);
if (!con_ch || !wlan_reg_is_dfs_ch(pdev, con_ch))
tgt_dfs_get_radars(pdev);
} else {
@@ -758,7 +760,8 @@ sap_validate_chan(struct sap_context *sap_context,
policy_mgr_mode_specific_connection_count(mac_ctx->psoc,
PM_P2P_GO_MODE, NULL)))) {
con_ch =
sme_get_concurrent_operation_channel(mac_handle);
sme_get_beaconing_concurrent_operation_channel(
mac_handle, sap_context->sessionId);
#ifdef FEATURE_WLAN_STA_AP_MODE_DFS_DISABLE
if (con_ch && sap_context->channel != con_ch &&
wlan_reg_is_dfs_ch(mac_ctx->pdev,
@@ -769,8 +772,8 @@ sap_validate_chan(struct sap_context *sap_context,
}
#endif
#ifdef FEATURE_WLAN_MCC_TO_SCC_SWITCH
if (sap_context->cc_switch_mode !=
QDF_MCC_TO_SCC_SWITCH_DISABLE) {
if (con_ch && (sap_context->cc_switch_mode !=
QDF_MCC_TO_SCC_SWITCH_DISABLE)) {
/*
* For ACS request ,the sapContext->channel is 0,
* we skip below overlap checking. When the ACS
@@ -956,7 +959,8 @@ QDF_STATUS sap_channel_sel(struct sap_context *sap_context)
policy_mgr_mode_specific_connection_count(mac_ctx->psoc,
PM_P2P_GO_MODE,
NULL)))) {
con_ch = sme_get_concurrent_operation_channel(mac_handle);
con_ch = sme_get_beaconing_concurrent_operation_channel(
mac_handle, sap_context->sessionId);
#ifdef FEATURE_WLAN_STA_AP_MODE_DFS_DISABLE
if (con_ch)
sap_context->dfs_ch_disable = true;
@@ -2087,7 +2091,8 @@ sap_goto_starting(struct sap_context *sap_ctx,
if (policy_mgr_concurrent_beaconing_sessions_running(mac_ctx->psoc)) {
uint16_t con_ch;
con_ch = sme_get_concurrent_operation_channel(mac_handle);
con_ch = sme_get_beaconing_concurrent_operation_channel(
mac_handle, sap_ctx->sessionId);
if (con_ch && wlan_reg_is_dfs_ch(mac_ctx->pdev, con_ch)) {
sap_ctx->channel = con_ch;
wlan_reg_set_channel_params(mac_ctx->pdev,