diff options
| author | Krishna Kumaar Natarajan <kknatara@qca.qualcomm.com> | 2016-03-22 10:54:50 -0700 |
|---|---|---|
| committer | Anjaneedevi Kapparapu <akappa@codeaurora.org> | 2016-03-28 12:54:56 +0530 |
| commit | 115edb33e1ac8d10326fa02db00abdde35f2072b (patch) | |
| tree | 1c583452cd213a7a22b9dfae3fa46bba8046d60f | |
| parent | c1ec8f5d051b37fb5e5a80fdc9806876acf61a2b (diff) | |
qcacld-2.0: CL 1479065 - update fw common interface files
Add Qboost dbglog IDs and module ID, add pdev_id to WMI cmds,
wal_power_debug framework to handle WMI cmd for LP features.
Change-Id: I815e29284ab21086f75197c2ce1319e13074e00f
CRs-Fixed: 865207
| -rw-r--r-- | CORE/SERVICES/COMMON/dbglog_id.h | 7 | ||||
| -rw-r--r-- | CORE/SERVICES/COMMON/wlan_module_ids.h | 1 | ||||
| -rw-r--r-- | CORE/SERVICES/COMMON/wmi_tlv_defs.h | 10 | ||||
| -rw-r--r-- | CORE/SERVICES/COMMON/wmi_unified.h | 660 | ||||
| -rw-r--r-- | CORE/SERVICES/COMMON/wmi_version.h | 2 | ||||
| -rw-r--r-- | CORE/SERVICES/WMI/wmi_unified.c | 1 |
6 files changed, 374 insertions, 307 deletions
diff --git a/CORE/SERVICES/COMMON/dbglog_id.h b/CORE/SERVICES/COMMON/dbglog_id.h index d7908a1cd962..3be0031d81b9 100644 --- a/CORE/SERVICES/COMMON/dbglog_id.h +++ b/CORE/SERVICES/COMMON/dbglog_id.h @@ -1675,7 +1675,7 @@ extern "C" { #define DCC_DBGID_RX_PATH 269 #define DCC_DBGID_TX_PATH 270 -/* RSSI Threshold Monitor DBGIDs*/ +/* RSSI Threshold Monitor DBGIDs */ #define RSSI_MONITOR_DBGID_DEFINITION_START 0 #define RSSI_MONITOR_VDEV_INIT 1 #define RSSI_MONITOR_VDEV_FREE 2 @@ -1692,6 +1692,11 @@ extern "C" { #define RSSI_MONITOR_UPDATE_BEACON_RSSI 13 #define RSSI_MONITOR_DBGID_DEFINITION_END 14 +/* QBOOST DBGIDs */ +#define WLAN_MODULE_QBOOST_DEFINITION_START 0 +#define WLAN_MODULE_QBOOST_DBGID_WLAN_PEER_NOT_FOUND 1 +#define WLAN_MODULE_QBOOST_DEFINITION_END 2 + #ifdef __cplusplus } #endif diff --git a/CORE/SERVICES/COMMON/wlan_module_ids.h b/CORE/SERVICES/COMMON/wlan_module_ids.h index c8284d0805f5..5573f75d28b2 100644 --- a/CORE/SERVICES/COMMON/wlan_module_ids.h +++ b/CORE/SERVICES/COMMON/wlan_module_ids.h @@ -97,6 +97,7 @@ typedef enum { WLAN_MODULE_CMC_QMIC, /* 0x3e */ WLAN_MODULE_EGAP, /* 0x3f */ WLAN_MODULE_NAN20, + WLAN_MODULE_QBOOST, WLAN_MODULE_ID_MAX, WLAN_MODULE_ID_INVALID = WLAN_MODULE_ID_MAX, diff --git a/CORE/SERVICES/COMMON/wmi_tlv_defs.h b/CORE/SERVICES/COMMON/wmi_tlv_defs.h index cedbef2b05b9..ca8d67bf4de2 100644 --- a/CORE/SERVICES/COMMON/wmi_tlv_defs.h +++ b/CORE/SERVICES/COMMON/wmi_tlv_defs.h @@ -692,6 +692,7 @@ typedef enum { WMITLV_TAG_STRUC_WMI_CHAN_AVOID_RPT_ALLOW_CMD_fixed_param, WMITLV_TAG_STRUC_wmi_set_periodic_channel_stats_config_fixed_param, WMITLV_TAG_STRUC_wmi_vdev_set_custom_aggr_size_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_pdev_wal_power_debug_cmd_fixed_param, } WMITLV_TAG_ID; /* @@ -972,7 +973,8 @@ typedef enum { OP(WMI_CONFIG_ENHANCED_MCAST_FILTER_CMDID) \ OP(WMI_CHAN_AVOID_RPT_ALLOW_CMDID) \ OP(WMI_SET_PERIODIC_CHANNEL_STATS_CONFIG_CMDID) \ - OP(WMI_VDEV_SET_CUSTOM_AGGR_SIZE_CMDID) + OP(WMI_VDEV_SET_CUSTOM_AGGR_SIZE_CMDID) \ + OP(WMI_PDEV_WAL_POWER_DEBUG_CMDID) /* * IMPORTANT: Please add _ALL_ WMI Events Here. @@ -2796,6 +2798,12 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PEER_ATF_REQUEST_CMDID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_set_periodic_channel_stats_config_fixed_param, wmi_set_periodic_channel_stats_config_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_SET_PERIODIC_CHANNEL_STATS_CONFIG_CMDID); +/* wal power debug command per pdev */ +#define WMITLV_TABLE_WMI_PDEV_WAL_POWER_DEBUG_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_wal_power_debug_cmd_fixed_param, wmi_pdev_wal_power_debug_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, args, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_WAL_POWER_DEBUG_CMDID); + /************************** TLV definitions of WMI events *******************************/ /* Service Ready event */ diff --git a/CORE/SERVICES/COMMON/wmi_unified.h b/CORE/SERVICES/COMMON/wmi_unified.h index 9a0497caed36..b52c2345c39c 100644 --- a/CORE/SERVICES/COMMON/wmi_unified.h +++ b/CORE/SERVICES/COMMON/wmi_unified.h @@ -337,6 +337,8 @@ typedef enum { WMI_PDEV_SET_ANTENNA_MODE_CMDID, /** Periodic channel stats request command */ WMI_SET_PERIODIC_CHANNEL_STATS_CONFIG_CMDID, + /** WMI command for power debug framework */ + WMI_PDEV_WAL_POWER_DEBUG_CMDID, /* VDEV(virtual device) specific commands */ /** vdev create */ @@ -1812,6 +1814,11 @@ typedef struct { * within the time limit described in the MPDU maximum density field. */ A_UINT32 mpdu_density; /* units are microseconds */ + /* + * Maximum no of BSSID based RX filters host can program + * Value 0 means FW hasn't given any limit to host. + */ + A_UINT32 max_bssid_rx_filters; } wmi_service_ready_ext_event_fixed_param; typedef enum { @@ -2241,6 +2248,12 @@ typedef struct { * packet filtering instructions */ A_UINT32 bpf_instruction_size; + + /** + * Maximum no of BSSID based RX filters host would program + * Value 0 means host doesn't given any limit to FW. + */ + A_UINT32 max_bssid_rx_filters; } wmi_resource_config; #define WMI_RSRC_CFG_FLAG_SET(word32, flag, value) \ @@ -3074,11 +3087,11 @@ typedef struct { /*Command to set/unset chip in quiet mode*/ typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_pdev_set_quiet_cmd_fixed_param */ - A_UINT32 reserved0; /** placeholder for pdev_id of future multiple MAC products. Init. to 0. */ - A_UINT32 period; /*period in TUs*/ - A_UINT32 duration; /*duration in TUs*/ - A_UINT32 next_start; /*offset in TUs*/ - A_UINT32 enabled; /*enable/disable*/ + A_UINT32 pdev_id; /** pdev_id for identifying the MAC, See macros starting with WMI_PDEV_ID_ for values. */ + A_UINT32 period; /*period in TUs*/ + A_UINT32 duration; /*duration in TUs*/ + A_UINT32 next_start; /*offset in TUs*/ + A_UINT32 enabled; /*enable/disable*/ } wmi_pdev_set_quiet_cmd_fixed_param; typedef struct { @@ -4352,14 +4365,13 @@ enum { typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_pdev_suspend_cmd_fixed_param */ /* suspend option sent to target */ - A_UINT32 reserved0; /** placeholder for pdev_id of future multiple MAC products. Init. to 0. */ + A_UINT32 pdev_id; /** pdev_id for identifying the MAC, See macros starting with WMI_PDEV_ID_ for values. */ A_UINT32 suspend_opt; } wmi_pdev_suspend_cmd_fixed_param; typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_pdev_resume_cmd_fixed_param */ - /** Reserved for future use */ - A_UINT32 reserved0; + A_UINT32 pdev_id; /** pdev_id for identifying the MAC, See macros starting with WMI_PDEV_ID_ for values. */ } wmi_pdev_resume_cmd_fixed_param; typedef struct { @@ -4550,8 +4562,13 @@ typedef struct { A_UINT32 vdev_subtype; /** VDEV MAC address */ wmi_mac_addr vdev_macaddr; - /* Number of configured txrx streams */ + /** Number of configured txrx streams */ A_UINT32 num_cfg_txrx_streams; + /** + * pdev_id for identifying the MAC, + * See macros starting with WMI_PDEV_ID_ for values. + */ + A_UINT32 pdev_id; /* This TLV is followed by another TLV of array of structures * wmi_vdev_txrx_streams cfg_txrx_streams[]; */ @@ -5357,159 +5374,160 @@ typedef struct { A_UINT32 tx_status; } wmi_offload_bcn_tx_status_event_fixed_param; - enum wmi_sta_ps_mode { - /** enable power save for the given STA VDEV */ - WMI_STA_PS_MODE_DISABLED = 0, - /** disable power save for a given STA VDEV */ - WMI_STA_PS_MODE_ENABLED = 1, - }; +enum wmi_sta_ps_mode { + /** enable power save for the given STA VDEV */ + WMI_STA_PS_MODE_DISABLED = 0, + /** disable power save for a given STA VDEV */ + WMI_STA_PS_MODE_ENABLED = 1, +}; - typedef struct { - A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_sta_powersave_mode_cmd_fixed_param */ - /** unique id identifying the VDEV, generated by the caller */ - A_UINT32 vdev_id; +typedef struct { + A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_sta_powersave_mode_cmd_fixed_param */ + /** unique id identifying the VDEV, generated by the caller */ + A_UINT32 vdev_id; - /** Power save mode - * - * (see enum wmi_sta_ps_mode) - */ - A_UINT32 sta_ps_mode; - } wmi_sta_powersave_mode_cmd_fixed_param; - - enum wmi_csa_offload_en{ - WMI_CSA_OFFLOAD_DISABLE = 0, - WMI_CSA_OFFLOAD_ENABLE = 1, - }; - - typedef struct{ - A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_csa_offload_enable_cmd_fixed_param */ - A_UINT32 vdev_id; - A_UINT32 csa_offload_enable; - } wmi_csa_offload_enable_cmd_fixed_param; - - typedef struct{ - A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_csa_offload_chanswitch_cmd_fixed_param */ - A_UINT32 vdev_id; - /* - * The TLVs follows: - * wmi_channel chan; - */ - } wmi_csa_offload_chanswitch_cmd_fixed_param; - /** - * This parameter controls the policy for retrieving frames from AP while the - * STA is in sleep state. - * - * Only takes affect if the sta_ps_mode is enabled - */ - enum wmi_sta_ps_param_rx_wake_policy { - /* Wake up when ever there is an RX activity on the VDEV. In this mode - * the Power save SM(state machine) will come out of sleep by either - * sending null frame (or) a data frame (with PS==0) in response to TIM - * bit set in the received beacon frame from AP. - */ - WMI_STA_PS_RX_WAKE_POLICY_WAKE = 0, + /** Power save mode + * + * (see enum wmi_sta_ps_mode) + */ + A_UINT32 sta_ps_mode; +} wmi_sta_powersave_mode_cmd_fixed_param; - /* Here the power save state machine will not wakeup in response to TIM - * bit, instead it will send a PSPOLL (or) UASPD trigger based on UAPSD - * configuration setup by WMISET_PS_SET_UAPSD WMI command. When all - * access categories are delivery-enabled, the station will send a UAPSD - * trigger frame, otherwise it will send a PS-Poll. - */ - WMI_STA_PS_RX_WAKE_POLICY_POLL_UAPSD = 1, - }; +enum wmi_csa_offload_en{ + WMI_CSA_OFFLOAD_DISABLE = 0, + WMI_CSA_OFFLOAD_ENABLE = 1, +}; - /** Number of tx frames/beacon that cause the power save SM to wake up. - * - * Value 1 causes the SM to wake up for every TX. Value 0 has a special - * meaning, It will cause the SM to never wake up. This is useful if you want - * to keep the system to sleep all the time for some kind of test mode . host - * can change this parameter any time. It will affect at the next tx frame. - */ - enum wmi_sta_ps_param_tx_wake_threshold { - WMI_STA_PS_TX_WAKE_THRESHOLD_NEVER = 0, - WMI_STA_PS_TX_WAKE_THRESHOLD_ALWAYS = 1, +typedef struct{ + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_csa_offload_enable_cmd_fixed_param */ + A_UINT32 vdev_id; + A_UINT32 csa_offload_enable; +} wmi_csa_offload_enable_cmd_fixed_param; - /* Values greater than one indicate that many TX attempts per beacon - * interval before the STA will wake up - */ - }; +typedef struct{ + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_csa_offload_chanswitch_cmd_fixed_param */ + A_UINT32 vdev_id; + /* + * The TLVs follows: + * wmi_channel chan; + */ +} wmi_csa_offload_chanswitch_cmd_fixed_param; - /** - * The maximum number of PS-Poll frames the FW will send in response to - * traffic advertised in TIM before waking up (by sending a null frame with PS - * = 0). Value 0 has a special meaning: there is no maximum count and the FW - * will send as many PS-Poll as are necessary to retrieve buffered BU. This - * parameter is used when the RX wake policy is - * WMI_STA_PS_RX_WAKE_POLICY_POLL_UAPSD and ignored when the RX wake - * policy is WMI_STA_PS_RX_WAKE_POLICY_WAKE. - */ - enum wmi_sta_ps_param_pspoll_count { - WMI_STA_PS_PSPOLL_COUNT_NO_MAX = 0, - /* Values greater than 0 indicate the maximum numer of PS-Poll frames FW - * will send before waking up. - */ - }; +/** + * This parameter controls the policy for retrieving frames from AP while the + * STA is in sleep state. + * + * Only takes affect if the sta_ps_mode is enabled + */ +enum wmi_sta_ps_param_rx_wake_policy { + /* Wake up when ever there is an RX activity on the VDEV. In this mode + * the Power save SM(state machine) will come out of sleep by either + * sending null frame (or) a data frame (with PS==0) in response to TIM + * bit set in the received beacon frame from AP. + */ + WMI_STA_PS_RX_WAKE_POLICY_WAKE = 0, - /* - * This will include the delivery and trigger enabled state for every AC. - * This is the negotiated state with AP. The host MLME needs to set this based - * on AP capability and the state Set in the association request by the - * station MLME.Lower 8 bits of the value specify the UAPSD configuration. - */ - #define WMI_UAPSD_AC_TYPE_DELI 0 - #define WMI_UAPSD_AC_TYPE_TRIG 1 - - #define WMI_UAPSD_AC_BIT_MASK(ac,type) (type == WMI_UAPSD_AC_TYPE_DELI)?(1<<(ac<<1)):(1<<((ac<<1)+1)) - - enum wmi_sta_ps_param_uapsd { - WMI_STA_PS_UAPSD_AC0_DELIVERY_EN = (1 << 0), - WMI_STA_PS_UAPSD_AC0_TRIGGER_EN = (1 << 1), - WMI_STA_PS_UAPSD_AC1_DELIVERY_EN = (1 << 2), - WMI_STA_PS_UAPSD_AC1_TRIGGER_EN = (1 << 3), - WMI_STA_PS_UAPSD_AC2_DELIVERY_EN = (1 << 4), - WMI_STA_PS_UAPSD_AC2_TRIGGER_EN = (1 << 5), - WMI_STA_PS_UAPSD_AC3_DELIVERY_EN = (1 << 6), - WMI_STA_PS_UAPSD_AC3_TRIGGER_EN = (1 << 7), - }; + /* Here the power save state machine will not wakeup in response to TIM + * bit, instead it will send a PSPOLL (or) UASPD trigger based on UAPSD + * configuration setup by WMISET_PS_SET_UAPSD WMI command. When all + * access categories are delivery-enabled, the station will send a UAPSD + * trigger frame, otherwise it will send a PS-Poll. + */ + WMI_STA_PS_RX_WAKE_POLICY_POLL_UAPSD = 1, +}; - enum wmi_sta_powersave_param { - /** - * Controls how frames are retrievd from AP while STA is sleeping - * - * (see enum wmi_sta_ps_param_rx_wake_policy) - */ - WMI_STA_PS_PARAM_RX_WAKE_POLICY = 0, +/** Number of tx frames/beacon that cause the power save SM to wake up. + * + * Value 1 causes the SM to wake up for every TX. Value 0 has a special + * meaning, It will cause the SM to never wake up. This is useful if you want + * to keep the system to sleep all the time for some kind of test mode . host + * can change this parameter any time. It will affect at the next tx frame. + */ +enum wmi_sta_ps_param_tx_wake_threshold { + WMI_STA_PS_TX_WAKE_THRESHOLD_NEVER = 0, + WMI_STA_PS_TX_WAKE_THRESHOLD_ALWAYS = 1, - /** - * The STA will go active after this many TX - * - * (see enum wmi_sta_ps_param_tx_wake_threshold) - */ - WMI_STA_PS_PARAM_TX_WAKE_THRESHOLD = 1, + /* Values greater than one indicate that many TX attempts per beacon + * interval before the STA will wake up + */ +}; - /** - * Number of PS-Poll to send before STA wakes up - * - * (see enum wmi_sta_ps_param_pspoll_count) - * - */ - WMI_STA_PS_PARAM_PSPOLL_COUNT = 2, - - /** - * TX/RX inactivity time in msec before going to sleep. - * - * The power save SM will monitor tx/rx activity on the VDEV, if no - * activity for the specified msec of the parameter the Power save SM will - * go to sleep. - */ - WMI_STA_PS_PARAM_INACTIVITY_TIME = 3, +/** + * The maximum number of PS-Poll frames the FW will send in response to + * traffic advertised in TIM before waking up (by sending a null frame with PS + * = 0). Value 0 has a special meaning: there is no maximum count and the FW + * will send as many PS-Poll as are necessary to retrieve buffered BU. This + * parameter is used when the RX wake policy is + * WMI_STA_PS_RX_WAKE_POLICY_POLL_UAPSD and ignored when the RX wake + * policy is WMI_STA_PS_RX_WAKE_POLICY_WAKE. + */ +enum wmi_sta_ps_param_pspoll_count { + WMI_STA_PS_PSPOLL_COUNT_NO_MAX = 0, + /* Values greater than 0 indicate the maximum numer of PS-Poll frames FW + * will send before waking up. + */ +}; + +/* + * This will include the delivery and trigger enabled state for every AC. + * This is the negotiated state with AP. The host MLME needs to set this based + * on AP capability and the state Set in the association request by the + * station MLME.Lower 8 bits of the value specify the UAPSD configuration. + */ +#define WMI_UAPSD_AC_TYPE_DELI 0 +#define WMI_UAPSD_AC_TYPE_TRIG 1 + +#define WMI_UAPSD_AC_BIT_MASK(ac,type) (type == WMI_UAPSD_AC_TYPE_DELI)?(1<<(ac<<1)):(1<<((ac<<1)+1)) + +enum wmi_sta_ps_param_uapsd { + WMI_STA_PS_UAPSD_AC0_DELIVERY_EN = (1 << 0), + WMI_STA_PS_UAPSD_AC0_TRIGGER_EN = (1 << 1), + WMI_STA_PS_UAPSD_AC1_DELIVERY_EN = (1 << 2), + WMI_STA_PS_UAPSD_AC1_TRIGGER_EN = (1 << 3), + WMI_STA_PS_UAPSD_AC2_DELIVERY_EN = (1 << 4), + WMI_STA_PS_UAPSD_AC2_TRIGGER_EN = (1 << 5), + WMI_STA_PS_UAPSD_AC3_DELIVERY_EN = (1 << 6), + WMI_STA_PS_UAPSD_AC3_TRIGGER_EN = (1 << 7), +}; + +enum wmi_sta_powersave_param { + /** + * Controls how frames are retrievd from AP while STA is sleeping + * + * (see enum wmi_sta_ps_param_rx_wake_policy) + */ + WMI_STA_PS_PARAM_RX_WAKE_POLICY = 0, + + /** + * The STA will go active after this many TX + * + * (see enum wmi_sta_ps_param_tx_wake_threshold) + */ + WMI_STA_PS_PARAM_TX_WAKE_THRESHOLD = 1, - /** - * Set uapsd configuration. - * - * (see enum wmi_sta_ps_param_uapsd) - */ - WMI_STA_PS_PARAM_UAPSD = 4, + /** + * Number of PS-Poll to send before STA wakes up + * + * (see enum wmi_sta_ps_param_pspoll_count) + * + */ + WMI_STA_PS_PARAM_PSPOLL_COUNT = 2, + + /** + * TX/RX inactivity time in msec before going to sleep. + * + * The power save SM will monitor tx/rx activity on the VDEV, if no + * activity for the specified msec of the parameter the Power save SM will + * go to sleep. + */ + WMI_STA_PS_PARAM_INACTIVITY_TIME = 3, + + /** + * Set uapsd configuration. + * + * (see enum wmi_sta_ps_param_uapsd) + */ + WMI_STA_PS_PARAM_UAPSD = 4, /** * Number of PS-Poll to send before STA wakes up in QPower Mode */ @@ -5520,170 +5538,182 @@ typedef struct { */ WMI_STA_PS_ENABLE_QPOWER = 6, - /** - * Number of TX frames before the entering the Active state - */ - WMI_STA_PS_PARAM_QPOWER_MAX_TX_BEFORE_WAKE = 7, + /** + * Number of TX frames before the entering the Active state + */ + WMI_STA_PS_PARAM_QPOWER_MAX_TX_BEFORE_WAKE = 7, - /** - * QPower SPEC PSPOLL interval - */ - WMI_STA_PS_PARAM_QPOWER_SPEC_PSPOLL_WAKE_INTERVAL = 8, + /** + * QPower SPEC PSPOLL interval + */ + WMI_STA_PS_PARAM_QPOWER_SPEC_PSPOLL_WAKE_INTERVAL = 8, - /** - * Max SPEC PSPOLL to be sent when the PSPOLL response has - * no-data bit set - */ - WMI_STA_PS_PARAM_QPOWER_SPEC_MAX_SPEC_NODATA_PSPOLL = 9, - }; + /** + * Max SPEC PSPOLL to be sent when the PSPOLL response has + * no-data bit set + */ + WMI_STA_PS_PARAM_QPOWER_SPEC_MAX_SPEC_NODATA_PSPOLL = 9, +}; - typedef struct { - A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_sta_powersave_param_cmd_fixed_param */ - /** unique id identifying the VDEV, generated by the caller */ - A_UINT32 vdev_id; - /** station power save parameter (see enum wmi_sta_powersave_param) */ - A_UINT32 param; - A_UINT32 value; - } wmi_sta_powersave_param_cmd_fixed_param; - - /** No MIMO power save */ - #define WMI_STA_MIMO_PS_MODE_DISABLE - /** mimo powersave mode static*/ - #define WMI_STA_MIMO_PS_MODE_STATIC - /** mimo powersave mode dynamic */ - #define WMI_STA_MIMO_PS_MODE_DYNAMI +typedef struct { + A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_sta_powersave_param_cmd_fixed_param */ + /** unique id identifying the VDEV, generated by the caller */ + A_UINT32 vdev_id; + /** station power save parameter (see enum wmi_sta_powersave_param) */ + A_UINT32 param; + A_UINT32 value; +} wmi_sta_powersave_param_cmd_fixed_param; - typedef struct { - /** unique id identifying the VDEV, generated by the caller */ - A_UINT32 vdev_id; - /** mimo powersave mode as defined above */ - A_UINT32 mimo_pwrsave_mode; - } wmi_sta_mimo_ps_mode_cmd; - - - /** U-APSD configuration of peer station from (re)assoc request and TSPECs */ - enum wmi_ap_ps_param_uapsd { - WMI_AP_PS_UAPSD_AC0_DELIVERY_EN = (1 << 0), - WMI_AP_PS_UAPSD_AC0_TRIGGER_EN = (1 << 1), - WMI_AP_PS_UAPSD_AC1_DELIVERY_EN = (1 << 2), - WMI_AP_PS_UAPSD_AC1_TRIGGER_EN = (1 << 3), - WMI_AP_PS_UAPSD_AC2_DELIVERY_EN = (1 << 4), - WMI_AP_PS_UAPSD_AC2_TRIGGER_EN = (1 << 5), - WMI_AP_PS_UAPSD_AC3_DELIVERY_EN = (1 << 6), - WMI_AP_PS_UAPSD_AC3_TRIGGER_EN = (1 << 7), - }; + /** No MIMO power save */ +#define WMI_STA_MIMO_PS_MODE_DISABLE + /** mimo powersave mode static*/ +#define WMI_STA_MIMO_PS_MODE_STATIC + /** mimo powersave mode dynamic */ +#define WMI_STA_MIMO_PS_MODE_DYNAMI - /** U-APSD maximum service period of peer station */ - enum wmi_ap_ps_peer_param_max_sp { - WMI_AP_PS_PEER_PARAM_MAX_SP_UNLIMITED = 0, - WMI_AP_PS_PEER_PARAM_MAX_SP_2 = 1, - WMI_AP_PS_PEER_PARAM_MAX_SP_4 = 2, - WMI_AP_PS_PEER_PARAM_MAX_SP_6 = 3, +typedef struct { + /** unique id identifying the VDEV, generated by the caller */ + A_UINT32 vdev_id; + /** mimo powersave mode as defined above */ + A_UINT32 mimo_pwrsave_mode; +} wmi_sta_mimo_ps_mode_cmd; + + +/** U-APSD configuration of peer station from (re)assoc request and TSPECs */ +enum wmi_ap_ps_param_uapsd { + WMI_AP_PS_UAPSD_AC0_DELIVERY_EN = (1 << 0), + WMI_AP_PS_UAPSD_AC0_TRIGGER_EN = (1 << 1), + WMI_AP_PS_UAPSD_AC1_DELIVERY_EN = (1 << 2), + WMI_AP_PS_UAPSD_AC1_TRIGGER_EN = (1 << 3), + WMI_AP_PS_UAPSD_AC2_DELIVERY_EN = (1 << 4), + WMI_AP_PS_UAPSD_AC2_TRIGGER_EN = (1 << 5), + WMI_AP_PS_UAPSD_AC3_DELIVERY_EN = (1 << 6), + WMI_AP_PS_UAPSD_AC3_TRIGGER_EN = (1 << 7), +}; - /* keep last! */ - MAX_WMI_AP_PS_PEER_PARAM_MAX_SP, - }; +/** U-APSD maximum service period of peer station */ +enum wmi_ap_ps_peer_param_max_sp { + WMI_AP_PS_PEER_PARAM_MAX_SP_UNLIMITED = 0, + WMI_AP_PS_PEER_PARAM_MAX_SP_2 = 1, + WMI_AP_PS_PEER_PARAM_MAX_SP_4 = 2, + WMI_AP_PS_PEER_PARAM_MAX_SP_6 = 3, - /** - * AP power save parameter - * Set a power save specific parameter for a peer station - */ - enum wmi_ap_ps_peer_param { - /** Set uapsd configuration for a given peer. - * - * This will include the delivery and trigger enabled state for every AC. - * The host MLME needs to set this based on AP capability and stations - * request Set in the association request received from the station. - * - * Lower 8 bits of the value specify the UAPSD configuration. - * - * (see enum wmi_ap_ps_param_uapsd) - * The default value is 0. - */ - WMI_AP_PS_PEER_PARAM_UAPSD = 0, - - /** - * Set the service period for a UAPSD capable station - * - * The service period from wme ie in the (re)assoc request frame. - * - * (see enum wmi_ap_ps_peer_param_max_sp) - */ - WMI_AP_PS_PEER_PARAM_MAX_SP = 1, + /* keep last! */ + MAX_WMI_AP_PS_PEER_PARAM_MAX_SP, +}; - /** Time in seconds for aging out buffered frames for STA in power save */ - WMI_AP_PS_PEER_PARAM_AGEOUT_TIME = 2, +/** param values for WMI_AP_PS_PEER_PARAM_SIFS_RESP_FRMTYPE */ +enum wmi_ap_ps_param_sifs_resp_frmtype { + WMI_SIFS_RESP_PSPOLL = (1 << 0), + WMI_SIFS_RESP_UAPSD = (1 << 1), + WMI_SIFS_RESP_QBST_EXP = (1 << 2), + WMI_SIFS_RESP_QBST_DATA = (1 << 3), + WMI_SIFS_RESP_QBST_BAR = (1 << 4), +}; - /** Specify frame types that are considered SIFS RESP trigger frame */ - WMI_AP_PS_PEER_PARAM_SIFS_RESP_FRMTYPE = 3, +/** + * AP power save parameter + * Set a power save specific parameter for a peer station + */ +enum wmi_ap_ps_peer_param { + /** Set uapsd configuration for a given peer. + * + * This will include the delivery and trigger enabled state for every AC. + * The host MLME needs to set this based on AP capability and stations + * request Set in the association request received from the station. + * + * Lower 8 bits of the value specify the UAPSD configuration. + * + * (see enum wmi_ap_ps_param_uapsd) + * The default value is 0. + */ + WMI_AP_PS_PEER_PARAM_UAPSD = 0, - /** Specifies the trigger state of TID. Valid only for UAPSD frame type */ - WMI_AP_PS_PEER_PARAM_SIFS_RESP_UAPSD = 4, + /** + * Set the service period for a UAPSD capable station + * + * The service period from wme ie in the (re)assoc request frame. + * + * (see enum wmi_ap_ps_peer_param_max_sp) + */ + WMI_AP_PS_PEER_PARAM_MAX_SP = 1, - /** Specifies the WNM sleep state of a STA */ - WMI_AP_PS_PEER_PARAM_WNM_SLEEP = 5, - }; + /** Time in seconds for aging out buffered frames for STA in power save */ + WMI_AP_PS_PEER_PARAM_AGEOUT_TIME = 2, - typedef struct { - A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_ap_ps_peer_cmd_fixed_param */ - /** unique id identifying the VDEV, generated by the caller */ - A_UINT32 vdev_id; - /** peer MAC address */ - wmi_mac_addr peer_macaddr; - /** AP powersave param (see enum wmi_ap_ps_peer_param) */ - A_UINT32 param; - /** AP powersave param value */ - A_UINT32 value; - } wmi_ap_ps_peer_cmd_fixed_param; + /** + * Specify frame types that are considered SIFS RESP trigger frame + * (see enum wmi_ap_ps_param_sifs_resp_frmtype) + */ + WMI_AP_PS_PEER_PARAM_SIFS_RESP_FRMTYPE = 3, - /** Configure peer station 11v U-APSD coexistance - * - * Two parameters from uaspd coexistence ie info (as specified in 11v) are - * sent down to FW along with this command. - * - * The semantics of these fields are described in the following text extracted - * from 802.11v. - * - * --- If the non-AP STA specified a non-zero TSF 0 Offset value in the - * U-APSD Coexistence element, the AP should not transmit frames to the - * non-AP STA outside of the U-APSD Coexistence Service Period, which - * begins when the AP receives the U-APSD trigger frame and ends after - * the transmission period specified by the result of the following - * calculation: - * - * End of transmission period = T + (Interval . ((T . TSF 0 Offset) mod Interval)) - * - * Where T is the time the U-APSD trigger frame was received at the AP - * Interval is the UAPSD Coexistence element Duration/Interval field - * value (see 7.3.2.91) or upon the successful transmission of a frame - * with EOSP bit set to 1, whichever is earlier. - * - * - * --- If the non-AP STA specified a zero TSF 0 Offset value in the U-APSD - * Coexistence element, the AP should not transmit frames to the non-AP - * STA outside of the U-APSD Coexistence Service Period, which begins - * when the AP receives a U-APSD trigger frame and ends after the - * transmission period specified by the result of the following - * calculation: End of transmission period = T + Duration - */ - typedef struct { - /** unique id identifying the VDEV, generated by the caller */ - A_UINT32 vdev_id; - /** peer MAC address */ - wmi_mac_addr peer_macaddr; - /** Enable U-APSD coexistence support for this peer - * - * 0 -> disabled (default) - * 1 -> enabled - */ - A_UINT32 enabled; - /** Duration/Interval as defined by 11v U-ASPD coexistance */ - A_UINT32 duration_interval; - /** Upper 32 bits of 64-bit TSF offset */ - A_UINT32 tsf_offset_high; - /** Lower 32 bits of 64-bit TSF offset */ - A_UINT32 tsf_offset_low; - } wmi_ap_powersave_peer_uapsd_coex_cmd; + /** Specifies the trigger state of TID. Valid only for UAPSD frame type */ + WMI_AP_PS_PEER_PARAM_SIFS_RESP_UAPSD = 4, + + /** Specifies the WNM sleep state of a STA */ + WMI_AP_PS_PEER_PARAM_WNM_SLEEP = 5, +}; + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_ap_ps_peer_cmd_fixed_param */ + /** unique id identifying the VDEV, generated by the caller */ + A_UINT32 vdev_id; + /** peer MAC address */ + wmi_mac_addr peer_macaddr; + /** AP powersave param (see enum wmi_ap_ps_peer_param) */ + A_UINT32 param; + /** AP powersave param value (see defines) */ + A_UINT32 value; +} wmi_ap_ps_peer_cmd_fixed_param; + +/** Configure peer station 11v U-APSD coexistance + * + * Two parameters from uaspd coexistence ie info (as specified in 11v) are + * sent down to FW along with this command. + * + * The semantics of these fields are described in the following text extracted + * from 802.11v. + * + * --- If the non-AP STA specified a non-zero TSF 0 Offset value in the + * U-APSD Coexistence element, the AP should not transmit frames to the + * non-AP STA outside of the U-APSD Coexistence Service Period, which + * begins when the AP receives the U-APSD trigger frame and ends after + * the transmission period specified by the result of the following + * calculation: + * + * End of transmission period = T + (Interval . ((T . TSF 0 Offset) mod Interval)) + * + * Where T is the time the U-APSD trigger frame was received at the AP + * Interval is the UAPSD Coexistence element Duration/Interval field + * value (see 7.3.2.91) or upon the successful transmission of a frame + * with EOSP bit set to 1, whichever is earlier. + * + * + * --- If the non-AP STA specified a zero TSF 0 Offset value in the U-APSD + * Coexistence element, the AP should not transmit frames to the non-AP + * STA outside of the U-APSD Coexistence Service Period, which begins + * when the AP receives a U-APSD trigger frame and ends after the + * transmission period specified by the result of the following + * calculation: End of transmission period = T + Duration + */ +typedef struct { + /** unique id identifying the VDEV, generated by the caller */ + A_UINT32 vdev_id; + /** peer MAC address */ + wmi_mac_addr peer_macaddr; + /** Enable U-APSD coexistence support for this peer + * + * 0 -> disabled (default) + * 1 -> enabled + */ + A_UINT32 enabled; + /** Duration/Interval as defined by 11v U-ASPD coexistance */ + A_UINT32 duration_interval; + /** Upper 32 bits of 64-bit TSF offset */ + A_UINT32 tsf_offset_high; + /** Lower 32 bits of 64-bit TSF offset */ + A_UINT32 tsf_offset_low; +} wmi_ap_powersave_peer_uapsd_coex_cmd; typedef enum { WMI_AP_PS_EGAP_F_ENABLE_PHYERR_DETECTION = 0x0001, @@ -6580,6 +6610,10 @@ typedef struct { * Type of the event present, either the cw interference event, or the wlan_im stats */ A_UINT32 interference_type; /* type of interference, wlan or cw */ + /** pdev_id for identifying the MAC + * See macros starting with WMI_PDEV_ID_ for values. + */ + A_UINT32 pdev_id; /* * Following this struct are these TLVs. Note that they are both array of structures * but can have at most one element. Which TLV is empty or has one element depends @@ -9075,8 +9109,10 @@ typedef struct { * WMITLV_TAG_STRUC_wmi_dfs_phyerr_filter_dis_cmd_fixed_param */ A_UINT32 tlv_header; - /** Reserved for future use */ - A_UINT32 reserved0; + /** pdev_id for identifying the MAC + * See macros starting with WMI_PDEV_ID_ for values. + */ + A_UINT32 pdev_id; } wmi_dfs_phyerr_filter_dis_cmd_fixed_param; /** TDLS COMMANDS */ @@ -14389,6 +14425,22 @@ typedef struct { A_UINT32 stats_period; } wmi_set_periodic_channel_stats_config_fixed_param; +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_pdev_wal_power_debug_cmd_fixed_param */ + /** pdev_id for identifying the MAC + * See macros starting with WMI_PDEV_ID_ for values. + */ + A_UINT32 pdev_id; + /* Identify the wlan module */ + A_UINT32 module_id; + /* Num of elements in the following args[] array */ + A_UINT32 num_args; +/** + * Following this structure are the TLVs: + * A_UINT32 args[]; + **/ +} wmi_pdev_wal_power_debug_cmd_fixed_param; + /* ADD NEW DEFS HERE */ /***************************************************************************** diff --git a/CORE/SERVICES/COMMON/wmi_version.h b/CORE/SERVICES/COMMON/wmi_version.h index 0ae1d9d6cefc..a69589f3edc1 100644 --- a/CORE/SERVICES/COMMON/wmi_version.h +++ b/CORE/SERVICES/COMMON/wmi_version.h @@ -36,7 +36,7 @@ #define __WMI_VER_MINOR_ 0 /** WMI revision number has to be incremented when there is a * change that may or may not break compatibility. */ -#define __WMI_REVISION_ 226 +#define __WMI_REVISION_ 228 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work diff --git a/CORE/SERVICES/WMI/wmi_unified.c b/CORE/SERVICES/WMI/wmi_unified.c index 51b1a38213dc..5320eb29cf5e 100644 --- a/CORE/SERVICES/WMI/wmi_unified.c +++ b/CORE/SERVICES/WMI/wmi_unified.c @@ -696,6 +696,7 @@ static u_int8_t* get_wmi_cmd_string(WMI_CMD_ID wmi_command) CASE_RETURN_STRING(WMI_CHAN_AVOID_RPT_ALLOW_CMDID); CASE_RETURN_STRING(WMI_SET_PERIODIC_CHANNEL_STATS_CONFIG_CMDID); CASE_RETURN_STRING(WMI_VDEV_SET_CUSTOM_AGGR_SIZE_CMDID); + CASE_RETURN_STRING(WMI_PDEV_WAL_POWER_DEBUG_CMDID); } return "Invalid WMI cmd"; } |
