|
@@ -715,119 +715,6 @@ static QDF_STATUS wma_set_force_sleep(tp_wma_handle wma,
|
|
|
return QDF_STATUS_SUCCESS;
|
|
|
}
|
|
|
|
|
|
-/**
|
|
|
- * wma_set_qpower_force_sleep() - set qpower params in fw
|
|
|
- * @wma: wma handle
|
|
|
- * @vdev_id: vdev id
|
|
|
- * @enable: value
|
|
|
- *
|
|
|
- * Return: QDF_STATUS_SUCCESS for success or error code
|
|
|
- */
|
|
|
-QDF_STATUS wma_set_qpower_force_sleep(tp_wma_handle wma, uint32_t vdev_id,
|
|
|
- uint8_t enable)
|
|
|
-{
|
|
|
- QDF_STATUS ret;
|
|
|
- uint32_t cfg_data_val = 0;
|
|
|
- /* get mac to acess CFG data base */
|
|
|
- struct sAniSirGlobal *mac = cds_get_context(QDF_MODULE_ID_PE);
|
|
|
- uint32_t pspoll_count = WMA_DEFAULT_MAX_PSPOLL_BEFORE_WAKE;
|
|
|
-
|
|
|
- WMA_LOGE("Set QPower Force(1)/Normal(0) Sleep vdevId %d val %d",
|
|
|
- vdev_id, enable);
|
|
|
-
|
|
|
- if (NULL == mac) {
|
|
|
- WMA_LOGE("%s: Unable to get PE context", __func__);
|
|
|
- return QDF_STATUS_E_NOMEM;
|
|
|
- }
|
|
|
-
|
|
|
- /* Get Configured Ps Poll Count */
|
|
|
- if (wlan_cfg_get_int(mac, WNI_CFG_MAX_PS_POLL,
|
|
|
- &cfg_data_val) != eSIR_SUCCESS) {
|
|
|
- QDF_TRACE(QDF_MODULE_ID_WMA, QDF_TRACE_LEVEL_ERROR,
|
|
|
- "Failed to get value for WNI_CFG_MAX_PS_POLL");
|
|
|
- }
|
|
|
- if (cfg_data_val) {
|
|
|
- pspoll_count = (uint32_t) cfg_data_val;
|
|
|
- }
|
|
|
-
|
|
|
- /* Enable QPower */
|
|
|
- ret = wma_unified_set_sta_ps_param(wma->wmi_handle, vdev_id,
|
|
|
- WMI_STA_PS_ENABLE_QPOWER, 1);
|
|
|
-
|
|
|
- if (QDF_IS_STATUS_ERROR(ret)) {
|
|
|
- WMA_LOGE("Enable QPower Failed vdevId %d", vdev_id);
|
|
|
- return ret;
|
|
|
- }
|
|
|
- WMA_LOGD("QPower Enabled vdevId %d", vdev_id);
|
|
|
-
|
|
|
- /* Set the Wake Policy to WMI_STA_PS_RX_WAKE_POLICY_POLL_UAPSD */
|
|
|
- ret = wma_unified_set_sta_ps_param(wma->wmi_handle, vdev_id,
|
|
|
- WMI_STA_PS_PARAM_RX_WAKE_POLICY,
|
|
|
- WMI_STA_PS_RX_WAKE_POLICY_POLL_UAPSD);
|
|
|
-
|
|
|
- if (QDF_IS_STATUS_ERROR(ret)) {
|
|
|
- WMA_LOGE("Setting wake policy to pspoll/uapsd Failed vdevId %d",
|
|
|
- vdev_id);
|
|
|
- return ret;
|
|
|
- }
|
|
|
- WMA_LOGD("Wake policy set to to pspoll/uapsd vdevId %d", vdev_id);
|
|
|
-
|
|
|
- if (enable) {
|
|
|
- /* Set the Tx Wake Threshold */
|
|
|
- ret = wma_unified_set_sta_ps_param(wma->wmi_handle, vdev_id,
|
|
|
- WMI_STA_PS_PARAM_TX_WAKE_THRESHOLD,
|
|
|
- WMI_STA_PS_TX_WAKE_THRESHOLD_NEVER);
|
|
|
-
|
|
|
- if (QDF_IS_STATUS_ERROR(ret)) {
|
|
|
- WMA_LOGE("Setting TxWake Threshold vdevId %d", vdev_id);
|
|
|
- return ret;
|
|
|
- }
|
|
|
- WMA_LOGD("TxWake Threshold set to TX_WAKE_THRESHOLD_NEVER %d",
|
|
|
- vdev_id);
|
|
|
- }
|
|
|
-
|
|
|
- /* Set the QPower Ps Poll Count */
|
|
|
- ret = wma_unified_set_sta_ps_param(wma->wmi_handle, vdev_id,
|
|
|
- WMI_STA_PS_PARAM_QPOWER_PSPOLL_COUNT,
|
|
|
- pspoll_count);
|
|
|
-
|
|
|
- if (QDF_IS_STATUS_ERROR(ret)) {
|
|
|
- WMA_LOGE("Set QPower Ps Poll Count Failed vdevId %d ps poll cnt %d",
|
|
|
- vdev_id, pspoll_count);
|
|
|
- return ret;
|
|
|
- }
|
|
|
- WMA_LOGD("Set QPower Ps Poll Count vdevId %d ps poll cnt %d",
|
|
|
- vdev_id, pspoll_count);
|
|
|
-
|
|
|
- /* Enable Sta Mode Power save */
|
|
|
- ret = wmi_unified_set_sta_ps(wma->wmi_handle, vdev_id, true);
|
|
|
-
|
|
|
- if (QDF_IS_STATUS_ERROR(ret)) {
|
|
|
- WMA_LOGE("Enable Sta Mode Ps Failed vdevId %d", vdev_id);
|
|
|
- return ret;
|
|
|
- }
|
|
|
-
|
|
|
- /* Set Listen Interval */
|
|
|
- if (wlan_cfg_get_int(mac, WNI_CFG_LISTEN_INTERVAL,
|
|
|
- &cfg_data_val) != eSIR_SUCCESS) {
|
|
|
- QDF_TRACE(QDF_MODULE_ID_WMA, QDF_TRACE_LEVEL_ERROR,
|
|
|
- "Failed to get value for WNI_CFG_LISTEN_INTERVAL");
|
|
|
- cfg_data_val = POWERSAVE_DEFAULT_LISTEN_INTERVAL;
|
|
|
- }
|
|
|
-
|
|
|
- ret = wma_vdev_set_param(wma->wmi_handle, vdev_id,
|
|
|
- WMI_VDEV_PARAM_LISTEN_INTERVAL,
|
|
|
- cfg_data_val);
|
|
|
- if (QDF_IS_STATUS_ERROR(ret)) {
|
|
|
- /* Even it fails continue Fw will take default LI */
|
|
|
- WMA_LOGE("Failed to Set Listen Interval vdevId %d", vdev_id);
|
|
|
- }
|
|
|
- WMA_LOGD("Set Listen Interval vdevId %d Listen Intv %d",
|
|
|
- vdev_id, cfg_data_val);
|
|
|
-
|
|
|
- return QDF_STATUS_SUCCESS;
|
|
|
-}
|
|
|
-
|
|
|
/**
|
|
|
* wma_get_qpower_config() - get qpower configuration
|
|
|
* @wma: WMA handle
|