summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--fw/htt_stats.h80
-rwxr-xr-xfw/wmi_services.h3
-rwxr-xr-xfw/wmi_tlv_defs.h70
-rwxr-xr-xfw/wmi_unified.h345
-rwxr-xr-xfw/wmi_version.h2
5 files changed, 491 insertions, 9 deletions
diff --git a/fw/htt_stats.h b/fw/htt_stats.h
index 1229e43dd92c..d343aa0242f6 100644
--- a/fw/htt_stats.h
+++ b/fw/htt_stats.h
@@ -245,6 +245,21 @@ enum htt_dbg_ext_stats_type {
*/
HTT_DBG_EXT_STATS_REO_RESOURCE_STATS = 21,
+ /* HTT_DBG_EXT_STATS_TX_SOUNDING_INFO
+ * PARAMS:
+ * - config_param0:
+ * [Bit0] vdev_id_set:1
+ * set to 1 if vdev_id is set and vdev stats are requested
+ * [Bit8 : Bit1] vdev_id:8
+ * note:0xFF to get all active vdevs based on pdev_mask.
+ * [Bit31 : Bit9] rsvd:22
+
+ * RESP MSG:
+ * - htt_tx_sounding_stats_t
+ */
+ HTT_DBG_EXT_STATS_TX_SOUNDING_INFO = 22,
+
+
/* keep this last */
HTT_DBG_NUM_EXT_STATS = 256,
};
@@ -330,6 +345,7 @@ typedef enum {
HTT_STATS_RX_REFILL_RXDMA_ERR_TAG = 77, /* htt_rx_soc_fw_refill_ring_num_rxdma_err_tlv_v */
HTT_STATS_RX_REFILL_REO_ERR_TAG = 78, /* htt_rx_soc_fw_refill_ring_num_reo_err_tlv_v */
HTT_STATS_RX_REO_RESOURCE_STATS_TAG = 79, /* htt_rx_reo_debug_stats_tlv_v */
+ HTT_STATS_TX_SOUNDING_STATS_TAG = 80, /* htt_tx_sounding_stats_tlv */
HTT_STATS_MAX_TAG,
} htt_tlv_tag_t;
@@ -2517,6 +2533,9 @@ typedef struct {
#define HTT_TX_PDEV_STATS_NUM_LEGACY_CCK_STATS 4
#define HTT_TX_PDEV_STATS_NUM_LEGACY_OFDM_STATS 8
#define HTT_TX_PDEV_STATS_NUM_LTF 4
+#define HTT_TX_NUM_OF_SOUNDING_STATS_WORDS \
+ (HTT_TX_PDEV_STATS_NUM_BW_COUNTERS * \
+ HTT_TX_PDEV_STATS_NUM_AX_MUMIMO_USER_STATS)
#define HTT_TX_PDEV_RATE_STATS_MAC_ID_M 0x000000ff
#define HTT_TX_PDEV_RATE_STATS_MAC_ID_S 0
@@ -3307,4 +3326,65 @@ typedef struct {
htt_rx_reo_resource_stats_tlv_v reo_resource_stats;
} htt_soc_reo_resource_stats_t;
+/* == TX SOUNDING STATS == */
+
+/* config_param0 */
+
+#define HTT_DBG_EXT_STATS_SET_VDEV_MASK(_var) ((_var << 1) | 0x1)
+#define HTT_DBG_EXT_STATS_GET_VDEV_ID_FROM_VDEV_MASK(_var) ((_var >> 1) & 0xFF)
+#define HTT_DBG_EXT_STATS_IS_VDEV_ID_SET(_var) ((_var) & 0x1)
+
+typedef enum {
+ /* Implicit beamforming stats */
+ HTT_IMPLICIT_TXBF_STEER_STATS = 0,
+ /* Single user short inter frame sequence steer stats */
+ HTT_EXPLICIT_TXBF_SU_SIFS_STEER_STATS = 1,
+ /* Single user random back off steer stats */
+ HTT_EXPLICIT_TXBF_SU_RBO_STEER_STATS = 2,
+ /* Multi user short inter frame sequence steer stats */
+ HTT_EXPLICIT_TXBF_MU_SIFS_STEER_STATS = 3,
+ /* Multi user random back off steer stats */
+ HTT_EXPLICIT_TXBF_MU_RBO_STEER_STATS = 4,
+ /* For backward compatability new modes cannot be added */
+ HTT_TXBF_MAX_NUM_OF_MODES = 5
+} htt_txbf_sound_steer_modes;
+
+typedef enum {
+ HTT_TX_AC_SOUNDING_MODE = 0,
+ HTT_TX_AX_SOUNDING_MODE = 1,
+} htt_stats_sounding_tx_mode;
+
+typedef struct {
+ htt_tlv_hdr_t tlv_hdr;
+ A_UINT32 tx_sounding_mode; /* HTT_TX_XX_SOUNDING_MODE */
+ /* Counts number of soundings for all steering modes in each bw */
+ A_UINT32 cbf_20[HTT_TXBF_MAX_NUM_OF_MODES];
+ A_UINT32 cbf_40[HTT_TXBF_MAX_NUM_OF_MODES];
+ A_UINT32 cbf_80[HTT_TXBF_MAX_NUM_OF_MODES];
+ A_UINT32 cbf_160[HTT_TXBF_MAX_NUM_OF_MODES];
+ /*
+ * The sounding array is a 2-D array stored as an 1-D array of
+ * A_UINT32. The stats for a particular user/bw combination is
+ * referenced with the following:
+ *
+ * sounding[(user* max_bw) + bw]
+ *
+ * ... where max_bw == 4 for 160mhz
+ */
+ A_UINT32 sounding[HTT_TX_NUM_OF_SOUNDING_STATS_WORDS];
+} htt_tx_sounding_stats_tlv;
+
+/* STATS_TYPE : HTT_DBG_EXT_STATS_TX_SOUNDING_INFO
+ * TLV_TAGS:
+ * - HTT_STATS_TX_SOUNDING_STATS_TAG
+ */
+/* NOTE:
+ * This structure is for documentation, and cannot be safely used directly.
+ * Instead, use the constituent TLV structures to fill/parse.
+ */
+typedef struct {
+ htt_tx_sounding_stats_tlv sounding_tlv;
+} htt_tx_sounding_stats_t;
+
+
#endif /* __HTT_STATS_H__ */
diff --git a/fw/wmi_services.h b/fw/wmi_services.h
index 4d731131a455..70b6e9daf679 100755
--- a/fw/wmi_services.h
+++ b/fw/wmi_services.h
@@ -251,6 +251,9 @@ typedef enum {
WMI_SERVICE_SPOOF_MAC_SUPPORT=155, /* support for SERVICE_SPOOF_MAC */
WMI_SERVICE_PEER_TID_CONFIGS_SUPPORT=156, /* Support TID specific configurations per peer (ack,aggr,retry,rate) */
WMI_SERVICE_VDEV_SWRETRY_PER_AC_CONFIG_SUPPORT=157, /* Support vdev software retries configuration per AC (non aggr retry/aggr retry) */
+ WMI_SERVICE_DUAL_BEACON_ON_SINGLE_MAC_SCC_SUPPORT=158, /* Support dual beacon on same channel on single MAC */
+ WMI_SERVICE_DUAL_BEACON_ON_SINGLE_MAC_MCC_SUPPORT=159, /* Support dual beacon on different channel on single MAC */
+ WMI_SERVICE_MOTION_DET=160, /* support for motion detection config */
/******* ADD NEW SERVICES HERE *******/
diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h
index 8086af2ff57e..fb8fa29a713f 100755
--- a/fw/wmi_tlv_defs.h
+++ b/fw/wmi_tlv_defs.h
@@ -913,6 +913,15 @@ typedef enum {
WMITLV_TAG_STRUC_wmi_roam_scan_stats_event_fixed_param,
WMITLV_TAG_STRUC_wmi_peer_tid_configurations_cmd_fixed_param,
WMITLV_TAG_STRUC_wmi_vdev_set_custom_sw_retry_th_cmd_fixed_param,
+ WMITLV_TAG_STRUC_wmi_get_tpc_power_cmd_fixed_param,
+ WMITLV_TAG_STRUC_wmi_get_tpc_power_evt_fixed_param,
+ WMITLV_TAG_STRUC_wmi_dma_buf_release_spectral_meta_data,
+ WMITLV_TAG_STRUC_wmi_motion_det_config_params_cmd_fixed_param,
+ WMITLV_TAG_STRUC_wmi_motion_det_base_line_config_params_cmd_fixed_param,
+ WMITLV_TAG_STRUC_wmi_motion_det_start_stop_cmd_fixed_param,
+ WMITLV_TAG_STRUC_wmi_motion_det_base_line_start_stop_cmd_fixed_param,
+ WMITLV_TAG_STRUC_wmi_motion_det_event,
+ WMITLV_TAG_STRUC_wmi_motion_det_base_line_event,
} WMITLV_TAG_ID;
/*
@@ -1285,6 +1294,11 @@ typedef enum {
OP(WMI_REQUEST_ROAM_SCAN_STATS_CMDID) \
OP(WMI_PEER_TID_CONFIGURATIONS_CMDID) \
OP(WMI_VDEV_SET_CUSTOM_SW_RETRY_TH_CMDID) \
+ OP(WMI_GET_TPC_POWER_CMDID) \
+ OP(WMI_MOTION_DET_CONFIG_PARAM_CMDID) \
+ OP(WMI_MOTION_DET_BASE_LINE_CONFIG_PARAM_CMDID) \
+ OP(WMI_MOTION_DET_START_STOP_CMDID) \
+ OP(WMI_MOTION_DET_BASE_LINE_START_STOP_CMDID) \
/* add new CMD_LIST elements above this line */
@@ -1491,6 +1505,9 @@ typedef enum {
OP(WMI_TWT_PAUSE_DIALOG_COMPLETE_EVENTID) \
OP(WMI_TWT_RESUME_DIALOG_COMPLETE_EVENTID) \
OP(WMI_ROAM_SCAN_STATS_EVENTID) \
+ OP(WMI_GET_TPC_POWER_EVENTID) \
+ OP(WMI_MOTION_DET_HOST_EVENTID) \
+ OP(WMI_MOTION_DET_BASE_LINE_HOST_EVENTID) \
/* add new EVT_LIST elements above this line */
@@ -3644,6 +3661,23 @@ WMITLV_CREATE_PARAM_STRUC(WMI_ROAM_BTM_CONFIG_CMDID);
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_wlm_config_cmd_fixed_param, wmi_wlm_config_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
WMITLV_CREATE_PARAM_STRUC(WMI_WLM_CONFIG_CMDID);
+/* Motion detection cmd */
+#define WMITLV_TABLE_WMI_MOTION_DET_CONFIG_PARAM_CMDID(id,op,buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_motion_det_config_params_cmd_fixed_param, wmi_motion_det_config_params_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
+WMITLV_CREATE_PARAM_STRUC(WMI_MOTION_DET_CONFIG_PARAM_CMDID);
+
+#define WMITLV_TABLE_WMI_MOTION_DET_BASE_LINE_CONFIG_PARAM_CMDID(id,op,buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_motion_det_base_line_config_params_cmd_fixed_param, wmi_motion_det_base_line_config_params_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
+WMITLV_CREATE_PARAM_STRUC(WMI_MOTION_DET_BASE_LINE_CONFIG_PARAM_CMDID);
+
+#define WMITLV_TABLE_WMI_MOTION_DET_START_STOP_CMDID(id,op,buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_motion_det_start_stop_cmd_fixed_param, wmi_motion_det_start_stop_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
+WMITLV_CREATE_PARAM_STRUC(WMI_MOTION_DET_START_STOP_CMDID);
+
+#define WMITLV_TABLE_WMI_MOTION_DET_BASE_LINE_START_STOP_CMDID(id,op,buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_motion_det_base_line_start_stop_cmd_fixed_param, wmi_motion_det_base_line_start_stop_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
+WMITLV_CREATE_PARAM_STRUC(WMI_MOTION_DET_BASE_LINE_START_STOP_CMDID);
+
/* Pdev Set AC TX Queue Optimized Cmd */
#define WMITLV_TABLE_WMI_PDEV_SET_AC_TX_QUEUE_OPTIMIZED_CMDID(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_set_ac_tx_queue_optimized_cmd_fixed_param, wmi_pdev_set_ac_tx_queue_optimized_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
@@ -3666,6 +3700,12 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_SET_RX_FILTER_PROMISCUOUS_CMDID);
WMITLV_CREATE_PARAM_STRUC(WMI_RUNTIME_DPD_RECAL_CMDID);
+/** Get TX power Cmd */
+#define WMITLV_TABLE_WMI_GET_TPC_POWER_CMDID(id,op,buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_get_tpc_power_cmd_fixed_param, wmi_get_tpc_power_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
+
+WMITLV_CREATE_PARAM_STRUC(WMI_GET_TPC_POWER_CMDID);
+
/* TWT enable cmd */
#define WMITLV_TABLE_WMI_TWT_ENABLE_CMDID(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_twt_enable_cmd_fixed_param, wmi_twt_enable_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
@@ -3971,7 +4011,9 @@ WMITLV_CREATE_PARAM_STRUC(WMI_ROAM_SYNCH_FRAME_EVENTID);
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_hb_ind_event_fixed_param, hb_indevt, WMITLV_SIZE_VAR) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, WMI_GTK_OFFLOAD_STATUS_EVENT_fixed_param, wow_gtkigtk, WMITLV_SIZE_VAR) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_oic_ping_handoff_event, wow_oic_ping_handoff, WMITLV_SIZE_VAR) \
- WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_dhcp_lease_renew_event, wow_dhcp_lease_renew, WMITLV_SIZE_VAR)
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_dhcp_lease_renew_event, wow_dhcp_lease_renew, WMITLV_SIZE_VAR) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_motion_det_event, md_indevt, WMITLV_SIZE_VAR) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_motion_det_base_line_event, bl_indevt, WMITLV_SIZE_VAR)
WMITLV_CREATE_PARAM_STRUC(WMI_WOW_WAKEUP_HOST_EVENTID);
#define WMITLV_TABLE_WMI_WOW_INITIAL_WAKEUP_EVENTID(id,op,buf,len) \
@@ -3999,6 +4041,11 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_FTM_INTG_EVENTID);
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_vdev_get_keepalive_event_fixed_param, wmi_vdev_get_keepalive_event_fixed_param, fixed_param, WMITLV_SIZE_FIX)
WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_GET_KEEPALIVE_EVENTID);
+/** Get TX power Event */
+#define WMITLV_TABLE_WMI_GET_TPC_POWER_EVENTID(id,op,buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_get_tpc_power_evt_fixed_param, wmi_get_tpc_power_evt_fixed_param, fixed_param, WMITLV_SIZE_FIX)
+WMITLV_CREATE_PARAM_STRUC(WMI_GET_TPC_POWER_EVENTID);
+
/* GPIO Input Event */
#define WMITLV_TABLE_WMI_GPIO_INPUT_EVENTID(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_gpio_input_event_fixed_param, wmi_gpio_input_event_fixed_param, fixed_param, WMITLV_SIZE_FIX)
@@ -4118,6 +4165,16 @@ WMITLV_CREATE_PARAM_STRUC(WMI_OEM_DMA_BUF_RELEASE_EVENTID);
WMITLV_CREATE_PARAM_STRUC(WMI_HOST_SWBA_EVENTID);
+/* HOST SWBA Event v2 */
+#define WMITLV_TABLE_WMI_HOST_SWBA_V2_EVENTID(id,op,buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_host_swba_event_fixed_param, wmi_host_swba_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_tim_info_v2, tim_info, WMITLV_SIZE_VAR) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, data, WMITLV_SIZE_VAR) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_p2p_noa_info, p2p_noa_info, WMITLV_SIZE_VAR)
+
+WMITLV_CREATE_PARAM_STRUC(WMI_HOST_SWBA_V2_EVENTID);
+
+
/* HOST SWFDA Event requesting host to queue a FILS Discovery frame for transmission */
#define WMITLV_TABLE_WMI_HOST_SWFDA_EVENTID(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_host_swfda_event_fixed_param, wmi_host_swfda_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
@@ -4910,7 +4967,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_DMA_RING_CFG_RSP_EVENTID);
/* dma buffer release event */
#define WMITLV_TABLE_WMI_PDEV_DMA_RING_BUF_RELEASE_EVENTID(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_dma_buf_release_fixed_param, wmi_dma_buf_release_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
- WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_dma_buf_release_entry, entries, WMITLV_SIZE_VAR)
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_dma_buf_release_entry, entries, WMITLV_SIZE_VAR) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_dma_buf_release_spectral_meta_data, meta_data, WMITLV_SIZE_VAR)
WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_DMA_RING_BUF_RELEASE_EVENTID);
@@ -4969,6 +5027,14 @@ WMITLV_CREATE_PARAM_STRUC(WMI_TWT_RESUME_DIALOG_COMPLETE_EVENTID);
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, rssi, WMITLV_SIZE_VAR)
WMITLV_CREATE_PARAM_STRUC(WMI_ROAM_SCAN_STATS_EVENTID);
+/* Motion detection events */
+#define WMITLV_TABLE_WMI_MOTION_DET_HOST_EVENTID(id,op,buf,len) \
+WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_motion_det_event, wmi_motion_det_event, fixed_param, WMITLV_SIZE_FIX)
+WMITLV_CREATE_PARAM_STRUC(WMI_MOTION_DET_HOST_EVENTID);
+
+#define WMITLV_TABLE_WMI_MOTION_DET_BASE_LINE_HOST_EVENTID(id,op,buf,len) \
+WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_motion_det_base_line_event, wmi_motion_det_base_line_event, fixed_param, WMITLV_SIZE_FIX)
+WMITLV_CREATE_PARAM_STRUC(WMI_MOTION_DET_BASE_LINE_HOST_EVENTID);
#ifdef __cplusplus
}
diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h
index a2bc9a4ee7f4..ea97d6e01ae0 100755
--- a/fw/wmi_unified.h
+++ b/fw/wmi_unified.h
@@ -243,6 +243,7 @@ typedef enum {
WMI_GRP_WLM, /* 0x3c WLAN Latency Manager */
WMI_GRP_11K_OFFLOAD, /* 0x3d */
WMI_GRP_TWT, /* 0x3e TWT (Target Wake Time) for STA and AP */
+ WMI_GRP_MOTION_DET, /* 0x3f */
} WMI_GRP_ID;
#define WMI_CMD_GRP_START_ID(grp_id) (((grp_id) << 12) | 0x1)
@@ -901,6 +902,8 @@ typedef enum {
WMI_THERM_THROT_SET_CONF_CMDID,
/* set runtime dpd recalibration params */
WMI_RUNTIME_DPD_RECAL_CMDID,
+ /* get TX power for input HALPHY parameters */
+ WMI_GET_TPC_POWER_CMDID,
/* Offload 11k related requests */
WMI_11K_OFFLOAD_REPORT_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_11K_OFFLOAD),
@@ -1130,6 +1133,12 @@ typedef enum {
WMI_TWT_DEL_DIALOG_CMDID,
WMI_TWT_PAUSE_DIALOG_CMDID,
WMI_TWT_RESUME_DIALOG_CMDID,
+
+ /** WMI commands related to motion detection **/
+ WMI_MOTION_DET_CONFIG_PARAM_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_MOTION_DET),
+ WMI_MOTION_DET_BASE_LINE_CONFIG_PARAM_CMDID,
+ WMI_MOTION_DET_START_STOP_CMDID,
+ WMI_MOTION_DET_BASE_LINE_START_STOP_CMDID,
} WMI_CMD_ID;
typedef enum {
@@ -1347,6 +1356,10 @@ typedef enum {
/** software FILS Discovery Frame alert event to Host, requesting host to Queue an FD frame for transmission */
WMI_HOST_SWFDA_EVENTID,
+ /** software beacon alert event to Host requesting host to Queue a beacon for transmission.
+ * Used only in host beacon mode. */
+ WMI_HOST_SWBA_V2_EVENTID,
+
/* ADDBA Related WMI Events*/
/** Indication the completion of the prior
WMI_PEER_TID_DELBA_CMDID(initiator) */
@@ -1563,6 +1576,9 @@ typedef enum {
/** event to report result of host configure SAR2 */
WMI_SAR2_RESULT_EVENTID,
+ /** event to get TX power per input HALPHY parameters */
+ WMI_GET_TPC_POWER_EVENTID,
+
/* GPIO Event */
WMI_GPIO_INPUT_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_GPIO),
/** upload H_CV info WMI event
@@ -1680,6 +1696,10 @@ typedef enum {
WMI_NDP_END_INDICATION_EVENTID,
WMI_WLAN_COEX_BT_ACTIVITY_EVENTID,
WMI_NDL_SCHEDULE_UPDATE_EVENTID,
+
+ /** WMI events related to motion detection */
+ WMI_MOTION_DET_HOST_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_MOTION_DET),
+ WMI_MOTION_DET_BASE_LINE_HOST_EVENTID,
} WMI_EVT_ID;
/* defines for OEM message sub-types */
@@ -2124,6 +2144,34 @@ typedef struct _wmi_abi_version {
#define WMI_PDEV_ID_2ND 2 /* second pdev (pdev 1) */
#define WMI_PDEV_ID_3RD 3 /* third pdev (pdev 2) */
+/*
+ * Enum regarding which BDF elements are provided in which elements of the
+ * wmi_service_ready_event_fixed_param.hw_bd_info[] array
+ */
+typedef enum {
+ BDF_VERSION = 0,
+ REF_DESIGN_ID = 1,
+ CUSTOMER_ID = 2,
+ PROJECT_ID = 3,
+ BOARD_DATA_REV = 4,
+} wmi_hw_bd_info_e;
+
+/*
+ * Macros to get/set BDF details within the
+ * wmi_service_ready_event_fixed_param.hw_bd_info[] array
+ */
+#define WMI_GET_BDF_VERSION(hw_bd_info) ((hw_bd_info)[BDF_VERSION])
+#define WMI_GET_REF_DESIGN(hw_bd_info) ((hw_bd_info)[REF_DESIGN_ID])
+#define WMI_GET_CUSTOMER_ID(hw_bd_info) ((hw_bd_info)[CUSTOMER_ID])
+#define WMI_GET_PROJECT_ID(hw_bd_info) ((hw_bd_info)[PROJECT_ID])
+#define WMI_GET_BOARD_DATA_REV(hw_bd_info) ((hw_bd_info)[BOARD_DATA_REV])
+
+#define WMI_SET_BDF_VERSION(hw_bd_info, val) ((hw_bd_info)[BDF_VERSION] = (val))
+#define WMI_SET_REF_DESIGN(hw_bd_info, val) ((hw_bd_info)[REF_DESIGN_ID] = (val))
+#define WMI_SET_CUSTOMER_ID(hw_bd_info, val) ((hw_bd_info)[CUSTOMER_ID] = (val))
+#define WMI_SET_PROJECT_ID(hw_bd_info, val) ((hw_bd_info)[PROJECT_ID] = (val))
+#define WMI_SET_BOARD_DATA_REV(hw_bd_info, val) ((hw_bd_info)[BOARD_DATA_REV] = (val))
+
/**
* The following struct holds optional payload for
* wmi_service_ready_event_fixed_param,e.g., 11ac pass some of the
@@ -2706,6 +2754,9 @@ typedef struct {
#define WMI_RSRC_CFG_FLAG_TCL_CCE_DISABLE_S 12
#define WMI_RSRC_CFG_FLAG_TCL_CCE_DISABLE_M 0x1000
+ #define WMI_RSRC_CFG_FLAG_TIM_V2_SUPPORT_ENABLE_S 13
+ #define WMI_RSRC_CFG_FLAG_TIM_V2_SUPPORT_ENABLE_M 0x2000
+
A_UINT32 flag1;
/** @brief smart_ant_cap - Smart Antenna capabilities information
@@ -2898,6 +2949,11 @@ typedef struct {
#define WMI_RSRC_CFG_FLAG_TCL_CCE_DISABLE_GET(word32) \
WMI_RSRC_CFG_FLAG_GET((word32), TCL_CCE_DISABLE)
+#define WMI_RSRC_CFG_FLAG_TIM_V2_SUPPORT_ENABLE_SET(word32, value) \
+ WMI_RSRC_CFG_FLAG_SET((word32), TIM_V2_SUPPORT_ENABLE, (value))
+#define WMI_RSRC_CFG_FLAG_TIM_V2_SUPPORT_ENABLE_GET(word32) \
+ WMI_RSRC_CFG_FLAG_GET((word32), TIM_V2_SUPPORT_ENABLE)
+
typedef struct {
A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_init_cmd_fixed_param */
@@ -4419,6 +4475,8 @@ typedef struct {
#define WMI_BEACON_CTRL_TX_DISABLE 0
#define WMI_BEACON_CTRL_TX_ENABLE 1
+#define WMI_BEACON_CTRL_SWBA_EVENT_DISABLE 2
+#define WMI_BEACON_CTRL_SWBA_EVENT_ENABLE 3
typedef struct {
A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_bcn_offload_ctrl_cmd_fixed_param */
@@ -4514,6 +4572,27 @@ typedef enum {
PKT_PWR_SAVE_FSM_ENABLE = 0x80000000,
} WMI_PDEV_PKT_PWR_SAVE_LEVEL;
+/** MACROs to get user setting for enabling/disabling Secondary Rate Feature set
+ * Bit-0 : Enable/Disable Control for "PPDU Secondary Retry Support"
+ * Bit-1 : Enable/Disable Control for "RTS Black/White-listing Support"
+ * Bit-2 : Enable/Disable Control for "Higher MCS retry restriction on XRETRY failures"
+ * Bit 3-5 : "Xretry threshold" to use
+ * Bit 6~31 : reserved for future use.
+ */
+#define WMI_PDEV_PARAM_SECONDARY_RATE_ENABLE_BIT_S 0
+#define WMI_PDEV_PARAM_SECONDARY_RATE_ENABLE_BIT 0x00000001
+#define WMI_PDEV_PARAM_RTS_BL_WL_ENABLE_BIT_S 1
+#define WMI_PDEV_PARAM_RTS_BL_WL_ENABLE_BIT 0x00000002
+#define WMI_PDEV_PARAM_HIGHER_MCS_XRETRY_RESTRICTION_S 2
+#define WMI_PDEV_PARAM_HIGHER_MCS_XRETRY_RESTRICTION 0x00000004
+#define WMI_PDEV_PARAM_XRETRY_THRESHOLD_S 3
+#define WMI_PDEV_PARAM_XRETRY_THRESHOLD 0x00000038
+
+#define WMI_PDEV_PARAM_IS_SECONDARY_RATE_ENABLED(word32) WMI_F_MS(word32, WMI_PDEV_PARAM_SECONDARY_RATE_ENABLE_BIT)
+#define WMI_PDEV_PARAM_IS_RTS_BL_WL_ENABLED(word32) WMI_F_MS(word32, WMI_PDEV_PARAM_RTS_BL_WL_ENABLE_BIT)
+#define WMI_PDEV_PARAM_IS_HIGHER_MCS_XRETRY_RESTRICTION_SET(word32) WMI_F_MS(word32, WMI_PDEV_PARAM_HIGHER_MCS_XRETRY_RESTRICTION)
+#define WMI_PDEV_PARAM_GET_XRETRY_THRESHOLD(word32) WMI_F_MS(word32, WMI_PDEV_PARAM_XRETRY_THRESHOLD)
+
typedef enum {
/** TX chain mask */
WMI_PDEV_PARAM_TX_CHAIN_MASK = 0x1,
@@ -4957,6 +5036,22 @@ typedef enum {
* rate will be used instead.
*/
WMI_PDEV_PARAM_CCK_TX_ENABLE, /* 0x9e */
+ /*
+ * Set the user-specified antenna gain, but in 0.5 dB units.
+ * This is a finer-granularity version of WMI_PDEV_PARAM_ANTENNA_GAIN.
+ * E.g. to set a gain of 15.5 dB, a value of 31 could be provided as the
+ * value accompanying the PDEV_PARAM_ANTENNA_GAIN_HALF_DB parameter type.
+ */
+ WMI_PDEV_PARAM_ANTENNA_GAIN_HALF_DB, /* 0x9f */
+ /*
+ * Global Enable/Disable control for Secondary Retry Feature Set
+ *
+ * Bit-0 : Enable/Disable Control for "PPDU Secondary Retry Support"
+ * Bit-1 : Enable/Disable Control for "RTS Black/White-listing Support"
+ * Bit-2 : Enable/Disable Control for "Higher MCS retry restriction on XRETRY failures"
+ * Bit 3-5: "Xretry threshold" to use
+ */
+ WMI_PDEV_PARAM_SECONDARY_RETRY_ENABLE, /* 0xA0 */
} WMI_PDEV_PARAM;
typedef struct {
@@ -7050,8 +7145,14 @@ typedef struct {
#define WMI_HEOPS_DEFPE_SET(he_ops, value) WMI_SET_BITS(he_ops, 6, 3, value)
/* TWT required */
-#define WMI_HEOPS_TWT_GET(he_ops) WMI_GET_BITS(he_ops, 9, 1)
-#define WMI_HEOPS_TWT_SET(he_ops, value) WMI_SET_BITS(he_ops, 9, 1, value)
+#define WMI_HEOPS_TWT_REQUIRED_GET(he_ops) WMI_GET_BITS(he_ops, 9, 1)
+#define WMI_HEOPS_TWT_REQUIRED_SET(he_ops, value) WMI_SET_BITS(he_ops, 9, 1, value)
+/* DEPRECATED, use WMI_HEOPS_TWT_REQUIRED_GET instead */
+#define WMI_HEOPS_TWT_GET(he_ops) \
+ WMI_HEOPS_TWT_REQUIRED_GET(he_ops)
+/* DEPRECATED, use WMI_HEOPS_TWT_REQUIRED_SET instead */
+#define WMI_HEOPS_TWT_SET(he_ops, value) \
+ WMI_HEOPS_TWT_REQUIRED_SET(he_ops, value)
/* RTS threshold in units of 32 us,0 - always use RTS 1023 - this is disabled */
#define WMI_HEOPS_RTSTHLD_GET(he_ops) WMI_GET_BITS(he_ops, 10, 10)
@@ -8363,6 +8464,17 @@ typedef enum {
*/
WMI_VDEV_PARAM_TX_RETRIES_BEFORE_RTS_PER_AC, /* 0x82 */
+ /**
+ * Parameter to enable/disable AMSDU aggregation size auto-selection logic.
+ * We have logic where AMSDU aggregation size is dynamically decided
+ * based on MCS. That logic is enabled by default.
+ * For certain tests, we need a method to disable this optimization,
+ * and base AMSDU size only on the peer's capability rather than our logic.
+ * A value of 0 means disable internal optimization,
+ * 1 means enable internal optimzation.
+ */
+ WMI_VDEV_PARAM_AMSDU_AGGREGATION_SIZE_OPTIMIZATION, /* 0x83 */
+
/*=== ADD NEW VDEV PARAM TYPES ABOVE THIS LINE ===
* The below vdev param types are used for prototyping, and are
@@ -9201,6 +9313,21 @@ typedef struct {
} wmi_tim_info;
typedef struct {
+ A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_tim_info */
+ /** TIM Partial Virtual Bitmap */
+ A_UINT32 tim_mcast;
+ A_UINT32 tim_changed;
+ A_UINT32 tim_num_ps_pending;
+ /** Use the vdev_id only if vdev_id_valid is set */
+ A_UINT32 vdev_id_valid;
+ /** unique id identifying the VDEV */
+ A_UINT32 vdev_id;
+ /** TIM bitmap len (in bytes) */
+ A_UINT32 tim_len;
+ /* followed by WMITLV_TAG_ARRAY_BYTE holding the TIM bitmap */
+} wmi_tim_info_v2;
+
+typedef struct {
/** Flag to enable quiet period IE support */
A_UINT32 is_enabled;
/** Quiet start */
@@ -10224,6 +10351,19 @@ typedef struct {
A_UINT32 roam_scan_mode;
A_UINT32 vdev_id;
A_UINT32 flags; /* see WMI_ROAM_SCAN_MODE_FLAG defs */
+ /*
+ * Minimum duration allowed between two consecutive roam scans.
+ * Roam scan is not allowed, if duration between two consecutive
+ * roam scans is less than this time.
+ */
+ A_UINT32 min_delay_btw_scans; /* In msec */
+ /*
+ * Bitmask (with enum WMI_ROAM_TRIGGER_REASON_ID identifying the bit
+ * positions) showing for which roam_trigger_reasons the
+ * min_delay_btw_scans constraint should be applied.
+ * 0x0 means there is no time restrictions between successive roam scans.
+ */
+ A_UINT32 min_delay_roam_trigger_reason_bitmask;
} wmi_roam_scan_mode_fixed_param;
#define WMI_ROAM_SCAN_MODE_NONE 0x0
@@ -10932,6 +11072,7 @@ typedef struct {
A_UINT32 qos_caps;
A_UINT32 wmm_caps;
A_UINT32 mcsset[ROAM_OFFLOAD_NUM_MCS_SET>>2]; /* since this 4 byte aligned, we don't declare it as tlv array */
+ A_UINT32 handoff_delay_for_rx; /* In msec. Delay Hand-Off by this duration to receive pending Rx frames from current BSS */
} wmi_roam_offload_tlv_param;
@@ -11686,6 +11827,7 @@ typedef enum event_type_e {
WOW_11D_SCAN_EVENT,
WOW_SAP_OBSS_DETECTION_EVENT,
WOW_BSS_COLOR_COLLISION_DETECT_EVENT,
+ WOW_TKIP_MIC_ERR_FRAME_RECVD_EVENT,
} WOW_WAKE_EVENT_TYPE;
typedef enum wake_reason_e {
@@ -11744,6 +11886,9 @@ typedef enum wake_reason_e {
WOW_REASON_WLAN_DHCP_RENEW,
WOW_REASON_SAP_OBSS_DETECTION,
WOW_REASON_BSS_COLOR_COLLISION_DETECT,
+ WOW_REASON_TKIP_MIC_ERR_FRAME_RECVD_DETECT,
+ WOW_REASON_WLAN_MD, /* motion detected */
+ WOW_REASON_WLAN_BL, /* baselining done */
WOW_REASON_DEBUG_TEST = 0xFF,
} WOW_WAKE_REASON_TYPE;
@@ -13684,8 +13829,15 @@ typedef struct {
A_UINT32 tdls_puapsd_rx_frame_threshold;
/**Duration (in ms) over which to check whether TDLS link needs to be torn down */
A_UINT32 teardown_notification_ms;
- /**STA kickout threshold for TDLS peer */
+ /** STA kickout threshold for TDLS peer */
A_UINT32 tdls_peer_kickout_threshold;
+ /* TDLS discovery WAKE timeout in ms.
+ * DUT will wake until this timeout to receive TDLS discovery response
+ * from peer.
+ * If tdls_discovery_wake_timeout is 0x0, the DUT will choose autonomously
+ * what wake timeout value to use.
+ */
+ A_UINT32 tdls_discovery_wake_timeout;
} wmi_tdls_set_state_cmd_fixed_param;
/* WMI_TDLS_PEER_UPDATE_CMDID */
@@ -15053,6 +15205,10 @@ typedef struct {
wmi_mac_addr next_hop_mac_addr;
} wmi_mhf_offload_routing_table_entry;
+enum {
+ WMI_DFS_RADAR_PULSE_FLAG_MASK_PSIDX_DIFF_VALID = 0x00000001,
+};
+
typedef struct {
/** tlv tag and len, tag equals
* WMITLV_TAG_STRUC_wmi_dfs_radar_event */
@@ -15114,6 +15270,16 @@ typedef struct {
/** Max pulse chirp velocity variance in delta bins */
A_INT32 pulse_delta_diff;
+ /** the difference in the FFT peak index between short FFT and the first long FFT
+ * psidx_diff = (first_long_fft_psidx - 4*first_short_fft_psidx),
+ */
+ A_INT32 psidx_diff;
+
+ /** pulse_flags: see WMI_DFS_RADAR_PULSE_FLAG_MASK enum values
+ * 0x0001 - set if psidx_diff is valid
+ */
+ A_UINT32 pulse_flags;
+
} wmi_dfs_radar_event_fixed_param;
enum {
@@ -21572,6 +21738,11 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command)
WMI_RETURN_STRING(WMI_REQUEST_ROAM_SCAN_STATS_CMDID);
WMI_RETURN_STRING(WMI_PEER_TID_CONFIGURATIONS_CMDID);
WMI_RETURN_STRING(WMI_VDEV_SET_CUSTOM_SW_RETRY_TH_CMDID);
+ WMI_RETURN_STRING(WMI_GET_TPC_POWER_CMDID);
+ WMI_RETURN_STRING(WMI_MOTION_DET_CONFIG_PARAM_CMDID);
+ WMI_RETURN_STRING(WMI_MOTION_DET_BASE_LINE_CONFIG_PARAM_CMDID);
+ WMI_RETURN_STRING(WMI_MOTION_DET_START_STOP_CMDID);
+ WMI_RETURN_STRING(WMI_MOTION_DET_BASE_LINE_START_STOP_CMDID);
}
return "Invalid WMI cmd";
@@ -22251,8 +22422,8 @@ typedef struct {
/* 1. wake_intvl_mantis must be <= 0xFFFF
* 2. wake_intvl_us must be divided evenly by wake_intvl_mantis,
* i.e., wake_intvl_us % wake_intvl_mantis == 0
- * 2. the quotient of wake_intvl_us/wake_intvl_mantis must be 2 to N-th(0<=N<=31) power,
- i.e., wake_intvl_us/wake_intvl_mantis == 2^N, 0<=N<=31
+ * 3. the quotient of wake_intvl_us/wake_intvl_mantis must be 2 to N-th(0<=N<=31) power,
+ * i.e., wake_intvl_us/wake_intvl_mantis == 2^N, 0<=N<=31
*/
A_UINT32 wake_intvl_us; /* TWT Wake Interval in units of us */
A_UINT32 wake_intvl_mantis; /* TWT Wake Interval Mantissa */
@@ -22338,6 +22509,7 @@ typedef struct {
A_UINT32 vdev_id; /* VDEV identifier */
A_UINT32 dialog_id; /* TWT dialog ID */
A_UINT32 sp_offset_us; /* this long time after TWT resumed the 1st SP will start */
+ A_UINT32 next_twt_size; /* Next TWT subfield Size, refer to IEEE 802.11ax sectin "9.4.1.60 TWT Information field" */
} wmi_twt_resume_dialog_cmd_fixed_param;
/* status code of resuming TWT dialog */
@@ -22451,8 +22623,10 @@ typedef struct {
A_UINT32 pdev_id; /** ID of pdev whose DMA ring produced the data */
A_UINT32 mod_id; /* see WMI_DMA_RING_SUPPORTED_MODULE */
A_UINT32 num_buf_release_entry;
+ A_UINT32 num_meta_data_entry;
/* This TLV is followed by another TLV of array of structs.
- * wmi_dma_buf_release_entry entries;
+ * wmi_dma_buf_release_entry entries[num_buf_release_entry];
+ * wmi_dma_buf_release_spectral_meta_data meta_datat[num_meta_data_entry];
*/
} wmi_dma_buf_release_fixed_param;
@@ -22470,6 +22644,19 @@ typedef struct {
} wmi_dma_buf_release_entry;
typedef struct {
+ A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_dma_buf_release_spectral_meta_data */
+ /**
+ * meta data information.
+ * Host uses the noise floor values as one of the major parameter
+ * to classify the spectral data.
+ * This information will not be provided by ucode unlike the fft reports
+ * which gets DMAed to DDR buffer.
+ * Hence sending the NF values in dBm units as meta data information.
+ */
+ A_INT32 noise_floor[WMI_MAX_CHAINS];
+} wmi_dma_buf_release_spectral_meta_data;
+
+typedef struct {
A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_runtime_dpd_recal_cmd_fixed_param */
A_UINT32 enable; /* Enable/disable */
@@ -22589,6 +22776,152 @@ typedef struct {
*/
} wmi_roam_scan_stats_event_fixed_param;
+typedef struct {
+ A_UINT32 tlv_header; /* TLV tag and len; tag equals wmi_txpower_query_cmd_fixed_param */
+ A_UINT32 request_id; /* unique request ID to distinguish the command / event set */
+
+ /* The mode value has the following meaning :
+ * 0 : 11a
+ * 1 : 11bg
+ * 2 : 11b
+ * 3 : 11g only
+ * 4 : 11a HT20
+ * 5 : 11g HT20
+ * 6 : 11a HT40
+ * 7 : 11g HT40
+ * 8 : 11a VHT20
+ * 9 : 11a VHT40
+ * 10 : 11a VHT80
+ * 11 : 11g VHT20
+ * 12 : 11g VHT40
+ * 13 : 11g VHT80
+ * 14 : unknown
+ */
+ A_UINT32 mode;
+ A_UINT32 rate; /* rate index */
+ A_UINT32 nss; /* number of spacial stream */
+ A_UINT32 beamforming; /* beamforming parameter 0:disabled, 1:enabled */
+ A_UINT32 chain_mask; /* mask for the antenna set to get power */
+ A_UINT32 chain_index; /* index for the antenna */
+} wmi_get_tpc_power_cmd_fixed_param;
+
+typedef struct {
+ A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_get_tpc_power_evt_fixed_param */
+ A_UINT32 request_id; /* request ID set by the command */
+ A_INT32 tx_power; /* TX power for the specified HALPHY parameters in half dBm unit */
+} wmi_get_tpc_power_evt_fixed_param;
+
+/* below structures are related to Motion Detection. */
+typedef struct {
+ /** TLV tag and len; tag equals
+ * WMITLV_TAG_STRUC_wmi_motion_det_config_params_cmd_fixed_param */
+ A_UINT32 tlv_header; /** TLV Header */
+ A_UINT32 vdev_id; /** Vdev ID */
+ A_UINT32 time_t1; /** Time gap of successive bursts of
+ * measurement frames during coarse
+ * motion detection (in ms) */
+ A_UINT32 time_t2; /** Time gap of successive bursts of
+ * measurement frames during fine
+ * motion detection (in ms) */
+ A_UINT32 n1; /** number of measurement frames in one
+ * burst, for coarse detection */
+ A_UINT32 n2; /** number of measurement frames in one
+ * burst, for fine detection */
+ A_UINT32 time_t1_gap; /** gap between measurement frames in
+ * course detection (in ms) */
+ A_UINT32 time_t2_gap; /** gap between measurement frames in
+ * fine detection (in ms) */
+ A_UINT32 coarse_K; /** number of times motion detection has to
+ * be performed for coarse detection */
+ A_UINT32 fine_K; /** number of times motion detection has to
+ * be performed for fine detection */
+ A_UINT32 coarse_Q; /** number of times motion is expected
+ * to be detected for success case in
+ * coarse detection */
+ A_UINT32 fine_Q; /** number of times motion is expected
+ * to be detected for success case in
+ * fine detection */
+ A_UINT32 md_coarse_thr_high; /** higher threshold value (in percent)
+ * from host to FW, which will be used in
+ * coarse detection phase of motion detection.
+ * This is the threshold for the correlation
+ * of the old RF local-scattering environment
+ * with the current RF local-scattering
+ * environment. A value of 100(%) indicates
+ * that neither the transceiver nor any
+ * nearby objects have changed position. */
+ A_UINT32 md_fine_thr_high; /** higher threshold value (in percent)
+ * from host to FW, which will be used in
+ * fine detection phase of motion detection.
+ * This is the threshold for correlation
+ * between the old and current RF environments,
+ * as explained above. */
+ A_UINT32 md_coarse_thr_low; /** lower threshold value (in percent)
+ * for immediate detection of motion in
+ * coarse detection phase.
+ * This is the threshold for correlation
+ * between the old and current RF environments,
+ * as explained above. */
+ A_UINT32 md_fine_thr_low; /** lower threshold value (in percent)
+ * for immediate detection of motion in
+ * fine detection phase.
+ * This is the threshold for correlation
+ * between the old and current RF environments,
+ * as explained above. */
+} wmi_motion_det_config_params_cmd_fixed_param;
+
+typedef struct {
+ /** TLV tag and len; tag equals
+ * WMITLV_TAG_STRUC_wmi_motion_det_base_line_config_params_cmd_fixed_param */
+ A_UINT32 tlv_header; /** TLV Header */
+ A_UINT32 vdev_id; /** Vdev ID */
+ A_UINT32 bl_time_t; /** time T for baseline (in ms)
+ * Every bl_time_t, bl_n packets are sent */
+ A_UINT32 bl_packet_gap; /** gap between measurement frames for baseline
+ * (in ms) */
+ A_UINT32 bl_n; /** number of measurement frames to be sent
+ * during one baseline */
+ A_UINT32 bl_num_meas; /** number of times the baseline measurement
+ * to be done */
+} wmi_motion_det_base_line_config_params_cmd_fixed_param;
+
+typedef struct {
+ /** TLV tag and len; tag equals
+ * WMITLV_TAG_STRUC_wmi_motion_det_start_stop_cmd_fixed_param */
+ A_UINT32 tlv_header; /** TLV Header */
+ A_UINT32 vdev_id; /** Vdev ID */
+ A_UINT32 enable; /** start = 1, stop =0 */
+} wmi_motion_det_start_stop_cmd_fixed_param;
+
+typedef struct {
+ /** TLV tag and len; tag equals
+ * WMITLV_TAG_STRUC_wmi_motion_det_base_line_start_stop_cmd_fixed_param */
+ A_UINT32 tlv_header; /** TLV Header */
+ A_UINT32 vdev_id; /** Vdev ID */
+ A_UINT32 enable; /** start = 1, stop =0 */
+} wmi_motion_det_base_line_start_stop_cmd_fixed_param;
+
+typedef struct {
+ /** TLV tag and len; tag equals
+ * WMITLV_TAG_STRUC_wmi_motion_det_event */
+ A_UINT32 tlv_header; /** TLV Header */
+ A_UINT32 vdev_id; /** Vdev ID */
+ A_UINT32 status; /** status = 1 -> motion detected */
+} wmi_motion_det_event;
+
+typedef struct {
+ /** TLV tag and len; tag equals
+ * WMITLV_TAG_STRUC_wmi_motion_det_base_line_event */
+ A_UINT32 tlv_header; /** TLV Header */
+ A_UINT32 vdev_id; /** Vdev ID */
+ A_UINT32 bl_baseline_value; /** baseline correlation value calculated
+ * during baselining phase (in %) */
+ A_UINT32 bl_max_corr_reserved; /** max corr value obtained during baselining
+ * phase (in %); reserved for future */
+ A_UINT32 bl_min_corr_reserved; /** min corr value obtained during baselining
+ * phase (in %); reserved for future */
+} wmi_motion_det_base_line_event;
+
/* ADD NEW DEFS HERE */
diff --git a/fw/wmi_version.h b/fw/wmi_version.h
index c5070ead8706..82a0019fceb4 100755
--- a/fw/wmi_version.h
+++ b/fw/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_ 521
+#define __WMI_REVISION_ 536
/** The Version Namespace should not be normally changed. Only
* host and firmware of the same WMI namespace will work