diff options
author | hsuvictor <hsuvictor@google.com> | 2020-06-01 14:53:49 +0800 |
---|---|---|
committer | Victor Hsu <hsuvictor@google.com> | 2020-06-01 11:45:16 +0000 |
commit | ee51341730da46790d1a4bec8a557f3cddc1c202 (patch) | |
tree | da08ba85cf88f49a6b4f603edd850c183e61f086 | |
parent | 310dca90ce39c5e2a877d6b2b240272c4711fe7e (diff) | |
parent | eaa6f4c389b6db38a1ab0fa7a0686ae7bfeea54b (diff) | |
download | wlan-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.h | 39 | ||||
-rw-r--r-- | fw/htt_stats.h | 91 | ||||
-rw-r--r-- | fw/wmi_services.h | 5 | ||||
-rw-r--r-- | fw/wmi_tlv_defs.h | 121 | ||||
-rw-r--r-- | fw/wmi_unified.h | 894 | ||||
-rw-r--r-- | fw/wmi_version.h | 2 | ||||
-rw-r--r-- | hw/qca6750/v1/wfss_ce_reg_seq_hwioreg.h | 4 |
7 files changed, 1110 insertions, 46 deletions
@@ -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 |