From 5d9b86bbeb278d4730a52bfb27ae9129d388bfcc Mon Sep 17 00:00:00 2001 From: spuligil Date: Thu, 2 Sep 2021 12:01:14 -0700 Subject: [PATCH] fw-api: CL 15458003 - update fw common interface files Change-Id: I68cc2f2a76cf770335d221e4862b9132838e27bc WMI: add HTT MSDU queue idx to qtype specs in WMI bootup msgs CRs-Fixed: 2262693 --- fw/htt.h | 3 ++ fw/wmi_tlv_defs.h | 7 ++-- fw/wmi_unified.h | 92 +++++++++++++++++++++++++++++++++++++++++++---- fw/wmi_version.h | 2 +- 4 files changed, 95 insertions(+), 9 deletions(-) diff --git a/fw/htt.h b/fw/htt.h index 71b5946107d5..2dc74ff8bc3f 100644 --- a/fw/htt.h +++ b/fw/htt.h @@ -16390,6 +16390,9 @@ enum HTT_MSDU_QTYPE { HTT_MSDU_QTYPE_UDP, /* Specifies MSDUQ index used for UDP flow */ HTT_MSDU_QTYPE_NON_UDP, /* Specifies MSDUQ index used for non-udp flow */ HTT_MSDU_QTYPE_HOL, /* Specified MSDUQ index used for Head of Line */ + HTT_MSDU_QTYPE_USER_SPECIFIED, /* Specifies MSDUQ index used for advertising changeable flow type */ + HTT_MSDU_QTYPE_HI_PRIO, /* Specifies MSDUQ index used for high priority flow type */ + HTT_MSDU_QTYPE_LO_PRIO, /* Specifies MSDUQ index used for low priority flow type */ /* New MSDU_QTYPE should be added above this line */ diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index 7c9fc5656492..1c53da6f58da 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1198,6 +1198,7 @@ typedef enum { WMITLV_TAG_STRUC_wmi_thermal_stats_cmd_fixed_param, WMITLV_TAG_STRUC_wmi_thermal_throt_temp_range_stats, WMITLV_TAG_STRUC_wmi_ctrl_path_awgn_stats_struct, + WMITLV_TAG_STRUC_wmi_htt_msdu_idx_to_htt_msdu_qtype, } WMITLV_TAG_ID; /* @@ -1955,7 +1956,8 @@ typedef enum { WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_resource_config, wmi_resource_config, resource_config, WMITLV_SIZE_FIX)\ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wlan_host_memory_chunk, host_mem_chunks, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_set_hw_mode_cmd_fixed_param, wmi_pdev_set_hw_mode_cmd_fixed_param, hw_mode, WMITLV_SIZE_FIX) \ - WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_pdev_band_to_mac, band_to_mac, WMITLV_SIZE_VAR) + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_pdev_band_to_mac, band_to_mac, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_htt_msdu_idx_to_htt_msdu_qtype, htt_msdu_idx_to_qtype_map, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_INIT_CMDID); @@ -4844,7 +4846,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_SERVICE_READY_EXT_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, WMI_HAL_REG_CAPABILITIES_EXT2, hal_reg_caps, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_nan_capabilities, wmi_nan_capabilities, nan_cap, WMITLV_SIZE_FIX) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, WMI_SCAN_RADIO_CAPABILITIES_EXT2, wmi_scan_radio_caps, WMITLV_SIZE_VAR) \ - WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_twt_caps_params, twt_caps, WMITLV_SIZE_VAR) + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_twt_caps_params, twt_caps, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_htt_msdu_idx_to_htt_msdu_qtype, htt_msdu_idx_to_qtype_map, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_SERVICE_READY_EXT2_EVENTID); #define WMITLV_TABLE_WMI_CHAN_RF_CHARACTERIZATION_INFO_EVENTID(id,op,buf,len) \ diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index b1978bd2c370..f474d421c9b1 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -2771,11 +2771,11 @@ typedef struct { */ A_UINT32 num_msdu_desc; -/* The TLVs for hal_reg_capabilities, wmi_service_bitmap and mem_reqs[] will follow this TLV. +/* This ready_event_fixed_param TLV is followed by the below TLVs: * HAL_REG_CAPABILITIES hal_reg_capabilities; * A_UINT32 wmi_service_bitmap[WMI_SERVICE_BM_SIZE]; * wlan_host_mem_req mem_reqs[]; - * wlan_dbs_hw_mode_list[]; + * A_UINT32 wlan_dbs_hw_mode_list[]; */ } wmi_service_ready_event_fixed_param; @@ -2957,6 +2957,31 @@ typedef struct { #define WMI_TARGET_CAP_FLAGS_RX_PEER_METADATA_VERSION_SET(target_cap_flags, value) \ WMI_SET_BITS(target_cap_flags, 0, 2, value) +/* + * wmi_htt_msdu_idx_to_htt_msdu_qtype GET/SET APIs + */ +#define WMI_HTT_MSDUQ_IDX_TO_MSDUQ_QTYPE_INDEX_GET(index_and_type) \ + WMI_GET_BITS(index_and_type, 0, 8) +#define WMI_HTT_MSDUQ_IDX_TO_MSDUQ_QTYPE_INDEX_SET(index_and_type, value) \ + WMI_SET_BITS(index_and_type, 0, 8, value) + +#define WMI_HTT_MSDUQ_IDX_TO_MSDUQ_QTYPE_TYPE_GET(index_and_type) \ + WMI_GET_BITS(index_and_type, 8, 8) +#define WMI_HTT_MSDUQ_IDX_TO_MSDUQ_QTYPE_TYPE_SET(index_and_type, value) \ + WMI_SET_BITS(index_and_type, 8, 8, value) + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_htt_msdu_idx_to_htt_msdu_qtype.*/ + /** + * index_and_type + * + * [7:0] : htt_msduq_index + * [15:8] : htt_msduq_type + * [31:16] : reserved + */ + A_UINT32 index_and_type; +} wmi_htt_msdu_idx_to_htt_msdu_qtype; + typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_service_ready_ext2_event_fixed_param.*/ @@ -3047,6 +3072,32 @@ typedef struct { * wmi_nan_capabilities; * WMI_SCAN_RADIO_CAPABILITIES_EXT2; */ + + /* + * Max number of LinkView peers supported by target + */ + A_UINT32 max_num_linkview_peers; + + /* + * Max number of msduq's per TID per peer supported by target, + * defines LinkView peers number + */ + A_UINT32 max_num_msduq_supported_per_tid; + + /* + * Number of peers support default flowqs + */ + A_UINT32 default_num_msduq_supported_per_tid; + + /* Followed by next TLVs: + * WMI_DMA_RING_CAPABILITIES dma_ring_caps[]; + * wmi_spectral_bin_scaling_params wmi_bin_scaling_params[]; + * WMI_MAC_PHY_CAPABILITIES_EXT mac_phy_caps[]; + * WMI_HAL_REG_CAPABILITIES_EXT2 hal_reg_caps[]; + * wmi_nan_capabilities nan_cap; + * WMI_SCAN_RADIO_CAPABILITIES_EXT2 wmi_scan_radio_caps[]; + * wmi_htt_msdu_idx_to_htt_msdu_qtype htt_msdu_idx_to_qtype_map[]; + */ } wmi_service_ready_ext2_event_fixed_param; typedef struct { @@ -3180,7 +3231,7 @@ typedef struct { /* * max_ast_index - max AST index that Firmware can generate * max_ast_index = (ast_table_size-1), ast_table_size is dynamically chosen - * based on num_peers configutation from Host. Hence Host needs to know the + * based on num_peers configuration from Host. Hence Host needs to know the * max_ast_index that Firmware can generate. * A 0x0 value for max_ast_index means the target has not specified a limit. */ @@ -3206,7 +3257,7 @@ typedef struct { /* * max_onchip_ast_index - max AST index that Firmware can generate * max_onchip_ast_index = (ast_table_size-1), where ast_table_size is - * dynamically chosen based on num_peers configutation from Host. + * dynamically chosen based on num_peers configuration from Host. * Hence Host needs to know the max_onchip_ast_index that Firmware can * generate. * A 0x0 value for max_onchip_ast_index means the target has not specified @@ -3214,6 +3265,16 @@ typedef struct { */ A_UINT32 max_onchip_ast_index; + /* + * The maximum number of LinkView peers can be supported onsite of target, + * based on proposed by the host configuration, + * total number of available resources, configured peers number, + * number of MSDUQs per LinkView peer's TID. + * Target can reduce proposed by WMI_INIT_CMDID number, depending on + * the target's resources availability. + */ + A_UINT32 num_of_linkview_peers; + /* * This fixed_param TLV is followed by these additional TLVs: * mac_addr_list[num_extra_mac_addr]; @@ -4039,6 +4100,24 @@ typedef struct { * BIT 1 : 31 Reserved */ A_UINT32 carrier_config; + + /** @brief num_of_linkview_peers - proposed by the host value of + * the peers with the num_of_linkview_msduqs_per_tid allocation + * @details + * Host can request what the number of 'num_peers' should use + * num_of_linkview_msduqs_per_tid. All other peers will use + * default number of MSDUQs allocated. + */ + A_UINT32 num_of_linkview_peers; + + /** @brief num_of_linkview_msduqs_per_tid - proposed by the host value of + * MSDUQs per each LinkView peer's TID + * @details + * Host sends the number of MSDUQs per each LinkView peer's TID. + * This number will be used during resources allocation for + * LinkView peer in the target. + */ + A_UINT32 num_of_linkview_msduqs_per_tid; } wmi_resource_config; #define WMI_MSDU_FLOW_AST_ENABLE_GET(msdu_flow_config0, ast_x) \ @@ -4333,7 +4412,7 @@ typedef struct { wmi_abi_version host_abi_vers; A_UINT32 num_host_mem_chunks; /** size of array host_mem_chunks[] */ -/* The TLVs for resource_config, host_mem_chunks[], and hw_mode_config will follow. +/* This init_cmd_fixed_param TLV is followed by the below TLVs: * wmi_resource_config resource_config; * wlan_host_memory_chunk host_mem_chunks[]; * wmi_pdev_set_hw_mode_cmd_fixed_param hw_mode_config; @@ -4342,8 +4421,9 @@ typedef struct { * within the target. * To avoid specifying a HW mode for the target, the host should * fill hw_mode_config's fields with 0x0. + * wmi_pdev_band_to_mac band_to_mac[]; + * wmi_htt_msdu_idx_to_htt_msdu_qtype htt_msdu_idx_to_qtype_map[]; */ - } wmi_init_cmd_fixed_param; /** diff --git a/fw/wmi_version.h b/fw/wmi_version.h index d4011964e9db..b12a8e0c3834 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_ 1050 +#define __WMI_REVISION_ 1051 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work