summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKe Huang <keh@codeaurora.org>2017-10-27 17:11:18 +0800
committersnandini <snandini@codeaurora.org>2017-11-15 08:44:46 -0800
commita4dd3123f2e133785e0386fa6fd74a7be9070520 (patch)
tree23191bc697372f6c35cf734ddb931c32d788433f
parentd19ebf1e4006afbe5ca5abb7e870ffe3bfac94d0 (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.h6
-rw-r--r--CORE/HDD/src/wlan_hdd_cfg.c10
-rw-r--r--CORE/SME/inc/csrApi.h1
-rw-r--r--CORE/SME/inc/csrInternal.h1
-rw-r--r--CORE/SME/src/csr/csrApiRoam.c4
-rw-r--r--CORE/SME/src/csr/csrUtil.c35
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) &&