diff options
| author | Gao Wu <wugao@qti.qualcomm.com> | 2016-04-14 13:16:18 +0800 |
|---|---|---|
| committer | Anjaneedevi Kapparapu <akappa@codeaurora.org> | 2016-04-19 13:30:26 +0530 |
| commit | 0b8a7c01935a42e78ee186cbd2e7ae84d27f1e58 (patch) | |
| tree | 76f479ae5bd1912e585437e890dba01a1a486f32 | |
| parent | 625235e571ed15cacf5185c62bd9ae3311e8699b (diff) | |
qcacld-2.0: Set htc tx tag when call set vdev suspend dtim
It doesn't set tag HTC_TX_PACKET_TAG_AUTO_PM when attempt to suspend
and set vdev suspend dtim, which cause host wake up frequently.
Change-Id: Iba32c715694e64ce7d941f198990b25b9c87240d
CRs-Fixed: 1003313
| -rw-r--r-- | CORE/SERVICES/WMI/wmi_unified.c | 89 |
1 files changed, 69 insertions, 20 deletions
diff --git a/CORE/SERVICES/WMI/wmi_unified.c b/CORE/SERVICES/WMI/wmi_unified.c index c561ee9ce617..fb93e7f04fd4 100644 --- a/CORE/SERVICES/WMI/wmi_unified.c +++ b/CORE/SERVICES/WMI/wmi_unified.c @@ -710,6 +710,73 @@ inline bool wmi_get_runtime_pm_inprogress(wmi_unified_t wmi_handle) } #endif +/** + * wmi_set_htc_tx_tag() - set HTC TX tag for WMI commands + * @wmi_handle: WMI handle + * @buf: WMI buffer + * @cmd_id: WMI command Id + * + * Return htc_tx_tag + */ +static uint16_t wmi_set_htc_tx_tag(wmi_unified_t wmi_handle, + wmi_buf_t buf, + WMI_CMD_ID cmd_id) +{ + uint16_t htc_tx_tag = 0; + wmi_vdev_set_param_cmd_fixed_param *set_cmd; + wmi_sta_powersave_param_cmd_fixed_param *ps_cmd; + + switch(cmd_id) { + case WMI_WOW_ENABLE_CMDID: + case WMI_PDEV_SUSPEND_CMDID: + case WMI_WOW_ENABLE_DISABLE_WAKE_EVENT_CMDID: + case WMI_WOW_ADD_WAKE_PATTERN_CMDID: + case WMI_WOW_HOSTWAKEUP_FROM_SLEEP_CMDID: + case WMI_PDEV_RESUME_CMDID: + case WMI_WOW_DEL_WAKE_PATTERN_CMDID: +#ifdef FEATURE_WLAN_D0WOW + case WMI_D0_WOW_ENABLE_DISABLE_CMDID: +#endif + htc_tx_tag = HTC_TX_PACKET_TAG_AUTO_PM; + case WMI_FORCE_FW_HANG_CMDID: + if (wmi_handle->tag_crash_inject) { + htc_tx_tag = HTC_TX_PACKET_TAG_AUTO_PM; + wmi_handle->tag_crash_inject = false; + } + default: + break; + } + + if(cmd_id == WMI_VDEV_SET_PARAM_CMDID) + { + set_cmd = (wmi_vdev_set_param_cmd_fixed_param *) + wmi_buf_data(buf); + + switch(set_cmd->param_id) { + case WMI_VDEV_PARAM_LISTEN_INTERVAL: + case WMI_VDEV_PARAM_DTIM_POLICY: + htc_tx_tag = HTC_TX_PACKET_TAG_AUTO_PM; + default: + break; + } + } + + if(cmd_id == WMI_STA_POWERSAVE_PARAM_CMDID) + { + ps_cmd = (wmi_sta_powersave_param_cmd_fixed_param *) + wmi_buf_data(buf); + + switch(ps_cmd->param) { + case WMI_STA_PS_ENABLE_QPOWER: + htc_tx_tag = HTC_TX_PACKET_TAG_AUTO_PM; + default: + break; + } + } + + return htc_tx_tag; +} + /* WMI command API */ int wmi_unified_cmd_send(wmi_unified_t wmi_handle, wmi_buf_t buf, int len, WMI_CMD_ID cmd_id) @@ -740,26 +807,8 @@ int wmi_unified_cmd_send(wmi_unified_t wmi_handle, wmi_buf_t buf, int len, goto dont_tag; skip_suspend_check: - switch(cmd_id) { - case WMI_WOW_ENABLE_CMDID: - case WMI_PDEV_SUSPEND_CMDID: - case WMI_WOW_ENABLE_DISABLE_WAKE_EVENT_CMDID: - case WMI_WOW_ADD_WAKE_PATTERN_CMDID: - case WMI_WOW_HOSTWAKEUP_FROM_SLEEP_CMDID: - case WMI_PDEV_RESUME_CMDID: - case WMI_WOW_DEL_WAKE_PATTERN_CMDID: -#ifdef FEATURE_WLAN_D0WOW - case WMI_D0_WOW_ENABLE_DISABLE_CMDID: -#endif - htc_tag = HTC_TX_PACKET_TAG_AUTO_PM; - case WMI_FORCE_FW_HANG_CMDID: - if (wmi_handle->tag_crash_inject) { - htc_tag = HTC_TX_PACKET_TAG_AUTO_PM; - wmi_handle->tag_crash_inject = false; - } - default: - break; - } + htc_tag = (A_UINT16) wmi_set_htc_tx_tag(wmi_handle, + buf, cmd_id); dont_tag: /* Do sanity check on the TLV parameter structure */ |
