summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGao Wu <wugao@qti.qualcomm.com>2016-04-14 13:16:18 +0800
committerAnjaneedevi Kapparapu <akappa@codeaurora.org>2016-04-19 13:30:26 +0530
commit0b8a7c01935a42e78ee186cbd2e7ae84d27f1e58 (patch)
tree76f479ae5bd1912e585437e890dba01a1a486f32
parent625235e571ed15cacf5185c62bd9ae3311e8699b (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.c89
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 */