diff options
| author | Ryan Hsu <ryanhsu@qca.qualcomm.com> | 2014-06-16 03:24:59 -0700 |
|---|---|---|
| committer | Pitani Venkata Rajesh Kumar <c_vpitan@qti.qualcomm.com> | 2014-06-27 11:42:54 +0530 |
| commit | b7635a5e29bf06b0530a26fa580f9cffd1df8e57 (patch) | |
| tree | 0de90f2213304568a6949975496d691b45fefa99 | |
| parent | ff7a00105424e635b88ae517d59eb4434e37bf6a (diff) | |
qcacld: hdd: add ini flag to enable/disable GreenAP feature
To selectively enable/disable the GreenAP, add a separate ini flag
to control it.
Also in the case of gEnable2x2=0 to only use 1 tx/rx chain case, the
GreenAP feature should be disabled.
Change-Id: I3d30cba003a9ebe0caad8b1a7b620bad75e14d28
CRs-fixed: 680241
| -rw-r--r-- | CORE/HDD/inc/wlan_hdd_cfg.h | 11 | ||||
| -rw-r--r-- | CORE/HDD/src/wlan_hdd_cfg.c | 15 | ||||
| -rw-r--r-- | CORE/HDD/src/wlan_hdd_hostapd.c | 25 | ||||
| -rwxr-xr-x | CORE/HDD/src/wlan_hdd_main.c | 1 | ||||
| -rwxr-xr-x | firmware_bin/WCNSS_qcom_cfg.ini | 4 |
5 files changed, 53 insertions, 3 deletions
diff --git a/CORE/HDD/inc/wlan_hdd_cfg.h b/CORE/HDD/inc/wlan_hdd_cfg.h index b788e62fee08..3aa36cd0cbf0 100644 --- a/CORE/HDD/inc/wlan_hdd_cfg.h +++ b/CORE/HDD/inc/wlan_hdd_cfg.h @@ -1612,6 +1612,12 @@ typedef enum #define CFG_ENABLE_FW_MODULE_LOG_DEFAULT "" #endif +#ifdef FEATURE_GREEN_AP +#define CFG_ENABLE_GREEN_AP_FEATURE "gEnableGreenAp" +#define CFG_ENABLE_GREEN_AP_FEATURE_MIN ( 0 ) +#define CFG_ENABLE_GREEN_AP_FEATURE_MAX ( 1 ) +#define CFG_ENABLE_GREEN_AP_FEATURE_DEFAULT ( 1 ) +#endif /* * VOS Trace Enable Control @@ -3176,6 +3182,11 @@ typedef struct #endif v_U8_t ignoreCAC; v_BOOL_t IsSapDfsChSifsBurstEnabled; + +#ifdef FEATURE_GREEN_AP + v_BOOL_t enableGreenAP; +#endif + } hdd_config_t; #ifdef WLAN_FEATURE_MBSSID diff --git a/CORE/HDD/src/wlan_hdd_cfg.c b/CORE/HDD/src/wlan_hdd_cfg.c index 233faaf0f6ca..4002009c0b06 100644 --- a/CORE/HDD/src/wlan_hdd_cfg.c +++ b/CORE/HDD/src/wlan_hdd_cfg.c @@ -3600,6 +3600,15 @@ REG_TABLE_ENTRY g_registry_table[] = CFG_ENABLE_HT_2040_COEX_MAX ), #endif +#ifdef FEATURE_GREEN_AP + REG_VARIABLE( CFG_ENABLE_GREEN_AP_FEATURE, WLAN_PARAM_Integer, + hdd_config_t, enableGreenAP, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_ENABLE_GREEN_AP_FEATURE_DEFAULT, + CFG_ENABLE_GREEN_AP_FEATURE_MIN, + CFG_ENABLE_GREEN_AP_FEATURE_MAX ), +#endif + REG_VARIABLE(CFG_IGNORE_CAC_NAME, WLAN_PARAM_Integer, hdd_config_t, ignoreCAC, VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, @@ -4124,6 +4133,12 @@ static void print_hdd_cfg(hdd_context_t *pHddCtx) VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gIgnoreCAC] Value = [%u] ", pHddCtx->cfg_ini->ignoreCAC); +#ifdef FEATURE_GREEN_AP + VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, + "Name = [gEnableGreenAp] Value = [%u] ", + pHddCtx->cfg_ini->enableGreenAP); +#endif + } diff --git a/CORE/HDD/src/wlan_hdd_hostapd.c b/CORE/HDD/src/wlan_hdd_hostapd.c index 8a41158b8f77..27a026c18297 100644 --- a/CORE/HDD/src/wlan_hdd_hostapd.c +++ b/CORE/HDD/src/wlan_hdd_hostapd.c @@ -626,6 +626,7 @@ VOS_STATUS hdd_hostapd_SAPEventCB( tpSap_Event pSapEvent, v_PVOID_t usrDataForCa hdd_scaninfo_t *pScanInfo = NULL; struct iw_michaelmicfailure msg; v_U8_t ignoreCAC = 0; + hdd_config_t *cfg = NULL; #ifdef MSM_PLATFORM unsigned long flags; @@ -667,6 +668,18 @@ VOS_STATUS hdd_hostapd_SAPEventCB( tpSap_Event pSapEvent, v_PVOID_t usrDataForCa memset(&wrqu, '\0', sizeof(wrqu)); pHddCtx = (hdd_context_t*)(pHostapdAdapter->pHddCtx); + if (!pHddCtx) { + hddLog(VOS_TRACE_LEVEL_ERROR, FL("HDD context is null")); + return eHAL_STATUS_FAILURE; + } + + cfg = pHddCtx->cfg_ini; + + if (!cfg) { + hddLog(VOS_TRACE_LEVEL_ERROR, FL("HDD config is null")); + return eHAL_STATUS_FAILURE; + } + switch(sapEvent) { case eSAP_START_BSS_EVENT : @@ -740,11 +753,17 @@ VOS_STATUS hdd_hostapd_SAPEventCB( tpSap_Event pSapEvent, v_PVOID_t usrDataForCa pHostapdState->bssState = BSS_START; #ifdef FEATURE_GREEN_AP - if (!(VOS_STA&pHddCtx->concurrency_mode)) + if (!(VOS_STA & pHddCtx->concurrency_mode) && + cfg->enable2x2 && + cfg->enableGreenAP) { hdd_wlan_green_ap_mc(pHddCtx, GREEN_AP_PS_START_EVENT); - else { + } else { hdd_wlan_green_ap_mc(pHddCtx, GREEN_AP_PS_STOP_EVENT); - hddLog(VOS_TRACE_LEVEL_INFO, FL("Green-AP: STA interface detected, disable GreenAP")); + hddLog(VOS_TRACE_LEVEL_INFO, + "Green-AP: is disabled, due to sta_concurrency: %d, enable2x2: %d, enableGreenAP: %d", + VOS_STA & pHddCtx->concurrency_mode, + cfg->enable2x2, + cfg->enableGreenAP); } #endif // Send current operating channel of SoftAP to BTC-ES diff --git a/CORE/HDD/src/wlan_hdd_main.c b/CORE/HDD/src/wlan_hdd_main.c index 7153195931a6..182ff9edd264 100755 --- a/CORE/HDD/src/wlan_hdd_main.c +++ b/CORE/HDD/src/wlan_hdd_main.c @@ -470,6 +470,7 @@ void hdd_wlan_green_ap_mc(hdd_context_t *pHddCtx, /* Confirm that power save is enabled before doing state transitions */ if (!green_ap->ps_enable) { + hddLog(VOS_TRACE_LEVEL_INFO, FL("Green-AP is disabled")); hdd_wlan_green_ap_update(pHddCtx, GREEN_AP_PS_IDLE_STATE, GREEN_AP_PS_WAIT_EVENT); goto done; diff --git a/firmware_bin/WCNSS_qcom_cfg.ini b/firmware_bin/WCNSS_qcom_cfg.ini index 713b3b898141..dfd15a858d21 100755 --- a/firmware_bin/WCNSS_qcom_cfg.ini +++ b/firmware_bin/WCNSS_qcom_cfg.ini @@ -568,6 +568,10 @@ gRArateLimitInterval=60 # Maximum number of concurrent connections gMaxConcurrentActiveSessions=2 +# Disable/Enable GreenAP +# 0 to disable, 1 to enable, default: 1 +gEnableGreenAp=1 + END # Note: Configuration parser would not read anything past the END marker |
