summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRakesh Sunki <rsunki@qca.qualcomm.com>2014-07-11 15:40:29 -0700
committerPitani Venkata Rajesh Kumar <c_vpitan@qti.qualcomm.com>2014-07-16 12:36:08 +0530
commiteee39eeb8fea4ffd7eab8e28e90cab53381b8ab9 (patch)
treefd3e30ab94e64e728a9d4d1a0e980353eb96031f
parent087e1b5991a3763291b4bc840de6d49b0e4e20b0 (diff)
qcacld: [HDD Part] Add IBSS PS single chain rx INI configuration.
Add INI param for configuring IBSS power save single RX chain operation during ATIM window. Update this param to the firmware through vdev param update command Change-Id: I7c4055b25a9a97e14900727f6af3734521cf9a5c CRs-Fixed: 692476
-rw-r--r--CORE/HDD/inc/wlan_hdd_cfg.h9
-rw-r--r--CORE/HDD/src/wlan_hdd_cfg.c10
-rwxr-xr-xCORE/HDD/src/wlan_hdd_main.c109
3 files changed, 75 insertions, 53 deletions
diff --git a/CORE/HDD/inc/wlan_hdd_cfg.h b/CORE/HDD/inc/wlan_hdd_cfg.h
index 30abe9868638..6504a58bbbe6 100644
--- a/CORE/HDD/inc/wlan_hdd_cfg.h
+++ b/CORE/HDD/inc/wlan_hdd_cfg.h
@@ -2463,6 +2463,14 @@ This feature requires the dependent cfg.ini "gRoamPrefer5GHz" set to 1 */
#define CFG_IBSS_PS_WARMUP_TIME_MAX (65535)
#define CFG_IBSS_PS_WARMUP_TIME_DEFAULT (0)
+/*
+ * IBSS Power Save Enable/Disable 1 RX
+ * chain usage during the ATIM window
+ */
+#define CFG_IBSS_PS_1RX_CHAIN_IN_ATIM_WINDOW_NAME "gIbssPs1RxChainInAtim"
+#define CFG_IBSS_PS_1RX_CHAIN_IN_ATIM_WINDOW_MIN (0)
+#define CFG_IBSS_PS_1RX_CHAIN_IN_ATIM_WINDOW_MAX (1)
+#define CFG_IBSS_PS_1RX_CHAIN_IN_ATIM_WINDOW_DEFAULT (0)
#define CFG_SAP_MAX_NO_PEERS "gSoftApMaxPeers"
#define CFG_SAP_MAX_NO_PEERS_MIN (1)
@@ -3166,6 +3174,7 @@ typedef struct
v_U32_t ibssInactivityCount;
v_U32_t ibssTxSpEndInactivityTime;
v_U32_t ibssPsWarmupTime;
+ v_U32_t ibssPs1RxChainInAtimEnable;
v_BOOL_t enableTCPChkSumOffld;
v_BOOL_t enableIPChecksumOffload;
diff --git a/CORE/HDD/src/wlan_hdd_cfg.c b/CORE/HDD/src/wlan_hdd_cfg.c
index d7db39208cef..ec95067de29c 100644
--- a/CORE/HDD/src/wlan_hdd_cfg.c
+++ b/CORE/HDD/src/wlan_hdd_cfg.c
@@ -3263,6 +3263,13 @@ REG_TABLE_ENTRY g_registry_table[] =
CFG_IBSS_PS_WARMUP_TIME_MIN,
CFG_IBSS_PS_WARMUP_TIME_MAX ),
+ REG_VARIABLE( CFG_IBSS_PS_1RX_CHAIN_IN_ATIM_WINDOW_NAME, WLAN_PARAM_Integer,
+ hdd_config_t, ibssPs1RxChainInAtimEnable,
+ VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
+ CFG_IBSS_PS_1RX_CHAIN_IN_ATIM_WINDOW_DEFAULT,
+ CFG_IBSS_PS_1RX_CHAIN_IN_ATIM_WINDOW_MIN,
+ CFG_IBSS_PS_1RX_CHAIN_IN_ATIM_WINDOW_MAX ),
+
#ifndef QCA_WIFI_ISOC
REG_VARIABLE( CFG_THERMAL_TEMP_MIN_LEVEL0_NAME, WLAN_PARAM_Integer,
hdd_config_t, thermalTempMinLevel0,
@@ -4197,6 +4204,9 @@ static void print_hdd_cfg(hdd_context_t *pHddCtx)
VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gIbssInactivityTime] Value = [%u] ",pHddCtx->cfg_ini->ibssInactivityCount);
VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gIbssTxSpEndInactivityTime] Value = [%u] ",pHddCtx->cfg_ini->ibssTxSpEndInactivityTime);
VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gIbssPsWarmupTime] Value = [%u] ",pHddCtx->cfg_ini->ibssPsWarmupTime);
+ VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
+ "Name = [gIbssPs1RxChainInAtim] Value = [%u] ",
+ pHddCtx->cfg_ini->ibssPs1RxChainInAtimEnable);
VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [fDfsPhyerrFilterOffload] Value = [%u] ",pHddCtx->cfg_ini->fDfsPhyerrFilterOffload);
#ifdef IPA_OFFLOAD
diff --git a/CORE/HDD/src/wlan_hdd_main.c b/CORE/HDD/src/wlan_hdd_main.c
index 359d64598cd7..53c375020a3b 100755
--- a/CORE/HDD/src/wlan_hdd_main.c
+++ b/CORE/HDD/src/wlan_hdd_main.c
@@ -1074,101 +1074,104 @@ void hdd_checkandupdate_dfssetting( hdd_adapter_t *pAdapter, char *country_code)
--------------------------------------------------------------------------*/
VOS_STATUS hdd_setIbssPowerSaveParams(hdd_adapter_t *pAdapter)
{
- VOS_STATUS ret;
+ int ret;
hdd_context_t *pHddCtx = WLAN_HDD_GET_CTX( pAdapter );
- if (pHddCtx == NULL)
- {
+ if (pHddCtx == NULL) {
VOS_TRACE( VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_ERROR,
"%s: HDD context is null", __func__);
return VOS_STATUS_E_FAILURE;
}
- ret = process_wma_set_command((int)pAdapter->sessionId,
- (int)WMA_VDEV_IBSS_SET_ATIM_WINDOW_SIZE,
- (int)pHddCtx->cfg_ini->ibssATIMWinSize,
+ ret = process_wma_set_command(pAdapter->sessionId,
+ WMA_VDEV_IBSS_SET_ATIM_WINDOW_SIZE,
+ pHddCtx->cfg_ini->ibssATIMWinSize,
VDEV_CMD);
- if (VOS_STATUS_SUCCESS != ret)
- {
+ if (0 != ret) {
hddLog(VOS_TRACE_LEVEL_ERROR,
- "%s: WMA_VDEV_IBSS_SET_ATIM_WINDOW_SIZE failed %d",
- __func__, ret);
+ FL("WMA_VDEV_IBSS_SET_ATIM_WINDOW_SIZE failed %d"),
+ ret);
return VOS_STATUS_E_FAILURE;
}
- ret = process_wma_set_command((int)pAdapter->sessionId,
- (int)WMA_VDEV_IBSS_SET_POWER_SAVE_ALLOWED,
- (int)pHddCtx->cfg_ini->isIbssPowerSaveAllowed,
+ ret = process_wma_set_command(pAdapter->sessionId,
+ WMA_VDEV_IBSS_SET_POWER_SAVE_ALLOWED,
+ pHddCtx->cfg_ini->isIbssPowerSaveAllowed,
VDEV_CMD);
- if (VOS_STATUS_SUCCESS != ret)
- {
+ if (0 != ret) {
hddLog(VOS_TRACE_LEVEL_ERROR,
- "%s: WMA_VDEV_IBSS_SET_POWER_SAVE_ALLOWED failed %d",
- __func__, ret);
+ FL("WMA_VDEV_IBSS_SET_POWER_SAVE_ALLOWED failed %d"),
+ ret);
return VOS_STATUS_E_FAILURE;
}
- ret = process_wma_set_command((int)pAdapter->sessionId,
- (int)WMA_VDEV_IBSS_SET_POWER_COLLAPSE_ALLOWED,
- (int)pHddCtx->cfg_ini->isIbssPowerCollapseAllowed,
+ ret = process_wma_set_command(pAdapter->sessionId,
+ WMA_VDEV_IBSS_SET_POWER_COLLAPSE_ALLOWED,
+ pHddCtx->cfg_ini->isIbssPowerCollapseAllowed,
VDEV_CMD);
- if (VOS_STATUS_SUCCESS != ret)
- {
+ if (0 != ret) {
hddLog(VOS_TRACE_LEVEL_ERROR,
- "%s: WMA_VDEV_IBSS_SET_POWER_COLLAPSE_ALLOWED failed %d",
- __func__, ret);
+ FL("WMA_VDEV_IBSS_SET_POWER_COLLAPSE_ALLOWED failed %d"),
+ ret);
return VOS_STATUS_E_FAILURE;
}
- ret = process_wma_set_command((int)pAdapter->sessionId,
- (int)WMA_VDEV_IBSS_SET_AWAKE_ON_TX_RX,
- (int)pHddCtx->cfg_ini->isIbssAwakeOnTxRx,
+ ret = process_wma_set_command(pAdapter->sessionId,
+ WMA_VDEV_IBSS_SET_AWAKE_ON_TX_RX,
+ pHddCtx->cfg_ini->isIbssAwakeOnTxRx,
VDEV_CMD);
- if (VOS_STATUS_SUCCESS != ret)
- {
+ if (0 != ret) {
hddLog(VOS_TRACE_LEVEL_ERROR,
- "%s: WMA_VDEV_IBSS_SET_AWAKE_ON_TX_RX failed %d",
- __func__, ret);
+ FL("WMA_VDEV_IBSS_SET_AWAKE_ON_TX_RX failed %d"),
+ ret);
return VOS_STATUS_E_FAILURE;
}
- ret = process_wma_set_command((int)pAdapter->sessionId,
- (int)WMA_VDEV_IBSS_SET_INACTIVITY_TIME,
- (int)pHddCtx->cfg_ini->ibssInactivityCount,
+ ret = process_wma_set_command(pAdapter->sessionId,
+ WMA_VDEV_IBSS_SET_INACTIVITY_TIME,
+ pHddCtx->cfg_ini->ibssInactivityCount,
VDEV_CMD);
- if (VOS_STATUS_SUCCESS != ret)
- {
+ if (0 != ret) {
hddLog(VOS_TRACE_LEVEL_ERROR,
- "%s: WMA_VDEV_IBSS_SET_INACTIVITY_TIME failed %d",
- __func__, ret);
+ FL("WMA_VDEV_IBSS_SET_INACTIVITY_TIME failed %d"),
+ ret);
return VOS_STATUS_E_FAILURE;
}
- ret = process_wma_set_command((int)pAdapter->sessionId,
- (int)WMA_VDEV_IBSS_SET_TXSP_END_INACTIVITY_TIME,
- (int)pHddCtx->cfg_ini->ibssTxSpEndInactivityTime,
+ ret = process_wma_set_command(pAdapter->sessionId,
+ WMA_VDEV_IBSS_SET_TXSP_END_INACTIVITY_TIME,
+ pHddCtx->cfg_ini->ibssTxSpEndInactivityTime,
VDEV_CMD);
- if (VOS_STATUS_SUCCESS != ret)
- {
+ if (0 != ret) {
hddLog(VOS_TRACE_LEVEL_ERROR,
- "%s: WMA_VDEV_IBSS_SET_TXSP_END_INACTIVITY_TIME failed %d",
- __func__, ret);
+ FL("WMA_VDEV_IBSS_SET_TXSP_END_INACTIVITY_TIME failed %d"),
+ ret);
return VOS_STATUS_E_FAILURE;
}
- ret = process_wma_set_command((int)pAdapter->sessionId,
- (int)WMA_VDEV_IBSS_PS_SET_WARMUP_TIME_SECS,
- (int)pHddCtx->cfg_ini->ibssPsWarmupTime,
+ ret = process_wma_set_command(pAdapter->sessionId,
+ WMA_VDEV_IBSS_PS_SET_WARMUP_TIME_SECS,
+ pHddCtx->cfg_ini->ibssPsWarmupTime,
VDEV_CMD);
- if (VOS_STATUS_SUCCESS != ret)
- {
+ if (0 != ret) {
hddLog(VOS_TRACE_LEVEL_ERROR,
- "%s: WMA_VDEV_IBSS_PS_SET_WARMUP_TIME_SECS failed %d",
- __func__, ret);
+ FL("WMA_VDEV_IBSS_PS_SET_WARMUP_TIME_SECS failed %d"),
+ ret);
return VOS_STATUS_E_FAILURE;
}
- return ret;
+ ret = process_wma_set_command(pAdapter->sessionId,
+ WMA_VDEV_IBSS_PS_SET_1RX_CHAIN_IN_ATIM_WINDOW,
+ pHddCtx->cfg_ini->ibssPs1RxChainInAtimEnable,
+ VDEV_CMD);
+ if (0 != ret) {
+ hddLog(VOS_TRACE_LEVEL_ERROR,
+ FL("WMA_VDEV_IBSS_PS_SET_1RX_CHAIN_IN_ATIM_WINDOW failed %d"),
+ ret);
+ return VOS_STATUS_E_FAILURE;
+ }
+
+ return VOS_STATUS_SUCCESS;
}
#ifdef FEATURE_WLAN_BATCH_SCAN