diff options
| author | Rakesh Sunki <rsunki@qca.qualcomm.com> | 2014-07-11 15:40:29 -0700 |
|---|---|---|
| committer | Pitani Venkata Rajesh Kumar <c_vpitan@qti.qualcomm.com> | 2014-07-16 12:36:08 +0530 |
| commit | eee39eeb8fea4ffd7eab8e28e90cab53381b8ab9 (patch) | |
| tree | fd3e30ab94e64e728a9d4d1a0e980353eb96031f | |
| parent | 087e1b5991a3763291b4bc840de6d49b0e4e20b0 (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.h | 9 | ||||
| -rw-r--r-- | CORE/HDD/src/wlan_hdd_cfg.c | 10 | ||||
| -rwxr-xr-x | CORE/HDD/src/wlan_hdd_main.c | 109 |
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 |
