Merge 51c64ab0e1 on remote branch

Change-Id: Ie043072c0ddb4abd5251b8fa690dd87c4b21c423
This commit is contained in:
Linux Build Service Account 2024-07-02 06:55:31 -07:00
commit 87c885e691
7 changed files with 373 additions and 36 deletions

196
fw/htt.h
View file

@ -260,9 +260,11 @@
* msg defs.
* 3.131 Add H2T TYPE_MSDUQ_RECFG_REQ + T2H MSDUQ_CFG_IND msg defs.
* 3.132 Add flow_classification_3_tuple_field_enable in H2T 3_TUPLE_HASH_CFG.
* 3.133 Add packet_type_enable_data_flags fields in rx_ring_selection_cfg.
* 3.134 Add qdata_refill flag in rx_peer_metadata_v1a.
*/
#define HTT_CURRENT_VERSION_MAJOR 3
#define HTT_CURRENT_VERSION_MINOR 132
#define HTT_CURRENT_VERSION_MINOR 134
#define HTT_NUM_TX_FRAG_DESC 1024
@ -5790,38 +5792,39 @@ enum htt_srng_ring_id {
*
* The message would appear as follows:
*
* |31 28|27|26|25|24|23|22|21 19|18 16|15 | 11| 10|9 8|7 0|
* |-----+--+--+--+--+-----------------+----+---+---+---+---------------|
* |rsvd1|DT|OV|PS|SS| ring_id | pdev_id | msg_type |
* |-----------------------+-----+-----+--------------------------------|
* |rsvd2|RX|RXHDL| CLD | CLC | CLM | ring_buffer_size |
* |--------------------------------------------------------------------|
* | packet_type_enable_flags_0 |
* |--------------------------------------------------------------------|
* | packet_type_enable_flags_1 |
* |--------------------------------------------------------------------|
* | packet_type_enable_flags_2 |
* |--------------------------------------------------------------------|
* | packet_type_enable_flags_3 |
* |--------------------------------------------------------------------|
* | tlv_filter_in_flags |
* |-----------------------------------+--------------------------------|
* | rx_header_offset | rx_packet_offset |
* |-----------------------------------+--------------------------------|
* | rx_mpdu_start_offset | rx_mpdu_end_offset |
* |-----------------------------------+--------------------------------|
* | rx_msdu_start_offset | rx_msdu_end_offset |
* |-----------------------------------+--------------------------------|
* | rsvd3 | rx_attention_offset |
* |--------------------------------------------------------------------|
* | rsvd4 | mo| fp| rx_drop_threshold |
* | |ndp|ndp| |
* |--------------------------------------------------------------------|
* |31 29|28|27|26|25|24|23|22|21 19|18 16|15 | 11| 10|9 8|7 0|
* |-----+--+--+--+--+--+-----------------+----+---+---+---+---------------|
* |rsvd1|ED|DT|OV|PS|SS| ring_id | pdev_id | msg_type |
* |--------------------------+-----+-----+--------------------------------|
* | rsvd2 |RX|RXHDL| CLD | CLC | CLM | ring_buffer_size |
* |-----------------------------------------------------------------------|
* | packet_type_enable_flags_0 |
* |-----------------------------------------------------------------------|
* | packet_type_enable_flags_1 |
* |-----------------------------------------------------------------------|
* | packet_type_enable_flags_2 |
* |-----------------------------------------------------------------------|
* | packet_type_enable_flags_3 |
* |-----------------------------------------------------------------------|
* | tlv_filter_in_flags |
* |--------------------------------------+--------------------------------|
* | rx_header_offset | rx_packet_offset |
* |--------------------------------------+--------------------------------|
* | rx_mpdu_start_offset | rx_mpdu_end_offset |
* |--------------------------------------+--------------------------------|
* | rx_msdu_start_offset | rx_msdu_end_offset |
* |--------------------------------------+--------------------------------|
* | rsvd3 | rx_attention_offset |
* |-----------------------------------------------------------------------|
* | rsvd4 | mo| fp| rx_drop_threshold |
* | |ndp|ndp| |
* |-----------------------------------------------------------------------|
* Where:
* PS = pkt_swap
* SS = status_swap
* OV = rx_offsets_valid
* DT = drop_thresh_valid
* ED = packet type enable data flags fields present / valid
* CLM = config_length_mgmt
* CLC = config_length_ctrl
* CLD = config_length_data
@ -5846,8 +5849,12 @@ enum htt_srng_ring_id {
* b'27 - drop_thresh_valid (DT): flag to indicate if the
* rx_drop_threshold field is valid
* b'28 - rx_mon_global_en: Enable/Disable global register
8 configuration in Rx monitor module.
* b'29:31 - rsvd1: reserved for future use
* configuration in Rx monitor module.
* b'29 - packet_type_enable_data: flag to indicate whether
* newer packet_type_enable_data_flags_* are valid or not
* If not set, will use pkt_type_enable_flags for both status
* and full pkt buffer configuration.
* b'30:31 - rsvd1: reserved for future use
* dword1 - b'0:15 - ring_buffer_size: size of bufferes referenced by rx ring,
* in byte units.
* Valid only for HW_TO_SW_RING and SW_TO_HW_RING
@ -6011,6 +6018,32 @@ enum htt_srng_ring_id {
* 1: RX_PKT TLV logging at specified offset for the
* subsequent buffer
* b`15:1 - rx_pkt_tlv_offset: Qword offset for rx_packet TLVs.
* dword18- b'0:19 - rx_mpdu_start_wmask_v2 - wmask address for rx mpdu start
* b'20-27 - rx_mpdu_end_wmask_v2 - wmask addr for rx mpdu end tlv addr
* b'28-31 - reserved
* dword19- b'0-19 - rx_msdu_end_wmask_v2
* b'20-31 - reserved
* dword20- b'0:19 - rx_ppdu_end_user_stats_wmask_v2
* offset for ppdu_end_user_stats tlv
* b'20-31 - reserved
* dword21- b'0-31 - packet_type_enable_fpmo_flags_0 - filter bmap for each
* mode mgmt/ctrl type/subtype for fpmo mode
* dword22- b'0-31 - packet_type_enable_fpmo_flags_1 - filter bmap for each
* mode ctrl/data type/subtype for fpmo mode
* dword23- b'0-31 - packet_type_enable_data_flags_0 - filter bmap for full
* pkt buffer each mode MGMT type/subtype
* dword24- b'0-31 - packet_type_enable_data_flags_0 - filter bmap for full
* pkt buffer each mode MGMT type/subtype
* dword25- b'0-31 - packet_type_enable_data_flags_0 - filter bmap for full
* pkt buffer each mode CTRL type/subtype
* dword26- b'0-31 - packet_type_enable_data_flags_0 - filter bmap for full
* pkt buffer each mode CTRL/DATA type/subtype
* dword27- b'0-31 - packet_type_enable_data_fpmo_flags_0 - filter bmap for
* full pkt buffer each mode mgmt/ctrl type/subtype for
* fpmo mode
* dword28- b'0-31 - packet_type_enable_data_fpmo_flags_1 - filter bmap for
* full pkt buffer each mode ctrl/data type/subtype for
* fpmo mode
*/
PREPACK struct htt_rx_ring_selection_cfg_t {
A_UINT32 msg_type: 8,
@ -6021,7 +6054,8 @@ PREPACK struct htt_rx_ring_selection_cfg_t {
rx_offsets_valid: 1,
drop_thresh_valid: 1,
rx_mon_global_en: 1,
rsvd1: 3;
packet_type_enable_data: 1,
rsvd1: 2;
A_UINT32 ring_buffer_size: 16,
config_length_mgmt:3,
config_length_ctrl:3,
@ -6075,6 +6109,12 @@ PREPACK struct htt_rx_ring_selection_cfg_t {
rsvd10: 12;
A_UINT32 packet_type_enable_fpmo_flags0;
A_UINT32 packet_type_enable_fpmo_flags1;
A_UINT32 packet_type_enable_data_flags_0;
A_UINT32 packet_type_enable_data_flags_1;
A_UINT32 packet_type_enable_data_flags_2;
A_UINT32 packet_type_enable_data_flags_3;
A_UINT32 packet_type_enable_data_fpmo_flags0;
A_UINT32 packet_type_enable_data_fpmo_flags1;
} POSTPACK;
#define HTT_RX_RING_SELECTION_CFG_SZ (sizeof(struct htt_rx_ring_selection_cfg_t))
@ -6156,6 +6196,17 @@ PREPACK struct htt_rx_ring_selection_cfg_t {
((_var) |= ((_val) << HTT_RX_RING_SELECTION_CFG_RX_MON_GLOBAL_EN_S)); \
} while (0)
#define HTT_RX_RING_SELECTION_CFG_PACKET_TYPE_ENABLE_DATA_M 0x20000000
#define HTT_RX_RING_SELECTION_CFG_PACKET_TYPE_ENABLE_DATA_S 29
#define HTT_RX_RING_SELECTION_CFG_PACKET_TYPE_ENABLE_DATA_GET(_var) \
(((_var) & HTT_RX_RING_SELECTION_CFG_PACKET_TYPE_ENABLE_DATA_M) >> \
HTT_RX_RING_SELECTION_CFG_PACKET_TYPE_ENABLE_DATA_S)
#define HTT_RX_RING_SELECTION_CFG_PACKET_TYPE_ENABLE_DATA_SET(_var, _val) \
do { \
HTT_CHECK_SET_VAL(HTT_RX_RING_SELECTION_CFG_PACKET_TYPE_ENABLE_DATA, _val); \
((_var) |= ((_val) << HTT_RX_RING_SELECTION_CFG_PACKET_TYPE_ENABLE_DATA_S)); \
} while (0)
#define HTT_RX_RING_SELECTION_CFG_RING_BUFFER_SIZE_M 0x0000ffff
#define HTT_RX_RING_SELECTION_CFG_RING_BUFFER_SIZE_S 0
#define HTT_RX_RING_SELECTION_CFG_RING_BUFFER_SIZE_GET(_var) \
@ -6644,6 +6695,74 @@ PREPACK struct htt_rx_ring_selection_cfg_t {
((_var) |= ((_val) << HTT_RX_RING_SELECTION_CFG_PACKET_TYPE_ENABLE_FPMO_FLAGS1_S)); \
} while (0)
#define HTT_RX_RING_SELECTION_CFG_PACKET_TYPE_ENABLE_DATA_FLAG_0_M 0xffffffff
#define HTT_RX_RING_SELECTION_CFG_PACKET_TYPE_ENABLE_DATA_FLAG_0_S 0
#define HTT_RX_RING_SELECTION_CFG_PACKET_TYPE_ENABLE_DATA_FLAG_0_GET(_var) \
(((_var) & HTT_RX_RING_SELECTION_CFG_PACKET_TYPE_ENABLE_DATA_FLAG_0_M) >> \
HTT_RX_RING_SELECTION_CFG_PACKET_TYPE_ENABLE_DATA_FLAG_0_S)
#define HTT_RX_RING_SELECTION_CFG_PACKET_TYPE_ENABLE_DATA_FLAG_0_SET(_var, _val) \
do { \
HTT_CHECK_SET_VAL(HTT_RX_RING_SELECTION_CFG_PACKET_TYPE_ENABLE_DATA_FLAG_0, _val); \
((_var) |= ((_val) << HTT_RX_RING_SELECTION_CFG_PACKET_TYPE_ENABLE_DATA_FLAG_0_S)); \
} while (0)
#define HTT_RX_RING_SELECTION_CFG_PACKET_TYPE_ENABLE_DATA_FLAG_1_M 0xffffffff
#define HTT_RX_RING_SELECTION_CFG_PACKET_TYPE_ENABLE_DATA_FLAG_1_S 0
#define HTT_RX_RING_SELECTION_CFG_PACKET_TYPE_ENABLE_DATA_FLAG_1_GET(_var) \
(((_var) & HTT_RX_RING_SELECTION_CFG_PACKET_TYPE_ENABLE_DATA_FLAG_1_M) >> \
HTT_RX_RING_SELECTION_CFG_PACKET_TYPE_ENABLE_DATA_FLAG_1_S)
#define HTT_RX_RING_SELECTION_CFG_PACKET_TYPE_ENABLE_DATA_FLAG_1_SET(_var, _val) \
do { \
HTT_CHECK_SET_VAL(HTT_RX_RING_SELECTION_CFG_PACKET_TYPE_ENABLE_DATA_FLAG_1, _val); \
((_var) |= ((_val) << HTT_RX_RING_SELECTION_CFG_PACKET_TYPE_ENABLE_DATA_FLAG_1_S)); \
} while (0)
#define HTT_RX_RING_SELECTION_CFG_PACKET_TYPE_ENABLE_DATA_FLAG_2_M 0xffffffff
#define HTT_RX_RING_SELECTION_CFG_PACKET_TYPE_ENABLE_DATA_FLAG_2_S 0
#define HTT_RX_RING_SELECTION_CFG_PACKET_TYPE_ENABLE_DATA_FLAG_2_GET(_var) \
(((_var) & HTT_RX_RING_SELECTION_CFG_PACKET_TYPE_ENABLE_DATA_FLAG_2_M) >> \
HTT_RX_RING_SELECTION_CFG_PACKET_TYPE_ENABLE_DATA_FLAG_2_S)
#define HTT_RX_RING_SELECTION_CFG_PACKET_TYPE_ENABLE_DATA_FLAG_2_SET(_var, _val) \
do { \
HTT_CHECK_SET_VAL(HTT_RX_RING_SELECTION_CFG_PACKET_TYPE_ENABLE_DATA_FLAG_2, _val); \
((_var) |= ((_val) << HTT_RX_RING_SELECTION_CFG_PACKET_TYPE_ENABLE_DATA_FLAG_2_S)); \
} while (0)
#define HTT_RX_RING_SELECTION_CFG_PACKET_TYPE_ENABLE_DATA_FLAG_3_M 0xffffffff
#define HTT_RX_RING_SELECTION_CFG_PACKET_TYPE_ENABLE_DATA_FLAG_3_S 0
#define HTT_RX_RING_SELECTION_CFG_PACKET_TYPE_ENABLE_DATA_FLAG_3_GET(_var) \
(((_var) & HTT_RX_RING_SELECTION_CFG_PACKET_TYPE_ENABLE_DATA_FLAG_3_M) >> \
HTT_RX_RING_SELECTION_CFG_PACKET_TYPE_ENABLE_DATA_FLAG_3_S)
#define HTT_RX_RING_SELECTION_CFG_PACKET_TYPE_ENABLE_DATA_FLAG_3_SET(_var, _val) \
do { \
HTT_CHECK_SET_VAL(HTT_RX_RING_SELECTION_CFG_PACKET_TYPE_ENABLE_DATA_FLAG_3, _val); \
((_var) |= ((_val) << HTT_RX_RING_SELECTION_CFG_PACKET_TYPE_ENABLE_DATA_FLAG_3_S)); \
} while (0)
#define HTT_RX_RING_SELECTION_CFG_PACKET_TYPE_ENABLE_DATA_FPMO_FLAGS0_M 0xFFFFFFFF
#define HTT_RX_RING_SELECTION_CFG_PACKET_TYPE_ENABLE_DATA_FPMO_FLAGS0_S 0
#define HTT_RX_RING_SELECTION_CFG_PACKET_TYPE_ENABLE_DATA_FPMO_FLAGS0_GET(_var) \
(((_var) & HTT_RX_RING_SELECTION_CFG_PACKET_TYPE_ENABLE_DATA_FPMO_FLAGS0_M)>> \
HTT_RX_RING_SELECTION_CFG_PACKET_TYPE_ENABLE_DATA_FPMO_FLAGS0_S)
#define HTT_RX_RING_SELECTION_CFG_PACKET_TYPE_ENABLE_DATA_FPMO_FLAGS0_SET(_var, _val) \
do { \
HTT_CHECK_SET_VAL(HTT_RX_RING_SELECTION_CFG_PACKET_TYPE_ENABLE_DATA_FPMO_FLAGS0, _val); \
((_var) |= ((_val) << HTT_RX_RING_SELECTION_CFG_PACKET_TYPE_ENABLE_DATA_FPMO_FLAGS0_S)); \
} while (0)
#define HTT_RX_RING_SELECTION_CFG_PACKET_TYPE_ENABLE_DATA_FPMO_FLAGS1_M 0xFFFFFFFF
#define HTT_RX_RING_SELECTION_CFG_PACKET_TYPE_ENABLE_DATA_FPMO_FLAGS1_S 0
#define HTT_RX_RING_SELECTION_CFG_PACKET_TYPE_ENABLE_DATA_FPMO_FLAGS1_GET(_var) \
(((_var) & HTT_RX_RING_SELECTION_CFG_PACKET_TYPE_ENABLE_DATA_FPMO_FLAGS1_M)>> \
HTT_RX_RING_SELECTION_CFG_PACKET_TYPE_ENABLE_DATA_FPMO_FLAGS1_S)
#define HTT_RX_RING_SELECTION_CFG_PACKET_TYPE_ENABLE_DATA_FPMO_FLAGS1_SET(_var, _val) \
do { \
HTT_CHECK_SET_VAL(HTT_RX_RING_SELECTION_CFG_PACKET_TYPE_ENABLE_DATA_FPMO_FLAGS1, _val); \
((_var) |= ((_val) << HTT_RX_RING_SELECTION_CFG_PACKET_TYPE_ENABLE_DATA_FPMO_FLAGS1_S)); \
} while (0)
/*
* Subtype based MGMT frames enable bits.
* FP: Filter_Pass, MD: Monitor_Direct MO: Monitor_Other
@ -20609,7 +20728,8 @@ PREPACK struct htt_rx_peer_metadata_v1a {
vdev_id: 8,
logical_link_id: 4,
chip_id: 3,
reserved2: 3;
qdata_refill: 1,
reserved2: 2;
} POSTPACK;
#define HTT_RX_PEER_META_DATA_V1A_PEER_ID_S 0
@ -20667,6 +20787,17 @@ PREPACK struct htt_rx_peer_metadata_v1a {
((_var) |= ((_val) << HTT_RX_PEER_META_DATA_V1A_CHIP_ID_S)); \
} while (0)
#define HTT_RX_PEER_META_DATA_V1A_QDATA_REFILL_S 29
#define HTT_RX_PEER_META_DATA_V1A_QDATA_REFILL_M 0x20000000
#define HTT_RX_PEER_META_DATA_V1A_QDATA_REFILL_GET(_var) \
(((_var) & HTT_RX_PEER_META_DATA_V1A_QDATA_REFILL_M) >> HTT_RX_PEER_META_DATA_V1A_QDATA_REFILL_S)
#define HTT_RX_PEER_META_DATA_V1A_QDATA_REFILL_SET(_var, _val) \
do { \
HTT_CHECK_SET_VAL(HTT_RX_PEER_META_DATA_V1A_QDATA_REFILL, _val); \
((_var) |= ((_val) << HTT_RX_PEER_META_DATA_V1A_QDATA_REFILL_S)); \
} while (0)
/**
* @brief target -> RX PEER METADATA V1B format
@ -22949,6 +23080,7 @@ typedef enum {
HTT_SDWF_MSDUQ_CFG_IND_ERROR_DEACTIVATED_MSDUQ = 0x05,
HTT_SDWF_MSDUQ_CFG_IND_ERROR_REACTIVATED_MSDUQ = 0x06,
HTT_SDWF_MSDUQ_CFG_IND_ERROR_INVALID_SVC_CLASS = 0x07,
HTT_SDWF_MSDUQ_CFG_IND_ERROR_TIDQ_LOCATE_ERROR = 0x08,
} HTT_SDWF_MSDUQ_CFG_IND_ERROR_CODE_E;
PREPACK struct htt_t2h_sdwf_msduq_cfg_ind {

View file

@ -5415,6 +5415,8 @@ typedef struct {
HTT_TX_PDEV_STATS_NUM_EXTRA2_MCS_COUNTERS)
#define HTT_TX_PDEV_STATS_NUM_PER_COUNTERS 101
#define HTT_MAX_POWER_LEVEL 32 /* 0 to 32 dBm */
#define HTT_MAX_NEGATIVE_POWER_LEVEL 10 /* 0 to -10 dBm */
/*
* Introduce new TX counters to support 320MHz support and punctured modes
@ -7600,6 +7602,14 @@ typedef struct {
* bin2 contains the number of sampling windows that had > 4 interrupts
*/
A_UINT32 interrupts_hist[HTT_INTERRUPTS_LATENCY_PROFILE_MAX_HIST];
/* min time in us for pcycles spent on q6 core on all HW threads */
A_UINT32 min_pcycles_time;
/* max time in us for pcycles spent on q6 core on all HW threads */
A_UINT32 max_pcycles_time;
/* total time in us for pcycles spent on q6 core on all HW threads */
A_UINT32 tot_pcycles_time;
/* avg time in us for pcycles spent on q6 core on all HW threads */
A_UINT32 avg_pcycles_time;
} htt_stats_latency_prof_stats_tlv;
/* preserve old name alias for new name consistent with the tag name */
typedef htt_stats_latency_prof_stats_tlv htt_latency_prof_stats_tlv;
@ -9414,6 +9424,29 @@ typedef struct {
* units = 0.25dBm
*/
A_INT32 max_reg_only_allowed_power[HTT_STATS_MAX_CHAINS];
/** number of PPDUs transmitted for each number of tx chains */
A_UINT32 tx_num_chains[HTT_STATS_MAX_CHAINS];
/** tx_power:
* Number of PPDUs transmitted with each power level >= 0 dBm.
* tx_power[0]: number of PPDUs with tx power in the [0 dBm, 1 dBm) range
* tx_power[1]: number of PPDUs with tx power in the [1 dBm, 2 dBm) range
* ...
* tx_power[30]: number of PPDUs with tx power in the [30 dBm, 31 dBm) range
* tx_power[31]: number of PPDUs with tx power >= 31 dBm
*/
A_UINT32 tx_power[HTT_MAX_POWER_LEVEL];
/** tx_power_neg:
* Number of PPDUs transmitted with each power level < 0 dBm.
* tx_power_neg[0]: cnt of PPDUs with tx pwr in the [-1 dBm, 0 dBm) range
* tx_power_neg[1]: cnt of PPDUs with tx pwr in the [-2 dBm, -1 dBm) range
* ...
* tx_power_neg[8]: cnt of PPDUs with tx pwr in the [-9 dBm, -8 dBm) range
* tx_power_neg[9]: cnt of PPDUs with tx pwr < -9 dBm
*/
A_UINT32 tx_power_neg[HTT_MAX_NEGATIVE_POWER_LEVEL];
} htt_stats_phy_tpc_stats_tlv;
/* preserve old name alias for new name consistent with the tag name */
typedef htt_stats_phy_tpc_stats_tlv htt_phy_tpc_stats_tlv;

View file

@ -155,6 +155,7 @@ typedef enum {
WLAN_MODULE_BRIDGE_PEER, /* 0x72 */
WLAN_MODULE_AUX_MAC_MGR, /* 0x73 */
WLAN_MODULE_TCAM, /* 0x74 */
WLAN_MODULE_P2P_R2, /* 0x75 */
WLAN_MODULE_ID_MAX,
WLAN_MODULE_ID_INVALID = WLAN_MODULE_ID_MAX,

View file

@ -662,6 +662,14 @@ typedef enum {
WMI_SERVICE_TRAFFIC_CONTEXT_SUPPORT = 408, /* FW supports traffic context aware manager */
WMI_SERVICE_STA_SAP_NDP_CONCURRENCY_SUPPORT = 409, /* FW supports STA + SAP + NDP concurrency */
WMI_SERVICE_THERM_THROT_POUT_REDUCTION = 410, /* FW supports thermal throttling Pout reduction */
WMI_SERVICE_E2E_SDWF_SUPPORT = 411, /* FW supports end-to-end SDWF features like SDWF scheduler */
WMI_SERVICE_EPM = 412, /* FW supports enhanced power management */
WMI_SERVICE_CHIPSET_LOGGING_SUPPORT = 413, /* FW supports chipset logging feature */
WMI_SERVICE_SUPPORT_AP_SUSPEND_RESUME = 414, /* FW supports SAP suspend feature */
WMI_SERVICE_STA_P2P_NDP_CONCURRENCY_SUPPORT = 415, /* FW supports STA + P2P + NAN concurrency */
WMI_SERVICE_USE_STA_VDEV_FOR_P2P_DEVICE = 416, /* FW supports use of sta vdev to be repurposed for p2p device */
WMI_SERVICE_AP_ASSISTED_DFS_CHAN_P2P_SESSION = 417, /* FW supports P2P session on DFS chan enabled by DFS master AP */
WMI_SERVICE_MLO_SAP_EMLSR_SUPPORT = 418, /* Indicates FW MLO SAP supports EMLSR Mode */
WMI_MAX_EXT2_SERVICE

View file

@ -1437,6 +1437,10 @@ typedef enum {
WMITLV_TAG_STRUC_wmi_ctrl_path_vdev_bcn_tx_stats_struct,
WMITLV_TAG_STRUC_wmi_ctrl_path_pdev_bcn_tx_stats_struct,
WMITLV_TAG_STRUC_wmi_soc_tx_packet_custom_classify_cmd_fixed_param,
WMITLV_TAG_STRUC_wmi_set_ap_suspend_resume_cmd_fixed_param,
WMITLV_TAG_STRUC_wmi_p2p_cli_dfs_ap_bmiss_fixed_param,
WMITLV_TAG_STRUC_wmi_p2p_go_dfs_ap_config_fixed_param,
WMITLV_TAG_STRUC_wmi_twt_vdev_config_cmd_fixed_param,
} WMITLV_TAG_ID;
/*
* IMPORTANT: Please add _ALL_ WMI Commands Here.
@ -1807,6 +1811,7 @@ typedef enum {
OP(WMI_TWT_DEL_DIALOG_CMDID) \
OP(WMI_TWT_PAUSE_DIALOG_CMDID) \
OP(WMI_TWT_RESUME_DIALOG_CMDID) \
OP(WMI_TWT_VDEV_CONFIG_CMDID) \
OP(WMI_REQUEST_ROAM_SCAN_STATS_CMDID) \
OP(WMI_PEER_TID_CONFIGURATIONS_CMDID) \
OP(WMI_VDEV_SET_CUSTOM_SW_RETRY_TH_CMDID) \
@ -1986,6 +1991,8 @@ typedef enum {
OP(WMI_PEER_ACTIVE_TRAFFIC_MAP_CMDID) \
OP(WMI_REQUEST_OPM_STATS_CMDID) \
OP(WMI_SOC_TX_PACKET_CUSTOM_CLASSIFY_CMDID) \
OP(WMI_SET_AP_SUSPEND_RESUME_CMDID) \
OP(WMI_P2P_GO_DFS_AP_CONFIG_CMDID) \
/* add new CMD_LIST elements above this line */
@ -2310,6 +2317,7 @@ typedef enum {
OP(WMI_MLO_LINK_INFO_SYNC_EVENTID) \
OP(WMI_PDEV_ENABLE_XLNA_EVENTID) \
OP(WMI_REG_CHAN_LIST_CC_EXT2_EVENTID) \
OP(WMI_P2P_CLI_DFS_AP_BMISS_DETECTED_EVENTID) \
/* add new EVT_LIST elements above this line */
@ -3903,6 +3911,13 @@ WMITLV_CREATE_PARAM_STRUC(WMI_ROAM_MLO_CONFIG_CMDID);
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_pdev_bssid_disallow_list_config_param, bssid_disallow_list, WMITLV_SIZE_VAR)
WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_DSM_FILTER_CMDID);
/* Add/remove DFS master AP configuration */
#define WMITLV_TABLE_WMI_P2P_GO_DFS_AP_CONFIG_CMDID(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_p2p_go_dfs_ap_config_fixed_param, wmi_p2p_go_dfs_ap_config_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_ARRAY_FIXED_STRUC, wmi_mac_addr, bssid, WMITLV_SIZE_VAR) \
WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_ARRAY_FIXED_STRUC, wmi_mac_addr, non_tx_bssid, WMITLV_SIZE_VAR)
WMITLV_CREATE_PARAM_STRUC(WMI_P2P_GO_DFS_AP_CONFIG_CMDID);
#define WMITLV_TABLE_WMI_ROAM_BLACKLIST_EVENTID(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_roam_blacklist_event_fixed_param, wmi_roam_blacklist_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_roam_blacklist_with_timeout_tlv_param, blacklist_with_timeout, WMITLV_SIZE_VAR)
@ -4921,6 +4936,11 @@ WMITLV_CREATE_PARAM_STRUC(WMI_TWT_ENABLE_CMDID);
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_twt_disable_cmd_fixed_param, wmi_twt_disable_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
WMITLV_CREATE_PARAM_STRUC(WMI_TWT_DISABLE_CMDID);
/* TWT config vdev cmd */
#define WMITLV_TABLE_WMI_TWT_VDEV_CONFIG_CMDID(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_twt_vdev_config_cmd_fixed_param, wmi_twt_vdev_config_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
WMITLV_CREATE_PARAM_STRUC(WMI_TWT_VDEV_CONFIG_CMDID);
/* TWT add dialog cmd */
#define WMITLV_TABLE_WMI_TWT_ADD_DIALOG_CMDID(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_twt_add_dialog_cmd_fixed_param, wmi_twt_add_dialog_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
@ -5613,6 +5633,11 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PEER_ACTIVE_TRAFFIC_MAP_CMDID);
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_request_opm_stats_cmd_fixed_param, wmi_request_opm_stats_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
WMITLV_CREATE_PARAM_STRUC(WMI_REQUEST_OPM_STATS_CMDID);
/* SAP suspend/resume command */
#define WMITLV_TABLE_WMI_SET_AP_SUSPEND_RESUME_CMDID(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_set_ap_suspend_resume_cmd_fixed_param, wmi_set_ap_suspend_resume_fixed_param, fixed_param, WMITLV_SIZE_FIX)
WMITLV_CREATE_PARAM_STRUC(WMI_SET_AP_SUSPEND_RESUME_CMDID);
/************************** TLV definitions of WMI events *******************************/
@ -6934,6 +6959,10 @@ WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_AUDIO_SYNC_START_STOP_EVENTID);
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_audio_sync_q_master_slave_times, audio_sync_q_master_slave_times, WMITLV_SIZE_VAR)
WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_AUDIO_SYNC_Q_MASTER_SLAVE_OFFSET_EVENTID);
#define WMITLV_TABLE_WMI_P2P_CLI_DFS_AP_BMISS_DETECTED_EVENTID(id, op , buf, len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_p2p_cli_dfs_ap_bmiss_fixed_param , wmi_p2p_cli_dfs_ap_bmiss_fixed_param, fixed_param, WMITLV_SIZE_FIX)
WMITLV_CREATE_PARAM_STRUC(WMI_P2P_CLI_DFS_AP_BMISS_DETECTED_EVENTID);
/* Layout of WMI_REPORT_STATS_EVENTID message:
* fixed_param;
* wmi_chan_cca_stats chan_cca_stats[]; Array length is specified by num_chan_cca_stats

View file

@ -994,6 +994,8 @@ typedef enum {
WMI_P2P_LISTEN_OFFLOAD_START_CMDID,
/** set listen offload stop related parameters */
WMI_P2P_LISTEN_OFFLOAD_STOP_CMDID,
/** set DFS master AP configuration */
WMI_P2P_GO_DFS_AP_CONFIG_CMDID,
/** AP power save specific config */
/** set AP power save specific param */
@ -1308,6 +1310,9 @@ typedef enum {
/** WMI command to Request Opportunistic Power Mgmt (OPM) stats */
WMI_REQUEST_OPM_STATS_CMDID,
/** WMI command to Request SAP suspend/resume */
WMI_SET_AP_SUSPEND_RESUME_CMDID,
/* Offload 11k related requests */
WMI_11K_OFFLOAD_REPORT_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_11K_OFFLOAD),
@ -1573,6 +1578,7 @@ typedef enum {
WMI_TWT_NUDGE_DIALOG_CMDID,
WMI_VDEV_SET_TWT_EDCA_PARAMS_CMDID, /* XPAN TWT */
WMI_VDEV_GET_TWT_SESSION_STATS_INFO_CMDID,
WMI_TWT_VDEV_CONFIG_CMDID,
/** WMI commands related to motion detection **/
WMI_MOTION_DET_CONFIG_PARAM_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_MOTION_DET),
@ -2087,6 +2093,9 @@ typedef enum {
/** send p2p listen offload stopped event with different reason */
WMI_P2P_LISTEN_OFFLOAD_STOPPED_EVENTID,
/** send event to AP assisted P2P GO to change current DFS channel */
WMI_P2P_CLI_DFS_AP_BMISS_DETECTED_EVENTID,
/** Send EGAP Info to host */
WMI_AP_PS_EGAP_INFO_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_AP_PS),
@ -4618,8 +4627,12 @@ typedef struct {
* and 255 indicates an invalid service class
* Refer to WMI_RSRC_CFG_FLAGS2_SAWF_255_SVC_CLASS_SUPPORT_GET/SET
* macros.
* Bit 20 - enable feature EPM (Enhanced Power Management)
* 0 -> disable the feature
* 1 -> enable the feature
* Refer to the below WMI_RSRC_CFG_FLAGS2_EPM_GET/SET macros.
*
* Bits 31:20 - Reserved
* Bits 31:21 - Reserved
*/
A_UINT32 flags2;
/** @brief host_service_flags - can be used by Host to indicate
@ -5114,6 +5127,10 @@ typedef struct {
#define WMI_RSRC_CFG_FLAGS2_SAWF_255_SVC_CLASS_SUPPORT_SET(flags2, value) \
WMI_SET_BITS(flags2, 19, 1, value)
#define WMI_RSRC_CFG_FLAGS2_EPM_GET(flags2) \
WMI_GET_BITS(flags2, 20, 1)
#define WMI_RSRC_CFG_FLAGS2_EPM_SET(flags2, value) \
WMI_SET_BITS(flags2, 20, 1, value)
#define WMI_RSRC_CFG_HOST_SERVICE_FLAG_NAN_IFACE_SUPPORT_GET(host_service_flags) \
WMI_GET_BITS(host_service_flags, 0, 1)
@ -6130,6 +6147,7 @@ typedef enum {
#define WMI_SCAN_FLAG_EXT_FAST_SCAN 0x00020000
#define WMI_SCAN_FLAG_EXT_LOW_POWER_SCAN 0x00040000
#define WMI_SCAN_FLAG_EXT_STOP_IF_BSSID_FOUND 0x00080000
#define WMI_SCAN_FLAG_EXT_P2P_SCAN 0x00100000
/**
@ -6335,6 +6353,11 @@ enum wmi_scan_completion_reason {
WMI_SCAN_REASON_MAX,
};
#define WMI_SCAN_EVT_IS_SCAN_TYPE_P2P_FLAG_SET(flag, value) \
WMI_SET_BITS(flag, 0, 1, value)
#define WMI_SCAN_EVT_IS_SCAN_TYPE_P2P_FLAG_GET(flag) \
WMI_GET_BITS(flag, 0, 1)
typedef struct {
A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_scan_event_fixed_param */
/** scan event (wmi_scan_event_type) */
@ -6355,6 +6378,11 @@ typedef struct {
* In case of STA not connected it will be the free running HW timer
*/
A_UINT32 tsf_timestamp;
/** flags:
* Bit[0] - indicate if scan type is for p2p
* Bit[1:31] - reserved
*/
A_UINT32 flags;
} wmi_scan_event_fixed_param;
/* WMI Diag event */
@ -7312,6 +7340,9 @@ typedef struct {
#define WMI_TX_SEND_FLAG_SET_IS_SA_QUERY 0x00000004
#define WMI_TX_SEND_FLAG_SET_IS_SA_QUERY_GET(tx_flags) WMI_GET_BITS(tx_flags, 2, 1)
#define WMI_TX_SEND_FLAG_SET_IS_SA_QUERY_SET(tx_flags, value) WMI_SET_BITS(tx_flags, 2, 1, value)
#define WMI_TX_SEND_FLAG_SET_P2P_FRAME_ON_STA_VDEV 0x00000008
#define WMI_TX_SEND_FLAG_SET_P2P_FRAME_ON_STA_VDEV_GET(tx_flags) WMI_GET_BITS(tx_flags, 3, 1)
#define WMI_TX_SEND_FLAG_SET_P2P_FRAME_ON_STA_VDEV_SET(tx_flags, value) WMI_SET_BITS(tx_flags, 3, 1, value)
typedef struct {
A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_tx_send_params */
@ -9609,6 +9640,23 @@ typedef enum {
* E.g. a value of 4 will result in a 1.0 dB tx power reduction.
*/
WMI_PDEV_PARAM_PWR_REDUCTION_IN_QUARTER_DB,
WMI_PDEV_PARAM_ENABLE_CHIPSET_LOGGING,
/** SCAN MODE:
* bit | scan_mode
* -----------------
* 0 | SISO SCAN - 1x1 scan
* | If this bit is 0, then use default scan (NxN).
* 1-31 | Reserved.
*/
WMI_PDEV_PARAM_SCAN_MODE,
/** configure datastall consecutive no ack interval (units = ms) */
WMI_PDEV_PARAM_DSTALL_CONSECUTIVE_TX_NO_ACK_INTERVAL,
/** configure datastall consecutive no ack threshold */
WMI_PDEV_PARAM_DSTALL_CONSECUTIVE_TX_NO_ACK_THRESHOLD,
} WMI_PDEV_PARAM;
#define WMI_PDEV_ONLY_BSR_TRIG_IS_ENABLED(trig_type) WMI_GET_BITS(trig_type, 0, 1)
@ -17521,6 +17569,25 @@ typedef struct {
A_UINT32 vdev_id;
} wmi_vdev_delete_cmd_fixed_param;
typedef struct {
A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_p2p_go_dfs_ap_config_fixed_param */
/** unique id identifying the VDEV, generated by the caller */
A_UINT32 vdev_id;
/** "set" field:
* HOST to specify a non-zero value if DFS master AP config is to be added,
* or a zero value if it is to be removed.
*/
A_UINT32 set;
/* The TLVs follows this structure:
* wmi_mac_addr bssid; <-- bssid for P2P GO's STA's connected AP,
* STA's connected AP is DFS master
* optional TLV used for bssid
* wmi_mac_addr non_tx_bssid; <-- bssid for P2P GO's STA's connected AP,
* if connected to non TX VAP
* optional TLV used for bssid
*/
} wmi_p2p_go_dfs_ap_config_fixed_param;
enum WMI_VDEV_UP_FLAGS {
/** EMA_MBSSID_AP
* Valid only for STA VDEV.
@ -17721,6 +17788,7 @@ typedef enum {
/** NAN vdev config Feature flags */
#define WMI_VDEV_NAN_ALLOW_DW_CONFIG_CHANGE_IN_SYNC_ROLE 0x1
#define WMI_VDEV_NAN_FORCE_CONGIG_WOW_DB_INTERVAL 0x2
/** the definition of different VDEV parameters */
@ -18785,6 +18853,10 @@ typedef enum {
/* Set HW CTS2SELF before DL OFDMA Sequence */
WMI_VDEV_PARAM_HWCTS2SELF_OFDMA, /* 0xC5 */
/* Update TWT_UNAVAIL_MODE */
WMI_VDEV_PARAM_TWT_UNAVAIL_MODE, /* 0xC6 */
/*=== ADD NEW VDEV PARAM TYPES ABOVE THIS LINE ===
* The below vdev param types are used for prototyping, and are
* prone to change.
@ -19620,12 +19692,20 @@ typedef struct {
A_UINT32 cu_vdev_map_cat2_hi; /* bits 63:32 */
} wmi_prb_resp_tmpl_ml_info;
/** indicates P2P GO only case not replay probe req */
#define WMI_PRB_TMPL_IGNORE_NONP2P_PRB_REQ 0x1
typedef struct {
A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_prb_tmpl_cmd_fixed_param */
/** unique id identifying the VDEV, generated by the caller */
A_UINT32 vdev_id;
/** beacon buffer length. data is in TLV data[] */
A_UINT32 buf_len;
/** flags to control probe tmpl:
* Bit 0: If set, FW should ignore non-P2P probe req
* Bits 31-1: Reserved
*/
A_UINT32 flags;
/*
* The TLVs follows:
* wmi_bcn_prb_info bcn_prb_info; <-- beacon probe capabilities and IEs
@ -25667,6 +25747,15 @@ typedef enum
*/
WMI_VENDOR_OUI_ACTION_SEND_SMPS_FRAME_WITH_OMN = 12,
/* Restrict SLO if specific vendor OUI received in beacon. */
WMI_VENDOR_OUI_ACTION_RESTRICT_SLO = 13,
/*
* Force MLSR mode if specific vendor OUI received in beacon
* when connect with MLO.
*/
WMI_VENDOR_OUI_ACTION_FORCE_MLSR = 14,
/* Add any action before this line */
WMI_VENDOR_OUI_ACTION_MAX_ACTION_ID
@ -27011,7 +27100,9 @@ typedef enum {
/** Lower threshold for beacon-RSSI. Used to increase RX chainmask. */
WMI_STA_SMPS_PARAM_LOWER_BRSSI_THRESH = 4,
/** Enable/Disable DTIM 1chRx feature */
WMI_STA_SMPS_PARAM_DTIM_1CHRX_ENABLE = 5
WMI_STA_SMPS_PARAM_DTIM_1CHRX_ENABLE = 5,
/** Enable/Disable dynamic bw feature */
WMI_STA_SMPS_PARAM_DYNAMIC_BW_SWITCH = 6,
} wmi_sta_smps_param;
typedef struct {
@ -27287,7 +27378,6 @@ typedef struct
A_UINT32 scan_req_id;
} wmi_lpi_status_event_fixed_param;
typedef struct
{
A_UINT32 tlv_header;
@ -27297,6 +27387,7 @@ typedef struct
A_UINT32 rssi;
A_UINT32 vdev_id;
} wmi_lpi_handoff_event_fixed_param;
typedef struct
{
A_UINT32 tlv_header;
@ -27305,6 +27396,19 @@ typedef struct
A_UINT32 isLastResult; /*is this event a last event of the whole batch scan*/
} wmi_batch_scan_result_event_fixed_param;
typedef enum {
/** beacons not received from P2P GO */
WMI_P2P_GO_BMISS = 0,
/** beacons not received from P2 GO's STA's connected AP */
WMI_DFS_AP_BMISS = 1,
} wmi_dfs_ap_bmiss_reason;
typedef struct {
A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_p2p_cli_dfs_ap_bmiss_fixed_param*/
A_UINT32 vdev_id;
A_UINT32 reason_code; /* contains a wmi_dfs_ap_bmiss_reason value */
} wmi_p2p_cli_dfs_ap_bmiss_fixed_param;
typedef struct {
A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_p2p_noa_event_fixed_param */
A_UINT32 vdev_id;
@ -37586,6 +37690,7 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command)
WMI_RETURN_STRING(WMI_TWT_DEL_DIALOG_CMDID);
WMI_RETURN_STRING(WMI_TWT_PAUSE_DIALOG_CMDID);
WMI_RETURN_STRING(WMI_TWT_RESUME_DIALOG_CMDID);
WMI_RETURN_STRING(WMI_TWT_VDEV_CONFIG_CMDID);
WMI_RETURN_STRING(WMI_REQUEST_ROAM_SCAN_STATS_CMDID);
WMI_RETURN_STRING(WMI_PEER_TID_CONFIGURATIONS_CMDID);
WMI_RETURN_STRING(WMI_VDEV_SET_CUSTOM_SW_RETRY_TH_CMDID);
@ -37774,6 +37879,8 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command)
WMI_RETURN_STRING(WMI_PEER_ACTIVE_TRAFFIC_MAP_CMDID);
WMI_RETURN_STRING(WMI_REQUEST_OPM_STATS_CMDID);
WMI_RETURN_STRING(WMI_SOC_TX_PACKET_CUSTOM_CLASSIFY_CMDID);
WMI_RETURN_STRING(WMI_SET_AP_SUSPEND_RESUME_CMDID);
WMI_RETURN_STRING(WMI_P2P_GO_DFS_AP_CONFIG_CMDID);
}
return (A_UINT8 *) "Invalid WMI cmd";
@ -39289,6 +39396,22 @@ typedef struct {
A_UINT32 status; /* refer to WMI_DISABLE_TWT_STATUS_T enum */
} wmi_twt_disable_complete_event_fixed_param;
typedef struct {
A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_twt_vdev_config_cmd_fixed_param */
/** pdev_id for identifying the MAC.
* See macros starting with WMI_PDEV_ID_ for values.
*/
A_UINT32 pdev_id;
A_UINT32 vdev_id;
/* TWT support flag to be applied to the vdev
* 0 = ITWT, BTWT and RTWT are disabled.
* 1 = ITWT is enabled
* 2 = ITWT and BTWT are enabled
* 3 = ITWT, BTWT and RTWT are enabled
*/
A_UINT32 twt_support;
} wmi_twt_vdev_config_cmd_fixed_param;
/* status code of TWT Disable */
typedef enum _WMI_DISABLE_TWT_STATUS_T {
WMI_DISABLE_TWT_STATUS_OK, /* Disabling TWT successfully completed */
@ -48480,6 +48603,17 @@ typedef struct {
A_UINT32 pdev_id; /** pdev_id for identifying the MAC */
} wmi_request_opm_stats_cmd_fixed_param;
/* wmi command to suspend SAP vdev */
typedef struct {
/** TLV tag and len; tag equals
* WMITLV_TAG_STRUC_wmi_set_ap_suspend_resume_cmd_fixed_param */
A_UINT32 tlv_header;
/* VDEV identifier */
A_UINT32 vdev_id; /* If 0xFF, find vdevs corresponding to MLD MAC address */
wmi_mac_addr mld_mac_address; /* MLD MAC address */
A_UINT32 is_ap_suspend; /* 1 = suspend, 0 = resume */
} wmi_set_ap_suspend_resume_fixed_param;
/* ADD NEW DEFS HERE */

View file

@ -37,7 +37,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_ 1473
#define __WMI_REVISION_ 1490
/** The Version Namespace should not be normally changed. Only
* host and firmware of the same WMI namespace will work