summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyan Hsu <ryanhsu@qca.qualcomm.com>2014-06-16 03:24:59 -0700
committerPitani Venkata Rajesh Kumar <c_vpitan@qti.qualcomm.com>2014-06-27 11:42:54 +0530
commitb7635a5e29bf06b0530a26fa580f9cffd1df8e57 (patch)
tree0de90f2213304568a6949975496d691b45fefa99
parentff7a00105424e635b88ae517d59eb4434e37bf6a (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.h11
-rw-r--r--CORE/HDD/src/wlan_hdd_cfg.c15
-rw-r--r--CORE/HDD/src/wlan_hdd_hostapd.c25
-rwxr-xr-xCORE/HDD/src/wlan_hdd_main.c1
-rwxr-xr-xfirmware_bin/WCNSS_qcom_cfg.ini4
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