diff options
| author | Ke Huang <keh@codeaurora.org> | 2017-10-27 17:11:18 +0800 |
|---|---|---|
| committer | snandini <snandini@codeaurora.org> | 2017-11-15 08:44:46 -0800 |
| commit | a4dd3123f2e133785e0386fa6fd74a7be9070520 (patch) | |
| tree | 23191bc697372f6c35cf734ddb931c32d788433f | |
| parent | d19ebf1e4006afbe5ca5abb7e870ffe3bfac94d0 (diff) | |
qcacld-2.0: add p2p GO and AP concurrency support for MCC to SCC
The current qcacld-2.0 driver does not support the concurrency of
p2p GO and AP. Then add this conncurrency support for MCC to SCC.
Change-Id: I57040454761191defbccfba6291cf00e70188c83
CRs-Fixed: 2109735
| -rw-r--r-- | CORE/HDD/inc/wlan_hdd_cfg.h | 6 | ||||
| -rw-r--r-- | CORE/HDD/src/wlan_hdd_cfg.c | 10 | ||||
| -rw-r--r-- | CORE/SME/inc/csrApi.h | 1 | ||||
| -rw-r--r-- | CORE/SME/inc/csrInternal.h | 1 | ||||
| -rw-r--r-- | CORE/SME/src/csr/csrApiRoam.c | 4 | ||||
| -rw-r--r-- | CORE/SME/src/csr/csrUtil.c | 35 |
6 files changed, 50 insertions, 7 deletions
diff --git a/CORE/HDD/inc/wlan_hdd_cfg.h b/CORE/HDD/inc/wlan_hdd_cfg.h index 43432e842070..5cad82867062 100644 --- a/CORE/HDD/inc/wlan_hdd_cfg.h +++ b/CORE/HDD/inc/wlan_hdd_cfg.h @@ -475,6 +475,11 @@ enum #define CFG_WLAN_BAND_SWITCH_ENABLE_MIN ( 0 ) #define CFG_WLAN_BAND_SWITCH_ENABLE_MAX ( 1 ) #define CFG_WLAN_BAND_SWITCH_ENABLE_DEFAULT ( 0 ) + +#define CFG_WLAN_AP_P2PGO_CONC_ENABLE "gWlanApP2pGOConcurrencyEnable" +#define CFG_WLAN_AP_P2PGO_CONC_ENABLE_MIN ( 0 ) +#define CFG_WLAN_AP_P2PGO_CONC_ENABLE_MAX ( 1 ) +#define CFG_WLAN_AP_P2PGO_CONC_ENABLE_DEFAULT ( 0 ) #endif @@ -5255,6 +5260,7 @@ struct hdd_config { #ifdef FEATURE_WLAN_MCC_TO_SCC_SWITCH v_U32_t WlanMccToSccSwitchMode; bool wlan_band_switch_enable; + bool wlan_ap_p2pgo_conc_enable; #endif #ifdef FEATURE_WLAN_AUTO_SHUTDOWN v_U32_t WlanAutoShutdown; diff --git a/CORE/HDD/src/wlan_hdd_cfg.c b/CORE/HDD/src/wlan_hdd_cfg.c index b3818848d0ce..f9769c5ea80e 100644 --- a/CORE/HDD/src/wlan_hdd_cfg.c +++ b/CORE/HDD/src/wlan_hdd_cfg.c @@ -1477,6 +1477,13 @@ REG_TABLE_ENTRY g_registry_table[] = CFG_WLAN_BAND_SWITCH_ENABLE_DEFAULT, CFG_WLAN_BAND_SWITCH_ENABLE_MIN, CFG_WLAN_BAND_SWITCH_ENABLE_MAX ), + + REG_VARIABLE( CFG_WLAN_AP_P2PGO_CONC_ENABLE , WLAN_PARAM_Integer, + hdd_config_t, wlan_ap_p2pgo_conc_enable, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_WLAN_AP_P2PGO_CONC_ENABLE_DEFAULT, + CFG_WLAN_AP_P2PGO_CONC_ENABLE_MIN, + CFG_WLAN_AP_P2PGO_CONC_ENABLE_MAX ), #endif #ifdef FEATURE_WLAN_AUTO_SHUTDOWN REG_VARIABLE( CFG_WLAN_AUTO_SHUTDOWN , WLAN_PARAM_Integer, @@ -5434,6 +5441,7 @@ void print_hdd_cfg(hdd_context_t *pHddCtx) #ifdef FEATURE_WLAN_MCC_TO_SCC_SWITCH VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gWlanMccToSccSwitchMode] Value = [%u]", pHddCtx->cfg_ini->WlanMccToSccSwitchMode); VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gWlanBandSwitchEnable] Value = [%u]", pHddCtx->cfg_ini->wlan_band_switch_enable); + VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gWlanApP2pGOConcurrencyEnable] Value = [%u]", pHddCtx->cfg_ini->wlan_ap_p2pgo_conc_enable); #endif #ifdef FEATURE_WLAN_AUTO_SHUTDOWN VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gWlanAutoShutdown] Value = [%u]", pHddCtx->cfg_ini->WlanAutoShutdown); @@ -8021,6 +8029,8 @@ VOS_STATUS hdd_set_sme_config( hdd_context_t *pHddCtx ) #ifdef FEATURE_WLAN_MCC_TO_SCC_SWITCH smeConfig->csrConfig.cc_switch_mode = pConfig->WlanMccToSccSwitchMode; smeConfig->csrConfig.band_switch_enable = pConfig->wlan_band_switch_enable; + smeConfig->csrConfig.ap_p2pgo_concurrency_enable = + pConfig->wlan_ap_p2pgo_conc_enable; #endif smeConfig->csrConfig.max_amsdu_num = pConfig->max_amsdu_num; diff --git a/CORE/SME/inc/csrApi.h b/CORE/SME/inc/csrApi.h index 7c845dca66a9..735b74c4baa2 100644 --- a/CORE/SME/inc/csrApi.h +++ b/CORE/SME/inc/csrApi.h @@ -1364,6 +1364,7 @@ typedef struct tagCsrConfigParam #ifdef FEATURE_WLAN_MCC_TO_SCC_SWITCH tANI_U8 cc_switch_mode; bool band_switch_enable; + bool ap_p2pgo_concurrency_enable; #endif tANI_U8 allowDFSChannelRoam; #ifdef WLAN_FEATURE_ROAM_OFFLOAD diff --git a/CORE/SME/inc/csrInternal.h b/CORE/SME/inc/csrInternal.h index dab6260cb1e7..441acfaa2e1b 100644 --- a/CORE/SME/inc/csrInternal.h +++ b/CORE/SME/inc/csrInternal.h @@ -694,6 +694,7 @@ typedef struct tagCsrConfig #ifdef FEATURE_WLAN_MCC_TO_SCC_SWITCH tANI_U8 cc_switch_mode; bool band_switch_enable; + bool ap_p2pgo_concurrency_enable; #endif tANI_U8 allowDFSChannelRoam; #ifdef WLAN_FEATURE_ROAM_OFFLOAD diff --git a/CORE/SME/src/csr/csrApiRoam.c b/CORE/SME/src/csr/csrApiRoam.c index 93cb0b77a431..692f5118f74b 100644 --- a/CORE/SME/src/csr/csrApiRoam.c +++ b/CORE/SME/src/csr/csrApiRoam.c @@ -2075,6 +2075,8 @@ eHalStatus csrChangeDefaultConfigParam(tpAniSirGlobal pMac, tCsrConfigParam *pPa #ifdef FEATURE_WLAN_MCC_TO_SCC_SWITCH pMac->roam.configParam.cc_switch_mode = pParam->cc_switch_mode; pMac->roam.configParam.band_switch_enable = pParam->band_switch_enable; + pMac->roam.configParam.ap_p2pgo_concurrency_enable = + pParam->ap_p2pgo_concurrency_enable; #endif pMac->roam.configParam.allowDFSChannelRoam = pParam->allowDFSChannelRoam; #ifdef WLAN_FEATURE_ROAM_OFFLOAD @@ -2260,6 +2262,8 @@ eHalStatus csrGetConfigParam(tpAniSirGlobal pMac, tCsrConfigParam *pParam) #ifdef FEATURE_WLAN_MCC_TO_SCC_SWITCH pParam->cc_switch_mode = pMac->roam.configParam.cc_switch_mode; pParam->band_switch_enable = pMac->roam.configParam.band_switch_enable; + pParam->ap_p2pgo_concurrency_enable = + pMac->roam.configParam.ap_p2pgo_concurrency_enable; #endif pParam->enableTxLdpc = pMac->roam.configParam.txLdpcEnable; diff --git a/CORE/SME/src/csr/csrUtil.c b/CORE/SME/src/csr/csrUtil.c index e067640b0422..204c32e237db 100644 --- a/CORE/SME/src/csr/csrUtil.c +++ b/CORE/SME/src/csr/csrUtil.c @@ -2396,6 +2396,8 @@ csrIsconcurrentsessionValid(tpAniSirGlobal pMac,tANI_U32 cursessionId, tANI_U8 automotive_support_enable = (pMac->roam.configParam.conc_custom_rule1 | pMac->roam.configParam.conc_custom_rule2); + bool ap_p2pgo_concurrency_enable = + pMac->roam.configParam.ap_p2pgo_concurrency_enable; tVOS_CON_MODE bss_persona; eCsrConnectState connect_state; @@ -2417,13 +2419,24 @@ csrIsconcurrentsessionValid(tpAniSirGlobal pMac,tANI_U32 cursessionId, return eHAL_STATUS_SUCCESS; case VOS_STA_SAP_MODE: - if (((bss_persona == VOS_P2P_GO_MODE) && (connect_state != - eCSR_ASSOC_STATE_TYPE_NOT_CONNECTED) && - (0 == automotive_support_enable)) || - ((bss_persona == VOS_IBSS_MODE) && (connect_state != + if ((VOS_MCC_TO_SCC_SWITCH_FORCE == + pMac->roam.configParam.cc_switch_mode) && + (ap_p2pgo_concurrency_enable) && + (bss_persona == VOS_P2P_GO_MODE) && + (connect_state != + eCSR_ASSOC_STATE_TYPE_NOT_CONNECTED)) { + VOS_TRACE(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_INFO, + FL("Start AP session concurrency with P2P-GO")); + return eHAL_STATUS_SUCCESS; + } else if (((bss_persona == VOS_P2P_GO_MODE) && + (0 == automotive_support_enable) && + (connect_state != + eCSR_ASSOC_STATE_TYPE_NOT_CONNECTED)) || + ((bss_persona == VOS_IBSS_MODE) && + (connect_state != eCSR_ASSOC_STATE_TYPE_IBSS_DISCONNECTED))) { - VOS_TRACE(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_ERROR, - FL("Can't start multiple beaconing role")); + VOS_TRACE(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_ERROR, + FL("Can't start multiple beaconing role")); return eHAL_STATUS_FAILURE; } break; @@ -2434,7 +2447,15 @@ csrIsconcurrentsessionValid(tpAniSirGlobal pMac,tANI_U32 cursessionId, VOS_TRACE(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_ERROR, FL(" ****P2P GO mode already exists ****")); return eHAL_STATUS_FAILURE; - + } else if ((VOS_MCC_TO_SCC_SWITCH_FORCE == + pMac->roam.configParam.cc_switch_mode) && + (ap_p2pgo_concurrency_enable) && + (bss_persona == VOS_STA_SAP_MODE) && + (connect_state != + eCSR_ASSOC_STATE_TYPE_NOT_CONNECTED)) { + VOS_TRACE(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_INFO, + FL("Start P2P-GO session concurrency with AP")); + return eHAL_STATUS_SUCCESS; } else if (((bss_persona == VOS_STA_SAP_MODE) && (connect_state != eCSR_ASSOC_STATE_TYPE_NOT_CONNECTED) && |
