From a9ec943d9f1f84430f372eddb50c7a0cba99a71e Mon Sep 17 00:00:00 2001 From: Paul Zhang Date: Wed, 4 Jan 2017 16:45:42 +0800 Subject: [PATCH] qcacmn: Drop Action frame in FW config by host Propagation from qcacld-2.0 to qcacmn. Several Action frame categories are not processed in host and they are not forwarded to supplicant either, but they are dropped in host. These unprocessed action frames are forwarded to host by FW and wake up host unnecessarily which leads to battery drain. With this fix, host conveys FW the disallowed action frames list at HDD startup so that the remaining frames can be dropped in FW itself thereafter when under WoW mode. Change-Id: I40b49d42df94085784c8f1d8321de0ee61473ae0 CRs-Fixed: 999114 --- wmi_unified_api.h | 6 +++++- wmi_unified_param.h | 16 ++++++++++++++++ wmi_unified_priv.h | 5 ++++- wmi_unified_tlv.h | 5 ++++- 4 files changed, 29 insertions(+), 3 deletions(-) diff --git a/wmi_unified_api.h b/wmi_unified_api.h index 23da9c7db5..451544f2f1 100644 --- a/wmi_unified_api.h +++ b/wmi_unified_api.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2016 The Linux Foundation. All rights reserved. + * Copyright (c) 2013-2017 The Linux Foundation. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * @@ -646,8 +646,12 @@ QDF_STATUS wmi_unified_get_link_speed_cmd(void *wmi_hdl, QDF_STATUS wmi_unified_egap_conf_params_cmd(void *wmi_hdl, wmi_ap_ps_egap_param_cmd_fixed_param *egap_params); + #endif +QDF_STATUS wmi_unified_action_frame_patterns_cmd(void *wmi_hdl, + struct action_wakeup_set_param *action_params); + QDF_STATUS wmi_unified_fw_profiling_data_cmd(void *wmi_hdl, uint32_t cmd, uint32_t value1, uint32_t value2); diff --git a/wmi_unified_param.h b/wmi_unified_param.h index dfded1b6d3..e378ae5417 100644 --- a/wmi_unified_param.h +++ b/wmi_unified_param.h @@ -7084,4 +7084,20 @@ enum WMI_HOST_CALIBRATION_STATUS { WMI_HOST_CALIBRATION_NOT_OK, }; +#define WMI_SUPPORTED_ACTION_CATEGORY 256 +#define WMI_SUPPORTED_ACTION_CATEGORY_ELE_LIST (WMI_SUPPORTED_ACTION_CATEGORY/32) + +/** + * struct action_wakeup_set_param - action wakeup set params + * @vdev_id: virtual device id + * @operation: 0 reset to fw default, 1 set the bits, + * 2 add the setting bits, 3 delete the setting bits + * @action_category_map: bit mapping. + */ +struct action_wakeup_set_param { + uint32_t vdev_id; + uint32_t operation; + uint32_t action_category_map[WMI_SUPPORTED_ACTION_CATEGORY_ELE_LIST]; +}; + #endif /* _WMI_UNIFIED_PARAM_H_ */ diff --git a/wmi_unified_priv.h b/wmi_unified_priv.h index ca93c7ce22..feb501f3bf 100644 --- a/wmi_unified_priv.h +++ b/wmi_unified_priv.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2016 The Linux Foundation. All rights reserved. + * Copyright (c) 2013-2017 The Linux Foundation. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * @@ -514,6 +514,9 @@ QDF_STATUS (*send_pktlog_wmi_send_cmd)(wmi_unified_t wmi_handle, WMI_CMD_ID cmd_id, uint8_t user_triggered); #endif +QDF_STATUS (*send_action_frame_patterns_cmd)(wmi_unified_t wmi_handle, + struct action_wakeup_set_param *action_params); + QDF_STATUS (*send_fw_profiling_cmd)(wmi_unified_t wmi_handle, uint32_t cmd, uint32_t value1, uint32_t value2); diff --git a/wmi_unified_tlv.h b/wmi_unified_tlv.h index 5606315c52..8b2f7b2f5a 100644 --- a/wmi_unified_tlv.h +++ b/wmi_unified_tlv.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016 The Linux Foundation. All rights reserved. + * Copyright (c) 2016-2017 The Linux Foundation. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * @@ -357,6 +357,9 @@ QDF_STATUS send_get_link_speed_cmd_tlv(wmi_unified_t wmi_handle, QDF_STATUS send_egap_conf_params_cmd_tlv(wmi_unified_t wmi_handle, wmi_ap_ps_egap_param_cmd_fixed_param *egap_params); +QDF_STATUS send_action_frame_patterns_cmd_tlv(wmi_unified_t wmi_handle, + struct action_wakeup_set_param *action_params); + QDF_STATUS send_fw_profiling_cmd_tlv(wmi_unified_t wmi_handle, uint32_t cmd, uint32_t value1, uint32_t value2);