summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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.