summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhsuvictor <hsuvictor@google.com>2020-06-01 14:53:49 +0800
committerVictor Hsu <hsuvictor@google.com>2020-06-01 11:45:16 +0000
commitee51341730da46790d1a4bec8a557f3cddc1c202 (patch)
treeda08ba85cf88f49a6b4f603edd850c183e61f086
parent310dca90ce39c5e2a877d6b2b240272c4711fe7e (diff)
parenteaa6f4c389b6db38a1ab0fa7a0686ae7bfeea54b (diff)
downloadwlan-fw-api-ee51341730da46790d1a4bec8a557f3cddc1c202.tar.gz
Merge remote-tracking branch 'remotes/partner/qcom-msm-4.19-7250-wlan-api.lnx.1.0.r46' (r2.011) into android-msm-pixel-4.19
Change-Id: I43ebebb9cc36e54df80777d8369284b93753cc47
-rw-r--r--fw/htt.h39
-rw-r--r--fw/htt_stats.h91
-rw-r--r--fw/wmi_services.h5
-rw-r--r--fw/wmi_tlv_defs.h121
-rw-r--r--fw/wmi_unified.h894
-rw-r--r--fw/wmi_version.h2
-rw-r--r--hw/qca6750/v1/wfss_ce_reg_seq_hwioreg.h4
7 files changed, 1110 insertions, 46 deletions
diff --git a/fw/htt.h b/fw/htt.h
index f4b9b21..da9101e 100644
--- a/fw/htt.h
+++ b/fw/htt.h
@@ -202,9 +202,12 @@
* 3.78 Add htt_ppdu_id def.
* 3.79 Add HTT_NUM_AC_WMM def.
* 3.80 Add add WDS_FREE_COUNT bitfield in T2H PEER_UNMAP_V2 msg.
+ * 3.81 Add ppdu_start_tsf field in HTT_TX_WBM_COMPLETION_V2.
+ * 3.82 Add WIN_SIZE field to HTT_T2H_MSG_TYPE_RX_DELBA msg.
+ * 3.83 Shrink seq_idx field in HTT PPDU ID from 3 bits to 2.
*/
#define HTT_CURRENT_VERSION_MAJOR 3
-#define HTT_CURRENT_VERSION_MINOR 80
+#define HTT_CURRENT_VERSION_MINOR 83
#define HTT_NUM_TX_FRAG_DESC 1024
@@ -2446,7 +2449,9 @@ PREPACK struct htt_tx_wbm_transmit_status {
*/
reserved0: 8;
A_UINT32
- reserved1: 32;
+ ppdu_start_tsf: 32; /* PPDU Start timestamp added for multicast
+ * packets in the wbm completion path
+ */
} POSTPACK;
/* DWORD 4 */
@@ -9674,7 +9679,7 @@ PREPACK struct htt_tx_offload_deliver_ind_hdr_t
*
* |31 20|19 16|15 10|9 8|7 0|
* |---------------------------------------------------------------------|
- * | peer ID | TID | reserved | IR| msg type |
+ * | peer ID | TID | window size | IR| msg type |
* |---------------------------------------------------------------------|
*
* The following field definitions describe the format of the rx ADDBA
@@ -9693,10 +9698,10 @@ PREPACK struct htt_tx_offload_deliver_ind_hdr_t
* 2 - recipient (a.k.a. responder)
* 3 - unused / reserved
* - WIN_SIZE
- * Bits 15:8 (ADDBA only)
+ * Bits 15:8 for ADDBA, bits 15:10 for DELBA
* Purpose: Specifies the length of the block ack window (max = 64).
* Value:
- * block ack window length specified by the received ADDBA
+ * block ack window length specified by the received ADDBA/DELBA
* management message.
* - TID
* Bits 19:16
@@ -9746,6 +9751,8 @@ PREPACK struct htt_tx_offload_deliver_ind_hdr_t
#define HTT_RX_DELBA_INITIATOR_M 0x00000300
#define HTT_RX_DELBA_INITIATOR_S 8
+#define HTT_RX_DELBA_WIN_SIZE_M 0x0000FC00
+#define HTT_RX_DELBA_WIN_SIZE_S 10
#define HTT_RX_DELBA_TID_M HTT_RX_ADDBA_TID_M
#define HTT_RX_DELBA_TID_S HTT_RX_ADDBA_TID_S
#define HTT_RX_DELBA_PEER_ID_M HTT_RX_ADDBA_PEER_ID_M
@@ -9764,6 +9771,14 @@ PREPACK struct htt_tx_offload_deliver_ind_hdr_t
#define HTT_RX_DELBA_INITIATOR_GET(word) \
(((word) & HTT_RX_DELBA_INITIATOR_M) >> HTT_RX_DELBA_INITIATOR_S)
+#define HTT_RX_DELBA_WIN_SIZE_SET(word, value) \
+ do { \
+ HTT_CHECK_SET_VAL(HTT_RX_DELBA_WIN_SIZE, value); \
+ (word) |= (value) << HTT_RX_DELBA_WIN_SIZE_S; \
+ } while (0)
+#define HTT_RX_DELBA_WIN_SIZE_GET(word) \
+ (((word) & HTT_RX_DELBA_WIN_SIZE_M) >> HTT_RX_DELBA_WIN_SIZE_S)
+
#define HTT_RX_DELBA_BYTES 4
/**
@@ -14030,10 +14045,10 @@ PREPACK struct htt_chan_caldata_msg {
* The following field definitions describe the format of the PPDU ID.
* The PPDU ID is truncated to 24 bits for TLVs from TQM.
*
- * |31 30|29 24| 23| 22|21 19|18 17|16 12|11 0|
- * +---------------------------------------------------------------------------
- * |rsvd |seq_cmd_type|tqm_cmd| rsvd |seq_idx|mac_id| hwq_ id | sch id |
- * +---------------------------------------------------------------------------
+ * |31 30|29 24| 23|22 21|20 19|18 17|16 12|11 0|
+ * +--------------------------------------------------------------------------
+ * |rsvd |seq_cmd_type|tqm_cmd|rsvd |seq_idx|mac_id| hwq_ id | sch id |
+ * +--------------------------------------------------------------------------
*
* sch id :Schedule command id
* Bits [11 : 0] : monotonically increasing counter to track the
@@ -14061,8 +14076,8 @@ PREPACK struct htt_ppdu_id {
sch_id: 12,
hwq_id: 5,
mac_id: 2,
- seq_idx: 3,
- reserved1: 1,
+ seq_idx: 2,
+ reserved1: 2,
tqm_cmd: 1,
seq_cmd_type: 6,
reserved2: 2;
@@ -14102,7 +14117,7 @@ PREPACK struct htt_ppdu_id {
} while (0)
#define HTT_PPDU_ID_SEQ_IDX_S 19
-#define HTT_PPDU_ID_SEQ_IDX_M 0x00380000
+#define HTT_PPDU_ID_SEQ_IDX_M 0x00180000
#define HTT_PPDU_ID_SEQ_IDX_GET(_var) \
(((_var) & HTT_PPDU_ID_SEQ_IDX_M) >> HTT_PPDU_ID_SEQ_IDX_S)
diff --git a/fw/htt_stats.h b/fw/htt_stats.h
index 35ed610..674176f 100644
--- a/fw/htt_stats.h
+++ b/fw/htt_stats.h
@@ -357,6 +357,17 @@ enum htt_dbg_ext_stats_type {
*/
HTT_DBG_EXT_STA_11AX_UL_STATS = 33,
+ /* HTT_DBG_EXT_VDEV_RTT_RESP_STATS
+ * PARAMS:
+ * - config_param0:
+ * [Bit7 : Bit0] vdev_id:8
+ * [Bit31 : Bit8] rsvd:24
+ * RESP MSG:
+ * -
+ */
+ HTT_DBG_EXT_VDEV_RTT_RESP_STATS = 34,
+
+
/* keep this last */
HTT_DBG_NUM_EXT_STATS = 256,
};
@@ -499,6 +510,7 @@ typedef enum {
HTT_STATS_TXBF_OFDMA_BRP_STATS_TAG = 115, /* htt_txbf_ofdma_brp_stats_tlv */
HTT_STATS_TXBF_OFDMA_STEER_STATS_TAG = 116, /* htt_txbf_ofdma_steer_stats_tlv */
HTT_STATS_STA_UL_OFDMA_STATS_TAG = 117, /* htt_sta_ul_ofdma_stats_tlv */
+ HTT_STATS_VDEV_RTT_RESP_STATS_TAG = 118, /* htt_vdev_rtt_resp_stats_tlv */
HTT_STATS_MAX_TAG,
} htt_tlv_tag_t;
@@ -759,6 +771,10 @@ typedef struct {
A_UINT32 num_mu_peer_blacklisted;
/* Num of times mu_ofdma seq posted */
A_UINT32 mu_ofdma_seq_posted;
+ /* Num of times UL MU MIMO seq posted */
+ A_UINT32 ul_mumimo_seq_posted;
+ /* Num of times UL OFDMA seq posted */
+ A_UINT32 ul_ofdma_seq_posted;
} htt_tx_pdev_stats_cmn_tlv;
#define HTT_TX_PDEV_STATS_URRN_TLV_SZ(_num_elems) (sizeof(A_UINT32) * (_num_elems))
@@ -1850,10 +1866,10 @@ typedef enum {
HTT_TX_SELFGEN_SCH_TSFLAG_RESP_CBF_BW_MISMATCH_ERR,
HTT_TX_SELFGEN_SCH_TSFLAG_RETRY_COUNT_FAIL_ERR,
HTT_TX_SELFGEN_SCH_TSFLAG_RESP_TOO_LATE_RECEIVED_ERR,
- HTT_TX_SELFGEN_SCH_TSFLAG_ERR_RESERVED,
+ HTT_TX_SELFGEN_SCH_TSFLAG_SIFS_STALL_NO_NEXT_CMD_ERR,
- HTT_TX_SELFGEN_NUM_SCH_TSFLAG_ERROR_STATS = 8, /* includes RESERVED */
- HTT_TX_SELFGEN_SCH_TSFLAG_ERROR_STATS_VALID = 7 /* not incl. RESERVED */
+ HTT_TX_SELFGEN_NUM_SCH_TSFLAG_ERROR_STATS = 8,
+ HTT_TX_SELFGEN_SCH_TSFLAG_ERROR_STATS_VALID = 8
} htt_tx_selfgen_sch_tsflag_error_stats;
#define HTT_TX_PDEV_STATS_NUM_AC_MUMIMO_USER_STATS 4
@@ -1941,6 +1957,7 @@ typedef struct {
A_UINT32 ax_mu_mimo_ndpa_queued;
A_UINT32 ax_mu_mimo_ndp_queued;
A_UINT32 ax_mu_mimo_brpoll_queued[HTT_TX_PDEV_STATS_NUM_AX_MUMIMO_USER_STATS - 1];
+ A_UINT32 ax_ul_mumimo_trigger[HTT_TX_PDEV_STATS_NUM_AX_MUMIMO_USER_STATS];
} htt_tx_selfgen_ax_stats_tlv;
typedef struct {
@@ -2059,6 +2076,7 @@ typedef struct {
A_UINT32 ax_mu_mimo_ndpa_flushed;
A_UINT32 ax_mu_mimo_ndp_flushed;
A_UINT32 ax_mu_mimo_brpoll_flushed[HTT_TX_PDEV_STATS_NUM_AX_MUMIMO_USER_STATS - 1];
+ A_UINT32 ax_ul_mumimo_trigger_err[HTT_TX_PDEV_STATS_NUM_AX_MUMIMO_USER_STATS];
} htt_tx_selfgen_ax_err_stats_tlv;
typedef struct {
@@ -2655,6 +2673,9 @@ typedef struct {
A_UINT32 desc_threshold;
A_UINT32 hwsch_tqm_invalid_status;
A_UINT32 missed_tqm_gen_mpdus;
+ A_UINT32 tqm_active_tids;
+ A_UINT32 tqm_inactive_tids;
+ A_UINT32 tqm_active_msduq_flows;
} htt_tx_tqm_cmn_stats_tlv;
typedef struct {
@@ -4617,6 +4638,48 @@ typedef struct {
*/
A_UINT32 num_sr_rx_ge_pd_rssi_thr;
};
+
+ /*
+ * Count of number of times OBSS frames were aborted and non-SRG
+ * opportunities were created. Non-SRG opportunities are created when
+ * incoming OBSS RSSI is lesser than the global configured non-SRG RSSI
+ * threshold and non-SRG OBSS color / non-SRG OBSS BSSID registers
+ * allow non-SRG TX.
+ */
+ A_UINT32 num_non_srg_opportunities;
+ /*
+ * Count of number of times TX PPDU were transmitted using non-SRG
+ * opportunities created. Incoming OBSS frame RSSI is compared with per
+ * PPDU non-SRG RSSI threshold configured in each PPDU. If incoming OBSS
+ * RSSI < non-SRG RSSI threshold configured in each PPDU, then non-SRG
+ * tranmission happens.
+ */
+ A_UINT32 num_non_srg_ppdu_tried;
+ /*
+ * Count of number of times non-SRG based TX transmissions were successful
+ */
+ A_UINT32 num_non_srg_ppdu_success;
+ /*
+ * Count of number of times OBSS frames were aborted and SRG opportunities
+ * were created. Srg opportunities are created when incoming OBSS RSSI
+ * is less than the global configured SRG RSSI threshold and SRC OBSS
+ * color / SRG OBSS BSSID / SRG partial bssid / SRG BSS color bitmap
+ * registers allow SRG TX.
+ */
+ A_UINT32 num_srg_opportunities;
+ /*
+ * Count of number of times TX PPDU were transmitted using SRG
+ * opportunities created.
+ * Incoming OBSS frame RSSI is compared with per PPDU SRG RSSI
+ * threshold configured in each PPDU.
+ * If incoming OBSS RSSI < SRG RSSI threshold configured in each PPDU,
+ * then SRG tranmission happens.
+ */
+ A_UINT32 num_srg_ppdu_tried;
+ /*
+ * Count of number of times SRG based TX transmissions were successful
+ */
+ A_UINT32 num_srg_ppdu_success;
} htt_pdev_obss_pd_stats_tlv;
/* NOTE:
@@ -4986,5 +5049,27 @@ typedef struct {
htt_sta_ul_ofdma_stats_tlv ul_ofdma_sta_stats;
} htt_sta_11ax_ul_stats_t;
+typedef struct {
+ htt_tlv_hdr_t tlv_hdr;
+ /* No of Fine Timing Measurement frames transmitted successfully */
+ A_UINT32 tx_ftm_suc;
+ /* No of Fine Timing Measurement frames transmitted successfully after retry */
+ A_UINT32 tx_ftm_suc_retry;
+ /* No of Fine Timing Measurement frames not transmitted successfully */
+ A_UINT32 tx_ftm_fail;
+ /* No of Fine Timing Measurement Request frames received, including initial, non-initial, and duplicates */
+ A_UINT32 rx_ftmr_cnt;
+ /* No of duplicate Fine Timing Measurement Request frames received, including both initial and non-initial */
+ A_UINT32 rx_ftmr_dup_cnt;
+ /* No of initial Fine Timing Measurement Request frames received */
+ A_UINT32 rx_iftmr_cnt;
+ /* No of duplicate initial Fine Timing Measurement Request frames received */
+ A_UINT32 rx_iftmr_dup_cnt;
+} htt_vdev_rtt_resp_stats_tlv;
+
+typedef struct {
+ htt_vdev_rtt_resp_stats_tlv vdev_rtt_resp_stats;
+} htt_vdev_rtt_resp_stats_t;
+
#endif /* __HTT_STATS_H__ */
diff --git a/fw/wmi_services.h b/fw/wmi_services.h
index f51107b..c6acdd9 100644
--- a/fw/wmi_services.h
+++ b/fw/wmi_services.h
@@ -437,6 +437,11 @@ typedef enum {
WMI_SERVICE_BW_TRUE_160_SUPPORT = 242, /* Indicates FW supports true 160 BW */
WMI_SERVICE_HOST_SCAN_STOP_VDEV_ALL_SUPPORT = 243, /* Indicates FW supports scan stop mode WMI_SCN_STOP_HOST_VAP_ALL */
WMI_SERVICE_BEACON_PROTECTION_SUPPORT = 244, /* Indicates FW supports WPA3 Beacon protection */
+ WMI_SERVICE_EMA_AP_SUPPORT = 245, /* FW supports EMA AP feature */
+ WMI_SERVICE_PEER_POWER_SAVE_DURATION_SUPPORT = 246, /* Support for adding Power save duration per client */
+ WMI_SERVICE_5_DOT_9GHZ_SUPPORT = 247, /* Indicates FW supports new 5.9GHZ (scan, connection and so on) */
+ WMI_SERVICE_MU_PREAMBLE_PUNCTURE_SUPPORT = 248, /* Indicates FW supports MU preamble puncture */
+ WMI_SERVICE_SRG_SRP_SPATIAL_REUSE_SUPPORT = 249, /* Support for SRG, SRP based spatial reuse support */
/******* ADD NEW SERVICES UP TO 256 HERE *******/
diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h
index 283d488..9d3a5a2 100644
--- a/fw/wmi_tlv_defs.h
+++ b/fw/wmi_tlv_defs.h
@@ -1057,6 +1057,25 @@ typedef enum {
WMITLV_TAG_STRUC_WMI_HAL_REG_CAPABILITIES_EXT2,
WMITLV_TAG_STRUC_wmi_roam_pmk_cache_synch_tlv_param,
WMITLV_TAG_STRUC_wmi_mdns_set_staIP_cmd_fixed_param,
+ WMITLV_TAG_STRUC_wmi_vdev_get_big_data_p2_cmd_fixed_param,
+ WMITLV_TAG_STRUC_wmi_vdev_send_big_data_p2_event_fixed_param,
+ WMITLV_TAG_STRUC_wmi_audio_aggr_get_statistics,
+ WMITLV_TAG_STRUC_wmi_audio_aggr_reset_statistics,
+ WMITLV_TAG_STRUC_wmi_audio_aggr_statistics_event_fixed_param,
+ WMITLV_TAG_STRUC_wmi_audio_aggr_group_stats,
+ WMITLV_TAG_STRUC_wmi_audio_aggr_peer_stats,
+ WMITLV_TAG_STRUC_wmi_ant_controller_cmd_fixed_param,
+ WMITLV_TAG_STRUC_wmi_pdev_srg_bss_color_bitmap_cmd_fixed_param,
+ WMITLV_TAG_STRUC_wmi_pdev_srg_partial_bssid_bitmap_cmd_fixed_param,
+ WMITLV_TAG_STRUC_wmi_simulation_test_cmd_fixed_param,
+ WMITLV_TAG_STRUC_wmi_audio_aggr_set_rtscts_config,
+ WMITLV_TAG_STRUC_wmi_pdev_sscan_fw_cmd_fixed_param,
+ WMITLV_TAG_STRUC_wmi_pdev_sscan_fft_bin_index,
+ WMITLV_TAG_STRUC_wmi_pdev_srg_obss_color_enable_bitmap_cmd_fixed_param,
+ WMITLV_TAG_STRUC_wmi_pdev_srg_obss_bssid_enable_bitmap_cmd_fixed_param,
+ WMITLV_TAG_STRUC_wmi_pdev_non_srg_obss_color_enable_bitmap_cmd_fixed_param,
+ WMITLV_TAG_STRUC_wmi_pdev_non_srg_obss_bssid_enable_bitmap_cmd_fixed_param,
+ WMITLV_TAG_STRUC_wmi_roam_capability_report_event_fixed_param,
} WMITLV_TAG_ID;
/*
@@ -1489,6 +1508,18 @@ typedef enum {
OP(WMI_VDEV_GET_BIG_DATA_CMDID) \
OP(WMI_PDEV_FRAME_INJECT_CMDID) \
OP(WMI_PDEV_TBTT_OFFSET_SYNC_CMDID) \
+ OP(WMI_VDEV_GET_BIG_DATA_P2_CMDID) \
+ OP(WMI_AUDIO_AGGR_GET_STATISTICS_CMDID) \
+ OP(WMI_AUDIO_AGGR_RESET_STATISTICS_CMDID) \
+ OP(WMI_ANT_CONTROLLER_CMDID) \
+ OP(WMI_PDEV_SET_SRG_BSS_COLOR_BITMAP_CMDID) \
+ OP(WMI_PDEV_SET_SRG_PARTIAL_BSSID_BITMAP_CMDID) \
+ OP(WMI_SIMULATION_TEST_CMDID) \
+ OP(WMI_AUDIO_AGGR_SET_RTSCTS_CONFIG_CMDID) \
+ OP(WMI_PDEV_SET_SRG_OBSS_COLOR_ENABLE_BITMAP_CMDID) \
+ OP(WMI_PDEV_SET_SRG_OBSS_BSSID_ENABLE_BITMAP_CMDID) \
+ OP(WMI_PDEV_SET_NON_SRG_OBSS_COLOR_ENABLE_BITMAP_CMDID) \
+ OP(WMI_PDEV_SET_NON_SRG_OBSS_BSSID_ENABLE_BITMAP_CMDID) \
/* add new CMD_LIST elements above this line */
@@ -1735,6 +1766,10 @@ typedef enum {
OP(WMI_ROAM_SCAN_CHANNEL_LIST_EVENTID) \
OP(WMI_VDEV_SEND_BIG_DATA_EVENTID) \
OP(WMI_NAN_DMESG_EVENTID) \
+ OP(WMI_VDEV_SEND_BIG_DATA_P2_EVENTID) \
+ OP(WMI_AUDIO_AGGR_REPORT_STATISTICS_EVENTID) \
+ OP(WMI_PDEV_SSCAN_FW_PARAM_EVENTID) \
+ OP(WMI_ROAM_CAPABILITY_REPORT_EVENTID) \
/* add new EVT_LIST elements above this line */
@@ -2522,6 +2557,11 @@ WMITLV_CREATE_PARAM_STRUC(WMI_GPIO_CONFIG_CMDID);
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_gpio_output_cmd_fixed_param, wmi_gpio_output_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
WMITLV_CREATE_PARAM_STRUC(WMI_GPIO_OUTPUT_CMDID);
+/* Antenna Controller config Cmd */
+#define WMITLV_TABLE_WMI_ANT_CONTROLLER_CMDID(id,op,buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_ant_controller_cmd_fixed_param, wmi_ant_controller_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
+WMITLV_CREATE_PARAM_STRUC(WMI_ANT_CONTROLLER_CMDID);
+
/* Peer add WDA entry Cmd */
#define WMITLV_TABLE_WMI_PEER_ADD_WDS_ENTRY_CMDID(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_peer_add_wds_entry_cmd_fixed_param, wmi_peer_add_wds_entry_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
@@ -4273,6 +4313,18 @@ WMITLV_CREATE_PARAM_STRUC(WMI_AUDIO_AGGR_SET_GROUP_PROBE_CMDID);
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_FIXED_STRUC, wmi_mac_addr, au_groups, WMITLV_SIZE_VAR)
WMITLV_CREATE_PARAM_STRUC(WMI_AUDIO_AGGR_UPDATE_STA_GROUP_INFO_CMDID);
+#define WMITLV_TABLE_WMI_AUDIO_AGGR_GET_STATISTICS_CMDID(id,op,buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_audio_aggr_get_statistics, wmi_audio_aggr_get_statistics_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
+WMITLV_CREATE_PARAM_STRUC(WMI_AUDIO_AGGR_GET_STATISTICS_CMDID);
+
+#define WMITLV_TABLE_WMI_AUDIO_AGGR_RESET_STATISTICS_CMDID(id,op,buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_audio_aggr_reset_statistics, wmi_audio_aggr_reset_statistics_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
+WMITLV_CREATE_PARAM_STRUC(WMI_AUDIO_AGGR_RESET_STATISTICS_CMDID);
+
+#define WMITLV_TABLE_WMI_AUDIO_AGGR_SET_RTSCTS_CONFIG_CMDID(id,op,buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_audio_aggr_set_rtscts_config, wmi_audio_aggr_set_rtscts_config_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
+WMITLV_CREATE_PARAM_STRUC(WMI_AUDIO_AGGR_SET_RTSCTS_CONFIG_CMDID);
+
/* CFR Capture Filter cmd */
#define WMITLV_TABLE_WMI_CFR_CAPTURE_FILTER_CMDID(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_cfr_capture_filter_cmd_fixed_param, wmi_cfr_capture_filter_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
@@ -4303,11 +4355,16 @@ WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_SET_PCL_CMDID);
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_roam_get_scan_channel_list_cmd_fixed_param, wmi_roam_get_scan_channel_list_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
WMITLV_CREATE_PARAM_STRUC(WMI_ROAM_GET_SCAN_CHANNEL_LIST_CMDID);
-/* Get per vdev BIG DATA stats */
+/* VDEV_GET_BIG_DATA_CMD IS DEPRECATED - DO NOT USE */
#define WMITLV_TABLE_WMI_VDEV_GET_BIG_DATA_CMDID(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_vdev_get_big_data_cmd_fixed_param, wmi_vdev_get_big_data_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_GET_BIG_DATA_CMDID);
+/* Get per vdev BIG DATA stats P2 */
+#define WMITLV_TABLE_WMI_VDEV_GET_BIG_DATA_P2_CMDID(id,op,buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_vdev_get_big_data_p2_cmd_fixed_param, wmi_vdev_get_big_data_p2_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
+WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_GET_BIG_DATA_P2_CMDID);
+
/* Frame inject command */
#define WMITLV_TABLE_WMI_PDEV_FRAME_INJECT_CMDID(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_frame_inject_cmd_fixed_param, wmi_frame_inject_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
@@ -4320,6 +4377,42 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_FRAME_INJECT_CMDID);
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_pdev_rnr_bss_tbtt_info, rnr_tbtt_info, WMITLV_SIZE_VAR)
WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_TBTT_OFFSET_SYNC_CMDID);
+/* SRG BSS color Bitmap */
+#define WMITLV_TABLE_WMI_PDEV_SET_SRG_BSS_COLOR_BITMAP_CMDID(id,op,buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_srg_bss_color_bitmap_cmd_fixed_param, wmi_pdev_srg_bss_color_bitmap_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
+WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_SET_SRG_BSS_COLOR_BITMAP_CMDID);
+
+/* SRG Partial BSSid Bitmap */
+#define WMITLV_TABLE_WMI_PDEV_SET_SRG_PARTIAL_BSSID_BITMAP_CMDID(id,op,buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_srg_partial_bssid_bitmap_cmd_fixed_param, wmi_pdev_srg_partial_bssid_bitmap_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
+WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_SET_SRG_PARTIAL_BSSID_BITMAP_CMDID);
+
+/* Simulation test command */
+#define WMITLV_TABLE_WMI_SIMULATION_TEST_CMDID(id,op,buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_simulation_test_cmd_fixed_param, wmi_simulation_test_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, bufp, WMITLV_SIZE_VAR)
+WMITLV_CREATE_PARAM_STRUC(WMI_SIMULATION_TEST_CMDID);
+
+/* SRG OBSS color Enable Bitmap */
+#define WMITLV_TABLE_WMI_PDEV_SET_SRG_OBSS_COLOR_ENABLE_BITMAP_CMDID(id,op,buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_srg_obss_color_enable_bitmap_cmd_fixed_param, wmi_pdev_srg_obss_color_enable_bitmap_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
+WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_SET_SRG_OBSS_COLOR_ENABLE_BITMAP_CMDID);
+
+/* SRG OBSS BSSID Enable Bitmap */
+#define WMITLV_TABLE_WMI_PDEV_SET_SRG_OBSS_BSSID_ENABLE_BITMAP_CMDID(id,op,buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_srg_obss_bssid_enable_bitmap_cmd_fixed_param, wmi_pdev_srg_obss_bssid_enable_bitmap_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
+WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_SET_SRG_OBSS_BSSID_ENABLE_BITMAP_CMDID);
+
+/* Non_SRG OBSS color Enable Bitmap */
+#define WMITLV_TABLE_WMI_PDEV_SET_NON_SRG_OBSS_COLOR_ENABLE_BITMAP_CMDID(id,op,buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_non_srg_obss_color_enable_bitmap_cmd_fixed_param, wmi_pdev_non_srg_obss_color_enable_bitmap_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
+WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_SET_NON_SRG_OBSS_COLOR_ENABLE_BITMAP_CMDID);
+
+/* Non_SRG OBSS BSSID Enable Bitmap */
+#define WMITLV_TABLE_WMI_PDEV_SET_NON_SRG_OBSS_BSSID_ENABLE_BITMAP_CMDID(id,op,buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_non_srg_obss_bssid_enable_bitmap_cmd_fixed_param, wmi_pdev_non_srg_obss_bssid_enable_bitmap_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
+WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_SET_NON_SRG_OBSS_BSSID_ENABLE_BITMAP_CMDID);
+
/************************** TLV definitions of WMI events *******************************/
@@ -5813,16 +5906,40 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_MULTIPLE_VDEV_RESTART_RESP_EVENTID);
WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, channel_list, WMITLV_SIZE_VAR)
WMITLV_CREATE_PARAM_STRUC(WMI_ROAM_SCAN_CHANNEL_LIST_EVENTID);
-/* send BIG DATA event to host */
+/* VDEV_SEND_BIG_DATA_EVENT IS DEPRECATED - DO NOT USE */
#define WMITLV_TABLE_WMI_VDEV_SEND_BIG_DATA_EVENTID(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_vdev_send_big_data_event_fixed_param, wmi_vdev_send_big_data_event_fixed_param, fixed_param, WMITLV_SIZE_FIX)
WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_SEND_BIG_DATA_EVENTID);
+/* send BIG DATA event to host P2 */
+#define WMITLV_TABLE_WMI_VDEV_SEND_BIG_DATA_P2_EVENTID(id,op,buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_vdev_send_big_data_p2_event_fixed_param, wmi_vdev_send_big_data_p2_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
+ WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, bd_datapath_stats, WMITLV_SIZE_VAR)
+WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_SEND_BIG_DATA_P2_EVENTID);
+
#define WMITLV_TABLE_WMI_NAN_DMESG_EVENTID(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_nan_dmesg_event_fixed_param, wmi_nan_dmesg_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, msg, WMITLV_SIZE_VAR)
WMITLV_CREATE_PARAM_STRUC(WMI_NAN_DMESG_EVENTID);
+/* report soundbar statistics event to host */
+#define WMITLV_TABLE_WMI_AUDIO_AGGR_REPORT_STATISTICS_EVENTID(id,op,buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_audio_aggr_statistics_event_fixed_param, wmi_audio_aggr_statistics_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_audio_aggr_group_stats, group_stats, WMITLV_SIZE_VAR) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_audio_aggr_peer_stats, peer_stats, WMITLV_SIZE_VAR)
+WMITLV_CREATE_PARAM_STRUC(WMI_AUDIO_AGGR_REPORT_STATISTICS_EVENTID);
+
+/* Send sscan fw params to host */
+#define WMITLV_TABLE_WMI_PDEV_SSCAN_FW_PARAM_EVENTID(id,op,buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_sscan_fw_cmd_fixed_param, wmi_pdev_sscan_fw_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_pdev_sscan_fft_bin_index, fft_bin_index, WMITLV_SIZE_VAR)
+WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_SSCAN_FW_PARAM_EVENTID);
+
+/* Roam capability report event */
+#define WMITLV_TABLE_WMI_ROAM_CAPABILITY_REPORT_EVENTID(id,op,buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_roam_capability_report_event_fixed_param, wmi_roam_capability_report_event_fixed_param, fixed_param, WMITLV_SIZE_FIX)
+WMITLV_CREATE_PARAM_STRUC(WMI_ROAM_CAPABILITY_REPORT_EVENTID);
+
#ifdef __cplusplus
}
diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h
index 21467a4..c0bf638 100644
--- a/fw/wmi_unified.h
+++ b/fw/wmi_unified.h
@@ -422,6 +422,18 @@ typedef enum {
* RNR TBTT offset calculation.
*/
WMI_PDEV_TBTT_OFFSET_SYNC_CMDID,
+ /** Bss color bitmap for SRG based spatial reuse feature */
+ WMI_PDEV_SET_SRG_BSS_COLOR_BITMAP_CMDID,
+ /** Partial BSSID bitmap for SRG based spatial reuse feature */
+ WMI_PDEV_SET_SRG_PARTIAL_BSSID_BITMAP_CMDID,
+ /** OBSS color enable bitmap for SRG based spatial reuse feature */
+ WMI_PDEV_SET_SRG_OBSS_COLOR_ENABLE_BITMAP_CMDID,
+ /** OBSS BSSID enable bitmap for SRG based spatial reuse feature */
+ WMI_PDEV_SET_SRG_OBSS_BSSID_ENABLE_BITMAP_CMDID,
+ /** OBSS color enable bitmap for NON_SRG based spatial reuse feature */
+ WMI_PDEV_SET_NON_SRG_OBSS_COLOR_ENABLE_BITMAP_CMDID,
+ /** OBSS BSSID enable bitmap for NON_SRG based spatial reuse feature */
+ WMI_PDEV_SET_NON_SRG_OBSS_BSSID_ENABLE_BITMAP_CMDID,
/* VDEV (virtual device) specific commands */
/** vdev create */
@@ -503,8 +515,10 @@ typedef enum {
WMI_VDEV_AUDIO_SYNC_QTIMER_CMDID,
/** Preferred channel list for each vdev */
WMI_VDEV_SET_PCL_CMDID,
- /** Get per vdev BIG DATA stats */
+ /** VDEV_GET_BIG_DATA_CMD IS DEPRECATED - DO NOT USE */
WMI_VDEV_GET_BIG_DATA_CMDID,
+ /** Get per vdev BIG DATA stats phase 2 */
+ WMI_VDEV_GET_BIG_DATA_P2_CMDID,
/* peer specific commands */
@@ -1040,6 +1054,9 @@ typedef enum {
/* Txbf configuration command */
WMI_TXBF_CMDID,
+ /* Antenna Controller, connected to wlan debug uart/GPIO. */
+ WMI_ANT_CONTROLLER_CMDID,
+
/* FWTEST Commands */
WMI_FWTEST_VDEV_MCC_SET_TBTT_MODE_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_FWTEST),
/** set NoA descs **/
@@ -1050,6 +1067,8 @@ typedef enum {
WMI_FWTEST_CMDID,
/* Q-Boost configuration test commands */
WMI_QBOOST_CFG_CMDID,
+ /* Simulation Test command */
+ WMI_SIMULATION_TEST_CMDID,
/** TDLS Configuration */
/** enable/disable TDLS */
@@ -1288,6 +1307,9 @@ typedef enum {
WMI_AUDIO_AGGR_SET_GROUP_AUTO_RATE_CMDID,
WMI_AUDIO_AGGR_SET_GROUP_PROBE_CMDID,
WMI_AUDIO_AGGR_UPDATE_STA_GROUP_INFO_CMDID,
+ WMI_AUDIO_AGGR_GET_STATISTICS_CMDID,
+ WMI_AUDIO_AGGR_RESET_STATISTICS_CMDID,
+ WMI_AUDIO_AGGR_SET_RTSCTS_CONFIG_CMDID,
/** WMI commands related to Channel Frequency Response Capture **/
WMI_CFR_CAPTURE_FILTER_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_CFR_CAPTURE),
@@ -1320,6 +1342,9 @@ typedef enum {
/** Scan specific events */
WMI_SCAN_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_SCAN),
+ /** Spectral scan FW params to host */
+ WMI_PDEV_SSCAN_FW_PARAM_EVENTID,
+
/* PDEV specific events */
/** TPC config for the current operating channel */
WMI_PDEV_TPC_CONFIG_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_PDEV),
@@ -1478,8 +1503,10 @@ typedef enum {
WMI_VDEV_AUDIO_SYNC_START_STOP_EVENTID,
/** Sends the final offset in the QTIMERs of both master and slave */
WMI_VDEV_AUDIO_SYNC_Q_MASTER_SLAVE_OFFSET_EVENTID,
- /* send BIG DATA stats to host */
+ /** VDEV_SEND_BIG_DATA_EVENT IS DEPRECATED - DO NOT USE */
WMI_VDEV_SEND_BIG_DATA_EVENTID,
+ /** send BIG DATA stats to host phase 2 */
+ WMI_VDEV_SEND_BIG_DATA_P2_EVENTID,
/* peer specific events */
@@ -1622,6 +1649,8 @@ typedef enum {
WMI_ROAM_STATS_EVENTID,
/** Roam scan channels list */
WMI_ROAM_SCAN_CHANNEL_LIST_EVENTID,
+ /** Firmware roam capability information */
+ WMI_ROAM_CAPABILITY_REPORT_EVENTID,
/** P2P disc found */
WMI_P2P_DISC_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_P2P),
@@ -1962,6 +1991,10 @@ typedef enum {
/** WMI events related to Estimation of Service Parameters (802.11mc) */
WMI_ESP_ESTIMATE_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_ESP),
+
+ /** WMI events related to Audio Frame aggregation feature **/
+ WMI_AUDIO_AGGR_REPORT_STATISTICS_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_AUDIO),
+
} WMI_EVT_ID;
/* defines for OEM message sub-types */
@@ -2631,6 +2664,15 @@ typedef struct {
*/
} wmi_service_available_event_fixed_param;
+/*
+ * HDL version GET/SET APIs
+ */
+#define WMI_HDL_VERSION_BITPOS 0
+#define WMI_HDL_VERSION_NUM_BITS 10
+
+#define WMI_HDL_VERSION_GET(dword) WMI_GET_BITS(dword, WMI_HDL_VERSION_BITPOS, WMI_HDL_VERSION_NUM_BITS)
+#define WMI_HDL_VERSION_SET(dword, value) WMI_SET_BITS(dword, WMI_HDL_VERSION_BITPOS, WMI_HDL_VERSION_NUM_BITS, value)
+
typedef struct {
A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_WMI_SERVICE_EXT_READY_EVENT */
/* which WMI_DBS_CONC_SCAN_CFG setting the FW is initialized with */
@@ -2651,7 +2693,8 @@ typedef struct {
A_UINT32 max_bssid_rx_filters;
/*
* Extended FW build version information:
- * bits 27:0 -> reserved
+ * bits 9:0 -> HDL version info
+ * bits 27:10 -> reserved
* bits 31:28 -> CRM sub ID
*/
A_UINT32 fw_build_vers_ext;
@@ -2769,6 +2812,12 @@ typedef struct {
* are not specified.
*/
A_UINT32 hw_min_max_tx_power_5g;
+
+ /*
+ * Number of peers supported per WMI_PEER_CHAN_WIDTH_SWITCH_CMDID
+ * 0 - not enabled
+ */
+ A_UINT32 chwidth_num_peer_caps;
} wmi_service_ready_ext2_event_fixed_param;
typedef struct {
@@ -3152,6 +3201,9 @@ typedef struct {
* or deletion. This controls the number of tracked peers per vdev.
*/
A_UINT32 num_tdls_conn_table_entries; /* number of peers to track per TDLS vdev */
+ /**
+ * @brief beacon_tx_offload_max_vdev - Number of maximum beaconing vaps at any time.
+ */
A_UINT32 beacon_tx_offload_max_vdev;
A_UINT32 num_multicast_filter_entries;
A_UINT32 num_wow_filters; /*host can configure the number of wow filters*/
@@ -3581,12 +3633,24 @@ typedef struct {
A_UINT32 host_service_flags;
/** @brief max_rnr_neighbours -
-     * The Maximum number of neighbour RNR's from other SoC.
-     * This limits the field @num_bss in @wmi_pdev_tbtt_offset_sync_cmd_fixed_param.
-     * Value of 0 means crosss SoC TBTT offset syncronization not required and
-     * @PDEV_TBTT_OFFSET_SYNC_CMD wouldn't be used.
-     */
+ * The Maximum number of neighbour RNR's from other SoC.
+ * This limits the field @num_bss in @wmi_pdev_tbtt_offset_sync_cmd_fixed_param.
+ * Value of 0 means crosss SoC TBTT offset syncronization not required and
+ * @PDEV_TBTT_OFFSET_SYNC_CMD wouldn't be used.
+ */
A_UINT32 max_rnr_neighbours;
+
+ /** @brief ema_max_vap_cnt - number of maximum EMA Tx vaps (VAPs having both
+ * VDEV_FLAGS_EMA_MODE and VDEV_FLAGS_TRANSMIT_AP set) at any instance
+ * of time across SOC. Legacy MBSS Vaps are not accounted in this field.
+ */
+ A_UINT32 ema_max_vap_cnt;
+
+ /** @brief ema_max_profile_period - maximum profile periodicity
+ * (maximum number of beacons after which VAP profiles repeat)
+ * for any EMA VAP on any pdev.
+ */
+ A_UINT32 ema_max_profile_period;
} wmi_resource_config;
#define WMI_MSDU_FLOW_AST_ENABLE_GET(msdu_flow_config0, ast_x) \
@@ -5096,6 +5160,15 @@ typedef struct {
#define WMI_TX_SEND_PARAM_CFR_CAPTURE_GET(tx_param_dword1) WMI_GET_BITS(tx_param_dword1, 21, 1)
#define WMI_TX_SEND_PARAM_CFR_CAPTURE_SET(tx_param_dword1, value) WMI_SET_BITS(tx_param_dword1, 21, 1, value)
+/* TX_SEND flags:
+ * Bit 0: set wrong txkey
+ * There is one special WFA test case in STA or AP, setting wrong txkey
+ * in disassoc or deauth with PMF enabled to verify if peer disconnected
+ */
+#define WMI_TX_SEND_FLAG_SET_WRONG_KEY 0x00000001
+#define WMI_TX_SEND_FLAG_SET_WRONG_KEY_GET(tx_flags) WMI_GET_BITS(tx_flags, 0, 1)
+#define WMI_TX_SEND_FLAG_SET_WRONG_KEY_SET(tx_flags, value) WMI_SET_BITS(tx_flags, 0, 1, value)
+
typedef struct {
A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_tx_send_params */
@@ -5259,6 +5332,12 @@ typedef struct {
* frame, as it will be tx'ed on non-pause tid
*/
A_UINT32 tx_params_valid;
+ /* tx_flags:
+ * Extra flags when tx_params_valid is 0.
+ * Refer to WMI_TX_SEND_FLAG_xxx defs regarding the meaning of the
+ * bits within this field.
+ */
+ A_UINT32 tx_flags;
/* This TLV is followed by array of bytes: First 64 bytes of management frame
* A_UINT8 bufp[];
*/
@@ -5314,6 +5393,35 @@ typedef struct {
A_UINT32 conformance_test_limit_2G;
A_UINT32 conformance_test_limit_5G;
A_UINT32 dfs_domain;
+
+ /**
+ * The below conformance_test_limit index fields are for supporting the
+ * 5G sub-band CTL feature.
+ * Conformance test limits (CTLs) are the product-specific
+ * regulatory-compliant powers stored in the board data file (BDF).
+ * These CTLs within the BDF are identified by CTL index values.
+ * For example, the BDF file is expected to contain CTL data for
+ * FCC (CTL index = 0x10), ETSI (CTL index = 0x30),
+ * Japan/MKK (CTL index = 0x40), Korea (CTL index = 0x50),
+ * and China (CTL index = 0x60) CTL regions.
+ * The target FW will use the CTL indices specified in this message to
+ * find a BDF CTL entry with a matching CTL index value, and then use
+ * that CTL as one of the inputs into the tx power limit computation.
+ * A CTL index value of 0x0 is invalid, and will be ignored by the FW.
+ */
+ A_UINT32 conformance_test_limit_5G_subband_UNII1;
+ A_UINT32 conformance_test_limit_5G_subband_UNII2a;
+ A_UINT32 conformance_test_limit_5G_subband_UNII2c;
+ A_UINT32 conformance_test_limit_5G_subband_UNII3;
+ A_UINT32 conformance_test_limit_5G_subband_UNII4;
+ /**
+ * The below conformance_test_limit index fields are like the above,
+ * but are for supporting the 6G sub-band CTL feature.
+ */
+ A_UINT32 conformance_test_limit_6G_subband_UNII5;
+ A_UINT32 conformance_test_limit_6G_subband_UNII6;
+ A_UINT32 conformance_test_limit_6G_subband_UNII7;
+ A_UINT32 conformance_test_limit_6G_subband_UNII8;
} wmi_pdev_set_regdomain_cmd_fixed_param;
typedef struct {
@@ -5638,12 +5746,26 @@ typedef struct {
A_UINT32 spectral_scan_chn_mask;
/* See enum wmi_spectral_scan_mode */
A_UINT32 spectral_scan_mode;
- /* agile span center frequency (MHz), 0 for normal scan*/
- A_UINT32 spectral_scan_center_freq;
+ union {
+ /**
+ * Two center frequencies are required for agile channel switch
+ * supporting True 160 and Restricted 160 ((80+80) or 165) MHz.
+ * This parameter specifies the center frequency for cases with a
+ * contiguous channel, and the center frequency of the primary
+ * portion of a non-contiguous (80+80 or 165 MHz) channel.
+ */
+ A_UINT32 spectral_scan_center_freq;
+ A_UINT32 spectral_scan_center_freq1;
+ };
/* agile span primary channel frequency (MHz), 0 for normal scan*/
A_UINT32 spectral_scan_chan_freq;
/* agile scan bandwidth (20, 40, 80, 80+80, 160), enum wmi_channel_width */
A_UINT32 spectral_scan_chan_width;
+ /**
+ * Adding freq2 to support True 160 and restricted 160 ((80+80) or 165) MHz.
+ * agile span center frequency2 (MHz), 0 for normal scan.
+ */
+ A_UINT32 spectral_scan_center_freq2;
} wmi_vdev_spectral_configure_cmd_fixed_param;
/*
@@ -5668,6 +5790,75 @@ typedef struct {
A_UINT32 vdev_id;
} wmi_vdev_get_tx_power_cmd_fixed_param;
+/* Primary 80 bin values */
+#define WMI_SSCAN_PRI80_START_BIN_GET(pri80_bins) WMI_GET_BITS(pri80_bins, 0, 16)
+#define WMI_SSCAN_PRI80_START_BIN_SET(pri80_bins, value) WMI_SET_BITS(pri80_bins, 0, 16, value)
+#define WMI_SSCAN_PRI80_END_BIN_GET(pri80_bins) WMI_GET_BITS(pri80_bins, 16, 16)
+#define WMI_SSCAN_PRI80_END_BIN_SET(pri80_bins, value) WMI_SET_BITS(pri80_bins, 16, 16, value)
+
+/* Secondary 80 bin values */
+#define WMI_SSCAN_SEC80_START_BIN_GET(sec80_bins) WMI_GET_BITS(sec80_bins, 0, 16)
+#define WMI_SSCAN_SEC80_START_BIN_SET(sec80_bins, value) WMI_SET_BITS(sec80_bins, 0, 16, value)
+#define WMI_SSCAN_SEC80_END_BIN_GET(sec80_bins) WMI_GET_BITS(sec80_bins, 16, 16)
+#define WMI_SSCAN_SEC80_END_BIN_SET(sec80_bins, value) WMI_SET_BITS(sec80_bins, 16, 16, value)
+
+/* 5MHz bin values */
+#define WMI_SSCAN_MID_5MHZ_START_BIN_GET(mid_5mhz_bins) WMI_GET_BITS(mid_5mhz_bins, 0, 16)
+#define WMI_SSCAN_MID_5MHZ_START_BIN_SET(mid_5mhz_bins, value) WMI_SET_BITS(mid_5mhz_bins, 0, 16, value)
+#define WMI_SSCAN_MID_5MHZ_END_BIN_GET(mid_5mhz_bins) WMI_GET_BITS(mid_5mhz_bins, 16, 16)
+#define WMI_SSCAN_MID_5MHZ_END_BIN_SET(mid_5mhz_bins, value) WMI_SET_BITS(mid_5mhz_bins, 16, 16, value)
+
+typedef struct {
+ A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_pdev_sscan_fw_cmd_fixed_param */
+ A_UINT32 pdev_id;
+
+ /* See enum wmi_spectral_scan_mode */
+ A_UINT32 spectral_scan_mode;
+
+ /**
+ * This fixed_param TLV is followed by the below TLVs:
+ *
+ * wmi_pdev_sscan_fft_bin_index fft_bin_index[]; // array len = 0 or 1
+ * If present (array length is 1) this TLV specifies the primary
+ * and secondary channels FFT bin indices for True 160 and
+ * Restricted 160 (80+80 or 165) MHz BW cases.
+ */
+} wmi_pdev_sscan_fw_cmd_fixed_param;
+
+/**
+ * The below structure is used only to send the FFT bin numbers for
+ * True 160 and Restricted 160(80+80 or 165) MHz from FW to HOST
+ */
+typedef struct {
+ A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_pdev_sscan_fft_bin_index */
+
+ /**
+ * Bit 15 - 0 : primary 80 start bin number
+ * Bit 31 - 16 : primary 80 end bin number
+ * Refer to WMI_SSCAN_PRI80_[START,END]_BIN_[GET,SET] macros.
+ * Only for True 160 and Restricted 160(80+80 or 165) MHz this
+ * will be filled.
+ */
+ A_UINT32 pri80_bins;
+
+ /**
+ * Bit 15 - 0 : secondary 80 start bin number
+ * Bit 31 - 16 : secondary 80 end bin number
+ * Refer to WMI_SSCAN_SEC80_[START,END]_BIN_[GET,SET] macros.
+ * Only for True 160 and Restricted 160(80+80 or 165) MHz this
+ * will be filled.
+ */
+ A_UINT32 sec80_bins;
+
+ /**
+ * Bit 15 - 0 : 5Mhz start bin number
+ * Bit 31 - 16 : 5Mhz end bin number
+ * Refer to WMI_SSCAN_MID_5MHZ_[START,END]_BIN_[GET,SET] macros.
+ * Only for Restricted 160(80+80 or 165), otherwise 0.
+ */
+ A_UINT32 mid_5mhz_bins;
+} wmi_pdev_sscan_fft_bin_index;
+
#define WMI_BEACON_CTRL_TX_DISABLE 0
#define WMI_BEACON_CTRL_TX_ENABLE 1
#define WMI_BEACON_CTRL_SWBA_EVENT_DISABLE 2
@@ -6485,11 +6676,12 @@ typedef enum {
WMI_PDEV_PARAM_SET_TEST_CMD_TWT_SCHED_CONFIG,
/* Parameter used to configure OBSS Packet Detect threshold
- * for Spatial Reuse feature.
+ * for Non-SRG / SRG based Spatial Reuse feature.
+ * (SRG = Spatial Reuse Group)
* The accepted values are in between 0x00 and 0xFF, inclusive.
- * The parameter value is programmed into the spatial reuse register,
- * to specify how low the background signal strength from neighboring
- * BSS cells must be, for this AP to employ spatial reuse.
+ * The parameter value is programmed into the appropriate spatial reuse
+ * regsiter, to specify how low the background signal strength from
+ * neighboring BSS cells must be, for this AP to employ spatial reuse.
*
* The value of the parameter is compared against the OBSS RSSI in dB.
* It is a 8-bit value whose
@@ -6502,10 +6694,14 @@ typedef enum {
* BSS cells is no more than 10 dB.
*
* bit | purpose
- * -------------
- * 0 - 7 | Param Value
- * 8 - 30 | reserved
- * 31 | Enable/Disable. If set to 0, ignore bits 0-7.
+ * -----------------
+ * 0 - 7 | Param Value for non-SRG based Spatial Reuse
+ * 8 - 15| Param value for SRG based Spatial Reuse
+ * 16 - 29| Reserved
+ * 30 | Enable/Disable SRG based spatial reuse.
+ * | If set to 0, ignore bits 8-15.
+ * 31 | Enable/Disable Non-SRG based spatial reuse.
+ * | If set to 0, ignore bits 0-7.
*/
WMI_PDEV_PARAM_SET_CMD_OBSS_PD_THRESHOLD,
@@ -6513,16 +6709,22 @@ typedef enum {
WMI_PDEV_PARAM_ENABLE_NON_WLAN_COEX_FROM_BOOT,
/* Parameter used to configure OBSS Packet Detection per Access Category
- * for Spatial Reuse feature.
+ * for SRP based and OBSS_PD based spatial reuse feature.
+ * (SRP = Spatial Reuse Parameter)
* Based on the bits set, the corresponding Access Category Queues will have
* spatial reuse enabled / disabled.
- * bit | AC
- * -----------
- * 0 | BK
- * 1 | BE
- * 2 | VI
- * 3 | VO
- * 4 - 31 | Reserved
+ * bit | AC
+ * ------------
+ * 0 | BK for SRG/Non-SRG
+ * 1 | BE for SRG/Non-SRG
+ * 2 | VI for SRG/Non-SRG
+ * 3 | VO for SRG/Non-SRG
+ * 4 - 15 | Reserved
+ * 16 | BK for SRP
+ * 17 | BE for SRP
+ * 18 | VI for SRP
+ * 19 | VO for SRP
+ * 20 - 31 | Reserved
*/
WMI_PDEV_PARAM_SET_CMD_OBSS_PD_PER_AC,
@@ -6571,6 +6773,12 @@ typedef enum {
/* Parameter used for enabling/disabling xlna bypass for SAP mode*/
WMI_PDEV_PARAM_SET_SAP_XLNA_BYPASS,
+ /* Parameter used to enable/disable SRP feature */
+ WMI_PDEV_PARAM_ENABLE_SRP,
+
+ /* Parameter used to enable/disable SR prohibit feature */
+ WMI_PDEV_PARAM_ENABLE_SR_PROHIBIT,
+
} WMI_PDEV_PARAM;
#define WMI_PDEV_ONLY_BSR_TRIG_IS_ENABLED(trig_type) WMI_GET_BITS(trig_type, 0, 1)
@@ -7068,6 +7276,7 @@ typedef enum {
/* 0x10 used by deprecated DBG_PRINT */
WMI_PKTLOG_EVENT_SMART_ANTENNA = 0x20, /* To support Smart Antenna */
WMI_PKTLOG_EVENT_SW = 0x40, /* To support SW defined events */
+ WMI_PKTLOG_EVENT_PHY = 0x80, /* To support PHY stats */
} WMI_PKTLOG_EVENT;
typedef enum {
@@ -8944,6 +9153,11 @@ typedef struct {
#define VDEV_FLAGS_NON_MBSSID_AP 0x00000001 /* legacy AP */
#define VDEV_FLAGS_TRANSMIT_AP 0x00000002 /* indicate if this vdev is transmitting AP */
#define VDEV_FLAGS_NON_TRANSMIT_AP 0x00000004 /* explicitly indicate this vdev is non-transmitting AP */
+#define VDEV_FLAGS_EMA_MODE 0x00000008 /* vdev is EMA and supports multiple beacon profiles.
+ * Once this flag set, flags VDEV_FLAGS_TRANSMIT_AP and
+ * VDEV_FLAGS_NON_TRANSMIT_AP classify it as either Tx vap
+ * or non Tx vap.
+ */
typedef struct {
A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_vdev_create_cmd_fixed_param */
@@ -9737,6 +9951,15 @@ typedef struct {
A_UINT32 vdev_id;
} wmi_vdev_delete_cmd_fixed_param;
+enum WMI_VDEV_UP_FLAGS {
+ /** EMA_MBSSID_AP
+ * Valid only for STA VDEV.
+ * This flag will be set when STA connected MBSSID AP is EMA capable.
+ * EMA - Enhanced Multiple BSS Advertisemet.
+ */
+ WMI_VDEV_UP_FLAG_EMA_MBSSID_AP = 0x00000001,
+};
+
typedef struct {
A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_vdev_up_cmdid_fixed_param */
/** unique id identifying the VDEV, generated by the caller */
@@ -9757,6 +9980,8 @@ typedef struct {
A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_vdev_stop_cmd_fixed_param */
/** unique id identifying the VDEV, generated by the caller */
A_UINT32 vdev_id;
+ /** flags - this is a bitwise-or combination of WMI_VDEV_UP_FLAGS values */
+ A_UINT32 flags;
} wmi_vdev_stop_cmd_fixed_param;
typedef struct {
@@ -10650,6 +10875,67 @@ typedef enum {
*/
WMI_VDEV_PARAM_ENABLE_DISABLE_ROAM_REASON_VSIE, /* 0x9D */
+ /* Parameter used to configure OBSS Packet Detect threshold
+ * for Non-SRG / SRG based Spatial Reuse feature.
+ * (SRG = Spatial Reuse Group)
+ * The accepted values are in between 0x00 and 0xFF, inclusive.
+ * The parameter value is programmed into the appropriate spatial reuse
+ * regsiter, to specify how low the background signal strength from
+ * neighboring BSS cells must be, for this AP to employ spatial reuse.
+ *
+ * The value of the parameter is compared against the OBSS RSSI in dB.
+ * It is a 8-bit value whose
+ * range is -128 to 127 (after two's complement operation).
+ * For example, if the parameter value is 0xF5, the target will
+ * allow spatial reuse if the RSSI detected from other BSS
+ * is below -10 dB.
+ * Similarly, if the parameter value is 0x0A, the target will
+ * allow spatial reuse only if the RSSI detected from neighboring
+ * BSS cells is no more than 10 dB.
+ *
+ * bit | purpose
+ * -----------------
+ * 0 - 7 | Param Value for non-SRG based Spatial Reuse
+ * 8 - 15| Param value for SRG based Spatial Reuse
+ * 16 - 29| Reserved
+ * 30 | Enable/Disable SRG based spatial reuse.
+ * | If set to 0, ignore bits 8-15.
+ * 31 | Enable/Disable Non-SRG based spatial reuse.
+ * | If set to 0, ignore bits 0-7.
+ *
+ * The WMI_VDEV_PARAM_SET_CMD_OBSS_PD_THRESHOLD setting will only
+ * take effect if the WMI_PDEV_PARAM_SET_CMD_OBSS_PD_THRESHOLD
+ * setting is also set for the pdev that the vdev belongs to.
+ */
+ WMI_VDEV_PARAM_SET_CMD_OBSS_PD_THRESHOLD,
+
+ /* Parameter used to configure OBSS Packet Detection per Access Category
+ * for SRP based and OBSS_PD based spatial reuse feature.
+ * (SRP = Spatial Reuse Parameter)
+ * Based on the bits set, the corresponding Access Category Queues will have
+ * spatial reuse enabled / disabled.
+ * bit | AC
+ * ------------
+ * 0 | BK for SRG/Non-SRG
+ * 1 | BE for SRG/Non-SRG
+ * 2 | VI for SRG/Non-SRG
+ * 3 | VO for SRG/Non-SRG
+ * 4 - 15 | Reserved
+ * 16 | BK for SRP
+ * 17 | BE for SRP
+ * 18 | VI for SRP
+ * 19 | VO for SRP
+ * 20 - 31 | Reserved
+ *
+ * The WMI_VDEV_PARAM_SET_CMD_OBSS_PD_PER_AC setting will only take effect
+ * if the WMI_PDEV_PARAM_SET_CMD_OBSS_PD_PER_AC setting is also set for
+ * the pdev that the vdev belongs to.
+ */
+ WMI_VDEV_PARAM_SET_CMD_OBSS_PD_PER_AC,
+
+ /* Parameter used to enable/disable SRP feature */
+ WMI_VDEV_PARAM_ENABLE_SRP,
+
/*=== ADD NEW VDEV PARAM TYPES ABOVE THIS LINE ===
* The below vdev param types are used for prototyping, and are
@@ -10928,6 +11214,11 @@ typedef struct {
A_UINT32 cfgd_tx_streams;
/** Configured Receive Streams **/
A_UINT32 cfgd_rx_streams;
+ /**
+ * maximum allowed Tx power (in dBm) for this connection.
+ * max_allowed_tx_power = 0 dBm means value is not specified.
+ */
+ A_INT32 max_allowed_tx_power;
} wmi_vdev_start_response_event_fixed_param;
typedef struct {
@@ -11067,6 +11358,34 @@ typedef struct {
*/
} wmi_frame_inject_cmd_fixed_param;
+#define WMI_BEACON_TMPLT_PROFILE_PERIOD_BITPOS (0)
+#define WMI_BEACON_TMPLT_PROFILE_PERIOD_MASK (0xff << WMI_BEACON_TMPLT_PROFILE_PERIOD_BITPOS)
+#define WMI_BEACON_TMPLT_SET_PROFILE_PERIOD(_ema_param, _val) \
+ WMI_SET_BITS(_ema_param, WMI_BEACON_TMPLT_PROFILE_PERIOD_BITPOS, 8, value)
+#define WMI_BEACON_TMPLT_GET_PROFILE_PERIOD(_ema_param) \
+ WMI_GET_BITS(_ema_param, WMI_BEACON_TMPLT_PROFILE_PERIOD_BITPOS, 8)
+
+#define WMI_BEACON_TMPLT_TEMPLATE_INDEX_BITPOS (8)
+#define WMI_BEACON_TMPLT_TEMPLATE_INDEX_MASK (0xff << WMI_BEACON_TMPLT_TEMPLATE_INDEX_BITPOS)
+#define WMI_BEACON_TMPLT_SET_TEMPLATE_INDEX(_ema_param, _val) \
+ WMI_SET_BITS(_ema_param, WMI_BEACON_TMPLT_TEMPLATE_INDEX_BITPOS, 8, value)
+#define WMI_BEACON_TMPLT_GET_TEMPLATE_INDEX(_ema_param) \
+ WMI_GET_BITS(_ema_param, WMI_BEACON_TMPLT_TEMPLATE_INDEX_BITPOS, 8)
+
+#define WMI_BEACON_TMPLT_FIRST_TEMPLATE_BITPOS (16)
+#define WMI_BEACON_TMPLT_FIRST_TEMPLATE_MASK (0xff << WMI_BEACON_TMPLT_FIRST_TEMPLATE_BITPOS)
+#define WMI_BEACON_TMPLT_SET_FIRST_TEMPLATE(_ema_param, _val) \
+ WMI_SET_BITS(_ema_param, WMI_BEACON_TMPLT_FIRST_TEMPLATE_BITPOS, 8, value)
+#define WMI_BEACON_TMPLT_GET_FIRST_TEMPLATE(_ema_param) \
+ WMI_GET_BITS(_ema_param, WMI_BEACON_TMPLT_FIRST_TEMPLATE_BITPOS, 8)
+
+#define WMI_BEACON_TMPLT_LAST_TEMPLATE_BITPOS (24)
+#define WMI_BEACON_TMPLT_LAST_TEMPLATE_MASK (0xff << WMI_BEACON_TMPLT_LAST_TEMPLATE_BITPOS)
+#define WMI_BEACON_TMPLT_SET_LAST_TEMPLATE(_ema_param, _val) \
+ WMI_SET_BITS(_ema_param, WMI_BEACON_TMPLT_LAST_TEMPLATE_BITPOS, 8, value)
+#define WMI_BEACON_TMPLT_GET_LAST_TEMPLATE(_ema_param) \
+ WMI_GET_BITS(_ema_param, WMI_BEACON_TMPLT_LAST_TEMPLATE_BITPOS, 8)
+
typedef struct {
A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_bcn_tmpl_cmd_fixed_param */
/** unique id identifying the VDEV, generated by the caller */
@@ -11121,6 +11440,36 @@ typedef struct {
*/
A_UINT32 feature_enable_bitmap;
+ /**
+ * @ema_params: Applicable only for EMA tx VAPs (VAPs having both flags
+ * VDEV_FLAGS_EMA_MODE and VDEV_FLAGS_TRANSMIT_AP set) and should
+ * remain 0 otherwise. For EMA vaps it carries below information
+ * encoded in each byte:
+ * Byte 0: (@ema_beacon_profile_periodicity) - beacon profile periodicity
+ * (number of beacons) after which nontransmitted MBSS info repeats.
+ * Assumes values [1, N] inclusive.
+ * Refer to WMI_BEACON_TMPLT_[SET,GET]_PROFILE_PERIOD macros.
+ * Byte 1: (@ema_beacon_tmpl_idx) - Specifies the position of beacon
+ * templates within profile periodicity.
+ * Assumes values [0, ema_beacon_profile_periodicity-1] inclusive.
+ * Multiple templates having same @ema_beacon_max_tmpl_idx will
+ * overwrite previous template.
+ * Refer to WMI_BEACON_TMPLT_[SET,GET]_TEMPLATE_INDEX macros.
+ * Byte 2: (@ema_first_tmpl) - Specifies whether it's a last template in
+ * sequence of @ema_beacon_profile_periodicity templates
+ * (end of new template update exchange).
+ * If this template is the only template being updated,
+ * @ema_first_tmpl and @ema_last_tmpl both shall be set to 1.
+ * Refer to WMI_BEACON_TMPLT_[SET,GET]_FIRST_TEMPLATE macros.
+ * Byte 3: (@ema_last_tmpl) - pecifies whether it's a last template in
+ * sequence of @ema_beacon_profile_periodicity templates
+ * (end of new template update exchange).
+ * If this template is the only template being updated,
+ * @ema_first_tmpl and @ema_last_tmpl both shall be set to 1.
+ * Refer to WMI_BEACON_TMPLT_[SET,GET]_LAST_TEMPLATE macros.
+ */
+ A_UINT32 ema_params;
+
/*
* The TLVs follows:
* wmi_bcn_prb_info bcn_prb_info; <-- beacon probe capabilities and IEs
@@ -11377,6 +11726,12 @@ WMI_STA_PS_PARAM_QPOWER_SPEC_MAX_SPEC_NODATA_PSPOLL = 9,
* after AP has set the TIM bit
*/
WMI_STA_PS_PARAM_MAX_RESET_ITO_COUNT_ON_TIM_NO_TXRX = 10,
+
+/**
+ * Flag to enable/disable Powersave Optimization
+ * in WOW
+ */
+WMI_STA_PS_PARAM_ENABLE_PS_OPT_IN_WOW = 11,
};
typedef struct {
@@ -13365,6 +13720,12 @@ typedef struct {
* oce_ap_tx_pwr_weightage_pcnt != 0.
*/
A_UINT32 oce_ap_tx_pwr_weightage_pcnt;
+ /*
+ * For OCE Release 2, give weightage to roam candidate based on
+ * advertised subnet id.
+ * Only used if oce_ap_subnet_id_weightage_pcnt != 0.
+ */
+ A_UINT32 oce_ap_subnet_id_weightage_pcnt;
} wmi_roam_cnd_scoring_param;
typedef struct {
@@ -13692,12 +14053,14 @@ typedef struct {
((flag) & (1 << WMI_ROAM_OFFLOAD_FLAG_PMK_CACHE_DISABLED))
-/* This TLV will be filled only in case of wpa-psk/wpa2-psk */
+/* This TLV will be filled only in case of wpa-psk/wpa2-psk/wpa3 */
typedef struct {
A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_11i_offload_fixed_param */
A_UINT32 flags; /** flags. see WMI_ROAM_OFFLOAD_FLAG_ above */
A_UINT32 pmk[ROAM_OFFLOAD_PMK_BYTES>>2]; /* pmk offload. As this 4 byte aligned, we don't declare it as tlv array */
A_UINT32 pmk_len; /**the length of pmk. in normal case it should be 32, but for LEAP, is should be 16*/
+ A_UINT32 pmk_ext_len; /** the length of extended pmk. in normal case it should be 0, but for suiteB, it should be 16*/
+ A_UINT32 pmk_ext[ROAM_OFFLOAD_PMK_BYTES>>2]; /* pmk ext offload. 16 bytes for suiteB */
} wmi_roam_11i_offload_tlv_param;
/* This TLV will be filled only in case of 11R*/
@@ -13712,6 +14075,13 @@ typedef struct {
A_UINT32 psk_msk_ext_len; /**length of psk_msk_ext*/
A_UINT32 psk_msk_ext[ROAM_OFFLOAD_PSK_MSK_BYTES>>2];
A_UINT32 adaptive_11r; /* FW needs to perform adaptive 11r roaming */
+ /*
+ * FW needs to perform FT initial moiblity association instead of
+ * FT roaming for deauth roam trigger
+ * 0 - To disable FT-IM
+ * 1 - To enable FT-IM
+ */
+ A_UINT32 ft_im_for_deauth;
} wmi_roam_11r_offload_tlv_param;
/* This TLV will be filled only in case of ESE */
@@ -13776,10 +14146,14 @@ typedef struct {
A_UINT32 notif;
/** roam notification param
* Refer to WMI_ROAM_NOTIF_ defs to interpret the notif_params value.
+ * notif_params contains roam invoke fail reason from
+ * wmi_roam_invoke_error_t if reason is WMI_ROAM_REASON_INVOKE_ROAM_FAIL.
*/
A_UINT32 notif_params;
/** roam notification param1
* Refer to WMI_ROAM_NOTIF_ defs to interpret the notif_params1 value.
+ * notif_params1 is exact frame length of deauth or disassoc if reason
+ * is WMI_ROAM_REASON_DEAUTH.
*/
A_UINT32 notif_params1;
} wmi_roam_event_fixed_param;
@@ -16074,6 +16448,7 @@ typedef enum {
RECOVERY_SIM_INFINITE_LOOP = 0x06,
RECOVERY_SIM_PCIE_LINKDOWN = 0x07,
RECOVERY_SIM_SELF_RECOVERY = 0x08,
+ RECOVERY_SIM_BT_RECOVERY = 0x09,
} RECOVERY_SIM_TYPE;
/* WMI_FORCE_FW_HANG_CMDID */
@@ -16175,6 +16550,12 @@ typedef struct {
A_UINT32 gpio_num; /* GPIO number which changed state */
} wmi_gpio_input_event_fixed_param;
+/* WMI_ANT_CONTROLLER_CMDID */
+typedef struct {
+ A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_ant_controller_cmd_fixed_param */
+ A_UINT32 ant_controller_enable;
+} wmi_ant_controller_cmd_fixed_param;
+
/* WMI_P2P_DISC_EVENTID */
enum {
P2P_DISC_SEARCH_PROB_REQ_HIT = 0, /* prob req hit the p2p find pattern */
@@ -16412,6 +16793,7 @@ typedef struct {
typedef enum {
QUICK_OCAC = 0,
EXTENSIVE_OCAC,
+ QUICK_RCAC,
} WMI_ADFS_OCAC_MODE;
typedef struct {
@@ -18471,6 +18853,13 @@ typedef struct {
A_UINT32 vdev_id;
/** Actual length in byte of data[]. */
A_UINT32 data_len;
+ /**
+ * pdev_vdev_flag - 0 follow old method (vdev_id is valid, ignore pdev_id)
+ * pdev_vdev_flag - 1 pdev_id is valid
+ */
+ A_UINT32 pdev_vdev_flag;
+ /** Unique id identifying the PDEV */
+ A_UINT32 pdev_id;
/** This structure is used to send OEM DATA binary blobs from
* application/service to firmware where Host driver is pass through.
* The OEM-specific commands from OEM-specific userspace applications
@@ -18767,6 +19156,7 @@ typedef enum {
WMI_NDP_END_TYPE_UNSPECIFIED = 0x00,
WMI_NDP_END_TYPE_PEER_UNAVAILABLE = 0x01,
WMI_NDP_END_TYPE_OTA_FRAME = 0x02,
+ WMI_NDP_END_TYPE_DATA_INACTIVITY = 0x03,
} wmi_ndp_end_type_PROTOTYPE;
#define wmi_ndp_end_type wmi_ndp_end_type_PROTOTYPE
@@ -18778,6 +19168,7 @@ typedef enum {
WMI_NDP_END_REASON_UNSPECIFIED = 0x00,
WMI_NDP_END_REASON_INACTIVITY = 0x01,
WMI_NDP_END_REASON_PEER_DATA_END = 0x02,
+ WMI_NDP_END_REASON_DATA_INACTIVITY = 0x03,
} wmi_ndp_end_reason_code_PROTOTYPE;
#define wmi_ndp_end_reason_code wmi_ndp_end_reason_code_PROTOTYPE
@@ -19422,6 +19813,11 @@ typedef struct {
/** the length of reassoc req */
A_UINT32 reassoc_req_len;
/**
+ * maximum allowed Tx power (in dBm) for this connection.
+ * max_allowed_tx_power = 0 dBm means value is not specified.
+ */
+ A_INT32 max_allowed_tx_power;
+ /**
* TLV (tag length value) parameters follows roam_synch_event
* The TLV's are:
* A_UINT8 bcn_probe_rsp_frame[]; length identified by bcn_probe_rsp_len
@@ -23286,10 +23682,34 @@ typedef struct wmi_wds_addr_event {
A_UINT32 vdev_id; /* ID of the vdev this peer belongs to */
} wmi_wds_addr_event_fixed_param;
+/*
+ * Enum values for WMI_PEER_PS_SUPPORTED_BITMAP field,
+ * in wmi_peer_sta_ps_statechange_event structure.
+ */
+typedef enum {
+ /* Used to indicate that peer_ps_valid is valid */
+ WMI_PEER_PS_VALID_SUPPORTED = 0x00000001,
+ /* Used to indicate that peer_ps_timestamp field is valid */
+ WMI_PEER_PS_TIMESTAMP_SUPPORTED = 0x00000002,
+} WMI_PEER_PS_SUPPORTED_BITMAP;
+
typedef struct {
A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_peer_sta_ps_statechange_event_fixed_param */
wmi_mac_addr peer_macaddr;
A_UINT32 peer_ps_state;
+ /* Start of extended structure */
+ /* Bitmap to indicate which fields in the extended structure are valid.
+ * Bitmap values correspond to enum WMI_PEER_PS_SUPPORTED_BITMAP
+ */
+ A_UINT32 peer_ps_supported_bitmap;
+ /* This field is used to indicate host of a valid PS state change.
+ * 1 - indicates a valid PS state change.
+ * 0 - indicates an invalid PS state change.
+ * Host to ignore the power save duration calculation when peer_ps_valid = 0
+ */
+ A_UINT32 peer_ps_valid;
+ /* This field indicates the time since target boot-up in MilliSeconds. */
+ A_UINT32 peer_ps_timestamp;
} wmi_peer_sta_ps_statechange_event_fixed_param;
/* WMI_PDEV_FIPS_EVENTID */
@@ -24026,6 +24446,10 @@ typedef enum wmi_coex_config_type {
* enable WLAN throughput shaping while BT scanning
*/
WMI_COEX_CONFIG_ENABLE_TPUT_SHAPING = 45,
+ /* WMI_COEX_CONFIG_ENABLE_TXBF
+ * enable WLAN tx beamforming during coex case
+ */
+ WMI_COEX_CONFIG_ENABLE_TXBF = 46,
} WMI_COEX_CONFIG_TYPE;
typedef struct {
@@ -24357,7 +24781,7 @@ typedef enum {
typedef enum wmi_hw_mode_config_type {
WMI_HW_MODE_SINGLE = 0, /* Only one PHY is active. */
- WMI_HW_MODE_DBS = 1, /* Both PHYs are active in different bands, one in 2G and another in 5G. */
+ WMI_HW_MODE_DBS = 1, /* Both PHYs are active in different bands, PHYB in 2G and PHYA in 5G. */
WMI_HW_MODE_SBS_PASSIVE = 2, /* Both PHYs are in passive mode (only rx) in same band; no tx allowed. */
WMI_HW_MODE_SBS = 3, /* Both PHYs are active in the same band.
* Support for both PHYs within one band is planned for 5G only
@@ -24369,6 +24793,8 @@ typedef enum wmi_hw_mode_config_type {
* as in WMI_HW_MODE_SBS, and 3rd on the other band
*/
WMI_HW_MODE_DBS_OR_SBS = 5, /* One PHY is on 5G and the other PHY can be in 2G or 5G. */
+ WMI_HW_MODE_DBS_2G_5G = 6, /* Both PHYs are active in different bands. PhyA 2G and PhyB 5G */
+ WMI_HW_MODE_2G_PHYB = 7, /* Ony PhyB 2G active */
} WMI_HW_MODE_CONFIG_TYPE;
#define WMI_SUPPORT_11B_GET(flags) WMI_GET_BITS(flags, 0, 1)
@@ -25699,6 +26125,12 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command)
WMI_RETURN_STRING(WMI_VDEV_GET_BIG_DATA_CMDID);
WMI_RETURN_STRING(WMI_PDEV_FRAME_INJECT_CMDID);
WMI_RETURN_STRING(WMI_PDEV_TBTT_OFFSET_SYNC_CMDID);
+ WMI_RETURN_STRING(WMI_VDEV_GET_BIG_DATA_P2_CMDID);
+ WMI_RETURN_STRING(WMI_AUDIO_AGGR_GET_STATISTICS_CMDID);
+ WMI_RETURN_STRING(WMI_AUDIO_AGGR_RESET_STATISTICS_CMDID);
+ WMI_RETURN_STRING(WMI_ANT_CONTROLLER_CMDID);
+ WMI_RETURN_STRING(WMI_SIMULATION_TEST_CMDID);
+ WMI_RETURN_STRING(WMI_AUDIO_AGGR_SET_RTSCTS_CONFIG_CMDID);
}
return "Invalid WMI cmd";
@@ -26951,6 +27383,7 @@ typedef enum {
*/
typedef enum {
WMI_ROAM_TRIGGER_REASON_STA_KICKOUT = WMI_ROAM_TRIGGER_REASON_MAX,
+ WMI_ROAM_TRIGGER_REASON_ESS_RSSI,
WMI_ROAM_TRIGGER_EXT_REASON_MAX
} WMI_ROAM_TRIGGER_EXT_REASON_ID;
@@ -27222,6 +27655,27 @@ typedef enum {
WMI_ROAM_TRIGGER_SUB_REASON_CU_PERIODIC, /* Roam scan triggered due to CU periodic timer */
} WMI_ROAM_TRIGGER_SUB_REASON_ID;
+typedef enum wmi_roam_invoke_status_error {
+ WMI_ROAM_INVOKE_STATUS_SUCCESS = 0,
+ WMI_ROAM_INVOKE_STATUS_VDEV_INVALID = 0x11, /* Invalid VDEV */
+ WMI_ROAM_INVOKE_STATUS_BSS_INVALID, /* Invalid VDEV BSS */
+ WMI_ROAM_INVOKE_STATUS_VDEV_DOWN, /* VDEV is not UP */
+ WMI_ROAM_INVOKE_STATUS_ROAM_HANDLE_INVALID, /* VDEV ROAM handle is invalid */
+ WMI_ROAM_INVOKE_STATUS_OFFLOAD_DISABLE, /* Roam offload is not enabled */
+ WMI_ROAM_INVOKE_STATUS_AP_SSID_LENGTH_INVALID, /* Connected AP profile SSID length is zero */
+ WMI_ROAM_INVOKE_STATUS_HO_DISALLOW, /* Already FW internal roaming is in progress */
+ WMI_ROAM_INVOKE_STATUS_ALREADY_RUNNING, /* Roam Invoke already in progress either from internal FW BTM request or from host*/
+ WMI_ROAM_INVOKE_STATUS_NON_ROAMABLE_AP, /* Roam HO is not triggered due to non roamable AP */
+ WMI_ROAM_INVOKE_STATUS_HO_INTERNAL_FAIL, /* Candidate AP save failed */
+ WMI_ROAM_INVOKE_STATUS_DISALLOW, /* Roam invoke trigger is not enabled */
+ WMI_ROAM_INVOKE_STATUS_SCAN_FAIL, /* Scan start fail */
+ WMI_ROAM_INVOKE_STATUS_START_HO_FAIL, /* Roam HO start fail */
+ WMI_ROAM_INVOKE_STATUS_INVALID_PARAMS, /* Roam invoke params are invalid */
+ WMI_ROAM_INVOKE_STATUS_INVALID_SCAN_MODE, /* Roam scan mode is invalid */
+ WMI_ROAM_INVOKE_STATUS_NO_CAND_AP, /* No candidate AP found to roam to */
+ WMI_ROAM_INVOKE_STATUS_HO_FAIL, /* handoff failed */
+} wmi_roam_invoke_status_error_t;
+
typedef struct {
A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_trigger_reason_tlv_param */
/*
@@ -27448,6 +27902,35 @@ typedef struct {
*/
} wmi_roam_scan_channel_list_event_fixed_param;
+typedef enum {
+ WMI_ROAM_CND_RSSI_SCORING = 0x00000001, /* FW considers RSSI scoring */
+ WMI_ROAM_CND_HT_SCORING = 0x00000002, /* FW considers HT scoring */
+ WMI_ROAM_CND_VHT_SCORING = 0x00000004, /* FW considers VHT scoring */
+ WMI_ROAM_CND_HE_SCORING = 0x00000008, /* FW considers 11ax scoring */
+ WMI_ROAM_CND_BW_SCORING = 0x00000010, /* FW considers Bandwidth scoring */
+ WMI_ROAM_CND_BAND_SCORING = 0x00000020, /* FW considers Band(2G/5G) scoring */
+ WMI_ROAM_CND_NSS_SCORING = 0x00000040, /* FW considers NSS(1x1 / 2x2) scoring */
+ WMI_ROAM_CND_CHAN_CONGESTION_SCORING = 0x00000080, /* FW considers ESP/QBSS scoring */
+ WMI_ROAM_CND_BEAMFORMING_SCORING = 0x00000100, /* FW considers Beamforming scoring */
+ WMI_ROAM_CND_PCL_SCORING = 0x00000200, /* FW considers PCL scoring */
+ WMI_ROAM_CND_OCE_WAN_SCORING = 0x00000400, /* FW considers OCE WAN metrics scoring */
+ WMI_ROAM_CND_OCE_AP_TX_PWR_SCORING = 0x00000800, /* FW considers OCE AP Tx power scoring */
+ WMI_ROAM_CND_OCE_AP_SUBNET_ID_SCORING = 0x00001000, /* FW considers OCE AP subnet id scoring */
+} WMI_ROAM_CND_SCORING_PARAMS;
+
+typedef struct {
+ A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_capability_report_event_fixed_param */
+ /*
+ * This event is sent asynchronously during FW init.
+ * It indicates FW roam related capabilites to host.
+ *
+ * scoring_capability_bitmap = Indicates firmware candidate scoring
+ * capabilities. It's a bitmap of values
+ * from enum WMI_ROAM_CND_SCORING_PARAMS.
+ */
+ A_UINT32 scoring_capability_bitmap;
+} wmi_roam_capability_report_event_fixed_param;
+
typedef struct {
A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_vdev_get_big_data_cmd_fixed_param */
A_UINT32 vdev_id;
@@ -27520,6 +28003,28 @@ typedef struct {
} wmi_vdev_send_big_data_event_fixed_param;
typedef struct {
+ A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_vdev_get_big_data_p2_cmd_fixed_param */
+ A_UINT32 vdev_id;
+} wmi_vdev_get_big_data_p2_cmd_fixed_param;
+
+typedef struct {
+ A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_vdev_send_big_data_p2_event_fixed_param */
+ A_UINT32 vdev_id;
+ /** param list **/
+ /* total number of TSF out of sync */
+ A_UINT32 tsf_out_of_sync;
+
+ /*
+ * This fixed_param TLV is followed by the below TLVs:
+ * List of datapath big data stats. This stat is not interpreted by
+ * host. This gets directly updated on big data server and later FW
+ * team will analyze this data.
+ *
+ * A_UINT32 bd_datapath_stats[];
+ */
+} wmi_vdev_send_big_data_p2_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 */
@@ -29275,6 +29780,42 @@ typedef struct {
} wmi_audio_aggr_update_sta_group_info_cmd_fixed_param;
typedef struct {
+ /** TLV tag and len **/
+ A_UINT32 tlv_header;
+ /* VDEV identifier */
+ A_UINT32 vdev_id;
+ /*
+ * Identifier from Host to indicate how many this cmd been sent to FW.
+ * This value will be echoed back in the response_id field
+ * of the WMI_AUDIO_AGGR_REPORT_STATISTICS_EVENTID.
+ */
+ A_UINT32 request_id;
+} wmi_audio_aggr_get_statistics_cmd_fixed_param;
+
+typedef struct {
+ /** TLV tag and len **/
+ A_UINT32 tlv_header;
+ /* VDEV identifier */
+ A_UINT32 vdev_id;
+} wmi_audio_aggr_reset_statistics_cmd_fixed_param;
+
+typedef struct {
+ /** TLV tag and len **/
+ A_UINT32 tlv_header;
+ /* VDEV identifier */
+ A_UINT32 vdev_id;
+
+ /*
+ * The user_mode and user_profile fields are passed through
+ * the host driver to the target FW, but are never interpreted
+ * by the host driver. The values for these fields are opaque
+ * to the host, and are only interpreted by the FW.
+ */
+ A_UINT32 user_mode;
+ A_UINT32 user_profile;
+} wmi_audio_aggr_set_rtscts_config_cmd_fixed_param;
+
+typedef struct {
/** TLV tag and len; tag equals
* WMITLV_TAG_STRUC_wmi_set_ocl_cmd_fixed_param */
A_UINT32 tlv_header;
@@ -29781,6 +30322,303 @@ typedef struct {
*/
} wmi_pdev_multiple_vdev_restart_resp_event_fixed_param;
+/** WMI event for Firmware to report soundbar audio frame statistics to Host **/
+typedef struct {
+ /** TLV tag and len **/
+ A_UINT32 tlv_header;
+ A_UINT32 vdev_id; /* ID of the vdev this response belongs to */
+ /** identify which request this resposend to **/
+ A_UINT32 response_id;
+ /* audio frame statistics part -
+ * Use subsequent TLV arrays to list group_stats and peer_stats.
+ */
+
+/*
+ * The TLVs listing group_stats, will follow this TLV.
+ * The number of group_stats can be calculated by dividing the
+ * TLV array length by the TLV array element length.
+ *
+ * The fixed_param TLV is directly followed by a list of
+ * wmi_audio_aggr_group_stats elements:
+ * wmi_audio_aggr_group_stats group_stats[0];
+ * wmi_audio_aggr_group_stats group_stats[1];
+ * ...
+ * wmi_audio_aggr_group_stats group_stats[N];
+ *
+ * After the list of wmi_audio_aggr_group_stats is a list of peer_stats.
+ * wmi_audio_aggr_peer_stats peer_stats[0];
+ * wmi_audio_aggr_peer_stats peer_stats[1];
+ * ...
+ * wmi_audio_aggr_peer_stats peer_stats[N];
+ *
+ */
+} wmi_audio_aggr_statistics_event_fixed_param;
+
+typedef struct {
+ /** TLV tag and len **/
+ A_UINT32 tlv_header;
+ /* Group mac_address */
+ wmi_mac_addr group_addr;
+ /* Group indentify */
+ A_UINT32 group_id;
+ /* Multicast MSDU Data Packets received from Host for this Group */
+ A_UINT32 mcast_tx;
+ /*
+ * Multicast MSDU Data Packets sent to OTA.
+ * Customer defined SW Retry Packets not included, as these
+ * SW Retry packets generated in FW locally, but not from Host.
+ */
+ A_UINT32 mcast_tx_ok;
+ /*
+ * Multicast MSDU Data Packets sent to OTA.
+ * Only include Customer defined SW Retry Packets.
+ */
+ A_UINT32 mcast_tx_ok_retry;
+ /*
+ * Multicast MSDU Data Packets not sent to OTA,
+ * discarded by tbd function due to timeout.
+ * Customer defined SW Retry Packets not included.
+ */
+ A_UINT32 mcast_tx_tbd_lost;
+ /*
+ * Multicast MSDU Data Packets not sent to OTA,
+ * discarded by tbd function due to timeout.
+ * Only include Customer defined SW Retry Packets.
+ */
+ A_UINT32 mcast_tx_tbd_lost_retry;
+} wmi_audio_aggr_group_stats;
+
+typedef struct {
+ /** TLV tag and len **/
+ A_UINT32 tlv_header;
+ /* STA mac_address */
+ wmi_mac_addr peer_addr;
+ /* Unicast MSDU Data Packets received from peer STA */
+ A_UINT32 ucast_rx;
+ /* Unicast MSDU Data Packets received from Host for Peer STA */
+ A_UINT32 ucast_tx;
+ /*
+ * Unicast MSDU Data Packets received from Host,
+ * and SW retry times for these packets.
+ */
+ A_UINT32 ucast_tx_retry;
+ /*
+ * Unicast MSDU Data Packets received from Host,
+ * and sent to Peer STA successfully.
+ */
+ A_UINT32 ucast_tx_ok;
+ /*
+ * Unicast MSDU Data Packets received from Host,
+ * but sent to Peer STA fail. not OTA, or no ACK from Peer.
+ */
+ A_UINT32 ucast_tx_lost;
+ /*
+ * Periodic NULL Data frames for multicast tx rate auto control.
+ * Generated by FW locally, and sent to Peer STA successfully.
+ */
+ A_UINT32 null_frame_tx;
+ /*
+ * Periodic NULL Data frames for multicast tx rate auto control.
+ * Generated by FW locally, but sent to Peer STA fail.
+ */
+ A_UINT32 null_frame_tx_lost;
+} wmi_audio_aggr_peer_stats;
+
+typedef struct {
+ /** TLV tag and len; tag equals
+ *WMITLV_TAG_STRUC_wmi_pdev_srg_bss_color_bitmap_cmd_fixed_param */
+ A_UINT32 tlv_header;
+ /** pdev_id for identifying the MAC
+ * See macros starting with WMI_PDEV_ID_ for values.
+ * In non-DBDC case host should set it to 0
+ */
+ A_UINT32 pdev_id;
+ /* 64 bit bss color bitmap used by SRG based spatial reuse feature
+ * bitmap[0] contains lower 32 bits and bitmap[1] contains
+ * upper 32 bits.
+ */
+ A_UINT32 srg_bss_color_bitmap[2];
+} wmi_pdev_srg_bss_color_bitmap_cmd_fixed_param;
+
+typedef struct {
+ /** TLV tag and len; tag equals
+ *WMITLV_TAG_STRUC_wmi_pdev_srg_partial_bssid_bitmap_cmd_fixed_param */
+ A_UINT32 tlv_header;
+ /** pdev_id for identifying the MAC
+ * See macros starting with WMI_PDEV_ID_ for values.
+ * In non-DBDC case host should set it to 0
+ */
+ A_UINT32 pdev_id;
+ /* 64 bit partial bssid bitmap used by SRG based spatial reuse feature
+ * bitmap[0] contains lower 32 bits and bitmap[1] contains
+ * upper 32 bits.
+ */
+ A_UINT32 srg_partial_bssid_bitmap[2];
+} wmi_pdev_srg_partial_bssid_bitmap_cmd_fixed_param;
+
+typedef struct {
+ /** TLV tag and len; tag equals
+ * WMITLV_TAG_STRUC_wmi_pdev_srg_obss_color_enable_bitmap_cmd_fixed_param */
+ A_UINT32 tlv_header;
+ /** pdev_id for identifying the MAC
+ * See macros starting with WMI_PDEV_ID_ for values.
+ * In non-DBDC case host should set it to 0
+ */
+ A_UINT32 pdev_id;
+ /* 64 bit SRG obss color enable bitmap used by SRG based spatial reuse feature
+ * bitmap[0] contains lower 32 bits and bitmap[1] contains
+ * upper 32 bits.
+ */
+ A_UINT32 srg_obss_en_color_bitmap[2];
+} wmi_pdev_srg_obss_color_enable_bitmap_cmd_fixed_param;
+
+typedef struct {
+ /** TLV tag and len; tag equals
+ * WMITLV_TAG_STRUC_wmi_pdev_srg_obss_bssid_enable_bitmap_cmd_fixed_param */
+ A_UINT32 tlv_header;
+ /** pdev_id for identifying the MAC
+ * See macros starting with WMI_PDEV_ID_ for values.
+ * In non-DBDC case host should set it to 0
+ */
+ A_UINT32 pdev_id;
+ /* 64 bit obss bssid enable bitmap used by SRG based spatial reuse feature
+ * bitmap[0] contains lower 32 bits and bitmap[1] contains
+ * upper 32 bits.
+ */
+ A_UINT32 srg_obss_en_bssid_bitmap[2];
+} wmi_pdev_srg_obss_bssid_enable_bitmap_cmd_fixed_param;
+
+typedef struct {
+ /** TLV tag and len; tag equals
+ * WMITLV_TAG_STRUC_wmi_pdev_non_srg_obss_color_enable_bitmap_cmd_fixed_param */
+ A_UINT32 tlv_header;
+ /** pdev_id for identifying the MAC
+ * See macros starting with WMI_PDEV_ID_ for values.
+ * In non-DBDC case host should set it to 0
+ */
+ A_UINT32 pdev_id;
+ /* 64 bit Non_SRG obss color enable bitmap used by Non_SRG based spatial reuse feature
+ * bitmap[0] contains lower 32 bits and bitmap[1] contains
+ * upper 32 bits.
+ */
+ A_UINT32 non_srg_obss_en_color_bitmap[2];
+} wmi_pdev_non_srg_obss_color_enable_bitmap_cmd_fixed_param;
+
+typedef struct {
+ /** TLV tag and len; tag equals
+ * WMITLV_TAG_STRUC_wmi_pdev_non_srg_obss_bssid_enable_bitmap_cmd_fixed_param */
+ A_UINT32 tlv_header;
+ /** pdev_id for identifying the MAC
+ * See macros starting with WMI_PDEV_ID_ for values.
+ * In non-DBDC case host should set it to 0
+ */
+ A_UINT32 pdev_id;
+ /* 64 bit obss bssid enable bitmap used by Non_SRG based spatial reuse feature
+ * bitmap[0] contains lower 32 bits and bitmap[1] contains
+ * upper 32 bits.
+ */
+ A_UINT32 non_srg_obss_en_bssid_bitmap[2];
+} wmi_pdev_non_srg_obss_bssid_enable_bitmap_cmd_fixed_param;
+
+typedef enum {
+ /* Simulation test command types */
+ WMI_SIM_TEST_FRAME_CONTENT_CHANGE_CMD,
+ WMI_SIM_TEST_DROP_FRAME_CMD,
+ WMI_SIM_TEST_DELAY_FRAME_CMD,
+ WMI_SIM_TEST_CONFIGURATION_CMD,
+
+ WMI_SIM_TEST_CMD_UNKNOWN = 255,
+} WMI_SIMULATION_TEST_CMD_TYPE;
+
+typedef enum {
+ /* Simulation test sub-command types */
+ WMI_SIM_TEST_SUB_CMD_UNKNOWN = 255,
+} WMI_SIMULATION_TEST_SUB_CMD_TYPE;
+
+#define WMI_SIM_FRAME_TYPE_BIT_POS 0
+#define WMI_SIM_FRAME_SUBTYPE_BIT_POS 8
+#define WMI_SIM_FRAME_SEQ_BIT_POS 16
+#define WMI_SIM_FRAME_OFFSET_BIT_POS 0
+#define WMI_SIM_FRAME_LENGTH_BIT_POS 16
+
+#define WMI_SIM_FRAME_TYPE_SET(param, value) \
+ WMI_SET_BITS(param, WMI_SIM_FRAME_TYPE_BIT_POS, 8, value)
+#define WMI_SIM_FRAME_TYPE_GET(param) \
+ WMI_GET_BITS(param, WMI_SIM_FRAME_TYPE_BIT_POS, 8)
+
+#define WMI_SIM_FRAME_SUBTYPE_SET(param, value) \
+ WMI_SET_BITS(param, WMI_SIM_FRAME_SUBTYPE_BIT_POS, 8, value)
+#define WMI_SIM_FRAME_SUBTYPE_GET(param) \
+ WMI_GET_BITS(param, WMI_SIM_FRAME_SUBTYPE_BIT_POS, 8)
+
+#define WMI_SIM_FRAME_SEQ_SET(param, value) \
+ WMI_SET_BITS(param, WMI_SIM_FRAME_SEQ_BIT_POS, 8, value)
+#define WMI_SIM_FRAME_SEQ_GET(param) \
+ WMI_GET_BITS(param, WMI_SIM_FRAME_SEQ_BIT_POS, 8)
+
+#define WMI_SIM_FRAME_OFFSET_SET(param, value) \
+ WMI_SET_BITS(param, WMI_SIM_FRAME_OFFSET_BIT_POS, 16, value)
+#define WMI_SIM_FRAME_OFFSET_GET(param) \
+ WMI_GET_BITS(param, WMI_SIM_FRAME_OFFSET_BIT_POS, 16)
+
+#define WMI_SIM_FRAME_LENGTH_SET(param, value) \
+ WMI_SET_BITS(param, WMI_SIM_FRAME_LENGTH_BIT_POS, 16, value)
+#define WMI_SIM_FRAME_LENGTH_GET(param) \
+ WMI_GET_BITS(param, WMI_SIM_FRAME_LENGTH_BIT_POS, 16)
+
+typedef struct {
+ /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_simulation_test_cmd_fixed_param */
+ A_UINT32 tlv_header;
+ /** pdev_id for identifying the MAC.
+ * See macros starting with WMI_PDEV_ID_ for values.
+ * In non-DBDC case host should set it to 0.
+ */
+ A_UINT32 pdev_id;
+ /** vdev_id for identifying the vap simulation command needs to be applied.
+ * This is for future purpose, currently only 1 vap is supported for
+ * simulation test mode.
+ * Host will always set it to 0 for now.
+ */
+ A_UINT32 vdev_id;
+ /** peer MAC address for identifying the peer for which the simulation
+ * command needs to be applied.
+ * peer_macaddr needs to be set to '0' for simulation commands which
+ * needs to be applied at pdev or vdev level.
+ */
+ wmi_mac_addr peer_macaddr;
+ /** test command type, as per WMI_SIMULATION_TEST_CMD_TYPE */
+ A_UINT32 test_cmd_type;
+ /** test command type, as per WMI_SIMULATION_TEST_SUB_CMD_TYPE */
+ A_UINT32 test_subcmd_type;
+ /**
+ * The frame type, frame subtype, and frame sequence number
+ * are stored as bitfields within the below A_UINT32 "word".
+ * Use the WMI_SIM_xxx_GET/SET macros to read and
+ * write these bitfields.
+ **/
+ A_UINT32 frame_type_subtype_seq;
+ /**
+ * The frame offset and frame length,
+ * are stored as bitfields within the below A_UINT32 "word".
+ * Use the WMI_SIM_xxx_GET/SET macros to read and
+ * write these bitfields.
+ **/
+ A_UINT32 frame_offset_length;
+ /** buf_len: Buffer length in bytes
+ * In some cases buf_len == frame_length, but not always.
+ * For example, a DELAY_FRAME command will not involve any frame
+ * contents, so frame_length will be zero, but buf_len will be
+ * non-zero because it will contain command-specific parameters.
+ */
+ A_UINT32 buf_len;
+/* This TLV is followed by array of bytes:
+ * A_UINT8 bufp[];
+ * For FRAME_CONTENT_CHANGE commands, bufp contains the first 64 bytes
+ * of the frame.
+ */
+} wmi_simulation_test_cmd_fixed_param;
+
+
/* ADD NEW DEFS HERE */
diff --git a/fw/wmi_version.h b/fw/wmi_version.h
index b421fbf..737285e 100644
--- 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_ 805
+#define __WMI_REVISION_ 836
/** The Version Namespace should not be normally changed. Only
* host and firmware of the same WMI namespace will work
diff --git a/hw/qca6750/v1/wfss_ce_reg_seq_hwioreg.h b/hw/qca6750/v1/wfss_ce_reg_seq_hwioreg.h
index 9c29f2e..dfa5440 100644
--- a/hw/qca6750/v1/wfss_ce_reg_seq_hwioreg.h
+++ b/hw/qca6750/v1/wfss_ce_reg_seq_hwioreg.h
@@ -25,6 +25,10 @@
#define HWIO_WFSS_CE_CHANNEL_DST_R0_DEST_CTRL_DEST_MAX_LENGTH_BMSK \
HWIO_HOST_SOC_CE_0_DST_WFSS_CE_CHANNEL_DST_R0_DEST_CTRL_DEST_MAX_LENGTH_BMSK
+#define HWIO_WFSS_CE_CHANNEL_DST_R0_DEST_RING_CONSUMER_PREFETCH_TIMER_RMSK \
+HWIO_HOST_SOC_CE_0_DST_WFSS_CE_CHANNEL_DST_R0_DEST_RING_CONSUMER_PREFETCH_TIMER_RMSK
+
#define HWIO_WFSS_CE_CHANNEL_DST_R0_DEST_CTRL_ADDR(x) (x+0x000000b0)
+#define HWIO_WFSS_CE_CHANNEL_DST_R0_DEST_RING_CONSUMER_PREFETCH_TIMER_ADDR(x) (x+0x00000040)
#endif