Loading fw/htt.h +140 −4 Original line number Diff line number Diff line Loading @@ -249,9 +249,12 @@ * 3.121 Add HTT_T2H_MSG_TYPE_PEER_AST_OVERRIDE_INDEX_IND def. * 3.122 Add is_umac_hang flag in H2T UMAC_HANG_RECOVERY_SOC_START_PRE_RESET msg * 3.123 Add HTT_OPTION_TLV_TCL_METADATA_V21 def. * 3.124 Add HTT_T2H_MSG_TYPE_PEER_EXTENDED_EVENT def. * 3.125 Expand fisa_aggr_limit bits in fisa_control_bits_v2. * 3.126 Add HTT_RXDATA_ERR_INVALID_PEER def. */ #define HTT_CURRENT_VERSION_MAJOR 3 #define HTT_CURRENT_VERSION_MINOR 123 #define HTT_CURRENT_VERSION_MINOR 126 #define HTT_NUM_TX_FRAG_DESC 1024 Loading Loading @@ -8620,8 +8623,8 @@ PREPACK struct htt_h2t_msg_type_fisa_config_t { } fisa_control_bits; struct { A_UINT32 fisa_enable: 1, fisa_aggr_limit: 4, reserved: 27; fisa_aggr_limit: 6, reserved: 25; } fisa_control_bits_v2; A_UINT32 fisa_control_value; Loading Loading @@ -8841,7 +8844,7 @@ PREPACK struct htt_h2t_msg_type_fisa_config_t { } while (0) /* Dword 1: fisa_control_value fisa_aggr_limit */ #define HTT_RX_FISA_CONFIG_FISA_V2_AGGR_LIMIT_M 0x0000001e #define HTT_RX_FISA_CONFIG_FISA_V2_AGGR_LIMIT_M 0x0000007e #define HTT_RX_FISA_CONFIG_FISA_V2_AGGR_LIMIT_S 1 #define HTT_RX_FISA_CONFIG_FISA_V2_AGGR_LIMIT_GET(_var) \ (((_var) & HTT_RX_FISA_CONFIG_FISA_V2_AGGR_LIMIT_M) >> \ Loading Loading @@ -10781,6 +10784,7 @@ enum htt_t2h_msg_type { HTT_T2H_MSG_TYPE_SOFT_UMAC_TX_COMPL_IND = 0x36, HTT_T2H_MSG_TYPE_PRIMARY_LINK_PEER_MIGRATE_IND = 0x37, HTT_T2H_MSG_TYPE_PEER_AST_OVERRIDE_INDEX_IND = 0x38, HTT_T2H_MSG_TYPE_PEER_EXTENDED_EVENT = 0x39, HTT_T2H_MSG_TYPE_TEST, Loading Loading @@ -14044,6 +14048,132 @@ typedef enum { #define HTT_RX_MLO_PEER_UNMAP_MLO_PEER_ID_SET HTT_RX_MLO_PEER_MAP_MLO_PEER_ID_SET #define HTT_RX_MLO_PEER_UNMAP_MLO_PEER_ID_GET HTT_RX_MLO_PEER_MAP_MLO_PEER_ID_GET /** * @brief target -> host peer extended event for additional information * * MSG_TYPE => HTT_T2H_MSG_TYPE_PEER_EXTENDED_EVENT * * @details * The following diagram shows the format of the peer extended message sent * from the target to the host. This layout assumes the target operates * as little-endian. * * This message always contains a SW peer ID. The main purpose of the * SW peer ID is to tell the host what peer ID logical link id will be tagged * with, so that the host can use that peer ID to determine which link * transmitted the rx/tx frame. * * This message also contains MLO logical link id assigned to peer * with sw_peer_id if it is valid ML link peer. * * * |31 28|27 24|23 20|19|18 16|15 8|7 0| * |---------------------------------------------------------------------------| * | VDEV_ID | SW peer ID | msg type | * |---------------------------------------------------------------------------| * | MAC addr 3 | MAC addr 2 | MAC addr 1 | MAC addr 0 | * |---------------------------------------------------------------------------| * | Reserved |V | LINK ID | MAC addr 5 | MAC addr 4 | * |---------------------------------------------------------------------------| * | Reserved | * |---------------------------------------------------------------------------| * | Reserved | * |---------------------------------------------------------------------------| * * Where: * LINK_ID (LOGICAL) - 3 Bits Bit16,17,18 of 3rd byte * V (valid) - 1 Bit Bit19 of 3rd byte * * The following field definitions describe the format of the rx peer extended * event messages sent from the target to the host. * MSG_TYPE * Bits 7:0 * Purpose: identifies this as an rx MLO peer extended information message * Value: 0x39 (HTT_T2H_MSG_TYPE_PEER_EXTENDED_EVENT) * - PEER_ID (a.k.a. SW_PEER_ID) * Bits 8:23 * Purpose: The peer ID (index) that WAL has allocated * Value: (rx) peer ID * - VDEV_ID * Bits 24:31 * Purpose: Gives the vdev id of peer with peer_id as above. * Value: VDEV ID of wal_peer * * - MAC_ADDR_L32 * Bits 31:0 * Purpose: Identifies which peer node the peer ID is for. * Value: lower 4 bytes of peer node's MAC address * * - MAC_ADDR_U16 * Bits 15:0 * Purpose: Identifies which peer node the peer ID is for. * Value: upper 2 bytes of peer node's MAC address * Rest all bits are reserved for future expansion * - LOGICAL_LINK_ID * Bits 18:16 * Purpose: Gives the logical link id of peer with peer_id as above. This * field should be taken alongwith LOGICAL_LINK_ID_VALID * Value: Logical link id used by wal_peer * - LOGICAL_LINK_ID_VALID * Bit 19 * Purpose: Clarifies whether the logical link id of peer with peer_id as * is valid or not * Value: 0/1 indicating LOGICAL_LINK_ID is valid or not */ #define HTT_RX_PEER_EXTENDED_PEER_ID_M 0x00ffff00 #define HTT_RX_PEER_EXTENDED_PEER_ID_S 8 #define HTT_RX_PEER_EXTENDED_VDEV_ID_M 0xff000000 #define HTT_RX_PEER_EXTENDED_VDEV_ID_S 24 #define HTT_RX_PEER_EXTENDED_MAC_ADDR_L32_M 0xffffffff #define HTT_RX_PEER_EXTENDED_MAC_ADDR_L32_S 0 #define HTT_RX_PEER_EXTENDED_MAC_ADDR_U16_M 0x0000ffff #define HTT_RX_PEER_EXTENDED_MAC_ADDR_U16_S 0 #define HTT_RX_PEER_EXTENDED_LOGICAL_LINK_ID_M 0x00070000 #define HTT_RX_PEER_EXTENDED_LOGICAL_LINK_ID_S 16 #define HTT_RX_PEER_EXTENDED_LOGICAL_LINK_ID_VALID_M 0x00080000 #define HTT_RX_PEER_EXTENDED_LOGICAL_LINK_ID_VALID_S 19 #define HTT_RX_PEER_EXTENDED_PEER_ID_SET(word, value) \ do { \ HTT_CHECK_SET_VAL(HTT_RX_PEER_MAP_PEER_ID, value); \ (word) |= (value) << HTT_RX_PEER_EXTENDED_PEER_ID_S; \ } while (0) #define HTT_RX_PEER_EXTENDED_PEER_ID_GET(word) \ (((word) & HTT_RX_PEER_EXTENDED_PEER_ID_M) >> HTT_RX_PEER_EXTENDED_PEER_ID_S) #define HTT_RX_PEER_EXTENDED_VDEV_ID_SET(word, value) \ do { \ HTT_CHECK_SET_VAL(HTT_RX_PEER_EXTENDED_VDEV_ID, value); \ (word) |= (value) << HTT_RX_PEER_EXTENDED_VDEV_ID_S; \ } while (0) #define HTT_RX_PEER_EXTENDED_VDEV_ID_GET(word) \ (((word) & HTT_RX_PEER_EXTENDED_VDEV_ID_M) >> HTT_RX_PEER_EXTENDED_VDEV_ID_S) #define HTT_RX_PEER_EXTENDED_LOGICAL_LINK_ID_SET(word, value) \ do { \ HTT_CHECK_SET_VAL(HTT_RX_PEER_EXTENDED_LOGICAL_LINK_ID, value); \ (word) |= (value) << HTT_RX_PEER_EXTENDED_LOGICAL_LINK_ID_S; \ } while (0) #define HTT_RX_PEER_EXTENDED_LOGICAL_LINK_ID_GET(word) \ (((word) & HTT_RX_PEER_EXTENDED_LOGICAL_LINK_ID_M) >> HTT_RX_PEER_EXTENDED_LOGICAL_LINK_ID_S) #define HTT_RX_PEER_EXTENDED_LOGICAL_LINK_ID_VALID_SET(word, value) \ do { \ HTT_CHECK_SET_VAL(HTT_RX_PEER_EXTENDED_LOGICAL_LINK_ID_VALID, value); \ (word) |= (value) << HTT_RX_PEER_EXTENDED_LOGICAL_LINK_ID_VALID_S; \ } while (0) #define HTT_RX_PEER_EXTENDED_LOGICAL_LINK_ID_VALID_GET(word) \ (((word) & HTT_RX_PEER_EXTENDED_LOGICAL_LINK_ID_VALID_M) >> HTT_RX_PEER_EXTENDED_LOGICAL_LINK_ID_VALID_S) #define HTT_RX_PEER_EXTENDED_MAC_ADDR_OFFSET 4 /* bytes */ #define HTT_RX_PEER_EXTENDED_LOGICAL_LINK_ID_OFFSET 8 /* bytes */ #define HTT_RX_PEER_EXTENDED_LOGICAL_LINK_ID_VALID_OFFSET 8 /* bytes */ #define HTT_RX_PEER_EXTENDED_EVENT_BYTES 20 /* bytes */ /** * @brief target -> host message specifying security parameters * Loading Loading @@ -21254,6 +21384,12 @@ typedef enum htt_t2h_rx_data_msdu_err { */ HTT_RXDATA_ERR_ZERO_LEN_MSDU = 7, /* ERR_INVALID_PEER: * FW sets this error flag when MSDU is recived from invalid PEER * HOST decides to send DEAUTH or not, recyles buffer. */ HTT_RXDATA_ERR_INVALID_PEER = 8, /* add new error codes here */ HTT_RXDATA_ERR_MAX = 32 fw/htt_ppdu_stats.h +42 −4 Original line number Diff line number Diff line Loading @@ -1057,6 +1057,20 @@ typedef struct { ((_var) |= ((_val) << HTT_PPDU_STATS_USER_COMMON_TLV_CHAIN_ENABLE_BITS_S)); \ } while (0) #define HTT_PPDU_STATS_USER_COMMON_TLV_IS_SMART_ULOFDMA_BASIC_TRIG_M 0x00010000 #define HTT_PPDU_STATS_USER_COMMON_TLV_IS_SMART_ULOFDMA_BASIC_TRIG_S 16 #define HTT_PPDU_STATS_USER_COMMON_TLV_IS_SMART_ULOFDMA_BASIC_TRIG_GET(_var) \ (((_var) & HTT_PPDU_STATS_USER_COMMON_TLV_IS_SMART_ULOFDMA_BASIC_TRIG_M) >> \ HTT_PPDU_STATS_USER_COMMON_TLV_IS_SMART_ULOFDMA_BASIC_TRIG_S) #define HTT_PPDU_STATS_USER_COMMON_TLV_IS_SMART_ULOFDMA_BASIC_TRIG_SET(_var, _val) \ do { \ HTT_CHECK_SET_VAL(HTT_PPDU_STATS_USER_COMMON_TLV_IS_SMART_ULOFDMA_BASIC_TRIG, _val); \ ((_var) |= ((_val) << HTT_PPDU_STATS_USER_COMMON_TLV_IS_SMART_ULOFDMA_BASIC_TRIG_S)); \ } while (0) #define HTT_PPDU_STATS_USER_COMMON_TLV_TX_PWR_CHAINS_PER_U32 4 #define HTT_PPDU_STATS_USER_COMMON_TLV_TX_PWR_MASK 0x000000ff Loading Loading @@ -1194,10 +1208,15 @@ typedef struct { * Default value: 1 * tx_pwr[0] value is used for all chains if chain_enable_bits field * is set to 1. * * is_smart_ulofdma_basic_trig: * To check if user grouped in UL OFDMA Basic Trigger Frame is * due to Smart Basic Trigger. */ A_UINT32 tx_pwr_multiplier : 8, chain_enable_bits : 8, reserved2 : 16; is_smart_ulofdma_basic_trig: 1, reserved2 : 15; /* * Transmit powers (signed values packed into unsigned bitfields) Loading Loading @@ -1819,6 +1838,19 @@ typedef enum HTT_PPDU_STATS_RESP_PPDU_TYPE HTT_PPDU_STATS_RESP_PPDU_TYPE; ((_var) |= ((_val) << HTT_PPDU_STATS_USER_RATE_TLV_EXTRA_EHT_LTF_S)); \ } while (0) #define HTT_PPDU_STATS_USER_RATE_TLV_IS_MIN_RATE_M 0x00020000 #define HTT_PPDU_STATS_USER_RATE_TLV_IS_MIN_RATE_S 17 #define HTT_PPDU_STATS_USER_RATE_TLV_IS_MIN_RATE_GET(_var) \ (((_var) & HTT_PPDU_STATS_USER_RATE_TLV_IS_MIN_RATE_M) >> \ HTT_PPDU_STATS_USER_RATE_TLV_IS_MIN_RATE_S) #define HTT_PPDU_STATS_USER_RATE_TLV_IS_MIN_RATE_SET (_var , _val) \ do { \ HTT_CHECK_SET_VAL(HTT_PPDU_STATS_USER_RATE_TLV_IS_MIN_RATE, _val); \ ((_var) |= ((_val) << HTT_PPDU_STATS_USER_RATE_TLV_IS_MIN_RATE_S)); \ } while (0) typedef enum HTT_PPDU_STATS_RU_SIZE { HTT_PPDU_STATS_RU_26, HTT_PPDU_STATS_RU_52, Loading Loading @@ -2009,7 +2041,8 @@ typedef struct { */ A_UINT32 punc_pattern_bitmap: 16, extra_eht_ltf: 1, reserved4: 15; is_min_rate: 1, reserved4: 14; } htt_ppdu_stats_user_rate_tlv; #define HTT_PPDU_STATS_USR_RATE_VALID_M 0x80000000 Loading Loading @@ -2479,6 +2512,11 @@ typedef struct { * for BW supported by Smart Antenna - 320 MHZ */ A_UINT32 max_rates_ext; /* hw_prot_dur_us: * hw protection frame's FES duration in micro seconds. */ A_UINT32 hw_prot_dur_us; } htt_ppdu_stats_user_cmpltn_common_tlv; #define HTT_PPDU_STATS_USER_CMPLTN_BA_BITMAP_TLV_TID_NUM_M 0x000000ff Loading fw/htt_stats.h +120 −4 Original line number Diff line number Diff line Loading @@ -555,6 +555,34 @@ enum htt_dbg_ext_stats_type { */ HTT_DBG_CODEL_STATS = 58, /** HTT_DBG_ODD_PDEV_BE_TX_MU_OFDMA_STATS * PARAMS: * - No Params * RESP MSG: * - htt_tx_pdev_mpdu_stats_tlv */ HTT_DBG_ODD_PDEV_BE_TX_MU_OFDMA_STATS = 59, /** HTT_DBG_EXT_STATS_PDEV_UL_TRIGGER * PARAMS: * - No Params * RESP MSG: * - htt_rx_pdev_be_ul_ofdma_user_stats_tlv */ HTT_DBG_ODD_UL_BE_OFDMA_STATS = 60, /** HTT_DBG_ODD_BE_TXBF_OFDMA_STATS */ HTT_DBG_ODD_BE_TXBF_OFDMA_STATS = 61, /** HTT_DBG_ODD_STATS_PDEV_BE_UL_MUMIMO_TRIG_STATS * PARAMS: * - No Params * RESP MSG: * - htt_rx_pdev_be_ul_ofdma_user_stats_tlv */ HTT_DBG_ODD_STATS_PDEV_BE_UL_MUMIMO_TRIG_STATS = 62, /* keep this last */ HTT_DBG_NUM_EXT_STATS = 256, Loading Loading @@ -1636,6 +1664,13 @@ typedef struct { #define HTT_PEER_DETAILS_ML_PEER_ID_S 1 #define HTT_PEER_DETAILS_LINK_IDX_M 0x001fe000 #define HTT_PEER_DETAILS_LINK_IDX_S 13 #define HTT_PEER_DETAILS_USE_PPE_M 0x00200000 #define HTT_PEER_DETAILS_USE_PPE_S 21 #define HTT_PEER_DETAILS_SRC_INFO_M 0x00000fff #define HTT_PEER_DETAILS_SRC_INFO_S 0 #define HTT_PEER_DETAILS_SET(word, httsym, val) \ do { \ Loading Loading @@ -1664,7 +1699,11 @@ typedef struct { A_UINT32 ml_peer_id_valid : 1, /* [0:0] */ ml_peer_id : 12, /* [12:1] */ link_idx : 8, /* [20:13] */ rsvd : 11; /* [31:21] */ use_ppe : 1, /* [21:21] */ rsvd0 : 10; /* [31:22] */ /* Dword 9 */ A_UINT32 src_info : 12, /* [11:0] */ rsvd1 : 20; /* [31:12] */ } htt_peer_details_tlv; typedef struct { Loading Loading @@ -2417,6 +2456,8 @@ typedef enum { #define HTT_TX_NUM_MUMIMO_GRP_INVALID_WORDS \ (HTT_STATS_MAX_MUMIMO_GRP_SZ * HTT_STATS_MAX_INVALID_REASON_CODE) #define HTT_MAX_NUM_SBT_INTR 4 typedef struct { htt_tlv_hdr_t tlv_hdr; Loading Loading @@ -2469,6 +2510,19 @@ typedef struct { /** 11AX HE MU Standalone Freq. BSRP Trigger completed with error(s) */ A_UINT32 standalone_ax_bsr_trigger_err[HTT_NUM_AC_WMM]; /* END DEPRECATED FIELDS */ /** smart_basic_trig_sch_histogram: * Count how many times the interval between predictive basic triggers * sent to a given STA based on analysis of that STA's traffic patterns * is within a given range: * * smart_basic_trig_sch_histogram[0]: SBT interval <= 10 ms * smart_basic_trig_sch_histogram[1]: 10 ms < SBT interval <= 20 ms * smart_basic_trig_sch_histogram[2]: 20 ms < SBT interval <= 30 ms * smart_basic_trig_sch_histogram[3]: 30 ms < SBT interval <= 40 ms * * (Smart basic triggers are only used with intervals <= 40 ms.) */ A_UINT32 smart_basic_trig_sch_histogram[HTT_MAX_NUM_SBT_INTR]; } htt_tx_selfgen_cmn_stats_tlv; typedef struct { Loading Loading @@ -6500,8 +6554,11 @@ typedef enum { HTT_TX_AX_SOUNDING_MODE = 1, HTT_TX_BE_SOUNDING_MODE = 2, HTT_TX_CMN_SOUNDING_MODE = 3, HTT_TX_CV_CORR_MODE = 4, } htt_stats_sounding_tx_mode; #define HTT_TX_CV_CORR_MAX_NUM_COLUMNS 8 typedef struct { htt_tlv_hdr_t tlv_hdr; A_UINT32 tx_sounding_mode; /* HTT_TX_XX_SOUNDING_MODE */ Loading Loading @@ -6614,6 +6671,65 @@ typedef struct { A_UINT32 adaptive_snd_kicked_in; /** Total number of times we switched back to normal sounding interval */ A_UINT32 adaptive_snd_back_to_default; /** * Below are CV correlation feature related stats. * This feature is used for DL MU MIMO, but is not available * from certain legacy targets. */ /** number of CV Correlation triggers for online mode */ A_UINT32 cv_corr_trigger_online_mode; /** number of CV Correlation triggers for offline mode */ A_UINT32 cv_corr_trigger_offline_mode; /** number of CV Correlation triggers for hybrid mode */ A_UINT32 cv_corr_trigger_hybrid_mode; /** number of CV Correlation triggers with computation level 0 */ A_UINT32 cv_corr_trigger_computation_level_0; /** number of CV Correlation triggers with computation level 1 */ A_UINT32 cv_corr_trigger_computation_level_1; /** number of CV Correlation triggers with computation level 2 */ A_UINT32 cv_corr_trigger_computation_level_2; /** number of users for which CV Correlation was triggered */ A_UINT32 cv_corr_trigger_num_users[HTT_TX_CV_CORR_MAX_NUM_COLUMNS]; /** number of streams for which CV Correlation was triggered */ A_UINT32 cv_corr_trigger_num_streams[HTT_TX_CV_CORR_MAX_NUM_COLUMNS]; /** number of CV Correlation buffers received through IPC tickle */ A_UINT32 cv_corr_upload_total_buf_received; /** number of CV Correlation buffers fed back to the IPC ring */ A_UINT32 cv_corr_upload_total_buf_fed_back; /** number of CV Correlation buffers for which processing failed */ A_UINT32 cv_corr_upload_total_processing_failed; /** * number of CV Correlation buffers for which processing failed, * due to no users being present in parsed buffer */ A_UINT32 cv_corr_upload_failed_total_users_zero; /** * number of CV Correlation buffers for which processing failed, * due to number of users present in parsed buffer exceeded * CV_CORR_MAX_NUM_COLUMNS */ A_UINT32 cv_corr_upload_failed_total_users_exceeded; /** * number of CV Correlation buffers for which processing failed, * due to peer pointer for parsed peer not available */ A_UINT32 cv_corr_upload_failed_peer_not_found; /** * number of CV Correlation buffers for which processing encountered, * Nss of peer exceeding SCHED_ALGO_MAX_SUPPORTED_MUMIMO_NSS */ A_UINT32 cv_corr_upload_user_nss_exceeded; /** * number of CV Correlation buffers for which processing encountered, * invalid reverse look up index for fetching CV correlation results */ A_UINT32 cv_corr_upload_invalid_lookup_index; /** number of users present in uploaded CV Correlation results buffer */ A_UINT32 cv_corr_upload_total_num_users[HTT_TX_CV_CORR_MAX_NUM_COLUMNS]; /** number of streams present in uploaded CV Correlation results buffer */ A_UINT32 cv_corr_upload_total_num_streams[HTT_TX_CV_CORR_MAX_NUM_COLUMNS]; } htt_tx_sounding_stats_tlv; /* STATS_TYPE : HTT_DBG_EXT_STATS_TX_SOUNDING_INFO Loading fw/wmi_services.h +7 −0 Original line number Diff line number Diff line Loading @@ -632,6 +632,13 @@ typedef enum { WMI_SERVICE_MLO_TID_TO_LINK_MAPPING_SUPPORT = 379, /* Indicates FW supports TID-TO-LINK mapping */ WMI_SERVICE_PER_LINK_STATS_SUPPORT = 380, /* Indicates FW supports per link stats for MLO */ WMI_SERVICE_N_LINK_MLO_SUPPORT = 381, /* Indicate FW supports N MLO link & vdev re-purpose between links */ WMI_SERVICE_ATF_MAX_CLIENT_512_SUPPORT = 382, /* Indicates FW supports maximum of 512 clients when ATF is enabled */ WMI_SERVICE_FISA_DYNAMIC_MSDU_AGGR_SIZE_SUPPORT = 383, /* Indicates FW support for FISA aggregation size up to 64 instead of only 16 */ WMI_SERVICE_BRIDGE_VDEV_SUPPORT = 384, /* Indicated FW supports Bridge VDEV */ WMI_SERVICE_MLO_MODE1_RECOVERY_SUPPORTED = 385, /* Indicate fw support for mlo mode1 recovery */ WMI_SERVICE_TX_PWR_PER_PPDU_STATS_SUPPORT = 386, /* FW support to check tx power stats per PPDU */ WMI_SERVICE_DISABLE_WDS_PEER_MAP_UNMAP_EVENT_SUPPORT = 387, /* Indicate FW support to disable wds peer map/unmap events */ WMI_SERVICE_PDEV_WSI_STATS_INFO_SUPPORT = 388, /* Support for WSI Stats Info. */ WMI_MAX_EXT2_SERVICE Loading Loading
fw/htt.h +140 −4 Original line number Diff line number Diff line Loading @@ -249,9 +249,12 @@ * 3.121 Add HTT_T2H_MSG_TYPE_PEER_AST_OVERRIDE_INDEX_IND def. * 3.122 Add is_umac_hang flag in H2T UMAC_HANG_RECOVERY_SOC_START_PRE_RESET msg * 3.123 Add HTT_OPTION_TLV_TCL_METADATA_V21 def. * 3.124 Add HTT_T2H_MSG_TYPE_PEER_EXTENDED_EVENT def. * 3.125 Expand fisa_aggr_limit bits in fisa_control_bits_v2. * 3.126 Add HTT_RXDATA_ERR_INVALID_PEER def. */ #define HTT_CURRENT_VERSION_MAJOR 3 #define HTT_CURRENT_VERSION_MINOR 123 #define HTT_CURRENT_VERSION_MINOR 126 #define HTT_NUM_TX_FRAG_DESC 1024 Loading Loading @@ -8620,8 +8623,8 @@ PREPACK struct htt_h2t_msg_type_fisa_config_t { } fisa_control_bits; struct { A_UINT32 fisa_enable: 1, fisa_aggr_limit: 4, reserved: 27; fisa_aggr_limit: 6, reserved: 25; } fisa_control_bits_v2; A_UINT32 fisa_control_value; Loading Loading @@ -8841,7 +8844,7 @@ PREPACK struct htt_h2t_msg_type_fisa_config_t { } while (0) /* Dword 1: fisa_control_value fisa_aggr_limit */ #define HTT_RX_FISA_CONFIG_FISA_V2_AGGR_LIMIT_M 0x0000001e #define HTT_RX_FISA_CONFIG_FISA_V2_AGGR_LIMIT_M 0x0000007e #define HTT_RX_FISA_CONFIG_FISA_V2_AGGR_LIMIT_S 1 #define HTT_RX_FISA_CONFIG_FISA_V2_AGGR_LIMIT_GET(_var) \ (((_var) & HTT_RX_FISA_CONFIG_FISA_V2_AGGR_LIMIT_M) >> \ Loading Loading @@ -10781,6 +10784,7 @@ enum htt_t2h_msg_type { HTT_T2H_MSG_TYPE_SOFT_UMAC_TX_COMPL_IND = 0x36, HTT_T2H_MSG_TYPE_PRIMARY_LINK_PEER_MIGRATE_IND = 0x37, HTT_T2H_MSG_TYPE_PEER_AST_OVERRIDE_INDEX_IND = 0x38, HTT_T2H_MSG_TYPE_PEER_EXTENDED_EVENT = 0x39, HTT_T2H_MSG_TYPE_TEST, Loading Loading @@ -14044,6 +14048,132 @@ typedef enum { #define HTT_RX_MLO_PEER_UNMAP_MLO_PEER_ID_SET HTT_RX_MLO_PEER_MAP_MLO_PEER_ID_SET #define HTT_RX_MLO_PEER_UNMAP_MLO_PEER_ID_GET HTT_RX_MLO_PEER_MAP_MLO_PEER_ID_GET /** * @brief target -> host peer extended event for additional information * * MSG_TYPE => HTT_T2H_MSG_TYPE_PEER_EXTENDED_EVENT * * @details * The following diagram shows the format of the peer extended message sent * from the target to the host. This layout assumes the target operates * as little-endian. * * This message always contains a SW peer ID. The main purpose of the * SW peer ID is to tell the host what peer ID logical link id will be tagged * with, so that the host can use that peer ID to determine which link * transmitted the rx/tx frame. * * This message also contains MLO logical link id assigned to peer * with sw_peer_id if it is valid ML link peer. * * * |31 28|27 24|23 20|19|18 16|15 8|7 0| * |---------------------------------------------------------------------------| * | VDEV_ID | SW peer ID | msg type | * |---------------------------------------------------------------------------| * | MAC addr 3 | MAC addr 2 | MAC addr 1 | MAC addr 0 | * |---------------------------------------------------------------------------| * | Reserved |V | LINK ID | MAC addr 5 | MAC addr 4 | * |---------------------------------------------------------------------------| * | Reserved | * |---------------------------------------------------------------------------| * | Reserved | * |---------------------------------------------------------------------------| * * Where: * LINK_ID (LOGICAL) - 3 Bits Bit16,17,18 of 3rd byte * V (valid) - 1 Bit Bit19 of 3rd byte * * The following field definitions describe the format of the rx peer extended * event messages sent from the target to the host. * MSG_TYPE * Bits 7:0 * Purpose: identifies this as an rx MLO peer extended information message * Value: 0x39 (HTT_T2H_MSG_TYPE_PEER_EXTENDED_EVENT) * - PEER_ID (a.k.a. SW_PEER_ID) * Bits 8:23 * Purpose: The peer ID (index) that WAL has allocated * Value: (rx) peer ID * - VDEV_ID * Bits 24:31 * Purpose: Gives the vdev id of peer with peer_id as above. * Value: VDEV ID of wal_peer * * - MAC_ADDR_L32 * Bits 31:0 * Purpose: Identifies which peer node the peer ID is for. * Value: lower 4 bytes of peer node's MAC address * * - MAC_ADDR_U16 * Bits 15:0 * Purpose: Identifies which peer node the peer ID is for. * Value: upper 2 bytes of peer node's MAC address * Rest all bits are reserved for future expansion * - LOGICAL_LINK_ID * Bits 18:16 * Purpose: Gives the logical link id of peer with peer_id as above. This * field should be taken alongwith LOGICAL_LINK_ID_VALID * Value: Logical link id used by wal_peer * - LOGICAL_LINK_ID_VALID * Bit 19 * Purpose: Clarifies whether the logical link id of peer with peer_id as * is valid or not * Value: 0/1 indicating LOGICAL_LINK_ID is valid or not */ #define HTT_RX_PEER_EXTENDED_PEER_ID_M 0x00ffff00 #define HTT_RX_PEER_EXTENDED_PEER_ID_S 8 #define HTT_RX_PEER_EXTENDED_VDEV_ID_M 0xff000000 #define HTT_RX_PEER_EXTENDED_VDEV_ID_S 24 #define HTT_RX_PEER_EXTENDED_MAC_ADDR_L32_M 0xffffffff #define HTT_RX_PEER_EXTENDED_MAC_ADDR_L32_S 0 #define HTT_RX_PEER_EXTENDED_MAC_ADDR_U16_M 0x0000ffff #define HTT_RX_PEER_EXTENDED_MAC_ADDR_U16_S 0 #define HTT_RX_PEER_EXTENDED_LOGICAL_LINK_ID_M 0x00070000 #define HTT_RX_PEER_EXTENDED_LOGICAL_LINK_ID_S 16 #define HTT_RX_PEER_EXTENDED_LOGICAL_LINK_ID_VALID_M 0x00080000 #define HTT_RX_PEER_EXTENDED_LOGICAL_LINK_ID_VALID_S 19 #define HTT_RX_PEER_EXTENDED_PEER_ID_SET(word, value) \ do { \ HTT_CHECK_SET_VAL(HTT_RX_PEER_MAP_PEER_ID, value); \ (word) |= (value) << HTT_RX_PEER_EXTENDED_PEER_ID_S; \ } while (0) #define HTT_RX_PEER_EXTENDED_PEER_ID_GET(word) \ (((word) & HTT_RX_PEER_EXTENDED_PEER_ID_M) >> HTT_RX_PEER_EXTENDED_PEER_ID_S) #define HTT_RX_PEER_EXTENDED_VDEV_ID_SET(word, value) \ do { \ HTT_CHECK_SET_VAL(HTT_RX_PEER_EXTENDED_VDEV_ID, value); \ (word) |= (value) << HTT_RX_PEER_EXTENDED_VDEV_ID_S; \ } while (0) #define HTT_RX_PEER_EXTENDED_VDEV_ID_GET(word) \ (((word) & HTT_RX_PEER_EXTENDED_VDEV_ID_M) >> HTT_RX_PEER_EXTENDED_VDEV_ID_S) #define HTT_RX_PEER_EXTENDED_LOGICAL_LINK_ID_SET(word, value) \ do { \ HTT_CHECK_SET_VAL(HTT_RX_PEER_EXTENDED_LOGICAL_LINK_ID, value); \ (word) |= (value) << HTT_RX_PEER_EXTENDED_LOGICAL_LINK_ID_S; \ } while (0) #define HTT_RX_PEER_EXTENDED_LOGICAL_LINK_ID_GET(word) \ (((word) & HTT_RX_PEER_EXTENDED_LOGICAL_LINK_ID_M) >> HTT_RX_PEER_EXTENDED_LOGICAL_LINK_ID_S) #define HTT_RX_PEER_EXTENDED_LOGICAL_LINK_ID_VALID_SET(word, value) \ do { \ HTT_CHECK_SET_VAL(HTT_RX_PEER_EXTENDED_LOGICAL_LINK_ID_VALID, value); \ (word) |= (value) << HTT_RX_PEER_EXTENDED_LOGICAL_LINK_ID_VALID_S; \ } while (0) #define HTT_RX_PEER_EXTENDED_LOGICAL_LINK_ID_VALID_GET(word) \ (((word) & HTT_RX_PEER_EXTENDED_LOGICAL_LINK_ID_VALID_M) >> HTT_RX_PEER_EXTENDED_LOGICAL_LINK_ID_VALID_S) #define HTT_RX_PEER_EXTENDED_MAC_ADDR_OFFSET 4 /* bytes */ #define HTT_RX_PEER_EXTENDED_LOGICAL_LINK_ID_OFFSET 8 /* bytes */ #define HTT_RX_PEER_EXTENDED_LOGICAL_LINK_ID_VALID_OFFSET 8 /* bytes */ #define HTT_RX_PEER_EXTENDED_EVENT_BYTES 20 /* bytes */ /** * @brief target -> host message specifying security parameters * Loading Loading @@ -21254,6 +21384,12 @@ typedef enum htt_t2h_rx_data_msdu_err { */ HTT_RXDATA_ERR_ZERO_LEN_MSDU = 7, /* ERR_INVALID_PEER: * FW sets this error flag when MSDU is recived from invalid PEER * HOST decides to send DEAUTH or not, recyles buffer. */ HTT_RXDATA_ERR_INVALID_PEER = 8, /* add new error codes here */ HTT_RXDATA_ERR_MAX = 32
fw/htt_ppdu_stats.h +42 −4 Original line number Diff line number Diff line Loading @@ -1057,6 +1057,20 @@ typedef struct { ((_var) |= ((_val) << HTT_PPDU_STATS_USER_COMMON_TLV_CHAIN_ENABLE_BITS_S)); \ } while (0) #define HTT_PPDU_STATS_USER_COMMON_TLV_IS_SMART_ULOFDMA_BASIC_TRIG_M 0x00010000 #define HTT_PPDU_STATS_USER_COMMON_TLV_IS_SMART_ULOFDMA_BASIC_TRIG_S 16 #define HTT_PPDU_STATS_USER_COMMON_TLV_IS_SMART_ULOFDMA_BASIC_TRIG_GET(_var) \ (((_var) & HTT_PPDU_STATS_USER_COMMON_TLV_IS_SMART_ULOFDMA_BASIC_TRIG_M) >> \ HTT_PPDU_STATS_USER_COMMON_TLV_IS_SMART_ULOFDMA_BASIC_TRIG_S) #define HTT_PPDU_STATS_USER_COMMON_TLV_IS_SMART_ULOFDMA_BASIC_TRIG_SET(_var, _val) \ do { \ HTT_CHECK_SET_VAL(HTT_PPDU_STATS_USER_COMMON_TLV_IS_SMART_ULOFDMA_BASIC_TRIG, _val); \ ((_var) |= ((_val) << HTT_PPDU_STATS_USER_COMMON_TLV_IS_SMART_ULOFDMA_BASIC_TRIG_S)); \ } while (0) #define HTT_PPDU_STATS_USER_COMMON_TLV_TX_PWR_CHAINS_PER_U32 4 #define HTT_PPDU_STATS_USER_COMMON_TLV_TX_PWR_MASK 0x000000ff Loading Loading @@ -1194,10 +1208,15 @@ typedef struct { * Default value: 1 * tx_pwr[0] value is used for all chains if chain_enable_bits field * is set to 1. * * is_smart_ulofdma_basic_trig: * To check if user grouped in UL OFDMA Basic Trigger Frame is * due to Smart Basic Trigger. */ A_UINT32 tx_pwr_multiplier : 8, chain_enable_bits : 8, reserved2 : 16; is_smart_ulofdma_basic_trig: 1, reserved2 : 15; /* * Transmit powers (signed values packed into unsigned bitfields) Loading Loading @@ -1819,6 +1838,19 @@ typedef enum HTT_PPDU_STATS_RESP_PPDU_TYPE HTT_PPDU_STATS_RESP_PPDU_TYPE; ((_var) |= ((_val) << HTT_PPDU_STATS_USER_RATE_TLV_EXTRA_EHT_LTF_S)); \ } while (0) #define HTT_PPDU_STATS_USER_RATE_TLV_IS_MIN_RATE_M 0x00020000 #define HTT_PPDU_STATS_USER_RATE_TLV_IS_MIN_RATE_S 17 #define HTT_PPDU_STATS_USER_RATE_TLV_IS_MIN_RATE_GET(_var) \ (((_var) & HTT_PPDU_STATS_USER_RATE_TLV_IS_MIN_RATE_M) >> \ HTT_PPDU_STATS_USER_RATE_TLV_IS_MIN_RATE_S) #define HTT_PPDU_STATS_USER_RATE_TLV_IS_MIN_RATE_SET (_var , _val) \ do { \ HTT_CHECK_SET_VAL(HTT_PPDU_STATS_USER_RATE_TLV_IS_MIN_RATE, _val); \ ((_var) |= ((_val) << HTT_PPDU_STATS_USER_RATE_TLV_IS_MIN_RATE_S)); \ } while (0) typedef enum HTT_PPDU_STATS_RU_SIZE { HTT_PPDU_STATS_RU_26, HTT_PPDU_STATS_RU_52, Loading Loading @@ -2009,7 +2041,8 @@ typedef struct { */ A_UINT32 punc_pattern_bitmap: 16, extra_eht_ltf: 1, reserved4: 15; is_min_rate: 1, reserved4: 14; } htt_ppdu_stats_user_rate_tlv; #define HTT_PPDU_STATS_USR_RATE_VALID_M 0x80000000 Loading Loading @@ -2479,6 +2512,11 @@ typedef struct { * for BW supported by Smart Antenna - 320 MHZ */ A_UINT32 max_rates_ext; /* hw_prot_dur_us: * hw protection frame's FES duration in micro seconds. */ A_UINT32 hw_prot_dur_us; } htt_ppdu_stats_user_cmpltn_common_tlv; #define HTT_PPDU_STATS_USER_CMPLTN_BA_BITMAP_TLV_TID_NUM_M 0x000000ff Loading
fw/htt_stats.h +120 −4 Original line number Diff line number Diff line Loading @@ -555,6 +555,34 @@ enum htt_dbg_ext_stats_type { */ HTT_DBG_CODEL_STATS = 58, /** HTT_DBG_ODD_PDEV_BE_TX_MU_OFDMA_STATS * PARAMS: * - No Params * RESP MSG: * - htt_tx_pdev_mpdu_stats_tlv */ HTT_DBG_ODD_PDEV_BE_TX_MU_OFDMA_STATS = 59, /** HTT_DBG_EXT_STATS_PDEV_UL_TRIGGER * PARAMS: * - No Params * RESP MSG: * - htt_rx_pdev_be_ul_ofdma_user_stats_tlv */ HTT_DBG_ODD_UL_BE_OFDMA_STATS = 60, /** HTT_DBG_ODD_BE_TXBF_OFDMA_STATS */ HTT_DBG_ODD_BE_TXBF_OFDMA_STATS = 61, /** HTT_DBG_ODD_STATS_PDEV_BE_UL_MUMIMO_TRIG_STATS * PARAMS: * - No Params * RESP MSG: * - htt_rx_pdev_be_ul_ofdma_user_stats_tlv */ HTT_DBG_ODD_STATS_PDEV_BE_UL_MUMIMO_TRIG_STATS = 62, /* keep this last */ HTT_DBG_NUM_EXT_STATS = 256, Loading Loading @@ -1636,6 +1664,13 @@ typedef struct { #define HTT_PEER_DETAILS_ML_PEER_ID_S 1 #define HTT_PEER_DETAILS_LINK_IDX_M 0x001fe000 #define HTT_PEER_DETAILS_LINK_IDX_S 13 #define HTT_PEER_DETAILS_USE_PPE_M 0x00200000 #define HTT_PEER_DETAILS_USE_PPE_S 21 #define HTT_PEER_DETAILS_SRC_INFO_M 0x00000fff #define HTT_PEER_DETAILS_SRC_INFO_S 0 #define HTT_PEER_DETAILS_SET(word, httsym, val) \ do { \ Loading Loading @@ -1664,7 +1699,11 @@ typedef struct { A_UINT32 ml_peer_id_valid : 1, /* [0:0] */ ml_peer_id : 12, /* [12:1] */ link_idx : 8, /* [20:13] */ rsvd : 11; /* [31:21] */ use_ppe : 1, /* [21:21] */ rsvd0 : 10; /* [31:22] */ /* Dword 9 */ A_UINT32 src_info : 12, /* [11:0] */ rsvd1 : 20; /* [31:12] */ } htt_peer_details_tlv; typedef struct { Loading Loading @@ -2417,6 +2456,8 @@ typedef enum { #define HTT_TX_NUM_MUMIMO_GRP_INVALID_WORDS \ (HTT_STATS_MAX_MUMIMO_GRP_SZ * HTT_STATS_MAX_INVALID_REASON_CODE) #define HTT_MAX_NUM_SBT_INTR 4 typedef struct { htt_tlv_hdr_t tlv_hdr; Loading Loading @@ -2469,6 +2510,19 @@ typedef struct { /** 11AX HE MU Standalone Freq. BSRP Trigger completed with error(s) */ A_UINT32 standalone_ax_bsr_trigger_err[HTT_NUM_AC_WMM]; /* END DEPRECATED FIELDS */ /** smart_basic_trig_sch_histogram: * Count how many times the interval between predictive basic triggers * sent to a given STA based on analysis of that STA's traffic patterns * is within a given range: * * smart_basic_trig_sch_histogram[0]: SBT interval <= 10 ms * smart_basic_trig_sch_histogram[1]: 10 ms < SBT interval <= 20 ms * smart_basic_trig_sch_histogram[2]: 20 ms < SBT interval <= 30 ms * smart_basic_trig_sch_histogram[3]: 30 ms < SBT interval <= 40 ms * * (Smart basic triggers are only used with intervals <= 40 ms.) */ A_UINT32 smart_basic_trig_sch_histogram[HTT_MAX_NUM_SBT_INTR]; } htt_tx_selfgen_cmn_stats_tlv; typedef struct { Loading Loading @@ -6500,8 +6554,11 @@ typedef enum { HTT_TX_AX_SOUNDING_MODE = 1, HTT_TX_BE_SOUNDING_MODE = 2, HTT_TX_CMN_SOUNDING_MODE = 3, HTT_TX_CV_CORR_MODE = 4, } htt_stats_sounding_tx_mode; #define HTT_TX_CV_CORR_MAX_NUM_COLUMNS 8 typedef struct { htt_tlv_hdr_t tlv_hdr; A_UINT32 tx_sounding_mode; /* HTT_TX_XX_SOUNDING_MODE */ Loading Loading @@ -6614,6 +6671,65 @@ typedef struct { A_UINT32 adaptive_snd_kicked_in; /** Total number of times we switched back to normal sounding interval */ A_UINT32 adaptive_snd_back_to_default; /** * Below are CV correlation feature related stats. * This feature is used for DL MU MIMO, but is not available * from certain legacy targets. */ /** number of CV Correlation triggers for online mode */ A_UINT32 cv_corr_trigger_online_mode; /** number of CV Correlation triggers for offline mode */ A_UINT32 cv_corr_trigger_offline_mode; /** number of CV Correlation triggers for hybrid mode */ A_UINT32 cv_corr_trigger_hybrid_mode; /** number of CV Correlation triggers with computation level 0 */ A_UINT32 cv_corr_trigger_computation_level_0; /** number of CV Correlation triggers with computation level 1 */ A_UINT32 cv_corr_trigger_computation_level_1; /** number of CV Correlation triggers with computation level 2 */ A_UINT32 cv_corr_trigger_computation_level_2; /** number of users for which CV Correlation was triggered */ A_UINT32 cv_corr_trigger_num_users[HTT_TX_CV_CORR_MAX_NUM_COLUMNS]; /** number of streams for which CV Correlation was triggered */ A_UINT32 cv_corr_trigger_num_streams[HTT_TX_CV_CORR_MAX_NUM_COLUMNS]; /** number of CV Correlation buffers received through IPC tickle */ A_UINT32 cv_corr_upload_total_buf_received; /** number of CV Correlation buffers fed back to the IPC ring */ A_UINT32 cv_corr_upload_total_buf_fed_back; /** number of CV Correlation buffers for which processing failed */ A_UINT32 cv_corr_upload_total_processing_failed; /** * number of CV Correlation buffers for which processing failed, * due to no users being present in parsed buffer */ A_UINT32 cv_corr_upload_failed_total_users_zero; /** * number of CV Correlation buffers for which processing failed, * due to number of users present in parsed buffer exceeded * CV_CORR_MAX_NUM_COLUMNS */ A_UINT32 cv_corr_upload_failed_total_users_exceeded; /** * number of CV Correlation buffers for which processing failed, * due to peer pointer for parsed peer not available */ A_UINT32 cv_corr_upload_failed_peer_not_found; /** * number of CV Correlation buffers for which processing encountered, * Nss of peer exceeding SCHED_ALGO_MAX_SUPPORTED_MUMIMO_NSS */ A_UINT32 cv_corr_upload_user_nss_exceeded; /** * number of CV Correlation buffers for which processing encountered, * invalid reverse look up index for fetching CV correlation results */ A_UINT32 cv_corr_upload_invalid_lookup_index; /** number of users present in uploaded CV Correlation results buffer */ A_UINT32 cv_corr_upload_total_num_users[HTT_TX_CV_CORR_MAX_NUM_COLUMNS]; /** number of streams present in uploaded CV Correlation results buffer */ A_UINT32 cv_corr_upload_total_num_streams[HTT_TX_CV_CORR_MAX_NUM_COLUMNS]; } htt_tx_sounding_stats_tlv; /* STATS_TYPE : HTT_DBG_EXT_STATS_TX_SOUNDING_INFO Loading
fw/wmi_services.h +7 −0 Original line number Diff line number Diff line Loading @@ -632,6 +632,13 @@ typedef enum { WMI_SERVICE_MLO_TID_TO_LINK_MAPPING_SUPPORT = 379, /* Indicates FW supports TID-TO-LINK mapping */ WMI_SERVICE_PER_LINK_STATS_SUPPORT = 380, /* Indicates FW supports per link stats for MLO */ WMI_SERVICE_N_LINK_MLO_SUPPORT = 381, /* Indicate FW supports N MLO link & vdev re-purpose between links */ WMI_SERVICE_ATF_MAX_CLIENT_512_SUPPORT = 382, /* Indicates FW supports maximum of 512 clients when ATF is enabled */ WMI_SERVICE_FISA_DYNAMIC_MSDU_AGGR_SIZE_SUPPORT = 383, /* Indicates FW support for FISA aggregation size up to 64 instead of only 16 */ WMI_SERVICE_BRIDGE_VDEV_SUPPORT = 384, /* Indicated FW supports Bridge VDEV */ WMI_SERVICE_MLO_MODE1_RECOVERY_SUPPORTED = 385, /* Indicate fw support for mlo mode1 recovery */ WMI_SERVICE_TX_PWR_PER_PPDU_STATS_SUPPORT = 386, /* FW support to check tx power stats per PPDU */ WMI_SERVICE_DISABLE_WDS_PEER_MAP_UNMAP_EVENT_SUPPORT = 387, /* Indicate FW support to disable wds peer map/unmap events */ WMI_SERVICE_PDEV_WSI_STATS_INFO_SUPPORT = 388, /* Support for WSI Stats Info. */ WMI_MAX_EXT2_SERVICE Loading