summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKrishna Kumaar Natarajan <kknatara@qca.qualcomm.com>2016-03-22 10:54:50 -0700
committerAnjaneedevi Kapparapu <akappa@codeaurora.org>2016-03-28 12:54:56 +0530
commit115edb33e1ac8d10326fa02db00abdde35f2072b (patch)
tree1c583452cd213a7a22b9dfae3fa46bba8046d60f
parentc1ec8f5d051b37fb5e5a80fdc9806876acf61a2b (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.h7
-rw-r--r--CORE/SERVICES/COMMON/wlan_module_ids.h1
-rw-r--r--CORE/SERVICES/COMMON/wmi_tlv_defs.h10
-rw-r--r--CORE/SERVICES/COMMON/wmi_unified.h660
-rw-r--r--CORE/SERVICES/COMMON/wmi_version.h2
-rw-r--r--CORE/SERVICES/WMI/wmi_unified.c1
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";
}