summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKapil Gupta <kapgupta@codeaurora.org>2016-12-16 19:44:28 +0530
committerAshish kumar goswami <agoswa@codeaurora.org>2016-12-19 18:44:08 +0530
commitff7c3e66bca810ca898e523b67682bed2ad0f45b (patch)
tree7b9296bd26b25e74ad18ba7c856f2bee4ed5a85e
parent6e17e3b50844fa54333143f6c1cab254729e4b09 (diff)
qcacld-2.0: Update qpower configuration to FW
Currently during dynamic update of qpower value, only updation of wma configuation of qpower is done. Updation of value to firmware is done as part of request bmps. Add changes to apply configuration directly to firmware. Change-Id: Ic690935ca77bf3a8a1dad4c1cc4aeb22464f06cf CRs-Fixed: 1102730
-rw-r--r--CORE/HDD/src/wlan_hdd_cfg80211.c18
-rw-r--r--CORE/SERVICES/WMA/wma.c9
-rw-r--r--CORE/SERVICES/WMA/wma.h2
3 files changed, 9 insertions, 20 deletions
diff --git a/CORE/HDD/src/wlan_hdd_cfg80211.c b/CORE/HDD/src/wlan_hdd_cfg80211.c
index 4e3e7d43df01..77d8ebc6c09f 100644
--- a/CORE/HDD/src/wlan_hdd_cfg80211.c
+++ b/CORE/HDD/src/wlan_hdd_cfg80211.c
@@ -9511,29 +9511,13 @@ static int hdd_set_qpower_config(hdd_context_t *hddctx, hdd_adapter_t *adapter,
FL("invalid qpower value=%d"), qpower);
return -EINVAL;
}
- vos_status = wma_set_powersave_config(qpower);
+ vos_status = wma_set_powersave_config(adapter->sessionId, qpower);
if (vos_status != VOS_STATUS_SUCCESS) {
hddLog(LOGE,
FL("failed to update qpower %d"),
vos_status);
return -EINVAL;
}
- vos_status = wlan_hdd_set_powersave(adapter,
- DRIVER_POWER_MODE_ACTIVE);
- if (vos_status != VOS_STATUS_SUCCESS) {
- hddLog(LOGE,
- FL("failed to get full power %d"),
- vos_status);
- return -EINVAL;
- }
- vos_status = wlan_hdd_set_powersave(adapter,
- DRIVER_POWER_MODE_AUTO);
- if (vos_status != VOS_STATUS_SUCCESS) {
- hddLog(LOGE,
- FL("failed to put device in power save mode %d"),
- vos_status);
- return -EINVAL;
- }
return 0;
}
diff --git a/CORE/SERVICES/WMA/wma.c b/CORE/SERVICES/WMA/wma.c
index df2ae90f9c3c..1b75f64264ff 100644
--- a/CORE/SERVICES/WMA/wma.c
+++ b/CORE/SERVICES/WMA/wma.c
@@ -31414,25 +31414,30 @@ VOS_STATUS wma_set_tx_rx_aggregation_size
/**
* wma_set_powersave_config() - update power save config in wma
* @val: new power save value
+ * @vdev_id: vdev id
*
* This function update qpower value in wma layer
*
* Return: VOS_STATUS_SUCCESS on success, error number otherwise
*/
-VOS_STATUS wma_set_powersave_config(uint8_t val)
+VOS_STATUS wma_set_powersave_config(uint8_t vdev_id, uint8_t val)
{
tp_wma_handle wma_handle;
wma_handle = vos_get_context(VOS_MODULE_ID_WDA,
vos_get_global_context(VOS_MODULE_ID_WDA, NULL));
+ WMA_LOGI("configuring qpower: %d vdev %d", val, vdev_id);
if (!wma_handle) {
WMA_LOGE("%s: WMA context is invald!", __func__);
return VOS_STATUS_E_INVAL;
}
wma_handle->powersave_mode = val;
- return VOS_STATUS_SUCCESS;
+ return wmi_unified_set_sta_ps_param(wma_handle->wmi_handle,
+ vdev_id,
+ WMI_STA_PS_ENABLE_QPOWER,
+ wma_get_qpower_config(wma_handle));
}
/**
diff --git a/CORE/SERVICES/WMA/wma.h b/CORE/SERVICES/WMA/wma.h
index ca5be1dc00c7..abf89f95e00e 100644
--- a/CORE/SERVICES/WMA/wma.h
+++ b/CORE/SERVICES/WMA/wma.h
@@ -1797,7 +1797,7 @@ uint32_t wma_get_vht_ch_width(void);
VOS_STATUS wma_get_wakelock_stats(struct sir_wake_lock_stats *wake_lock_stats);
VOS_STATUS wma_set_tx_rx_aggregation_size
(struct sir_set_tx_rx_aggregation_size *tx_rx_aggregation_size);
-VOS_STATUS wma_set_powersave_config(uint8_t val);
+VOS_STATUS wma_set_powersave_config(uint8_t vdev_id, uint8_t val);
/**
* wma_find_vdev_by_id() - Find vdev handle for given vdev id.