diff --git a/fw/htt.h b/fw/htt.h index 3273beb9e331..ba5b42d6e3e6 100644 --- a/fw/htt.h +++ b/fw/htt.h @@ -264,9 +264,10 @@ * 3.134 Add qdata_refill flag in rx_peer_metadata_v1a. * 3.135 Add HTT_HOST4_TO_FW_RXBUF_RING def. * 3.136 Add htt_ext_present flag in htt_tx_tcl_global_seq_metadata. + * 3.137 Add more HTT_SDWF_MSDUQ_CFG_IND_ERROR codes. */ #define HTT_CURRENT_VERSION_MAJOR 3 -#define HTT_CURRENT_VERSION_MINOR 136 +#define HTT_CURRENT_VERSION_MINOR 137 #define HTT_NUM_TX_FRAG_DESC 1024 @@ -834,6 +835,10 @@ typedef enum { HTT_STATS_TXBF_OFDMA_BE_PARBW_TAG = 201, /* htt_stats_txbf_ofdma_be_parbw_tlv */ HTT_STATS_RX_PDEV_RSSI_HIST_TAG = 202, /* htt_stats_rx_pdev_rssi_hist_tlv */ HTT_STATS_TX_VDEV_NSS_TAG = 203, /* htt_stats_tx_vdev_nss_tlv */ + HTT_STATS_PDEV_SPECTRAL_TAG = 204, /* htt_stats_pdev_spectral_tlv */ + HTT_STATS_PDEV_RTT_DELAY_TAG = 205, /* htt_stats_pdev_rtt_delay_tlv */ + HTT_STATS_PDEV_AOA_TAG = 206, /* htt_stats_pdev_aoa_tlv */ + HTT_STATS_PDEV_FTM_TPCCAL_TAG = 207, /* htt_stats_pdev_ftm_tpccal_tlv */ HTT_STATS_MAX_TAG, } htt_stats_tlv_tag_t; @@ -14166,11 +14171,11 @@ PREPACK struct htt_tx_offload_deliver_ind_hdr_t * | VALID_MASK |(4bits) | SET_NUM | HW peer ID / AST index | * | (8bits) | | (4bits) | | * |-----------------+--------+--+--+--+--------------------------------------| - * | RESERVED |E |O | | | - * | (13bits) |A |A |NH| on-Chip PMAC_RXPCU AST index | - * | |V |V | | | + * | RESERVED |C|E |O | | | + * | (12bits) |I|A |A |NH| on-Chip PMAC_RXPCU AST index | + * | |V|V |V | | | * |-----------------+--------------------+-----------------------------------| - * | HTT_MSDU_IDX_ | RESERVED | | + * | HTT_MSDU_IDX_ | CLASSIFY_INFO_IDX | | * | VALID_MASK_EXT | (8bits) | EXT AST index | * | (8bits) | | | * |-----------------+--------------------+-----------------------------------| @@ -14180,11 +14185,13 @@ PREPACK struct htt_tx_offload_deliver_ind_hdr_t * |--------------------------------------------------------------------------| * * Where: + * CIV = CLASSIFY_INFO_IDX_VALID flag, for CLASSIFY_INFO_IDX * EAV = EXT_AST_VALID flag, for "EXT AST index" * OAV = ONCHIP_AST_VALID flag, for "on-Chip PMAC_RXPCU AST index" * NH = Next Hop * The following field definitions describe the format of the rx peer map v3 * messages sent from the target to the host. + * dword 0: * - MSG_TYPE * Bits 7:0 * Purpose: identifies this as a peer map v3 message @@ -14195,10 +14202,12 @@ PREPACK struct htt_tx_offload_deliver_ind_hdr_t * - SW_PEER_ID * Bits 31:16 * Purpose: The peer ID (index) that WAL has allocated for this peer. + * dword 1: * - 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 + * dword 2: * - MAC_ADDR_U16 * Bits 15:0 * Purpose: Identifies which peer node the peer ID is for. @@ -14207,6 +14216,7 @@ PREPACK struct htt_tx_offload_deliver_ind_hdr_t * Bits 31:16 * Purpose: The multicast peer ID (index) * Value: set to HTT_INVALID_PEER if not valid + * dword 3: * - HW_PEER_ID / AST_INDEX * Bits 15:0 * Purpose: Identifies the HW peer ID corresponding to the peer MAC @@ -14226,6 +14236,7 @@ PREPACK struct htt_tx_offload_deliver_ind_hdr_t * - HTT_MSDU_IDX_VALID_MASK * Bits 31:24 * Purpose: Shows MSDU indexes valid mask for AST_INDEX + * dword 4: * - ONCHIP_AST_IDX / RESERVED * Bits 15:0 * Purpose: This field is valid only when split AST feature is enabled. @@ -14233,28 +14244,38 @@ PREPACK struct htt_tx_offload_deliver_ind_hdr_t * If valid, identifies the HW peer ID corresponding to the peer MAC * address, this ast_idx is used for LMAC modules for RXPCU. * - NEXT_HOP - * Bits 16 + * Bit 16 * Purpose: Flag indicates next_hop AST entry used for WDS * (Wireless Distribution System). * - ONCHIP_AST_VALID - * Bits 17 + * Bit 17 * Purpose: Flag indicates valid data behind of the ONCHIP_AST_IDX field * - EXT_AST_VALID - * Bits 18 + * Bit 18 * Purpose: Flag indicates valid data behind of the EXT_AST_INDEX field + * - CLASSIFY_INFO_IDX_VALID + * Bit 19 + * Purpose: If set, indicates that the CLASSIFY_INFO_IDX field is valid; + * else, ignore CLASSIFY_INFO_IDX + * dword 5: * - EXT_AST_INDEX * Bits 15:0 * Purpose: This field describes Extended AST index * Valid if EXT_AST_VALID flag set + * - CLASSIFY_INFO_IDX + * Bits 23:16 + * Purpose: assists TCL-L Block in Boron family of chips to + * start finding the flow from the corresponding + * entry in the FLOW LOOK UP TABLE * - HTT_MSDU_IDX_VALID_MASK_EXT * Bits 31:24 * Purpose: Shows MSDU indexes valid mask for EXT_AST_INDEX */ /* dword 0 */ -#define HTT_RX_PEER_MAP_V3_SW_PEER_ID_M 0xffff0000 -#define HTT_RX_PEER_MAP_V3_SW_PEER_ID_S 16 #define HTT_RX_PEER_MAP_V3_VDEV_ID_M 0x0000ff00 #define HTT_RX_PEER_MAP_V3_VDEV_ID_S 8 +#define HTT_RX_PEER_MAP_V3_SW_PEER_ID_M 0xffff0000 +#define HTT_RX_PEER_MAP_V3_SW_PEER_ID_S 16 /* dword 1 */ #define HTT_RX_PEER_MAP_V3_MAC_ADDR_L32_M 0xffffffff #define HTT_RX_PEER_MAP_V3_MAC_ADDR_L32_S 0 @@ -14264,26 +14285,30 @@ PREPACK struct htt_tx_offload_deliver_ind_hdr_t #define HTT_RX_PEER_MAP_V3_MULTICAST_SW_PEER_ID_M 0xffff0000 #define HTT_RX_PEER_MAP_V3_MULTICAST_SW_PEER_ID_S 16 /* dword 3 */ -#define HTT_RX_PEER_MAP_V3_MSDU_IDX_VM_AST_M 0xff000000 -#define HTT_RX_PEER_MAP_V3_MSDU_IDX_VM_AST_S 24 -#define HTT_RX_PEER_MAP_V3_CACHE_SET_NUM_M 0x000f0000 -#define HTT_RX_PEER_MAP_V3_CACHE_SET_NUM_S 16 #define HTT_RX_PEER_MAP_V3_HW_PEER_ID_M 0x0000ffff #define HTT_RX_PEER_MAP_V3_HW_PEER_ID_S 0 +#define HTT_RX_PEER_MAP_V3_CACHE_SET_NUM_M 0x000f0000 +#define HTT_RX_PEER_MAP_V3_CACHE_SET_NUM_S 16 +#define HTT_RX_PEER_MAP_V3_MSDU_IDX_VM_AST_M 0xff000000 +#define HTT_RX_PEER_MAP_V3_MSDU_IDX_VM_AST_S 24 /* dword 4 */ -#define HTT_RX_PEER_MAP_V3_EXT_AST_VALID_FLAG_M 0x00040000 -#define HTT_RX_PEER_MAP_V3_EXT_AST_VALID_FLAG_S 18 -#define HTT_RX_PEER_MAP_V3_ONCHIP_AST_VALID_FLAG_M 0x00020000 -#define HTT_RX_PEER_MAP_V3_ONCHIP_AST_VALID_FLAG_S 17 -#define HTT_RX_PEER_MAP_V3_NEXT_HOP_M 0x00010000 -#define HTT_RX_PEER_MAP_V3_NEXT_HOP_S 16 -#define HTT_RX_PEER_MAP_V3_ON_CHIP_PMAC_RXPCU_AST_IDX_M 0x0000ffff -#define HTT_RX_PEER_MAP_V3_ON_CHIP_PMAC_RXPCU_AST_IDX_S 0 +#define HTT_RX_PEER_MAP_V3_ON_CHIP_PMAC_RXPCU_AST_IDX_M 0x0000ffff +#define HTT_RX_PEER_MAP_V3_ON_CHIP_PMAC_RXPCU_AST_IDX_S 0 +#define HTT_RX_PEER_MAP_V3_NEXT_HOP_M 0x00010000 +#define HTT_RX_PEER_MAP_V3_NEXT_HOP_S 16 +#define HTT_RX_PEER_MAP_V3_ONCHIP_AST_VALID_FLAG_M 0x00020000 +#define HTT_RX_PEER_MAP_V3_ONCHIP_AST_VALID_FLAG_S 17 +#define HTT_RX_PEER_MAP_V3_EXT_AST_VALID_FLAG_M 0x00040000 +#define HTT_RX_PEER_MAP_V3_EXT_AST_VALID_FLAG_S 18 +#define HTT_RX_PEER_MAP_V3_CLASSIFY_INFO_IDX_VALID_FLAG_M 0x00080000 +#define HTT_RX_PEER_MAP_V3_CLASSIFY_INFO_IDX_VALID_FLAG_S 19 /* dword 5 */ -#define HTT_RX_PEER_MAP_V3_MSDU_IDX_VM_EXT_AST_M 0xff000000 -#define HTT_RX_PEER_MAP_V3_MSDU_IDX_VM_EXT_AST_S 24 #define HTT_RX_PEER_MAP_V3_EXT_AST_IDX_M 0x0000ffff #define HTT_RX_PEER_MAP_V3_EXT_AST_IDX_S 0 +#define HTT_RX_PEER_MAP_V3_CLASSIFY_INFO_IDX_M 0x00ff0000 +#define HTT_RX_PEER_MAP_V3_CLASSIFY_INFO_IDX_S 16 +#define HTT_RX_PEER_MAP_V3_MSDU_IDX_VM_EXT_AST_M 0xff000000 +#define HTT_RX_PEER_MAP_V3_MSDU_IDX_VM_EXT_AST_S 24 #define HTT_RX_PEER_MAP_V3_VDEV_ID_SET(word, value) \ do { \ @@ -14365,6 +14390,14 @@ PREPACK struct htt_tx_offload_deliver_ind_hdr_t #define HTT_RX_PEER_MAP_V3_EXT_AST_VALID_FLAG_GET(word) \ (((word) & HTT_RX_PEER_MAP_V3_EXT_AST_VALID_FLAG_M) >> HTT_RX_PEER_MAP_V3_EXT_AST_VALID_FLAG_S) +#define HTT_RX_PEER_MAP_V3_CLASSIFY_INFO_IDX_VALID_FLAG_SET(word, value) \ + do { \ + HTT_CHECK_SET_VAL(HTT_RX_PEER_MAP_V3_CLASSIFY_INFO_IDX_VALID_FLAG, value); \ + (word) |= (value) << HTT_RX_PEER_MAP_V3_CLASSIFY_INFO_IDX_VALID_FLAG_S; \ + } while (0) +#define HTT_RX_PEER_MAP_V3_CLASSIFY_INFO_IDX_VALID_FLAG_GET(word) \ + (((word) & HTT_RX_PEER_MAP_V3_CLASSIFY_INFO_IDX_VALID_FLAG_M) >> HTT_RX_PEER_MAP_V3_CLASSIFY_INFO_IDX_VALID_FLAG_S) + #define HTT_RX_PEER_MAP_V3_EXT_AST_IDX_SET(word, value) \ do { \ HTT_CHECK_SET_VAL(HTT_RX_PEER_MAP_V3_EXT_AST_IDX, value); \ @@ -14373,6 +14406,14 @@ PREPACK struct htt_tx_offload_deliver_ind_hdr_t #define HTT_RX_PEER_MAP_V3_EXT_AST_IDX_GET(word) \ (((word) & HTT_RX_PEER_MAP_V3_EXT_AST_IDX_M) >> HTT_RX_PEER_MAP_V3_EXT_AST_IDX_S) +#define HTT_RX_PEER_MAP_V3_CLASSIFY_INFO_IDX_SET(word, value) \ + do { \ + HTT_CHECK_SET_VAL(HTT_RX_PEER_MAP_V3_CLASSIFY_INFO_IDX, value); \ + (word) |= (value) << HTT_RX_PEER_MAP_V3_CLASSIFY_INFO_IDX_S; \ + } while (0) +#define HTT_RX_PEER_MAP_V3_CLASSIFY_INFO_IDX_GET(word) \ + (((word) & HTT_RX_PEER_MAP_V3_CLASSIFY_INFO_IDX_M) >> HTT_RX_PEER_MAP_V3_CLASSIFY_INFO_IDX_S) + #define HTT_RX_PEER_MAP_V3_MSDU_IDX_VM_EXT_AST_SET(word, value) \ do { \ HTT_CHECK_SET_VAL(HTT_RX_PEER_MAP_V3_MSDU_IDX_VM_EXT_AST, value); \ @@ -14381,17 +14422,19 @@ PREPACK struct htt_tx_offload_deliver_ind_hdr_t #define HTT_RX_PEER_MAP_V3_MSDU_IDX_VM_EXT_AST_GET(word) \ (((word) & HTT_RX_PEER_MAP_V3_MSDU_IDX_VM_EXT_AST_M) >> HTT_RX_PEER_MAP_V3_MSDU_IDX_VM_EXT_AST_S) -#define HTT_RX_PEER_MAP_V3_MAC_ADDR_OFFSET 4 /* bytes */ -#define HTT_RX_PEER_MAP_V3_MULTICAST_SW_PEER_ID_OFFSET 8 /* bytes */ -#define HTT_RX_PEER_MAP_V3_HW_PEER_ID_OFFSET 12 /* bytes */ -#define HTT_RX_PEER_MAP_V3_CACHE_SET_NUM_OFFSET 12 /* bytes */ -#define HTT_RX_PEER_MAP_V3_MSDU_IDX_VM_AST_OFFSET 12 /* bytes */ -#define HTT_RX_PEER_MAP_V3_ON_CHIP_PMAC_RXPCU_AST_IDX_OFFSET 16 /* bytes */ -#define HTT_RX_PEER_MAP_V3_NEXT_HOP_OFFSET 16 /* bytes */ -#define HTT_RX_PEER_MAP_V3_ONCHIP_AST_VALID_FLAG_OFFSET 16 /* bytes */ -#define HTT_RX_PEER_MAP_V3_EXT_AST_VALID_FLAG_OFFSET 16 /* bytes */ -#define HTT_RX_PEER_MAP_V3_EXT_AST_IDX_OFFSET 20 /* bytes */ -#define HTT_RX_PEER_MAP_V3_MSDU_IDX_VM_EXT_AST_OFFSET 20 /* bytes */ +#define HTT_RX_PEER_MAP_V3_MAC_ADDR_OFFSET 4 /* bytes */ +#define HTT_RX_PEER_MAP_V3_MULTICAST_SW_PEER_ID_OFFSET 8 /* bytes */ +#define HTT_RX_PEER_MAP_V3_HW_PEER_ID_OFFSET 12 /* bytes */ +#define HTT_RX_PEER_MAP_V3_CACHE_SET_NUM_OFFSET 12 /* bytes */ +#define HTT_RX_PEER_MAP_V3_MSDU_IDX_VM_AST_OFFSET 12 /* bytes */ +#define HTT_RX_PEER_MAP_V3_ON_CHIP_PMAC_RXPCU_AST_IDX_OFFSET 16 /* bytes */ +#define HTT_RX_PEER_MAP_V3_NEXT_HOP_OFFSET 16 /* bytes */ +#define HTT_RX_PEER_MAP_V3_ONCHIP_AST_VALID_FLAG_OFFSET 16 /* bytes */ +#define HTT_RX_PEER_MAP_V3_EXT_AST_VALID_FLAG_OFFSET 16 /* bytes */ +#define HTT_RX_PEER_MAP_V3_CLASSIFY_INFO_IDX_VALID_FLAG_OFFSET 16 /* bytes */ +#define HTT_RX_PEER_MAP_V3_EXT_AST_IDX_OFFSET 20 /* bytes */ +#define HTT_RX_PEER_MAP_V3_CLASSIFY_INFO_IDX_OFFSET 20 /* bytes */ +#define HTT_RX_PEER_MAP_V3_MSDU_IDX_VM_EXT_AST_OFFSET 20 /* bytes */ #define HTT_RX_PEER_MAP_V3_BYTES 32 @@ -23096,15 +23139,18 @@ typedef struct _htt_tx_latency_stats { /* HTT_T2H_MSG_TYPE_SDWF_MSDUQ_CFG_IND */ typedef enum { - HTT_SDWF_MSDUQ_CFG_IND_ERROR_NONE = 0x00, - HTT_SDWF_MSDUQ_CFG_IND_ERROR_PEER_DELETE_IN_PROG = 0x01, - HTT_SDWF_MSDUQ_CFG_IND_ERROR_SW_MSDUQ_NULL = 0x02, - HTT_SDWF_MSDUQ_CFG_IND_ERROR_MSDUQ_LOCATE_ERROR = 0x03, - HTT_SDWF_MSDUQ_CFG_IND_ERROR_QPEER_NULL = 0x04, - 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_NONE = 0x00, + HTT_SDWF_MSDUQ_CFG_IND_ERROR_PEER_DELETE_IN_PROG = 0x01, + HTT_SDWF_MSDUQ_CFG_IND_ERROR_SW_MSDUQ_NULL = 0x02, + HTT_SDWF_MSDUQ_CFG_IND_ERROR_MSDUQ_LOCATE_ERROR = 0x03, + HTT_SDWF_MSDUQ_CFG_IND_ERROR_QPEER_NULL = 0x04, + 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_INCORRECT_SVC_CLASS = 0x09, + HTT_SDWF_MSDUQ_CFG_IND_ERROR_DISABLED_SVC_CLASS = 0x0a, + HTT_SDWF_MSDUQ_CFG_IND_ERROR_SVC_CLASS_OUT_OF_RANGE = 0x0b, } HTT_SDWF_MSDUQ_CFG_IND_ERROR_CODE_E; PREPACK struct htt_t2h_sdwf_msduq_cfg_ind { diff --git a/fw/htt_stats.h b/fw/htt_stats.h index 7dac64221028..c0eccd71a494 100644 --- a/fw/htt_stats.h +++ b/fw/htt_stats.h @@ -363,7 +363,7 @@ enum htt_dbg_ext_stats_type { */ HTT_DBG_EXT_STATS_FSE_RX = 28, - /** HTT_DBG_EXT_PEER_CTRL_PATH_TXRX_STATS + /** HTT_DBG_EXT_STATS_PEER_CTRL_PATH_TXRX * PARAMS: * - config_param0: [Bit0] : [1] for mac_addr based request * - config_param1: [Bit31 : Bit0] mac_addr31to0 @@ -371,7 +371,10 @@ enum htt_dbg_ext_stats_type { * RESP MSG: * - htt_ctrl_path_txrx_stats_t */ - HTT_DBG_EXT_PEER_CTRL_PATH_TXRX_STATS = 29, + HTT_DBG_EXT_STATS_PEER_CTRL_PATH_TXRX = 29, + /* retain the deprecated name as an alias */ + HTT_DBG_EXT_PEER_CTRL_PATH_TXRX_STATS = + HTT_DBG_EXT_STATS_PEER_CTRL_PATH_TXRX, /** HTT_DBG_EXT_STATS_PDEV_RX_RATE_EXT * PARAMS: @@ -393,15 +396,18 @@ enum htt_dbg_ext_stats_type { */ HTT_DBG_EXT_STATS_TXBF_OFDMA = 32, - /** HTT_DBG_EXT_STA_11AX_UL_STATS + /** HTT_DBG_EXT_STATS_STA_11AX_UL * PARAMS: * - No Params * RESP MSG: * - htt_sta_11ax_ul_stats */ - HTT_DBG_EXT_STA_11AX_UL_STATS = 33, + HTT_DBG_EXT_STATS_STA_11AX_UL = 33, + /* retain the deprecated name as an alias */ + HTT_DBG_EXT_STA_11AX_UL_STATS = + HTT_DBG_EXT_STATS_STA_11AX_UL, - /** HTT_DBG_EXT_VDEV_RTT_RESP_STATS + /** HTT_DBG_EXT_STATS_VDEV_RTT_RESP * PARAMS: * - config_param0: * [Bit7 : Bit0] vdev_id:8 @@ -409,61 +415,89 @@ enum htt_dbg_ext_stats_type { * RESP MSG: * - */ - HTT_DBG_EXT_VDEV_RTT_RESP_STATS = 34, + HTT_DBG_EXT_STATS_VDEV_RTT_RESP = 34, + /* retain the deprecated name as an alias */ + HTT_DBG_EXT_VDEV_RTT_RESP_STATS = + HTT_DBG_EXT_STATS_VDEV_RTT_RESP, - /** HTT_DBG_EXT_PKTLOG_AND_HTT_RING_STATS + /** HTT_DBG_EXT_STATS_PKTLOG_AND_HTT_RING * PARAMS: * - No Params * RESP MSG: * - htt_pktlog_and_htt_ring_stats_t */ - HTT_DBG_EXT_PKTLOG_AND_HTT_RING_STATS = 35, + HTT_DBG_EXT_STATS_PKTLOG_AND_HTT_RING = 35, + /* retain the deprecated name as an alias */ + HTT_DBG_EXT_PKTLOG_AND_HTT_RING_STATS = + HTT_DBG_EXT_STATS_PKTLOG_AND_HTT_RING, - /** HTT_DBG_EXT_STATS_DLPAGER_STATS + /** HTT_DBG_EXT_STATS_DLPAGER * PARAMS: * * RESP MSG: * - htt_dlpager_stats_t */ - HTT_DBG_EXT_STATS_DLPAGER_STATS = 36, + HTT_DBG_EXT_STATS_DLPAGER = 36, + /* retain the deprecated name as an alias */ + HTT_DBG_EXT_STATS_DLPAGER_STATS = + HTT_DBG_EXT_STATS_DLPAGER, - /** HTT_DBG_EXT_PHY_COUNTERS_AND_PHY_STATS + /** HTT_DBG_EXT_STATS_PHY * PARAMS: * - No Params * RESP MSG: * - htt_phy_counters_and_phy_stats_t */ - HTT_DBG_EXT_PHY_COUNTERS_AND_PHY_STATS = 37, + HTT_DBG_EXT_STATS_PHY = 37, + /* retain the deprecated name as an alias */ + HTT_DBG_EXT_PHY_COUNTERS_AND_PHY_STATS = + HTT_DBG_EXT_STATS_PHY, - /** HTT_DBG_EXT_VDEVS_TXRX_STATS + /** HTT_DBG_EXT_STATS_VDEVS_TXRX * PARAMS: * - No Params * RESP MSG: * - htt_vdevs_txrx_stats_t */ - HTT_DBG_EXT_VDEVS_TXRX_STATS = 38, + HTT_DBG_EXT_STATS_VDEVS_TXRX = 38, + /* retain the deprecated name as an alias */ + HTT_DBG_EXT_VDEVS_TXRX_STATS = + HTT_DBG_EXT_STATS_VDEVS_TXRX, - HTT_DBG_EXT_VDEV_RTT_INITIATOR_STATS = 39, + HTT_DBG_EXT_STATS_VDEV_RTT_INITIATOR = 39, + /* retain the deprecated name as an alias */ + HTT_DBG_EXT_VDEV_RTT_INITIATOR_STATS = + HTT_DBG_EXT_STATS_VDEV_RTT_INITIATOR, - /** HTT_DBG_EXT_PDEV_PER_STATS + /** HTT_DBG_EXT_STATS_PDEV_PER * PARAMS: * - No Params * RESP MSG: * - htt_tx_pdev_per_stats_t */ - HTT_DBG_EXT_PDEV_PER_STATS = 40, + HTT_DBG_EXT_STATS_PDEV_PER = 40, + /* retain the deprecated name as an alias */ + HTT_DBG_EXT_PDEV_PER_STATS = + HTT_DBG_EXT_STATS_PDEV_PER, - HTT_DBG_EXT_AST_ENTRIES = 41, + HTT_DBG_EXT_STATS_AST_ENTRIES = 41, + /* retain the deprecated name as an alias */ + HTT_DBG_EXT_AST_ENTRIES = + HTT_DBG_EXT_STATS_AST_ENTRIES, - /** HTT_DBG_EXT_RX_RING_STATS + /** HTT_DBG_EXT_STATS_RX_RING * PARAMS: * - No Params * RESP MSG: * - htt_rx_fw_ring_stats_tlv_v */ - HTT_DBG_EXT_RX_RING_STATS = 42, + HTT_DBG_EXT_STATS_RX_RING = 42, + /* retain the deprecated name as an alias */ + HTT_DBG_EXT_RX_RING_STATS = + HTT_DBG_EXT_STATS_RX_RING, - /** HTT_STRM_GEN_MPDUS_STATS, HTT_STRM_GEN_MPDUS_DETAILS_STATS + /** HTT_DBG_EXT_STATS_STRM_GEN_MPDUS, + * HTT_DBG_EXT_STATS_STRM_GEN_MPDUS_DETAILS * PARAMS: * - No params * RESP MSG: HTT_T2H STREAMING_STATS_IND (not EXT_STATS_CONF) @@ -472,25 +506,36 @@ enum htt_dbg_ext_stats_type { * - HTT_STRM_GEN_MPDUS_DETAILS_STATS: * htt_stats_strm_gen_mpdus_details_tlv_t */ - HTT_STRM_GEN_MPDUS_STATS = 43, - HTT_STRM_GEN_MPDUS_DETAILS_STATS = 44, + HTT_DBG_EXT_STATS_STRM_GEN_MPDUS = 43, + HTT_DBG_EXT_STATS_STRM_GEN_MPDUS_DETAILS = 44, + /* retain the deprecated names as aliases */ + HTT_STRM_GEN_MPDUS_STATS = + HTT_DBG_EXT_STATS_STRM_GEN_MPDUS, + HTT_STRM_GEN_MPDUS_DETAILS_STATS = + HTT_DBG_EXT_STATS_STRM_GEN_MPDUS_DETAILS, - /** HTT_DBG_SOC_ERROR_STATS + /** HTT_DBG_EXT_STATS_SOC_ERROR * PARAMS: * - No Params * RESP MSG: * - htt_dmac_reset_stats_tlv */ - HTT_DBG_SOC_ERROR_STATS = 45, + HTT_DBG_EXT_STATS_SOC_ERROR = 45, + /* retain the deprecated name as an alias */ + HTT_DBG_SOC_ERROR_STATS = + HTT_DBG_EXT_STATS_SOC_ERROR, - /** HTT_DBG_PDEV_PUNCTURE_STATS + /** HTT_DBG_EXT_STATS_PDEV_PUNCTURE * PARAMS: * - param 0: enum from htt_tx_pdev_puncture_stats_upload_t, indicating * the stats to upload * RESP MSG: * - one or more htt_pdev_puncture_stats_tlv, depending on param 0 */ - HTT_DBG_PDEV_PUNCTURE_STATS = 46, + HTT_DBG_EXT_STATS_PDEV_PUNCTURE = 46, + /* retain the deprecated name as an alias */ + HTT_DBG_PDEV_PUNCTURE_STATS = + HTT_DBG_EXT_STATS_PDEV_PUNCTURE, /** HTT_DBG_EXT_STATS_ML_PEERS_INFO * PARAMS: @@ -504,44 +549,59 @@ enum htt_dbg_ext_stats_type { */ HTT_DBG_EXT_STATS_ML_PEERS_INFO = 47, - /** HTT_DBG_ODD_MANDATORY_STATS + /** HTT_DBG_EXT_STATS_ODD_MANDATORY * params: * None * Response MSG: * htt_odd_mandatory_pdev_stats_tlv */ - HTT_DBG_ODD_MANDATORY_STATS = 48, + HTT_DBG_EXT_STATS_ODD_MANDATORY = 48, + /* retain the deprecated name as an alias */ + HTT_DBG_ODD_MANDATORY_STATS = + HTT_DBG_EXT_STATS_ODD_MANDATORY, - /** HTT_DBG_PDEV_SCHED_ALGO_STATS + /** HTT_DBG_EXT_STATS_PDEV_SCHED_ALGO * PARAMS: * - No Params * RESP MSG: * - htt_pdev_sched_algo_ofdma_stats_tlv */ - HTT_DBG_PDEV_SCHED_ALGO_STATS = 49, + HTT_DBG_EXT_STATS_PDEV_SCHED_ALGO = 49, + /* retain the deprecated name as an alias */ + HTT_DBG_PDEV_SCHED_ALGO_STATS = + HTT_DBG_EXT_STATS_PDEV_SCHED_ALGO, - /** HTT_DBG_ODD_MANDATORY_MUMIMO_STATS + /** HTT_DBG_EXT_STATS_ODD_MANDATORY_MUMIMO * params: * None * Response MSG: * htt_odd_mandatory_mumimo_pdev_stats_tlv */ - HTT_DBG_ODD_MANDATORY_MUMIMO_STATS = 50, - /** HTT_DBG_ODD_MANDATORY_MUOFDMA_STATS + HTT_DBG_EXT_STATS_ODD_MANDATORY_MUMIMO = 50, + /* retain the deprecated name as an alias */ + HTT_DBG_ODD_MANDATORY_MUMIMO_STATS = + HTT_DBG_EXT_STATS_ODD_MANDATORY_MUMIMO, + /** HTT_DBG_EXT_STATS_ODD_MANDATORY_MUOFDMA * params: * None * Response MSG: * htt_odd_mandatory_muofdma_pdev_stats_tlv */ - HTT_DBG_ODD_MANDATORY_MUOFDMA_STATS = 51, + HTT_DBG_EXT_STATS_ODD_MANDATORY_MUOFDMA = 51, + /* retain the deprecated name as an alias */ + HTT_DBG_ODD_MANDATORY_MUOFDMA_STATS = + HTT_DBG_EXT_STATS_ODD_MANDATORY_MUOFDMA, - /** HTT_DBG_EXT_PHY_PROF_CAL_STATS + /** HTT_DBG_EXT_STATS_PHY_PROF_CAL * params: * None * Response MSG: * htt_stats_latency_prof_cal_data_tlv */ - HTT_DBG_EXT_PHY_PROF_CAL_STATS = 52, + HTT_DBG_EXT_STATS_PHY_PROF_CAL = 52, + /* retain the deprecated name as an alias */ + HTT_DBG_EXT_PHY_PROF_CAL_STATS = + HTT_DBG_EXT_STATS_PHY_PROF_CAL, /** HTT_DBG_EXT_STATS_PDEV_BW_MGR * PARAMS: @@ -551,94 +611,127 @@ enum htt_dbg_ext_stats_type { */ HTT_DBG_EXT_STATS_PDEV_BW_MGR = 53, - /** HTT_DBG_PDEV_MBSSID_CTRL_FRAME_STATS + /** HTT_DBG_EXT_STATS_PDEV_MBSSID_CTRL_FRAME * PARAMS: * - No Params * RESP MSG: * - htt_pdev_mbssid_ctrl_frame_stats */ - HTT_DBG_PDEV_MBSSID_CTRL_FRAME_STATS = 54, + HTT_DBG_EXT_STATS_PDEV_MBSSID_CTRL_FRAME = 54, + /* retain the deprecated name as an alias */ + HTT_DBG_PDEV_MBSSID_CTRL_FRAME_STATS = + HTT_DBG_EXT_STATS_PDEV_MBSSID_CTRL_FRAME, - /** HTT_DBG_SOC_SSR_STATS + /** HTT_DBG_EXT_STATS_SOC_SSR * Used for non-MLO UMAC recovery stats. * PARAMS: * - No Params * RESP MSG: * - htt_umac_ssr_stats_tlv */ - HTT_DBG_SOC_SSR_STATS = 55, + HTT_DBG_EXT_STATS_SOC_SSR = 55, + /* retain the deprecated name as an alias */ + HTT_DBG_SOC_SSR_STATS = + HTT_DBG_EXT_STATS_SOC_SSR, - /** HTT_DBG_MLO_UMAC_SSR_STATS + /** HTT_DBG_EXT_STATS_MLO_UMAC_SSR * Used for MLO UMAC recovery stats. * PARAMS: * - No Params * RESP MSG: * - htt_mlo_umac_ssr_stats_tlv */ - HTT_DBG_MLO_UMAC_SSR_STATS = 56, + HTT_DBG_EXT_STATS_MLO_UMAC_SSR = 56, + /* retain the deprecated name as an alias */ + HTT_DBG_MLO_UMAC_SSR_STATS = + HTT_DBG_EXT_STATS_MLO_UMAC_SSR, - /** HTT_DBG_PDEV_TDMA_STATS + /** HTT_DBG_EXT_STATS_PDEV_TDMA * PARAMS: * - No Params * RESP MSG: * - htt_pdev_tdma_stats_tlv */ - HTT_DBG_PDEV_TDMA_STATS = 57, + HTT_DBG_EXT_STATS_PDEV_TDMA = 57, + /* retain the deprecated name as an alias */ + HTT_DBG_PDEV_TDMA_STATS = + HTT_DBG_EXT_STATS_PDEV_TDMA, - /** HTT_DBG_CODEL_STATS + /** HTT_DBG_EXT_STATS_CODEL * PARAMS: * - No Params * RESP MSG: * - htt_codel_svc_class_stats_tlv * - htt_codel_msduq_stats_tlv */ - HTT_DBG_CODEL_STATS = 58, + HTT_DBG_EXT_STATS_CODEL = 58, + /* retain the deprecated name as an alias */ + HTT_DBG_CODEL_STATS = + HTT_DBG_EXT_STATS_CODEL, - /** HTT_DBG_ODD_PDEV_BE_TX_MU_OFDMA_STATS + /** HTT_DBG_EXT_STATS_ODD_PDEV_BE_TX_MU_OFDMA * 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_ODD_PDEV_BE_TX_MU_OFDMA = 59, + /* retain the deprecated name as an alias */ + HTT_DBG_ODD_PDEV_BE_TX_MU_OFDMA_STATS = + HTT_DBG_EXT_STATS_ODD_PDEV_BE_TX_MU_OFDMA, - /** HTT_DBG_EXT_STATS_PDEV_UL_TRIGGER + /** HTT_DBG_EXT_STATS_ODD_UL_BE_OFDMA * PARAMS: * - No Params * RESP MSG: * - htt_rx_pdev_be_ul_ofdma_user_stats_tlv */ - HTT_DBG_ODD_UL_BE_OFDMA_STATS = 60, + HTT_DBG_EXT_STATS_ODD_UL_BE_OFDMA = 60, + /* retain the deprecated name as an alias */ + HTT_DBG_ODD_UL_BE_OFDMA_STATS = + HTT_DBG_EXT_STATS_ODD_UL_BE_OFDMA, - /** HTT_DBG_ODD_BE_TXBF_OFDMA_STATS + /** HTT_DBG_EXT_STATS_ODD_BE_TXBF_OFDMA */ - HTT_DBG_ODD_BE_TXBF_OFDMA_STATS = 61, + HTT_DBG_EXT_STATS_ODD_BE_TXBF_OFDMA = 61, + /* retain the deprecated name as an alias */ + HTT_DBG_ODD_BE_TXBF_OFDMA_STATS = + HTT_DBG_EXT_STATS_ODD_BE_TXBF_OFDMA, - /** HTT_DBG_ODD_STATS_PDEV_BE_UL_MUMIMO_TRIG_STATS + /** HTT_DBG_EXT_STATS_ODD_STATS_PDEV_BE_UL_MUMIMO_TRIG * 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, + HTT_DBG_EXT_STATS_ODD_STATS_PDEV_BE_UL_MUMIMO_TRIG = 62, + /* retain the deprecated name as an alias */ + HTT_DBG_ODD_STATS_PDEV_BE_UL_MUMIMO_TRIG_STATS = + HTT_DBG_EXT_STATS_ODD_STATS_PDEV_BE_UL_MUMIMO_TRIG, - /** HTT_DBG_MLO_SCHED_STATS + /** HTT_DBG_EXT_STATS_MLO_SCHED * PARAMS: * - No Params * RESP MSG: * - htt_pdev_mlo_sched_stats_tlv */ - HTT_DBG_MLO_SCHED_STATS = 63, + HTT_DBG_EXT_STATS_MLO_SCHED = 63, + /* retain the deprecated name as an alias */ + HTT_DBG_MLO_SCHED_STATS = + HTT_DBG_EXT_STATS_MLO_SCHED, - /** HTT_DBG_PDEV_MLO_IPC_STATS + /** HTT_DBG_EXT_STATS_PDEV_MLO_IPC * PARAMS: * - No Params * RESP MSG: * - htt_pdev_mlo_ipc_stats_tlv */ - HTT_DBG_PDEV_MLO_IPC_STATS = 64, + HTT_DBG_EXT_STATS_PDEV_MLO_IPC = 64, + /* retain the deprecated name as an alias */ + HTT_DBG_PDEV_MLO_IPC_STATS = + HTT_DBG_EXT_STATS_PDEV_MLO_IPC, - /** HTT_DBG_EXT_PDEV_RTT_RESP_STATS + /** HTT_DBG_EXT_STATS_PDEV_RTT_RESP * PARAMS: * - No Params * RESP MSG: @@ -647,16 +740,22 @@ enum htt_dbg_ext_stats_type { * - htt_stats_pdev_rtt_tbr_selfgen_queued_stats_tlv * - htt_stats_pdev_rtt_tbr_cmd_result_stats_tlv */ - HTT_DBG_EXT_PDEV_RTT_RESP_STATS = 65, + HTT_DBG_EXT_STATS_PDEV_RTT_RESP = 65, + /* retain the deprecated name as an alias */ + HTT_DBG_EXT_PDEV_RTT_RESP_STATS = + HTT_DBG_EXT_STATS_PDEV_RTT_RESP, - /** HTT_DBG_EXT_PDEV_RTT_INITIATOR_STATS + /** HTT_DBG_EXT_STATS_PDEV_RTT_INITIATOR * PARAMS: * - No Params * RESP MSG: * - htt_stats_pdev_rtt_init_stats_tlv * - htt_stats_pdev_rtt_hw_stats_tlv */ - HTT_DBG_EXT_PDEV_RTT_INITIATOR_STATS = 66, + HTT_DBG_EXT_STATS_PDEV_RTT_INITIATOR = 66, + /* retain the deprecated name as an alias */ + HTT_DBG_EXT_PDEV_RTT_INITIATOR_STATS = + HTT_DBG_EXT_STATS_PDEV_RTT_INITIATOR, /** HTT_DBG_EXT_STATS_LATENCY_PROF_STATS_LO * PARAMS: @@ -668,13 +767,16 @@ enum htt_dbg_ext_stats_type { */ HTT_DBG_EXT_STATS_LATENCY_PROF_STATS_LO = 67, - /** HTT_DBG_GTX_STATS + /** HTT_DBG_EXT_STATS_GTX * PARAMS: * - No Params * RESP MSG: * - htt_pdev_gtx_stats_tlv */ - HTT_DBG_GTX_STATS = 68, + HTT_DBG_EXT_STATS_GTX = 68, + /* retain the deprecated name as an alias */ + HTT_DBG_GTX_STATS = + HTT_DBG_EXT_STATS_GTX, /** HTT_DBG_EXT_STATS_TX_VDEV_NSS * PARAMS: @@ -684,6 +786,38 @@ enum htt_dbg_ext_stats_type { */ HTT_DBG_EXT_STATS_TX_VDEV_NSS = 69, + /** HTT_DBG_EXT_STATS_PDEV_RTT_DELAY + * PARAMS: + * - No Params + * RESP MSG: + * - htt_stats_pdev_rtt_delay_tlv + */ + HTT_DBG_EXT_STATS_PDEV_RTT_DELAY = 70, + + /** HTT_DBG_EXT_STATS_PDEV_SPECTRAL + * PARAMS: + * - No Params + * RESP MSG: + * - htt_stats_pdev_spectral_tlv + */ + HTT_DBG_EXT_STATS_PDEV_SPECTRAL = 71, + + /** HTT_DBG_EXT_STATS_PDEV_AOA + * PARAMS: + * - No Params + * RESP MSG: + * - htt_stats_pdev_aoa_tlv + */ + HTT_DBG_EXT_STATS_PDEV_AOA = 72, + + /** HTT_DBG_EXT_STATS_PDEV_FTM_TPCCAL + * PARAMS: + * - No Params + * RESP MSG: + * - htt_stats_pdev_ftm_tpccal_tlv + */ + HTT_DBG_EXT_STATS_PDEV_FTM_TPCCAL = 73, + /* keep this last */ HTT_DBG_NUM_EXT_STATS = 256, @@ -1079,6 +1213,13 @@ typedef struct { A_UINT32 pdev_up_time_us_high; /** count of ofdma sequences flushed */ A_UINT32 ofdma_seq_flush; + /* bytes (size of MPDUs) transmitted */ + struct { + /* lower 32 bits of the tx_bytes value */ + A_UINT32 low_32; + /* upper 32 bits of the tx_bytes value */ + A_UINT32 high_32; + } bytes_sent; } htt_stats_tx_pdev_cmn_tlv; /* preserve old name alias for new name consistent with the tag name */ typedef htt_stats_tx_pdev_cmn_tlv htt_tx_pdev_stats_cmn_tlv; @@ -6776,6 +6917,16 @@ typedef struct { A_UINT32 rx_flush_cnt; /** Num rx recovery */ A_UINT32 rx_recovery_reset_cnt; + /* Num prom filter disable */ + A_UINT32 rx_lwm_prom_filter_dis; + /* Num prom filter enable */ + A_UINT32 rx_hwm_prom_filter_en; + struct { + /* lower 32 bits of the rx_bytes value */ + A_UINT32 low_32; + /* upper 32 bits of the rx_bytes value */ + A_UINT32 high_32; + } bytes_received; } htt_stats_rx_pdev_fw_stats_tlv; /* preserve old name alias for new name consistent with the tag name */ typedef htt_stats_rx_pdev_fw_stats_tlv htt_rx_pdev_fw_stats_tlv; @@ -8786,6 +8937,381 @@ typedef struct { typedef htt_stats_pktlog_and_htt_ring_stats_tlv htt_pktlog_and_htt_ring_stats_tlv; +/* STATS_TYPE: HTT_DBG_EXT_STATS_PDEV_SPECTRAL + * TLV_TAGS: + * HTT_STATS_PDEV_SPECTRAL_TAG + */ +#define HTT_STATS_PDEV_SPECTRAL_PCFG_MAX_DET (3) +#define HTT_STATS_PDEV_SPECTRAL_MAX_PCSS_RING_FOR_IPC (3) + +typedef struct { + htt_tlv_hdr_t tlv_hdr; + + A_UINT32 dbg_num_buf; + A_UINT32 dbg_num_events; + + /* HOST_ring_HI */ + A_UINT32 host_head_idx; + A_UINT32 host_tail_idx; + A_UINT32 host_shadow_tail_idx; + + /* SHADOW_ring_HI */ + A_UINT32 in_ring_head_idx; + A_UINT32 in_ring_tail_idx; + A_UINT32 in_ring_shadow_tail_idx; + A_UINT32 in_ring_shadow_head_idx; + + /* OUT_ring_HI */ + A_UINT32 out_ring_head_idx; + A_UINT32 out_ring_tail_idx; + A_UINT32 out_ring_shadow_tail_idx; + A_UINT32 out_ring_shadow_head_idx; + + /* IPC_ring MAX_PCSS_RING_FOR_IPC */ + struct { + A_UINT32 head_idx; + A_UINT32 tail_idx; + A_UINT32 shadow_tail_idx; + A_UINT32 shadow_head_idx; + } ipc_rings[HTT_STATS_PDEV_SPECTRAL_MAX_PCSS_RING_FOR_IPC]; + + /* VREG Counters */ + struct { + A_UINT32 scan_priority; + A_UINT32 scan_count; + A_UINT32 scan_period; + A_UINT32 scan_chn_mask; + A_UINT32 scan_ena; + A_UINT32 scan_update_mask; + A_UINT32 scan_ready_intrpt; + A_UINT32 scans_performed; + A_UINT32 intrpts_sent; + A_UINT32 scan_pending_count; + A_UINT32 num_pcss_elem_zero; + A_UINT32 num_in_elem_zero; + A_UINT32 num_out_elem_zero; + A_UINT32 num_elem_moved; + } pcfg_stats_det[HTT_STATS_PDEV_SPECTRAL_PCFG_MAX_DET]; + + struct { + A_UINT32 scan_no_ipc_buf_avail; + A_UINT32 agile_scan_no_ipc_buf_avail; + A_UINT32 scan_FFT_discard_count; + A_UINT32 scan_recapture_FFT_discard_count; + A_UINT32 scan_recapture_count; + } pcfg_stats_vreg; +} htt_stats_pdev_spectral_tlv; + +/* STATS_TYPE: HTT_DBG_EXT_STATS_PDEV_RTT_DELAY + * TLV_TAGS: + * HTT_STATS_PDEV_RTT_DELAY_TAG + */ +#define HTT_STATS_PDEV_RTT_DELAY_NUM_INSTANCES (2) +/* HTT_STATS_PDEV_RTT_DELAY_PKT_BW: + * 0 -> 20 MHz + * 1 -> 40 MHz + * 2 -> 80 MHz + * 3 -> 160 MHz + * 4 -> 320 MHz + * 5: reserved + */ +#define HTT_STATS_PDEV_RTT_DELAY_PKT_BW (6) +/* HTT_STATS_PDEV_RTT_TX_RX_INSTANCES + * idx 0 -> Tx instance + * idx 1 -> Rx instance + */ +#define HTT_STATS_PDEV_RTT_TX_RX_INSTANCES (2) +typedef struct { + htt_tlv_hdr_t tlv_hdr; + + struct { + /* base_delay: picosecond units */ + A_INT32 base_delay[HTT_STATS_PDEV_RTT_TX_RX_INSTANCES][HTT_STATS_PDEV_RTT_DELAY_PKT_BW]; + /* final_delay: picosecond units */ + A_INT32 final_delay[HTT_STATS_PDEV_RTT_TX_RX_INSTANCES][HTT_STATS_PDEV_RTT_DELAY_PKT_BW]; + A_INT32 per_chan_bias[HTT_STATS_PDEV_RTT_TX_RX_INSTANCES]; + A_INT32 off_chan_bias[HTT_STATS_PDEV_RTT_TX_RX_INSTANCES]; + A_INT32 chan_bw_bias[HTT_STATS_PDEV_RTT_TX_RX_INSTANCES]; + A_UINT32 rtt_11mc_chain_idx[HTT_STATS_PDEV_RTT_TX_RX_INSTANCES]; + A_UINT32 chan_freq; /* MHz units */ + A_UINT32 bandwidth; /* MHz units */ + A_UINT32 vreg_cache; + A_UINT32 rtt_11mc_vreg_set_cnt; + A_UINT32 cfr_vreg_set_cnt; + A_UINT32 cir_vreg_set_cnt; + A_UINT32 digital_block_status; + } rtt_delay[HTT_STATS_PDEV_RTT_DELAY_NUM_INSTANCES]; +} htt_stats_pdev_rtt_delay_tlv; + +/* STATS_TYPE: HTT_DBG_EXT_STATS_PDEV_AOA + * TLV_TAGS: + * HTT_STATS_PDEV_AOA_TAG + */ +#define HTT_STATS_PDEV_AOA_MAX_HISTOGRAM (10) +#define HTT_STATS_PDEV_AOA_MAX_CHAINS (4) +typedef struct { + htt_tlv_hdr_t tlv_hdr; + + A_UINT32 gain_idx[HTT_STATS_PDEV_AOA_MAX_HISTOGRAM]; + /* gain table element values: + * 0 -> default gain + * 1 -> low gain + * 2 -> very low gain + */ + A_UINT32 gain_table[HTT_STATS_PDEV_AOA_MAX_HISTOGRAM]; + A_UINT32 phase_calculated[HTT_STATS_PDEV_AOA_MAX_HISTOGRAM][HTT_STATS_PDEV_AOA_MAX_CHAINS]; + A_INT32 phase_in_degree[HTT_STATS_PDEV_AOA_MAX_HISTOGRAM][HTT_STATS_PDEV_AOA_MAX_CHAINS]; +} htt_stats_pdev_aoa_tlv; + +/* RTT VREG MASK */ +#define HTT_STATS_RTT_CHAN_CAPTURE_MASK 0x00000001 +#define HTT_STATS_RTT_HW_FAC_MASK 0x00000002 +#define HTT_STATS_RTT_11AZ_DELAYED_FEEDBACK_MASK 0x00000004 +#define HTT_STATS_RTT_11AZ_DROP_FIRST_LMR_MASK 0x00000008 +#define HTT_STATS_RTT_CAPTURE_CFR_MASK 0x00000010 +#define HTT_STATS_RTT_CAPTURE_CIR_MASK 0x00000020 +#define HTT_STATS_RTT_DET0_REPETITIVE_CHAN_CAPTURE_EN_MASK 0x00000040 +#define HTT_STATS_RTT_CAPTURE_SPARE_1_MASK 0x00000080 +#define HTT_STATS_RTT_CAPTURE_SPARE_2_MASK 0x00000100 + +/* RTT Digital block compensation mask */ +#define HTT_STATS_RTT_TX_IQCORR_COMP_MASK 0x00000001 +#define HTT_STATS_RTT_TX_PREEMP_FIR_COMP_MASK 0x00000002 +#define HTT_STATS_RTT_LPC_FILTER_COMP_MASK 0x00000004 +#define HTT_STATS_RTT_SM_CFR_COMP_MASK 0x00000008 +#define HTT_STATS_RTT_CAL_PDC_DIS_COMP_MASK 0x00000010 +#define HTT_STATS_RTT_CAL_PAPRD_COMP_MASK 0x00000020 +#define HTT_STATS_RTT_CAL_RXCORR_IQCORR_COMP_MASK 0x00000040 +#define HTT_STATS_RTT_CAL_RXCORR_PHASE_COMP_MASK 0x00000080 +#define HTT_STATS_RTT_PHYRF_ICI_CORR_COMP_MASK 0x00000100 +#define HTT_STATS_RTT_VSRC_PRE_FIR_SEL_COMP_MASK 0x00000200 +#define HTT_STATS_RTT_CVSRC_PRE_FIR_SEL2_COMP_MASK 0x00000400 +#define HTT_STATS_RTT_CAL_ENABLE_GAINDEPCORR_COMP_MASK 0x00000800 +#define HTT_STATS_RTT_CAL_DC_NOTCH_FILTER_COMP_MASK 0x00001000 +#define HTT_STATS_RTT_CAL_DET_PATH_COMP_MASK 0x00002000 +#define HTT_STATS_RTT_CAL_RXCORR_ADC_DC_COMP_MASK 0x00004000 +#define HTT_STATS_RTT_CAL_RXCORR_ADC_GAIN_COMP_MASK 0x00008000 +#define HTT_STATS_RTT_CAL_SPUR_FILTER_PRI_DET_COMP_MASK 0x00010000 +#define HTT_STATS_RTT_CAL_SPUR_FILTER_PRI_COMP_MASK 0x00020000 + + +#define HTT_STATS_TPCCAL_LAST_IDX_M 0x000000ff +#define HTT_STATS_TPCCAL_LAST_IDX_S 0 + +#define HTT_STATS_TPCCAL_LAST_IDX_GET(_var) \ + (((_var) & HTT_STATS_TPCCAL_LAST_IDX_M) >> \ + HTT_STATS_TPCCAL_LAST_IDX_S) + +#define HTT_STATS_TPCCAL_STATS_MEASPWR_M 0x0000ffff +#define HTT_STATS_TPCCAL_STATS_MEASPWR_S 0 + +#define HTT_STATS_TPCCAL_STATS_MEASPWR_GET(_var) \ + (((_var) & HTT_STATS_TPCCAL_STATS_MEASPWR_M) >> \ + HTT_STATS_TPCCAL_STATS_MEASPWR_S) + +#define HTT_STATS_TPCCAL_STATS_PDADC_M 0x000000ff +#define HTT_STATS_TPCCAL_STATS_PDADC_S 0 + +#define HTT_STATS_TPCCAL_STATS_PDADC_GET(_var) \ + (((_var) & HTT_STATS_TPCCAL_STATS_PDADC_M) >> \ + HTT_STATS_TPCCAL_STATS_PDADC_S) + +#define HTT_STATS_TPCCAL_STATS_CHANNEL_M 0x0000ffff +#define HTT_STATS_TPCCAL_STATS_CHANNEL_S 0 + +#define HTT_STATS_TPCCAL_STATS_CHANNEL_GET(_var) \ + (((_var) & HTT_STATS_TPCCAL_STATS_CHANNEL_M) >> \ + HTT_STATS_TPCCAL_STATS_CHANNEL_S) + +#define HTT_STATS_TPCCAL_STATS_CHAIN_M 0x00ff0000 +#define HTT_STATS_TPCCAL_STATS_CHAIN_S 16 + +#define HTT_STATS_TPCCAL_STATS_CHAIN_GET(_var) \ + (((_var) & HTT_STATS_TPCCAL_STATS_CHAIN_M) >> \ + HTT_STATS_TPCCAL_STATS_CHAIN_S) + +#define HTT_STATS_TPCCAL_STATS_GAININDEX_M 0xff000000 +#define HTT_STATS_TPCCAL_STATS_GAININDEX_S 24 + +#define HTT_STATS_TPCCAL_STATS_GAININDEX_GET(_var) \ + (((_var) & HTT_STATS_TPCCAL_STATS_GAININDEX_M) >> \ + HTT_STATS_TPCCAL_STATS_GAININDEX_S) + +#define HTT_STATS_TPCCAL_POSTPROC_CHANNEL_M 0x0000ffff +#define HTT_STATS_TPCCAL_POSTPROC_CHANNEL_S 0 + +#define HTT_STATS_TPCCAL_POSTPROC_CHANNEL_GET(_var) \ + (((_var) & HTT_STATS_TPCCAL_POSTPROC_CHANNEL_M) >> \ + HTT_STATS_TPCCAL_POSTPROC_CHANNEL_S) + +#define HTT_STATS_TPCCAL_POSTPROC_CHAIN_M 0x00ff0000 +#define HTT_STATS_TPCCAL_POSTPROC_CHAIN_S 16 + +#define HTT_STATS_TPCCAL_POSTPROC_CHAIN_GET(_var) \ + (((_var) & HTT_STATS_TPCCAL_POSTPROC_CHAIN_M) >> \ + HTT_STATS_TPCCAL_POSTPROC_CHAIN_S) + +#define HTT_STATS_TPCCAL_POSTPROC_BAND_M 0xff000000 +#define HTT_STATS_TPCCAL_POSTPROC_BAND_S 24 + +#define HTT_STATS_TPCCAL_POSTPROC_BAND_GET(_var) \ + (((_var) & HTT_STATS_TPCCAL_POSTPROC_BAND_M) >> \ + HTT_STATS_TPCCAL_POSTPROC_BAND_S) + +#define HTT_STATS_TPCCAL_POSTPROC_NUMGAIN_M 0x000000ff +#define HTT_STATS_TPCCAL_POSTPROC_NUMGAIN_S 0 + +#define HTT_STATS_TPCCAL_POSTPROC_NUMGAIN_GET(_var) \ + (((_var) & HTT_STATS_TPCCAL_POSTPROC_NUMGAIN_M) >> \ + HTT_STATS_TPCCAL_POSTPROC_NUMGAIN_S) + +#define HTT_STATS_TPCCAL_POSTPROC_CALDBSTATUS_M 0x0000ff00 +#define HTT_STATS_TPCCAL_POSTPROC_CALDBSTATUS_S 8 + +#define HTT_STATS_TPCCAL_POSTPROC_CALDBSTATUS_GET(_var) \ + (((_var) & HTT_STATS_TPCCAL_POSTPROC_CALDBSTATUS_M) >> \ + HTT_STATS_TPCCAL_POSTPROC_CALDBSTATUS_S) + +/* STATS_TYPE : HTT_DBG_EXT_PDEV_STATS_FTM_TPCCAL + * TLV_TAGS: + * - HTT_STATS_PDEV_FTM_TPCCAL_TAG + */ +#define HTT_MAX_TPCCAL_STATS 25 +#define HTT_STATS_TPC_CAL_MAX_NUM_POINTS 64 + +typedef struct { + htt_tlv_hdr_t tlv_hdr; + + /* dword__tpccal_last_idx: + * Hold the last updated index for circular buffer of tpccal + * BIT [7 : 0] :- tpcccal_last_idx + * BIT [31 : 8] :- rsvd1 + */ + union { + A_UINT32 dword__tpccal_last_idx; + struct { + A_UINT32 tpccal_last_idx:8, + rsvd1:24; + }; + }; + + /* + * Below tpccal_stats struct will have latest values of tpccal data + * of array size HTT_MAX_TPCCAL_STATS. + * If there have been fewer than HTT_MAX_TPCCAL_STATS TPC calibrations, + * the unused elements will be filled with 0x0 values. + */ + struct { + /* + * dword__measPwr: + * BIT [15 : 0] :- measPwr + * BIT [31 : 16] :- rsvd2 + */ + union { + A_INT32 dword__measPwr; + struct { + A_INT32 measPwr:16, /* dBm units */ + rsvd2:16; + }; + }; + + /* + * dword__channel_chain_gainIndex: + * hold channel chain and gain index values + * BIT [15 : 0] :- channel + * BIT [23 : 16] :- chain + * BIT [24 : 31] :- gainIndex + */ + union { + A_UINT32 dword__channel_chain_gainIndex; + struct { + A_UINT32 channel:16, /* MHz units */ + chain:8, + gainIndex:8; + }; + }; + + /* + * dword__pdadc: + * BIT [7 : 0] :- pdadc + * BIT [31 : 8] :- rsvd3 + */ + union { + A_UINT32 dword__pdadc; + struct { + A_UINT32 pdadc:8, + rsvd3:24; + }; + }; + } tpccal_stats[HTT_MAX_TPCCAL_STATS]; + + /* + * Below tpccal_stats_postproc struct will have required tpccal data + * for failures during postprocessing. + */ + struct { + /* + * calStatus can be intrepreted with the below values: + * TPCCAL_CALDATA (1 << 0) + * TPCCAL_CALINFO (1 << 1) + * TPCCAL_CALERROR (1 << 2) + * bits 6:4 - reserved + * TPCCAL_DONE_MASK (1 << 7) + * bits 15:8 - reserved + * TPCCALRSP_MISCFLAGS_CALERROR_GLUTS_NOT_FILLED (1 << 16) + * TPCCALRSP_MISCFLAGS_CALERROR_PLUT_NON_LINEAR (1 << 17) + * TPCCALRSP_MISCFLAGS_CALERROR_ATTEMPTS_EXCEEDED (1 << 18) + * bits 31:19 - reserved + */ + A_UINT32 calStatus; + /* + * The numgain field specifies how many of the + * HTT_STATS_TPC_CAL_MAX_NUM_POINTS elements in the below arrays + * contain valid data. + */ + A_INT32 measPwr[HTT_STATS_TPC_CAL_MAX_NUM_POINTS]; /* dBm units */ + A_UINT32 pdadc[HTT_STATS_TPC_CAL_MAX_NUM_POINTS]; + A_UINT32 gainIndex[HTT_STATS_TPC_CAL_MAX_NUM_POINTS]; + + /* + * dword__channel_chain_band: + * channel, chain, and band values + * BIT [15 : 0] :- channel + * BIT [23 : 16] :- chain + * BIT [31 : 24] :- band + */ + union { + A_UINT32 dword__channel_chain_band; + struct { + A_UINT32 channel:16, /* MHz units */ + chain:8, + band:8; /* 0: 2GHz, 1: 5GHz, 2: 6GHz */ + }; + }; + + /* + * dword__numgain_caldbStatus: + * numgain and caldbstatus + * BIT [7 : 0] :- numgain + * BIT [15 : 8] :- caldbstatus + * BIT [31 : 16] :- rsvd4 + * + * caldbStatus can be interpreted as below + * CALDB_COMPLETED = 0 + * CALDB_SKIPPED = 1 + * CALDB_INPROGRESS = 2 + */ + union { + A_UINT32 dword__numgain_caldbStatus; + struct { + A_UINT32 numgain:8, + caldbStatus:8, + rsvd4:16; + }; + }; + } tpccal_stats_postproc; +} htt_stats_pdev_ftm_tpccal_tlv; + #define HTT_DLPAGER_STATS_MAX_HIST 10 #define HTT_DLPAGER_ASYNC_LOCKED_PAGE_COUNT_M 0x000000FF #define HTT_DLPAGER_ASYNC_LOCKED_PAGE_COUNT_S 0 @@ -11006,8 +11532,37 @@ typedef struct { * avg_chan_acc_lat_hist[6]: 1000 us <= channel access latency < 1500 us * avg_chan_acc_lat_hist[7]: 1500 us <= channel access latency < 2000 us * avg_chan_acc_lat_hist[8]: channel access latency is >= 2000 us - */ + */ A_UINT32 avg_chan_acc_lat_hist[HTT_MAX_NUM_CHAN_ACC_LAT_INTR]; + /** Num of instances where OFDMA NBinWB is selected over MU-MIMO */ + A_UINT32 dl_ofdma_nbinwb_selected_over_mu_mimo[HTT_NUM_AC_WMM]; + /** Num of instances where OFDMA NBinWB is selected in standalone */ + A_UINT32 dl_ofdma_nbinwb_selected_standalone[HTT_NUM_AC_WMM]; + /** + * Number of instances where we populated TX mode and candidate lists + * only for DL. + */ + A_UINT32 running_only_dl_scheduler_cnt[HTT_NUM_AC_WMM]; + /** + * Number of instances where we populated TX mode and candidate lists + * only for UL. + */ + A_UINT32 running_only_ul_scheduler_cnt[HTT_NUM_AC_WMM]; + /** + * Number of instances where we populated TX mode and candidate lists + * additionally for DL after UL. + */ + A_UINT32 running_additional_dl_scheduler_cnt[HTT_NUM_AC_WMM]; + /** + * Number of instances where we populated TX mode and candidate lists + * additionally for UL after DL. + */ + A_UINT32 running_additional_ul_scheduler_cnt[HTT_NUM_AC_WMM]; + /** + * Number of instances where we populated TX mode and candidate lists + * only for UL BSR TX mode. + */ + A_UINT32 running_ul_scheduler_for_bsrp_cnt[HTT_NUM_AC_WMM]; } htt_stats_pdev_sched_algo_ofdma_stats_tlv; /* preserve old name alias for new name consistent with the tag name */ typedef htt_stats_pdev_sched_algo_ofdma_stats_tlv diff --git a/fw/wlan_module_ids.h b/fw/wlan_module_ids.h index 8ac928cdd2a9..d1abb8186655 100644 --- a/fw/wlan_module_ids.h +++ b/fw/wlan_module_ids.h @@ -192,6 +192,7 @@ typedef enum { WLAN_MODULE_PHYLIB_SSCAN, /* 0x95 */ WLAN_MODULE_PHYLIB_RSVD, /* 0x96 */ WLAN_MODULE_USD, /* 0x97 */ + WLAN_MODULE_C2C, /* 0x98 */ WLAN_MODULE_ID_MAX, diff --git a/fw/wmi_services.h b/fw/wmi_services.h index c5d5cb9b6ac6..fda83ef79812 100644 --- a/fw/wmi_services.h +++ b/fw/wmi_services.h @@ -687,6 +687,13 @@ typedef enum { WMI_SERVICE_USD_SUPPORT = 428, /* Indicates FW supports Unsynchronized Service Discovery */ WMI_SERVICE_THERM_THROT_5_LEVELS = 429, /* Indicates FW support 5 thermal throttling levels */ WMI_SERVICE_PROTECTED_TWT = 430, /* Indicates FW supports protected TWT operation */ + WMI_SERVICE_SCAN_CACHE_REPORT_SUPPORT = 431, /* Indicates FW supports for sending scan cache report */ + WMI_SERVICE_SCC_TPC_POWER_SUPPORT = 432, /* Indicates FW supports setting TPC power for SCC vdevs */ + WMI_SERVICE_DYNAMIC_TWT_MODE_SUPPORT = 433, /* Indicates FW supports Dynamic TWT mode for vdevs */ + WMI_SERVICE_SPECTRAL_SPUR_BIN_INFO_SUPPORT = 434, /* Indicates FW supports indicating spur frequency and spectral bin that gets affected due to spur frequency */ + WMI_SERVICE_TWT_P2P_GO_CONCURRENCY_SUPPORT = 435, /* Indicates FW supports TWT in P2P GO concurrency mode */ + WMI_SERVICE_UMAC_MIGRATION_SUPPORT = 436, /* Indicates that FW supports UMAC migration */ + WMI_SERVICE_STA_TWT_STATS_EXT = 437, /* FW supports additional info in TWT stats and ADD COMPLETION Event */ WMI_MAX_EXT2_SERVICE diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index 161bb7c6f756..ece35c747408 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1451,6 +1451,30 @@ typedef enum { WMITLV_TAG_STRUC_wmi_usd_service_event_fixed_param, WMITLV_TAG_STRUC_wmi_vdev_create_wfdr2_mode_params, WMITLV_TAG_STRUC_wmi_pdev_power_boost_event_fixed_param, + WMITLV_TAG_STRUC_wmi_pdev_power_boost_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_pdev_power_boost_mem_addr_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_c2c_detect_event_fixed_param, + WMITLV_TAG_STRUC_wmi_get_scan_cache_result_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_scan_cache_result_event_fixed_param, + WMITLV_TAG_STRUC_wmi_scan_cache_info, + WMITLV_TAG_STRUC_wmi_POWER_BOOST_CAPABILITIES, + WMITLV_TAG_STRUC_wmi_RSSI_ACCURACY_IMPROVEMENT_CAPABILITIES, + WMITLV_TAG_STRUC_wmi_mlo_link_reconfig_start_indication_event_fixed_param, + WMITLV_TAG_STRUC_wmi_mlo_link_reconfig_fixed_param, + WMITLV_TAG_STRUC_wmi_mlo_link_reconfig_complete_fixed_param, + WMITLV_TAG_STRUC_wmi_mlo_link_add_param, + WMITLV_TAG_STRUC_wmi_mlo_link_del_param, + WMITLV_TAG_STRUC_wmi_pdev_wifi_radar_cap_evt_fixed_param, + WMITLV_TAG_STRUC_wmi_wifi_radar_ltf_length_capabilities, + WMITLV_TAG_STRUC_wmi_wifi_radar_chain_capabilities, + WMITLV_TAG_STRUC_wmi_sawf_ezmesh_hop_count_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_ctrl_path_pdev_conn_stats_struct, + WMITLV_TAG_STRUC_wmi_pdev_sscan_spur_chan_impacted_bin_info, + WMITLV_TAG_STRUC_wmi_ctrl_path_ml_rcfg_stats_struct, + WMITLV_TAG_STRUC_wmi_vdev_vbss_config_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_vdev_vbss_peer_pn_info, + WMITLV_TAG_STRUC_wmi_vdev_vbss_peer_sn_info, + WMITLV_TAG_STRUC_wmi_vdev_vbss_config_event_fixed_param, } WMITLV_TAG_ID; /* * IMPORTANT: Please add _ALL_ WMI Commands Here. @@ -2005,6 +2029,13 @@ typedef enum { OP(WMI_P2P_GO_DFS_AP_CONFIG_CMDID) \ OP(WMI_VDEV_REPORT_AP_OPER_BW_CMDID) \ OP(WMI_USD_SERVICE_CMDID) \ + OP(WMI_PDEV_POWER_BOOST_CMDID) \ + OP(WMI_PDEV_POWER_BOOST_MEM_ADDR_CMDID) \ + OP(WMI_GET_SCAN_CACHE_RESULT_CMDID) \ + OP(WMI_MLO_LINK_RECONFIG_CMDID) \ + OP(WMI_MLO_LINK_RECONFIG_COMPLETE_CMDID) \ + OP(WMI_SAWF_EZMESH_HOP_COUNT_CMDID) \ + OP(WMI_VDEV_VBSS_CONFIG_CMDID) \ /* add new CMD_LIST elements above this line */ @@ -2334,6 +2365,11 @@ typedef enum { OP(WMI_MLO_PEER_TID_TO_LINK_MAP_EVENTID) \ OP(WMI_USD_SERVICE_EVENTID) \ OP(WMI_PDEV_POWER_BOOST_EVENTID) \ + OP(WMI_C2C_DETECT_EVENTID) \ + OP(WMI_SCAN_CACHE_RESULT_EVENTID) \ + OP(WMI_MLO_LINK_RECONFIG_START_INDICATION_EVENTID) \ + OP(WMI_PDEV_WIFI_RADAR_CAPABILITIES_EVENTID) \ + OP(WMI_VDEV_VBSS_CONFIG_EVENTID) \ /* add new EVT_LIST elements above this line */ @@ -3601,6 +3637,13 @@ WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_SET_PARAM_CMDID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_vdev_update_mac_addr_cmd_fixed_param, wmi_vdev_update_mac_addr_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_UPDATE_MAC_ADDR_CMDID); +/* VDEV VBSS CONFIG COMMAND */ +#define WMITLV_TABLE_WMI_VDEV_VBSS_CONFIG_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_vdev_vbss_config_cmd_fixed_param, wmi_vdev_vbss_config_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)\ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_vdev_vbss_peer_pn_info, vbss_peer_pn_info, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_vdev_vbss_peer_sn_info, vbss_peer_sn_info, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_VBSS_CONFIG_CMDID); + /* Pdev suspend Cmd */ #define WMITLV_TABLE_WMI_PDEV_SUSPEND_CMDID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_suspend_cmd_fixed_param, wmi_pdev_suspend_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) @@ -5327,6 +5370,18 @@ WMITLV_CREATE_PARAM_STRUC(WMI_MLO_AP_VDEV_TID_TO_LINK_MAP_CMDID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_mlo_peer_recommended_links, mlo_peer_recommended_links, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_MLO_LINK_RECOMMENDATION_CMDID); +/** WMI cmd to start STA initialized link reconfig */ +#define WMITLV_TABLE_WMI_MLO_LINK_RECONFIG_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mlo_link_reconfig_fixed_param, wmi_mlo_link_reconfig_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_mlo_link_add_param, link_add_param, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_mlo_link_del_param, link_del_param, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_MLO_LINK_RECONFIG_CMDID); + +/** WMI cmd to notify fw completion of link reconfig */ +#define WMITLV_TABLE_WMI_MLO_LINK_RECONFIG_COMPLETE_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mlo_link_reconfig_complete_fixed_param, wmi_mlo_link_reconfig_complete_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_MLO_LINK_RECONFIG_COMPLETE_CMDID); + /* Mcast ipv4 address filter list cmd */ #define WMITLV_TABLE_WMI_VDEV_IGMP_OFFLOAD_CMDID(id,op,buf,len) \ WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_igmp_offload_fixed_param, wmi_igmp_offload_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ @@ -5668,6 +5723,25 @@ WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_REPORT_AP_OPER_BW_CMDID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, service_specific_info, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_USD_SERVICE_CMDID); +/* WMI cmd used to send Power Boost status update from Host to Target */ +#define WMITLV_TABLE_WMI_PDEV_POWER_BOOST_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_power_boost_cmd_fixed_param, wmi_pdev_power_boost_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_POWER_BOOST_CMDID); + +/* WMI cmd used to exchange the DDR address to the target for Power Boost feature */ +#define WMITLV_TABLE_WMI_PDEV_POWER_BOOST_MEM_ADDR_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_power_boost_mem_addr_cmd_fixed_param, wmi_pdev_power_boost_mem_addr_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_POWER_BOOST_MEM_ADDR_CMDID); + +/* WMI command to send scan cache result */ +#define WMITLV_TABLE_WMI_GET_SCAN_CACHE_RESULT_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_get_scan_cache_result_cmd_fixed_param, wmi_get_scan_cache_result_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_GET_SCAN_CACHE_RESULT_CMDID); + +#define WMITLV_TABLE_WMI_SAWF_EZMESH_HOP_COUNT_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_sawf_ezmesh_hop_count_cmd_fixed_param, wmi_sawf_ezmesh_hop_count_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_SAWF_EZMESH_HOP_COUNT_CMDID); + /************************** TLV definitions of WMI events *******************************/ @@ -5727,7 +5801,11 @@ WMITLV_CREATE_PARAM_STRUC(WMI_SERVICE_READY_EXT_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_aux_dev_capabilities, aux_dev_caps, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_enhanced_aoa_caps_param, aoa_caps_param, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_enhanced_aoa_per_band_caps_param, aoa_per_band_caps_param, WMITLV_SIZE_VAR) \ - WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_sar_flag_tlv_param, sar_flags, WMITLV_SIZE_VAR) + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_sar_flag_tlv_param, sar_flags, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, WMI_POWER_BOOST_CAPABILITIES, power_boost_capabilities, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, WMI_RSSI_ACCURACY_IMPROVEMENT_CAPABILITIES, rssi_accuracy_improvement_capabilities, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_wifi_radar_ltf_length_capabilities, wr_ltf_caps, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_wifi_radar_chain_capabilities, wr_chain_caps, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_SERVICE_READY_EXT2_EVENTID); #define WMITLV_TABLE_WMI_SPECTRAL_CAPABILITIES_EVENTID(id,op,buf,len) \ @@ -5735,6 +5813,12 @@ WMITLV_CREATE_PARAM_STRUC(WMI_SERVICE_READY_EXT2_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_spectral_fft_size_capabilities, fft_size_caps, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_SPECTRAL_CAPABILITIES_EVENTID); +#define WMITLV_TABLE_WMI_PDEV_WIFI_RADAR_CAPABILITIES_EVENTID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_wifi_radar_cap_evt_fixed_param, wmi_pdev_wifi_radar_cap_evt_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_wifi_radar_ltf_length_capabilities, wr_ltf_caps, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_wifi_radar_chain_capabilities, wr_chain_caps, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_WIFI_RADAR_CAPABILITIES_EVENTID); + #define WMITLV_TABLE_WMI_CHAN_RF_CHARACTERIZATION_INFO_EVENTID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_chan_rf_characterization_info_event_fixed_param, wmi_chan_rf_characterization_info_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, WMI_CHAN_RF_CHARACTERIZATION_INFO, wmi_chan_rf_characterization_info, WMITLV_SIZE_VAR) @@ -6875,6 +6959,11 @@ WMITLV_CREATE_PARAM_STRUC(WMI_REG_CHAN_LIST_CC_EXT_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_afc_chan_eirp_power_info, chan_eirp_power_info_array, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_AFC_EVENTID); +/* Indicate LPI AP detect or not to Host */ +#define WMITLV_TABLE_WMI_C2C_DETECT_EVENTID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_c2c_detect_event_fixed_param, wmi_c2c_detect_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_C2C_DETECT_EVENTID); + /* FIPS event */ #define WMITLV_TABLE_WMI_PDEV_FIPS_EVENTID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_fips_event_fixed_param, wmi_pdev_fips_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ @@ -7158,7 +7247,9 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PEER_STATS_INFO_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_ctrl_path_vdev_stats_struct, ctrl_path_vdev_stats, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_ctrl_path_sta_rrm_stats_struct, ctrl_path_sta_rrm_stats, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_ctrl_path_vdev_bcn_tx_stats_struct, ctrl_path_vdev_bcn_tx_stats, WMITLV_SIZE_VAR) \ - WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_ctrl_path_pdev_bcn_tx_stats_struct, ctrl_path_pdev_bcn_tx_stats, WMITLV_SIZE_VAR) + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_ctrl_path_pdev_bcn_tx_stats_struct, ctrl_path_pdev_bcn_tx_stats, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_ctrl_path_pdev_conn_stats_struct, ctrl_path_pdev_conn_stats, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_ctrl_path_ml_rcfg_stats_struct, ctrl_path_ml_rcfg_stats, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_CTRL_PATH_STATS_EVENTID); /* @@ -7421,7 +7512,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_AUDIO_AGGR_SCHED_METHOD_EVENTID); 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_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_sscan_chan_info, wmi_pdev_sscan_chan_info,chan_info, WMITLV_SIZE_FIX) \ - WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_pdev_sscan_per_detector_info, det_info, WMITLV_SIZE_VAR) + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_pdev_sscan_per_detector_info, det_info, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_pdev_sscan_spur_chan_impacted_bin_info, spur_chan_impacted_bin_info, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_SSCAN_FW_PARAM_EVENTID); /* Send sscan related event start/stop trigger to host */ @@ -7670,6 +7762,13 @@ WMITLV_CREATE_PARAM_STRUC(WMI_VENDOR_VDEV_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, opaque_vendor_var_len_data, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_VENDOR_PEER_EVENTID); +/* VDEV VBSS CONFIG EVENT */ +#define WMITLV_TABLE_WMI_VDEV_VBSS_CONFIG_EVENTID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_vdev_vbss_config_event_fixed_param, wmi_vdev_vbss_config_event_fixed_param, fixed_param, WMITLV_SIZE_FIX)\ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_vdev_vbss_peer_pn_info, vbss_peer_pn_info, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_vdev_vbss_peer_sn_info, vbss_peer_sn_info, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_VBSS_CONFIG_EVENTID); + /* link switch event */ #define WMITLV_TABLE_WMI_MLO_LINK_SWITCH_REQUEST_EVENTID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mlo_link_switch_req_evt_fixed_param, wmi_mlo_link_switch_req_evt_fixed_param, fixed_param, WMITLV_SIZE_FIX) @@ -7731,6 +7830,13 @@ WMITLV_CREATE_PARAM_STRUC(WMI_MGMT_SRNG_REAP_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mlo_peer_tid_to_link_map_event_fixed_param, wmi_mlo_peer_tid_to_link_map_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_MLO_PEER_TID_TO_LINK_MAP_EVENTID); +/** Indicate host to start link reconfigure */ +#define WMITLV_TABLE_WMI_MLO_LINK_RECONFIG_START_INDICATION_EVENTID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mlo_link_reconfig_start_indication_event_fixed_param, wmi_mlo_link_reconfig_start_indication_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_mlo_link_add_param, link_add_param, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_mlo_link_del_param, link_del_param, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_MLO_LINK_RECONFIG_START_INDICATION_EVENTID); + /* USD Service Event */ #define WMITLV_TABLE_WMI_USD_SERVICE_EVENTID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_usd_service_event_fixed_param, wmi_usd_service_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) @@ -7741,6 +7847,12 @@ WMITLV_CREATE_PARAM_STRUC(WMI_USD_SERVICE_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_power_boost_event_fixed_param, wmi_pdev_power_boost_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_POWER_BOOST_EVENTID); +#define WMITLV_TABLE_WMI_SCAN_CACHE_RESULT_EVENTID(id, op , buf, len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_scan_cache_result_event_fixed_param, wmi_scan_cache_result_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, scan_freq_list, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_scan_cache_info, scan_cache_info, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_SCAN_CACHE_RESULT_EVENTID); + #ifdef __cplusplus } diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index e1e2d982ecd3..4d231e1a5fdd 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -588,6 +588,13 @@ typedef enum { * WMI cmd to set custom TX power backoff value per band/chain/MCS to PHY. */ WMI_PDEV_SET_CUSTOM_TX_POWER_PER_MCS_CMDID, + /* WMI cmd to send Power Boost status update from Host */ + WMI_PDEV_POWER_BOOST_CMDID, + /** + * WMI cmd to exchange the address of the DDR buffer allocated by the Host + * for Power Boost feature + */ + WMI_PDEV_POWER_BOOST_MEM_ADDR_CMDID, /* VDEV (virtual device) specific commands */ @@ -714,6 +721,8 @@ typedef enum { */ WMI_VDEV_REPORT_AP_OPER_BW_CMDID, + WMI_VDEV_VBSS_CONFIG_CMDID, + /* peer specific commands */ @@ -1343,6 +1352,9 @@ typedef enum { /** Unsynchronized Service Discovery */ WMI_USD_SERVICE_CMDID, + /** WMI command to get scan cached result */ + WMI_GET_SCAN_CACHE_RESULT_CMDID, + /* Offload 11k related requests */ WMI_11K_OFFLOAD_REPORT_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_11K_OFFLOAD), @@ -1686,12 +1698,18 @@ typedef enum { WMI_MLO_PRIMARY_LINK_PEER_MIGRATION_CMDID, /** WMI cmd to recommand preferred link */ WMI_MLO_LINK_RECOMMENDATION_CMDID, + /** WMI cmd to start STA initialized link reconfig */ + WMI_MLO_LINK_RECONFIG_CMDID, + /** WMI cmd to notify fw completion of link reconfig */ + WMI_MLO_LINK_RECONFIG_COMPLETE_CMDID, /** WMI commands specific to Service Aware WiFi (SAWF) */ /** configure or reconfigure the parameters for a service class */ WMI_SAWF_SVC_CLASS_CFG_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_SAWF), /** disable a service class */ WMI_SAWF_SVC_CLASS_DISABLE_CMDID, + /** update hop count value for SDWF-Ezmesh scenario */ + WMI_SAWF_EZMESH_HOP_COUNT_CMDID, /* WMI commands specific to ODD */ WMI_ODD_LIVEDUMP_REQUEST_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_ODD), @@ -1881,6 +1899,12 @@ typedef enum { /* Event to indicate ANN Power Boost update status from Target */ WMI_PDEV_POWER_BOOST_EVENTID, + /* + * WMI event to share Wi-Fi Radar - + * monostatic Wi-Fi sensing technique capabalites + */ + WMI_PDEV_WIFI_RADAR_CAPABILITIES_EVENTID, + /* VDEV specific events */ /** VDEV started event in response to VDEV_START request */ @@ -1960,6 +1984,7 @@ typedef enum { WMI_VDEV_SCHED_MODE_PROBE_RESP_EVENTID, /** Connect response */ WMI_VDEV_OOB_CONNECTION_RESP_EVENTID, + WMI_VDEV_VBSS_CONFIG_EVENTID, /* peer specific events */ /** FW reauet to kick out the station for reasons like inactivity,lack of response ..etc */ @@ -2379,6 +2404,9 @@ typedef enum { */ WMI_USD_SERVICE_EVENTID, + /* WMI event to send scan cached results */ + WMI_SCAN_CACHE_RESULT_EVENTID, + /* GPIO Event */ WMI_GPIO_INPUT_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_GPIO), @@ -2497,6 +2525,7 @@ typedef enum { WMI_REG_CHAN_LIST_CC_EXT_EVENTID, WMI_AFC_EVENTID, WMI_REG_CHAN_LIST_CC_EXT2_EVENTID, /* DEPRECATED */ + WMI_C2C_DETECT_EVENTID, /** Events for TWT(Target Wake Time) of STA and AP */ WMI_TWT_ENABLE_COMPLETE_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_TWT), @@ -2568,6 +2597,8 @@ typedef enum { WMI_MLO_TLT_SELECTION_FOR_TID_SPRAY_EVENTID, /** WMI Event to send the status of T2LM configured */ WMI_MLO_PEER_TID_TO_LINK_MAP_EVENTID, + /** Indicate host to start link reconfigure */ + WMI_MLO_LINK_RECONFIG_START_INDICATION_EVENTID, /* WMI event specific to Quiet handling */ WMI_QUIET_HANDLING_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_QUIET_OFL), @@ -3529,11 +3560,6 @@ typedef struct { #define WMI_TARGET_CAP_MPDU_STATS_PER_TX_NSS_SUPPORT_SET(target_cap_flags, value)\ WMI_SET_BITS(target_cap_flags, 16, 1, value) -#define WMI_TARGET_CAP_POWER_BOOST_SUPPORT_GET(target_cap_flags) \ - WMI_GET_BITS(target_cap_flags, 17, 1) -#define WMI_TARGET_CAP_POWER_BOOST_SUPPORT_SET(target_cap_flags) \ - WMI_SET_BITS(target_cap_flags, 17, 1, value) - /* * wmi_htt_msdu_idx_to_htt_msdu_qtype GET/SET APIs @@ -3595,6 +3621,58 @@ typedef enum { WMI_BDF_VERSION_FW_TOO_NEW = 5, } wmi_bdf_version_status_type; + +/* + * supported_wifi_generations GET/SET APIs + */ +#define WMI_SUPPORTED_WIFI_4_GENERATION_GET(wifi_generations) \ + WMI_GET_BITS(wifi_generations, 0, 1) +#define WMI_SUPPORTED_WIFI_5_GENERATION_GET(wifi_generations) \ + WMI_GET_BITS(wifi_generations, 1, 1) +#define WMI_SUPPORTED_WIFI_6_GENERATION_GET(wifi_generations) \ + WMI_GET_BITS(wifi_generations, 2, 1) +#define WMI_SUPPORTED_WIFI_7_GENERATION_GET(wifi_generations) \ + WMI_GET_BITS(wifi_generations, 3, 1) +#define WMI_SUPPORTED_WIFI_8_GENERATION_GET(wifi_generations) \ + WMI_GET_BITS(wifi_generations, 4, 1) + +#define WMI_SUPPORTED_WIFI_4_GENERATION_SET(wifi_generations, value) \ + WMI_SET_BITS(wifi_generations, 0, 1, value) +#define WMI_SUPPORTED_WIFI_5_GENERATION_SET(wifi_generations, value) \ + WMI_SET_BITS(wifi_generations, 1, 1, value) +#define WMI_SUPPORTED_WIFI_6_GENERATION_SET(wifi_generations, value) \ + WMI_SET_BITS(wifi_generations, 2, 1, value) +#define WMI_SUPPORTED_WIFI_7_GENERATION_SET(wifi_generations, value) \ + WMI_SET_BITS(wifi_generations, 3, 1, value) +#define WMI_SUPPORTED_WIFI_8_GENERATION_SET(wifi_generations, value) \ + WMI_SET_BITS(wifi_generations, 4, 1, value) + +/* + * supported_wifi_certified_generations GET/SET APIs + */ +#define WMI_SUPPORTED_WIFI_4_CERTIFIED_GENERATION_GET(wifi_generations) \ + WMI_GET_BITS(wifi_generations, 0, 1) +#define WMI_SUPPORTED_WIFI_5_CERTIFIED_GENERATION_GET(wifi_generations) \ + WMI_GET_BITS(wifi_generations, 1, 1) +#define WMI_SUPPORTED_WIFI_6_CERTIFIED_GENERATION_GET(wifi_generations) \ + WMI_GET_BITS(wifi_generations, 2, 1) +#define WMI_SUPPORTED_WIFI_7_CERTIFIED_GENERATION_GET(wifi_generations) \ + WMI_GET_BITS(wifi_generations, 3, 1) +#define WMI_SUPPORTED_WIFI_8_CERTIFIED_GENERATION_GET(wifi_generations) \ + WMI_GET_BITS(wifi_generations, 4, 1) + +#define WMI_SUPPORTED_WIFI_4_CERTIFIED_GENERATION_SET(wifi_generations, value) \ + WMI_SET_BITS(wifi_generations, 0, 1, value) +#define WMI_SUPPORTED_WIFI_5_CERTIFIED_GENERATION_SET(wifi_generations, value) \ + WMI_SET_BITS(wifi_generations, 1, 1, value) +#define WMI_SUPPORTED_WIFI_6_CERTIFIED_GENERATION_SET(wifi_generations, value) \ + WMI_SET_BITS(wifi_generations, 2, 1, value) +#define WMI_SUPPORTED_WIFI_7_CERTIFIED_GENERATION_SET(wifi_generations, value) \ + WMI_SET_BITS(wifi_generations, 3, 1, value) +#define WMI_SUPPORTED_WIFI_8_CERTIFIED_GENERATION_SET(wifi_generations, value) \ + WMI_SET_BITS(wifi_generations, 4, 1, value) + + typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_service_ready_ext2_event_fixed_param.*/ @@ -3681,8 +3759,7 @@ typedef struct { * Bit 14 - Support for ML monitor mode * Bit 15 - Support for Qdata Tx LCE filter installation * Bit 16 - Support for MPDU stats per tx Nss capability - * Bit 17 - Support for Power Boost capability - * Bits 31:18 - Reserved + * Bits 31:17 - Reserved */ A_UINT32 target_cap_flags; @@ -3748,6 +3825,31 @@ typedef struct { */ A_UINT32 num_max_mlo_link_per_ml_sap_supp; + /* supported_wifi_generations: + * Indicate the transmitting STA's MAC/PHY feature support includes all the + * mandatory features of the particular Wi-Fi generation. + * Refer to the WMI_SUPPORTED_WIFI_x_GENERATION_GET/SET macros + * for interpreting which bit within this bitmap corresponds to which + * WiFi generation. + * The individual bits should only be checked if + * supported_wifi_generations != 0x0. + * This field is invalid and should be ignored unless it contains + * at least 1 set bit. + */ + A_UINT32 supported_wifi_generations; + + /* supported_wifi_certified_generations: + * Indicate the transmitting STA's Wi-Fi Alliance certifications. + * Refer to the WMI_SUPPORTED_WIFI_x_CERTIFIED_GENERATION_GET/SET macros + * for interpreting which bit within this bitmap corresponds to which + * WiFi generation. + * The individual bits should only be checked if + * supported_wifi_certified_generations != 0x0. + * This field is invalid and should be ignored unless it contains + * at least 1 set bit. + */ + A_UINT32 supported_wifi_certified_generations; + /* Followed by next TLVs: * WMI_DMA_RING_CAPABILITIES dma_ring_caps[]; * wmi_spectral_bin_scaling_params wmi_bin_scaling_params[]; @@ -3759,6 +3861,13 @@ typedef struct { * wmi_dbs_or_sbs_cap_ext dbs_or_sbs_cap_ext; * A_INT32 hw_tx_power_signed[WMI_HW_TX_POWER_CAPS_MAX]; * wmi_aux_dev_capabilities aux_dev_caps[]; + * WMI_POWER_BOOST_CAPABILITIES power_boost_capabilities[]; + * WMI_RSSI_ACCURACY_IMPROVEMENT_CAPABILITIES + * rssi_accuracy_improvement_capabilities[]; + * wmi_wifi_radar_ltf_length_capabilities + * wifi_radar_ltf_length_capabilities[]; + * wmi_wifi_radar_chain_capabilities + * wifi_radar_chain_capabilities[]; */ } wmi_service_ready_ext2_event_fixed_param; @@ -3940,12 +4049,27 @@ typedef struct { /* Total number of "real" max_active_vdevs that FW supports. */ A_UINT32 num_max_active_vdevs; + /** max_num_ml_peers: + * Number of ml_peers for a SOC; used by Host to derive + * max number of peers in the system + */ + A_UINT32 max_num_ml_peers; + /* * This fixed_param TLV is followed by these additional TLVs: * mac_addr_list[num_extra_mac_addr]; */ } wmi_ready_event_fixed_param; +typedef enum { + WMI_C2C_INT_TYPE_STA = 0, + WMI_C2C_INT_TYPE_SAP = 1, + WMI_C2C_INT_TYPE_P2P = 2, + WMI_C2C_INT_TYPE_NAN = 3, + WMI_C2C_INT_TYPE_TDLS = 4, + WMI_C2C_INT_TYPE_XPAN_SAP = 5, +} WMI_C2C_INT_TYPE; + typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_resource_config */ /** @@ -4698,8 +4822,16 @@ typedef struct { * 0 -> disable the feature * 1 -> enable the feature * Refer to below WMI_RSRC_CFG_FLAGS2_ENABLE_WDS_NULL_FRAME_SUPPORT + * Bits 24:23 - enable feature optimize power + * 00 -> default value + * (target will auto-select whether to enable the feature) + * 01 -> disable the feature + * 10 -> enable the feature + * 11 -> reserved + * Refer to the below WMI_RSRC_CFG_FLAGS2_OPTIMIZE_POWER_GET/SET + * macros. * - * Bits 31:23 - Reserved + * Bits 31:25 - Reserved */ A_UINT32 flags2; /** @brief host_service_flags - can be used by Host to indicate @@ -4926,6 +5058,20 @@ typedef struct { * number of max active partner links of a ML BSS */ A_UINT32 num_max_active_mlo_link_per_ml_bss; + + /** + * @brief c2c_int_type_config + * C2C interface type configuration, + * interface type defined in enum WMI_C2C_INT_TYPE: + * BIT 0 set -> Interface type STA enable C2C + * BIT 1 set -> Interface type SAP enable C2C + * BIT 2 set -> Interface type P2P enable C2C + * BIT 3 set -> Interface type NAN enable C2C + * BIT 4 set -> Interface type TDLS enable C2C + * BIT 5 set -> Interface type XPAN_SAP enable C2C + * BIT 6 : 31 Reserved + */ + A_UINT32 c2c_int_type_config; } wmi_resource_config; #define WMI_MSDU_FLOW_AST_ENABLE_GET(msdu_flow_config0, ast_x) \ @@ -5215,6 +5361,11 @@ typedef struct { #define WMI_RSRC_CFG_FLAGS2_ENABLE_WDS_NULL_FRAME_SUPPORT_SET(flags2, value) \ WMI_SET_BITS(flags2, 22, 1, value) +#define WMI_RSRC_CFG_FLAGS2_OPTIMIZE_POWER_GET(flags2) \ + WMI_GET_BITS(flags2, 23, 2) +#define WMI_RSRC_CFG_FLAGS2_OPTIMIZE_POWER_SET(flags2, value) \ + WMI_SET_BITS(flags2, 23, 2, value) + #define WMI_RSRC_CFG_HOST_SERVICE_FLAG_NAN_IFACE_SUPPORT_GET(host_service_flags) \ WMI_GET_BITS(host_service_flags, 0, 1) @@ -6238,12 +6389,13 @@ typedef enum { /* Include MLO IE in Probe req */ #define WMI_SCAN_FLAG_EXT_INCL_MLIE_PRB_REQ 0x00004000 -#define WMI_SCAN_FLAG_EXT_LOW_LATENCY_SCAN 0x00008000 -#define WMI_SCAN_FLAG_EXT_RELIABLE_SCAN 0x00010000 -#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 +#define WMI_SCAN_FLAG_EXT_LOW_LATENCY_SCAN 0x00008000 +#define WMI_SCAN_FLAG_EXT_RELIABLE_SCAN 0x00010000 +#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 +#define WMI_SCAN_FLAG_EXT_DISABLE_SINGLE_MAC_AUX 0x00200000 /** @@ -6308,6 +6460,8 @@ typedef struct { #define WMI_APPEND_TO_EXISTING_CHAN_LIST 0x1 #define WMI_CHANNEL_MAX_BANDWIDTH_VALID 0x2 #define WMI_HONOR_HOST_6GHZ_CHANNEL_PASSIVE 0x4 +#define WMI_SCAN_TO_DETECT_6GHZ_C2C_AP 0x8 + /* * To preserve backwards compatibility, retain old names (without WMI_ prefix) * as aliases for the corrected names (with WMI_ prefix). @@ -8340,6 +8494,28 @@ typedef struct A_UINT32 end_freq; /* in MHz */ } wmi_pdev_sscan_per_detector_info; +typedef struct +{ + A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_pdev_sscan_spur_chan_info */ + /* spur_freqx10: + * Spur frequency in MHz multiplied by 10 to align with hardware spur + * characterized value. + * For example, a value of 24224 indicates spur frequency as 2422.4 MHz + */ + A_UINT32 spur_freqx10; + /* spur_start_bin_idx: + * Indicates the start spur bin index at which spur frequency impacts + * the spectral capture. Impact is from start to end indices, + * including both. + */ + A_UINT32 spur_start_bin_idx; + /* spur_end_bin_idx: + * Indicates the end spur bin index in which spur frequency impacts + * the spectral capture. + */ + A_UINT32 spur_end_bin_idx; +} wmi_pdev_sscan_spur_chan_impacted_bin_info; + typedef enum { /** Enum to indicate bmsk of spectral scan stop evt on scan count max out */ WMI_SSCAN_EVT_BMSK_SCAN_STOP_SCOUNT = 0X00000001, @@ -9754,6 +9930,9 @@ typedef enum { WMI_PDEV_PARAM_DSTALL_CONSECUTIVE_TX_NO_ACK_THRESHOLD, WMI_PDEV_PARAM_MGMT_SRNG_REAP_EVENT_THRESHOLD, + + /* To enable/disable DFS radar detection for scan radio */ + WMI_PDEV_PARAM_ENABLE_SCAN_RADIO_DFS, } WMI_PDEV_PARAM; #define WMI_PDEV_ONLY_BSR_TRIG_IS_ENABLED(trig_type) WMI_GET_BITS(trig_type, 0, 1) @@ -13177,6 +13356,8 @@ typedef struct { A_UINT32 rx_mpdu_per_sp; /* Average pkts rx per SP */ A_UINT32 tx_bytes_per_sp; /* Average tx bytes per SP */ A_UINT32 rx_bytes_per_sp; /* Average rx bytes per SP */ + A_UINT32 avg_eosp_sp_dur_us; /* Average EOSP SP time */ + A_UINT32 eosp_sp_count; /* Number of EOSP TWT SP's */ } wmi_ctrl_path_twt_stats_struct; #define BMISS_STATS_RSSI_SAMPLE_MAX 10 @@ -16451,8 +16632,96 @@ typedef struct { A_UINT32 beacon_stuck_cnt; A_UINT32 beacon_swba_cnt; A_UINT32 beacon_enque_fail; + A_UINT32 beacon_do_not_send_bcast_t2lm_exp; + A_UINT32 beacon_do_not_send_bcast_t2lm_proc_mst; + A_UINT32 beacon_do_not_send_off_chan; + A_UINT32 beacon_do_not_send_tx_paused; + A_UINT32 beacon_do_not_send_swba_delay; + A_UINT32 beacon_do_not_send_csa; + A_UINT32 beacon_wait_prev_txdone; } wmi_ctrl_path_pdev_bcn_tx_stats_struct; +typedef enum wmi_peer_sta_kickout_reason { + WMI_PEER_STA_KICKOUT_REASON_UNSPECIFIED = 0, /* default value to preserve legacy behavior */ + WMI_PEER_STA_KICKOUT_REASON_XRETRY = 1, + WMI_PEER_STA_KICKOUT_REASON_INACTIVITY = 2, + WMI_PEER_STA_KICKOUT_REASON_IBSS_DISCONNECT = 3, + WMI_PEER_STA_KICKOUT_REASON_TDLS_DISCONNECT = 4, /* TDLS peer has disappeared. All tx is failing */ + WMI_PEER_STA_KICKOUT_REASON_SA_QUERY_TIMEOUT = 5, + WMI_PEER_STA_KICKOUT_REASON_ROAMING_EVENT = 6, /* Directly connected peer has roamed to a repeater */ + WMI_PEER_STA_KICKOUT_REASON_PMF_ERROR = 7, /* PMF error threshold is hit */ + + WMI_PEER_STA_KICKOUT_REASON_RESERVED1 = 8, /* available for future use */ + WMI_PEER_STA_KICKOUT_REASON_RESERVED2 = 9, /* available for future use */ + WMI_PEER_STA_KICKOUT_REASON_RESERVED3 = 10, /* available for future use */ + WMI_PEER_STA_KICKOUT_REASON_RESERVED4 = 11, /* available for future use */ + + /* WMI_MAX_PEER_STA_KICKOUT_REASON: + * For the sake of backwards compatibility, the below value + * cannot be changed. + */ + WMI_MAX_PEER_STA_KICKOUT_REASON = 12 +} PEER_KICKOUT_REASON; + +typedef struct { + A_UINT32 tlv_header; + A_UINT32 pdev_id; + A_UINT32 tx_mgmt_subtype_enq_ok[WMI_MGMT_FRAME_SUBTYPE_MAX]; + A_UINT32 tx_mgmt_subtype_tx_comp_ok[WMI_MGMT_FRAME_SUBTYPE_MAX]; + A_UINT32 tx_mgmt_subtype_tx_comp_fail[WMI_MGMT_FRAME_SUBTYPE_MAX]; + A_UINT32 tx_mgmt_subtype_enq_fail[WMI_MGMT_FRAME_SUBTYPE_MAX]; + A_UINT32 rx_mgmt_subtype[WMI_MGMT_FRAME_SUBTYPE_MAX]; + /* peer_sta_kickout_reason_cnt: + * Refer to wmi_peer_sta_kickout_reason for which array element + * corresponds to which STA kickout reason. + */ + A_UINT32 peer_sta_kickout_reason_cnt[WMI_MAX_PEER_STA_KICKOUT_REASON]; + A_UINT32 wmi_scan_start_cnt; + A_UINT32 wmi_scan_start_fail_cnt; + A_UINT32 foreign_chan_entry_cnt; +} wmi_ctrl_path_pdev_conn_stats_struct; + +typedef struct { + A_UINT32 tlv_header; + A_UINT32 pdev_id; + + A_UINT32 ml_rcfg_wmi; + A_UINT32 ml_rcfg_del_self; + A_UINT32 ml_rcfg_new_link; + + A_UINT32 ml_rcfg_peer_assoc_ml_peer_null; + A_UINT32 ml_rcfg_ll_idx_mismatch; + A_UINT32 ml_rcfg_mlo_ll_idx_invalid; + A_UINT32 ml_rcfg_partner_link_null; + A_UINT32 ml_rcfg_partner_ll_idx_invalid; + A_UINT32 ml_rcfg_self_in_partner_link; + A_UINT32 ml_rcfg_partner_link_add; + A_UINT32 ml_rcfg_partner_link_del; + A_UINT32 ml_rcfg_no_rcfg_op; + + A_UINT32 ml_rcfg_0_num_link; + A_UINT32 ml_rcfg_inv_num_link; + A_UINT32 ml_rcfg_non_exist_link_del; + A_UINT32 ml_rcfg_add_exist_link; + A_UINT32 ml_rcfg_recv_add_ipc; + A_UINT32 ml_rcfg_recv_peer_del_ipc; + + A_UINT32 ml_rcfg_inv_link_bmap; + A_UINT32 ml_rcfg_assoc_ipc_before_wmi; + A_UINT32 ml_rcfg_before_init; + A_UINT32 ml_rcfg_recv_link_del_ipc_pri; + A_UINT32 ml_rcfg_recv_link_del_ipc_non_pri; + + A_UINT32 ml_rcfg_inc_to_2; + A_UINT32 ml_rcfg_inc_to_3; + A_UINT32 ml_rcfg_inc_to_4; + + A_UINT32 ml_rcfg_dec_to_3; + A_UINT32 ml_rcfg_dec_to_2; + A_UINT32 ml_rcfg_dec_to_1; + A_UINT32 ml_rcfg_dec_to_0; +} wmi_ctrl_path_ml_rcfg_stats_struct; + /** * peer statistics. */ @@ -16761,8 +17030,16 @@ typedef struct { #define WMI_MLO_FLAGS_SET_MLO_LINK_SWITCH(mlo_flags, value) WMI_SET_BITS(mlo_flags, 13, 1, value) #define WMI_MLO_FLAGS_GET_MLO_BRIDGE_LINK(mlo_flags) WMI_GET_BITS(mlo_flags, 14, 1) #define WMI_MLO_FLAGS_SET_MLO_BRIDGE_LINK(mlo_flags, value) WMI_SET_BITS(mlo_flags, 14, 1, value) +#define WMI_MLO_FLAGS_GET_LINK_ADD_CANCEL(mlo_flags) WMI_GET_BITS(mlo_flags, 15, 1) +#define WMI_MLO_FLAGS_SET_LINK_ADD_CANCEL(mlo_flags, value) WMI_SET_BITS(mlo_flags, 15, 1, value) +#define WMI_MLO_FLAGS_GET_LINK_DEL_CANCEL(mlo_flags) WMI_GET_BITS(mlo_flags, 16, 1) +#define WMI_MLO_FLAGS_SET_LINK_DEL_CANCEL(mlo_flags, value) WMI_SET_BITS(mlo_flags, 16, 1, value) +#define WMI_MLO_FLAGS_GET_START_AS_ACTIVE(mlo_flags) WMI_GET_BITS(mlo_flags, 17, 1) +#define WMI_MLO_FLAGS_SET_START_AS_ACTIVE(mlo_flags, value) WMI_SET_BITS(mlo_flags, 17, 1, value) +#define WMI_MLO_FLAGS_GET_IEEE_LINK_ID_VALID(mlo_flags) WMI_GET_BITS(mlo_flags, 18, 1) +#define WMI_MLO_FLAGS_SET_IEEE_LINK_ID_VALID(mlo_flags, value) WMI_SET_BITS(mlo_flags, 18, 1, value) -/* this structure used for pass mlo flags*/ +/* this structure used for passing MLO flags */ typedef struct { union { struct { @@ -16774,8 +17051,8 @@ typedef struct { mlo_mcast_vdev:1, /* indicate this is the MLO mcast primary vdev */ emlsr_support:1, /* indicate that eMLSR is supported */ mlo_force_link_inactive:1, /* indicate this link is forced inactive */ - mlo_link_add:1, /* Indicate dynamic link addition in an MLD VAP */ - mlo_link_del:1, /* Indicate dynamic link deletion in an MLD VAP */ + mlo_link_add:1, /* Indicate dynamic link addition in an MLD VAP / ML peer */ + mlo_link_del:1, /* Indicate dynamic link deletion in an MLD VAP / ML peer */ mlo_bridge_peer:1, /* Indicate if this link has bridge_peer */ nstr_bitmap_present:1, /* Indicate if at least one NSTR link pair is present in the MLD */ /* nstr_bitmap_size: @@ -16787,7 +17064,11 @@ typedef struct { nstr_bitmap_size:1, mlo_link_switch: 1, /* indicate the command is a part of link switch procedure */ mlo_bridge_link:1, /* indicate link is bridge link */ - unused: 17; + mlo_link_add_cancel:1, /* rollback of previous dynamic link addition */ + mlo_link_del_cancel:1, /* rollback of previous dynamic link deletion */ + start_as_active:1, /* indicate link should be started in active status */ + mlo_ieee_link_id_valid:1, /* indicate if the ieee_link_id in wmi_vdev_start_mlo_params is valid */ + unused: 13; }; A_UINT32 mlo_flags; }; @@ -16833,7 +17114,13 @@ typedef enum { /* this TLV structure used for pass mlo parameters on vdev start*/ typedef struct { A_UINT32 tlv_header; /** TLV tag and len; */ - wmi_mlo_flags mlo_flags; /*only mlo enable and assoc link flag need by vdev start*/ + wmi_mlo_flags mlo_flags; /* only mlo enable, assoc link and mlo_ieee_link_id_valid flag need by vdev start */ + /** ieee_link_id: + * link id in 802.11 frame. + * This field will be invalid and ignored unless mlo_flags has + * mlo_ieee_link_id_valid bit set. + */ + A_UINT32 ieee_link_id; } wmi_vdev_start_mlo_params; /* this TLV structure used for passing mlo parameters on vdev stop */ @@ -16953,7 +17240,15 @@ typedef enum { * Bridge VDEV/PEER will be required to seamlessly transmit * to diagonal links in 4 chip MLO. */ -#define WMI_UNIFIED_VDEV_SUBTYPE_BRIDGE 0x8 +#define WMI_UNIFIED_VDEV_SUBTYPE_BRIDGE 0x8 + +/* Subtype to indicate that the VDEV is in VBSS mode. + * VBSS Vdev could be active or passive state. + * VBSS ACTIVE : Peer directly connected to the vdev. + * VBSS PASSIVE : Peer connected to another VBSS node in the network + */ +#define WMI_UNIFIED_VDEV_SUBTYPE_VBSS 0x9 + /** values for vdev_start_request flags */ /** Indicates that AP VDEV uses hidden ssid. only valid for @@ -17711,6 +18006,14 @@ enum WMI_VDEV_UP_FLAGS { * EMA - Enhanced Multiple BSS Advertisemet. */ WMI_VDEV_UP_FLAG_EMA_MBSSID_AP = 0x00000001, + /** VBSS_ACTIVE + * Valid only for VBSS subtype vaps. + */ + WMI_VDEV_UP_FLAG_VBSS_ACTIVE = 0x00000002, + /** VBSS_PASSIVE + * Valid only for VBSS subtype vaps. + */ + WMI_VDEV_UP_FLAG_VBSS_PASSIVE = 0x00000004, }; typedef struct { @@ -17900,6 +18203,14 @@ typedef enum { * Disassoc Imminent bit set to 1. */ #define WMI_VDEV_ROAM_11KV_CTRL_DONOT_SEND_DISASSOC_ON_BTM_DI_SET 0x4 +/* WMI_VDEV_PARAM_ROAM_11KV_BTM_REJECT: + * DUT send BTM response with reject status code if the bit set to 1. + */ +#define WMI_VDEV_PARAM_ROAM_11KV_BTM_REJECT 0x8 +/* WMI_VDEV_PARAM_ROAM_11KV_BTM_DISABLE_TTLM: + * Disable STA T2LM when received BTM load balance frame. + */ +#define WMI_VDEV_PARAM_ROAM_11KV_BTM_DISABLE_TTLM 0x10 /** NAN vdev config Feature flags */ @@ -19503,14 +19814,17 @@ typedef struct { } wmi_vdev_bss_max_idle_time_cmd_fixed_param; /** VDEV start response status codes */ -#define WMI_VDEV_START_RESPONSE_STATUS_SUCCESS 0x0 /** VDEV successfully started */ -#define WMI_VDEV_START_RESPONSE_INVALID_VDEVID 0x1 /** requested VDEV not found */ -#define WMI_VDEV_START_RESPONSE_NOT_SUPPORTED 0x2 /** unsupported VDEV combination */ -#define WMI_VDEV_START_RESPONSE_DFS_VIOLATION 0x3 /** DFS_VIOLATION since channel in the NOL is selected */ -#define WMI_VDEV_START_RESPONSE_INVALID_REGDOMAIN 0x4 /** Invalid regulatory domain in VDEV start */ -#define WMI_VDEV_START_RESPONSE_INVALID_BAND 0x5 /** Band unsupported by current hw mode in VDEV start */ +#define WMI_VDEV_START_RESPONSE_STATUS_SUCCESS 0x0 /** VDEV successfully started */ +#define WMI_VDEV_START_RESPONSE_INVALID_VDEVID 0x1 /** requested VDEV not found */ +#define WMI_VDEV_START_RESPONSE_NOT_SUPPORTED 0x2 /** unsupported VDEV combination */ +#define WMI_VDEV_START_RESPONSE_DFS_VIOLATION 0x3 /** DFS_VIOLATION since channel in the NOL is selected */ +#define WMI_VDEV_START_RESPONSE_INVALID_REGDOMAIN 0x4 /** Invalid regulatory domain in VDEV start */ +#define WMI_VDEV_START_RESPONSE_INVALID_BAND 0x5 /** Band unsupported by current hw mode in VDEV start */ #define WMI_VDEV_START_RESPONSE_INVALID_PREFERRED_TX_RX_STREAMS 0x6 /** Invalid preferred tx/rx streams */ -#define WMI_VDEV_START_RESPONSE_INVALID_TX_VAP_CONFIG 0x7 /** Invalid tx_vap config in VDEV start */ +#define WMI_VDEV_START_RESPONSE_INVALID_TX_VAP_CONFIG 0x7 /** Invalid tx_vap config in VDEV start */ +#define WMI_VDEV_START_RESPONSE_BSS_PEER_NOT_FOUND 0x8 /** bss_peer is null/not found */ +#define WMI_VDEV_START_RESPONSE_INCORRECT_CHANNEL_PARAMS 0x9 /** home channel params are incorrect */ +#define WMI_VDEV_START_RESPONSE_GENERIC_VDEV_START_FAILURE 0xa /** generic reason code for vdev start request reject */ /** Beacon processing related command and event structures */ typedef struct { @@ -21354,6 +21668,14 @@ typedef struct { wmi_mac_addr self_mac; } wmi_peer_assoc_mlo_partner_link_params; +/* + * ml_reconfig for assoc mlo params: + * Bit 0: Indicate dynamic ML reconfig + */ +#define WMI_ASSOC_MLO_PEER_ML_RECONFIG 0x00000001 +#define WMI_ASSOC_MLO_PEER_ML_RECONFIG_GET(ml_reconfig_word) WMI_GET_BITS(ml_reconfig_word, 0, 1) +#define WMI_ASSOC_MLO_PEER_ML_RECONFIG_SET(ml_reconfig_word, value) WMI_SET_BITS(ml_reconfig_word, 0, 1, value) + /* This TLV structure used to pass mlo Parameters on peer assoc, only apply for mlo-peers */ typedef struct { A_UINT32 tlv_header; /** TLV tag and len; */ @@ -21397,6 +21719,14 @@ typedef struct { /** max num of active links recommended by AP or applications */ A_UINT32 recommended_max_num_simultaneous_links; + + union { + A_UINT32 ml_reconfig__word; + struct { + A_UINT32 ml_reconfig: 1, + unused: 31; + }; + }; } wmi_peer_assoc_mlo_params; typedef struct { @@ -22724,6 +23054,13 @@ typedef struct { * as mlo_etp_weightage_pcnt. */ A_UINT32 mlo_etp_weightage_pcnt; + /* mcc_score_factor_pcnt: + * This score factor will be applied to roam candidate score if the + * roaming to that candidate can form MCC with any other interface. + * Example: if value is 20, then only 20% of the score will be + * considered for the candidates for which MCC will be formed. + */ + A_UINT32 mcc_score_factor_pcnt; } wmi_roam_cnd_scoring_param; typedef struct { @@ -23959,17 +24296,6 @@ typedef struct { A_UINT32 time0; /* lower 32 bits of time stamp */ } A_TIME64; -typedef enum wmi_peer_sta_kickout_reason { - WMI_PEER_STA_KICKOUT_REASON_UNSPECIFIED = 0, /* default value to preserve legacy behavior */ - WMI_PEER_STA_KICKOUT_REASON_XRETRY = 1, - WMI_PEER_STA_KICKOUT_REASON_INACTIVITY = 2, - WMI_PEER_STA_KICKOUT_REASON_IBSS_DISCONNECT = 3, - WMI_PEER_STA_KICKOUT_REASON_TDLS_DISCONNECT = 4, /* TDLS peer has disappeared. All tx is failing */ - WMI_PEER_STA_KICKOUT_REASON_SA_QUERY_TIMEOUT = 5, - WMI_PEER_STA_KICKOUT_REASON_ROAMING_EVENT = 6, /* Directly connected peer has roamed to a repeater */ - WMI_PEER_STA_KICKOUT_REASON_PMF_ERROR = 7, /* PMF error threshold is hit */ -} PEER_KICKOUT_REASON; - typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_peer_sta_kickout_event_fixed_param */ /** peer mac address */ @@ -24220,6 +24546,9 @@ typedef enum wake_reason_e { WOW_REASON_P2P_CLI_DFS_AP_BMISS_DETECTED, /* if Page Fault blocking feature enabled and PF observed under WoW */ WOW_REASON_PF_BLOCKING_LAST_TIME, + /* C2C scan report LPI AP detect or not event */ + WOW_REASON_C2C_DETECT_EVENT, + /* add new WOW_REASON_ defs before this line */ WOW_REASON_MAX, @@ -25918,6 +26247,13 @@ typedef enum WMI_VENDOR_OUI_ACTION_RESTRICT_MAX_MLO_LINKS = WMI_VENDOR_OUI_ACTION_RESTRICT_MAX_2_MLO_LINKS, + /* + * Send Auth, Assoc request, Reassoc request frame with 6Mbps rate + * if specific vendor OUI recevied in beacon on 2GHz. + */ + WMI_VENDOR_OUI_ACTION_AUTH_ASSOC_6MBPS_2GHZ = 17, + + /* Add any action before this line */ WMI_VENDOR_OUI_ACTION_MAX_ACTION_ID } wmi_vendor_oui_action_id; @@ -29882,14 +30218,36 @@ typedef struct { A_UINT32 offset; /* offset of the stats from partner_link_data for this vdev */ } wmi_partner_link_stats; +typedef enum WMI_STATS_EXT_EVENT_DATA_TYPE { + /* OPAQUE: + * The data[] bytestream in the WMI_STATS_EXT_EVENT message contains + * opaque contents that the host driver cannot interpret. + */ + WMI_STATS_EXT_EVENT_DATA_TYPE_OPAQUE, + /* VDEV_STATS_EXT: + * The data[] bytestream in the WMI_STATS_EXT_EVENT message contains + * wmi_stats_ext_event_vdev_ext struct(s). + */ + WMI_STATS_EXT_EVENT_DATA_TYPE_VDEV_EXT, +} WMI_STATS_EXT_EVENT_DATA_TYPE_E; + typedef struct { A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_stats1_event_fix_param */ A_UINT32 vdev_id; /** vdev ID */ A_UINT32 data_len; /** length in byte of data[]. */ + /** data_type: + * Contains a WMI_STATS_EXT_EVENT_DATA_TYPE_E value to show whether + * the host can interpret the data[] contents, and if so, how to + * interpret them. + */ + A_UINT32 data_type; /* This structure is used to send REQ binary blobs - * from firmware to application/service where Host drv is pass through . + * from firmware to application/service where Host drv is pass through. + * Alternatively, by specifying in the data_type field what kind of + * information is placed in data[], the target can allow the host to + * interpret the data[] contents. * Following this structure is the TLV: - * A_UINT8 data[]; <-- length in byte given by field data_len. + * A_UINT8 data[]; <-- length in bytes given by field data_len. */ /* This structure is used to send information of partner links. * Following this structure is the TLV: @@ -29905,6 +30263,71 @@ typedef struct { */ } wmi_stats_ext_event_fixed_param; +#define WMI_EXT_STATS_VDEV_EXT_MAX_MCS_COUNTERS 32 +#define WMI_EXT_STATS_VDEV_EXT_MAX_OPAQUE_DBG_WORDS32 1 + +typedef enum wmi_stats_ext_event_vdev_ext_bw_counters { + WMI_STATS_EXT_EVENT_VDEV_EXT_BW_COUNTERS_20MHz = 0, + WMI_STATS_EXT_EVENT_VDEV_EXT_BW_COUNTERS_40MHz, + WMI_STATS_EXT_EVENT_VDEV_EXT_BW_COUNTERS_80MHz, + WMI_STATS_EXT_EVENT_VDEV_EXT_BW_COUNTERS_160MHz, + WMI_STATS_EXT_EVENT_VDEV_EXT_BW_COUNTERS_320MHz, + /* values 5-7 reserved */ + WMI_STATS_EXT_EVENT_VDEV_EXT_BW_COUNTERS_MAX = 8 +} wmi_stats_ext_event_vdev_ext_bw_counters_t; + +#define WMI_STATS_EXT_EVENT_VDEV_EXT_FREQ_GET(word) \ + WMI_GET_BITS(word, 0, 16) +#define WMI_STATS_EXT_EVENT_VDEV_EXT_FREQ_SET(word, val) \ + WMI_SET_BITS(word, 0, 16, val) +#define WMI_STATS_EXT_EVENT_VDEV_EXT_VDEV_ID_GET(word) \ + WMI_GET_BITS(word, 16, 16) +#define WMI_STATS_EXT_EVENT_VDEV_EXT_VDEV_ID_SET(word, val) \ + WMI_SET_BITS(word, 16, 16, val) + +typedef struct wmi_stats_ext_event_vdev_ext { + /* version + * version = 1 means will use old/legacy struct + * version = 0 means will use new (wmi_stats_ext_event_vdev_ext) struct + * Some legacy target code branches use the old structure. + * Hence, control the backward compatibility through this + * version numbering. + */ + A_UINT32 version; + /* Number of MPDUs entering the queue */ + A_UINT32 mpdu_enqueue; + /* Number of MPDUs retried from SW */ + A_UINT32 mpdu_requeued; + /* Set of TX MCS counters */ + A_UINT32 tx_mcs[WMI_EXT_STATS_VDEV_EXT_MAX_MCS_COUNTERS]; + /* Set of TX BW counters */ + A_UINT32 tx_bw[WMI_STATS_EXT_EVENT_VDEV_EXT_BW_COUNTERS_MAX]; + /* Set of RX MCS counters */ + A_UINT32 rx_mcs[WMI_EXT_STATS_VDEV_EXT_MAX_MCS_COUNTERS]; + /* Set of RX BW counters */ + A_UINT32 rx_bw[WMI_STATS_EXT_EVENT_VDEV_EXT_BW_COUNTERS_MAX]; + /* Beacon RSSI (dBm units) */ + A_INT32 beacon_rssi; + /* Total number of bytes transmitted */ + A_UINT32 tx_bytes; + /* Total number of bytes received */ + A_UINT32 rx_bytes; + /* + * home channel frequency and vdev id: + * lower 16bits is frequency, upper 16bits is vdev_id + */ + union { + A_UINT32 freq__vdev_id__word32; + struct { + A_UINT32 + freq: 16, /* MHz units */ + vdev_id: 16; + }; + }; + /* opaque / unspecified contents, for debugging, etc */ + A_UINT32 opaque_dbg[WMI_EXT_STATS_VDEV_EXT_MAX_OPAQUE_DBG_WORDS32]; +} wmi_stats_ext_event_vdev_ext_t; + typedef enum { /** Default: no replay required. */ WMI_PEER_DELETE_NO_REPLAY = 0, @@ -34083,6 +34506,33 @@ typedef enum { * ============================================================== */ + BIOS_PARAM_TYPE_COUNTRY_CTL_MCS_DATA, + /* + * BIOS_PARAM_TYPE_COUNTRY_CTL_MCS_DATA structure contains + * - fix length parameter: + * version, entryNum + * - variable length array - countryCtlMcsData[entryNum] + * + * A_UINT8 version; + * A_UINT8 entryNum; // 0~15 + * countryCtlMcsData countryCtlMcsData[entryNum]; // variable array, + * // 12 bytes * entryNum + * ====================struct countryCtlMcsData ====================== + * A_UINT16 countryCode; + * A_UINT8 frequencyBand; + * A_UINT8 powerMode; + * A_UINT8 ocbIndex; + * A_UINT8 mcs; + * A_UINT8 bf; + * A_UINT8 nss; + * A_UINT8 txChainNum; + * A_UINT8 compareCtl; + * A_UINT8 powerLimit; // per chain, 1/4 db + * A_UINT8 reserved; + * ============================================================== + */ + + BIOS_PARAM_TYPE_MAX, } bios_param_type_e; @@ -35965,6 +36415,8 @@ typedef enum { WMI_REQUEST_CTRL_STA_RRM_STAT = 18, WMI_REQUEST_CTRL_PATH_VDEV_BCN_TX_STAT = 19, WMI_REQUEST_CTRL_PATH_PDEV_BCN_TX_STAT = 20, + WMI_REQUEST_CTRL_PATH_PDEV_CONN_STAT = 21, + WMI_REQUEST_CTRL_PATH_ML_RECONFIG_STAT = 22, } wmi_ctrl_path_stats_id; typedef enum { @@ -36444,12 +36896,29 @@ typedef enum wmi_hw_mode_config_type { #define WMI_SUPPORT_AAR_GET(mld_capability) WMI_GET_BITS(mld_capability, 12, 1) #define WMI_SUPPORT_AAR_SET(mld_capability, value) WMI_SET_BITS(mld_capability, 12, 1, value) +#define WMI_SUPPORT_LINK_RECONFIG_SUPPORT_GET(mld_capability) WMI_GET_BITS(mld_capability, 13, 1) +#define WMI_SUPPORT_LINK_RECONFIG_SUPPORT_SET(mld_capability, value) WMI_SET_BITS(mld_capability, 13, 1, value) + + /* * 11BE Ext MLD Capability Set and Get macros */ #define WMI_EXT_MLD_OPERATION_PARAMETER_UPDATE_SUPP_GET(ext_mld_capability) WMI_GET_BITS(ext_mld_capability, 0, 1) #define WMI_EXT_MLD_OPERATION_PARAMETER_UPDATE_SUPP_SET(ext_mld_capability, value) WMI_SET_BITS(ext_mld_capability, 0, 1, value) +#define WMI_EXT_MLD_RECOMMENDED_MAX_SIMULTANEOUS_LINKS_GET(ext_mld_capability) WMI_GET_BITS(ext_mld_capability, 1, 4) +#define WMI_EXT_MLD_RECOMMENDED_MAX_SIMULTANEOUS_LINKS_SET(ext_mld_capability, value) WMI_SET_BITS(ext_mld_capability, 1, 4, value) + +#define WMI_EXT_MLD_NSTR_STATUS_UPDATE_SUPPORT_GET(ext_mld_capability) WMI_GET_BITS(ext_mld_capability, 5, 1) +#define WMI_EXT_MLD_NSTR_STATUS_UPDATE_SUPPORT_SET(ext_mld_capability, value) WMI_SET_BITS(ext_mld_capability, 1, 5, value) + +#define WMI_EXT_MLD_EMLSR_ONE_LINK_SUPPORT_GET(ext_mld_capability) WMI_GET_BITS(ext_mld_capability, 6, 1) +#define WMI_EXT_MLD_EMLSR_ONE_LINK_SUPPORT_SET(ext_mld_capability, value) WMI_SET_BITS(ext_mld_capability, 6, 1, value) + +#define WMI_EXT_MLD_BTM_MLD_RECOMMEND_FOR_MULTI_AP_SUPPORT_GET(ext_mld_capability) WMI_GET_BITS(ext_mld_capability, 7, 1) +#define WMI_EXT_MLD_BTM_MLD_RECOMMEND_FOR_MULTI_AP_SUPPORT_SET(ext_mld_capability, value) WMI_SET_BITS(ext_mld_capability, 7, 1, value) + + /* * 11BE MSD Capability Set and Get macros */ @@ -36733,7 +37202,8 @@ typedef struct { * Value 3 is reserved */ freq_separation_str:5, aar_support:1, - reserved2: 19; + link_reconfig_support:1, + reserved2: 18; }; A_UINT32 mld_capability; }; @@ -36741,7 +37211,11 @@ typedef struct { struct { A_UINT32 op_update_para_support:1, /* Indicates support of operation parameter update negotiation */ - reserved3: 31; + recommended_max_simultaneous_links:4, + nstr_status_update_support:1, + emlsr_one_link_support:1, + btm_recommended_for_multi_ap:1, + reserved3: 24; }; A_UINT32 ext_mld_capability; }; @@ -36986,8 +37460,34 @@ typedef struct { * the bits within the bitmap */ A_UINT32 twt_capability_bitmap; + + /* min_max_wake_dur_us + * min wake dur - refer to min TWT SP duration + * max wake dur - refer to max TWT SP duration + */ + A_UINT32 min_max_wake_dur_us; + + /* min_max_wake_intvl_us + * min wake intvl - refer to min TWT SI interval + * max wake intvl - refer to max TWT SI interval + */ + A_UINT32 min_max_wake_intvl_us; } wmi_twt_caps_params; +/* 0 - 15 bits for MAX WAKE DUR , 16 - 31 bits for MIN WAKE DUR */ +#define TWT_CAPS_SET_MAX_WAKE_DUR(var, val) WMI_SET_BITS(var, 0, 16, val) +#define TWT_CAPS_SET_MIN_WAKE_DUR(var, val) WMI_SET_BITS(var, 16, 16, val) + +#define TWT_CAPS_GET_MAX_WAKE_DUR(var) WMI_GET_BITS(var, 0, 16) +#define TWT_CAPS_GET_MIN_WAKE_DUR(var) WMI_GET_BITS(var, 16, 16) + +/* 0 - 15 bits for MAX WAKE INTVL , 16 - 31 bits for MIN WAKE INTVL */ +#define TWT_CAPS_SET_MAX_WAKE_INTVL(var, val) WMI_SET_BITS(var, 0, 16, val) +#define TWT_CAPS_SET_MIN_WAKE_INTVL(var, val) WMI_SET_BITS(var, 16, 16, val) + +#define TWT_CAPS_GET_MAX_WAKE_INTVL(var) WMI_GET_BITS(var, 0, 16) +#define TWT_CAPS_GET_MIN_WAKE_INTVL(var) WMI_GET_BITS(var, 16, 16) + /* * This TLV used for Scan Radio RDP * We have an RDP which supports Multiband-Frequency (2 GHz, 5 GHz and 6 GHz) @@ -38149,6 +38649,13 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command) WMI_RETURN_STRING(WMI_SET_AP_SUSPEND_RESUME_CMDID); WMI_RETURN_STRING(WMI_P2P_GO_DFS_AP_CONFIG_CMDID); WMI_RETURN_STRING(WMI_USD_SERVICE_CMDID); + WMI_RETURN_STRING(WMI_PDEV_POWER_BOOST_CMDID); + WMI_RETURN_STRING(WMI_PDEV_POWER_BOOST_MEM_ADDR_CMDID); + WMI_RETURN_STRING(WMI_GET_SCAN_CACHE_RESULT_CMDID); + WMI_RETURN_STRING(WMI_MLO_LINK_RECONFIG_CMDID); + WMI_RETURN_STRING(WMI_MLO_LINK_RECONFIG_COMPLETE_CMDID); + WMI_RETURN_STRING(WMI_SAWF_EZMESH_HOP_COUNT_CMDID); + WMI_RETURN_STRING(WMI_VDEV_VBSS_CONFIG_CMDID); } return (A_UINT8 *) "Invalid WMI cmd"; @@ -38850,6 +39357,12 @@ typedef struct { A_UINT32 new_alpha2; /** alpha2 characters representing the country code */ } wmi_11d_new_country_event_fixed_param; +/** FW indicating LPI AP detect or not to Host */ +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_c2c_detect_event_fixed_param */ + A_UINT32 lpi_ap_detect; /** flag to indicate LPI AP detect or not */ +} wmi_c2c_detect_event_fixed_param; + typedef struct { /** TLV tag and len; tag equals * WMITLV_TAG_STRUC_wmi_coex_get_antenna_isolation_cmd_fixed_param */ @@ -39781,6 +40294,14 @@ typedef enum _WMI_TWT_COMMAND_T { #define TWT_FLAGS_GET_PM_RESPONDER_MODE(flag) WMI_GET_BITS(flag, 15, 1) #define TWT_FLAGS_SET_PM_RESPONDER_MODE(flag, val) WMI_SET_BITS(flag, 15, 1, val) +/* 1 means IMPLICIT TWT, 0 means EXPLICIT TWT */ +#define TWT_FLAGS_GET_IMPLICIT(flag) WMI_GET_BITS(flag, 16, 1) +#define TWT_FLAGS_SET_IMPLICIT(flag, val) WMI_SET_BITS(flag, 16, 1, val) + +/* 1 means RENEGOTIATE TWT supported, 0 means RENEGOTIATE TWT not supported */ +#define TWT_FLAGS_GET_RENEGOTIATE(flag) WMI_GET_BITS(flag, 17, 1) +#define TWT_FLAGS_SET_RENEGOTIATE(flag, val) WMI_SET_BITS(flag, 17, 1, val) + typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_twt_ack_event_fixed_param */ A_UINT32 vdev_id; /* VDEV identifier */ @@ -39947,6 +40468,7 @@ typedef enum _WMI_DEL_TWT_STATUS_T { WMI_DEL_TWT_STATUS_SCAN_IN_PROGRESS, /* Reason Scan in progress */ WMI_DEL_TWT_STATUS_CHANGE_CONGESTION_TIMEOUT, /* Congestion timeout changed */ WMI_DEL_TWT_STATUS_P2P_GO_NOA, /* P2P GO NOA */ + WMI_DEL_TWT_STATUS_UNSUPPORTED_MLMR_MODE, /* Teardown due to MLMR */ } WMI_DEL_TWT_STATUS_T; typedef struct { @@ -40408,6 +40930,109 @@ typedef struct { }; } wmi_spectral_fft_size_capabilities; +typedef struct { + /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_pdev_wifi_radar_cap_evt_fixed_param */ + A_UINT32 tlv_header; + /* ID of pdev to which capability is sent */ + A_UINT32 pdev_id; +} wmi_pdev_wifi_radar_cap_evt_fixed_param; + +#define WMI_WIFI_RADAR_LTF_LENGTH_CAPABILITIES_PDEV_ID_GET(word32) \ + WMI_GET_BITS(word32, 0, 4) +#define WMI_WIFI_RADAR_LTF_LENGTH_CAPABILITIES_PDEV_ID_SET(word32, value) \ + WMI_SET_BITS(word32, 0, 4, value) + +#define WMI_WIFI_RADAR_LTF_LENGTH_CAPABILITIES_LTF_MAX_NUM_TX_GET(word32) \ + WMI_GET_BITS(word32, 4, 28) +#define WMI_WIFI_RADAR_LTF_LENGTH_CAPABILITIES_LTF_MAX_NUM_TX_SET(word32, value) \ + WMI_SET_BITS(word32, 4, 28, value) + +#define WMI_WIFI_RADAR_LTF_LENGTH_CAPABILITIES_LTF_MAX_EXPO_NUM_RX_GET(word32) \ + WMI_GET_BITS(word32, 0, 16) +#define WMI_WIFI_RADAR_LTF_LENGTH_CAPABILITIES_LTF_MAX_EXPO_NUM_RX_SET(word32, value) \ + WMI_SET_BITS(word32, 0, 16, value) + +#define WMI_WIFI_RADAR_LTF_LENGTH_CAPABILITIES_LTF_MAX_NUM_INITIAL_SKIP_RX_GET(word32) \ + WMI_GET_BITS(word32, 16, 16) +#define WMI_WIFI_RADAR_LTF_LENGTH_CAPABILITIES_LTF_MAX_NUM_INITIAL_SKIP_RX_SET(word32, value) \ + WMI_SET_BITS(word32, 16, 16, value) + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_wifi_radar_ltf_length_capabilities */ + union { + A_UINT32 ltf_cap1_word32; + struct { + /* + * bits 3:0 -> PDEV ID + * bits 31:4 -> LTF at Tx configuration + */ + A_UINT32 + pdev_id: 4, + /* Max number of LTF at Tx configuration */ + ltf_max_num_tx: 28; + }; + }; + union { + A_UINT32 ltf_cap2_word32; + struct { + /* + * bits 15:0 -> LTF at Rx configuration in exponential term + * bits 31:16 -> LTF to skip intially at Rx configuration + */ + A_UINT32 + ltf_max_expo_num_rx: 16, + /* Max number of LTF at Rx configuration */ + ltf_max_num_initial_skip_rx: 16; + /* Max number of LTF to skip initially at Rx configuration */ + }; + }; + /** + * This TLV contains target LTF capability for Wi-Fi Radar sensing feature. + */ +} wmi_wifi_radar_ltf_length_capabilities; + +#define WMI_WIFI_RADAR_CHAIN_CAPABILITIES_PDEV_ID_GET(word32) \ + WMI_GET_BITS(word32, 0, 4) +#define WMI_WIFI_RADAR_CHAIN_CAPABILITIES_PDEV_ID_SET(word32, value) \ + WMI_SET_BITS(word32, 0, 4, value) + +#define WMI_WIFI_RADAR_CHAIN_CAPABILITIES_MAX_NUM_RX_CHAIN_GET(word32) \ + WMI_GET_BITS(word32, 4, 7) +#define WMI_WIFI_RADAR_CHAIN_CAPABILITIES_MAX_NUM_RX_CHAIN_SET(word32, value) \ + WMI_SET_BITS(word32, 4, 7, value) + +#define WMI_WIFI_RADAR_CHAIN_CAPABILITIES_BEST_ISOLATED_CHAIN_PAIR_SEL_GET(word32) \ + WMI_GET_BITS(word32, 11, 1) +#define WMI_WIFI_RADAR_CHAIN_CAPABILITIES_BEST_ISOLATED_CHAIN_PAIR_SEL_SET(word32, value) \ + WMI_SET_BITS(word32, 11, 1, value) + +typedef struct { + /** TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_wifi_radar_chain_capabilities */ + A_UINT32 tlv_header; + union { + A_UINT32 chain_cap1_word32; + struct { + /* + * bits 3:0 -> PDEV ID + * bits 10:4 -> Max number of Rx chain capture in one shot + * bit 11 -> Best Isolated Chain pair selection enabled or not + * bits 31:12 -> reserved + */ + A_UINT32 + pdev_id: 4, + /* Max num of Rx chain can be used to capture at a time */ + max_num_rx_chain: 7, + /* Chain-to-Chain Isolation based chain pair support */ + best_isolated_chain_pair_sel: 1, + reserved:20; + }; + }; + /** + * This TLV contains target chain capability for Wi-Fi Radar sensing feature. + */ +} wmi_wifi_radar_chain_capabilities; + typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_pdev_ctl_failsafe_event_params */ A_UINT32 pdev_id; /* ID of pdev to which ctl failsafe status is sent */ @@ -41500,6 +42125,9 @@ typedef struct { #define WMI_MLO_LINK_INFO_GET_IEEE_LINK_ID(link_info) WMI_GET_BITS(link_info, 10, 4) #define WMI_MLO_LINK_INFO_SET_IEEE_LINK_ID(link_info, val) WMI_SET_BITS(link_info, 10, 4, val) +#define WMI_MLO_LINK_INFO_GET_FREQ(link_info) WMI_GET_BITS(link_info, 14, 16) +#define WMI_MLO_LINK_INFO_SET_FREQ(link_info, val) WMI_SET_BITS(link_info, 14, 16, val) + typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_mlo_link_info_tlv_param */ wmi_mac_addr link_addr; @@ -41512,6 +42140,7 @@ typedef struct { * 1 - rejected * b[7-9] : Band - link band info (band value is from wmi_mlo_band_info) * b[10-13] : IEEE link id - Link id associated with AP + * b[14-29] : Frequency - Link channel frequency in MHz units */ } wmi_mlo_link_info; @@ -41975,6 +42604,7 @@ typedef enum { WMI_6GHZ_REG_PWRMODE_SP = 1, /* SP mode for AP and client products */ WMI_6GHZ_REG_PWRMODE_VLP = 2, /* VLP mode for AP and client products */ WMI_6GHZ_REG_PWRMODE_SP_STA = 3, /* SP client mode for AP products */ + WMI_6GHZ_REG_PWRMODE_C2C = 4, /*C2C client mode for AP and client products*/ WMI_6GHZ_REG_PWRMODE_MAX = 5 } WMI_6GHZ_REG_PWRMODE_TYPE; @@ -44064,6 +44694,13 @@ typedef struct { /****** End of 11BE EHT MAC Capabilities Information field ******/ +/****** 11BE EHT OPS Information field ******/ + +/* Bit 0 is for MCS15. If bit0 is 1 then we enable mcs15 */ +#define WMI_EHT_OPS_SUPMCS15_GET(eht_ops) WMI_GET_BITS(eht_ops, 0, 1) +#define WMI_EHT_OPS_SUPMCS15_SET(eht_ops, value) WMI_SET_BITS(eht_ops, 0, 1, value) + +/****** End of 11BE EHT OPS Information field ******/ typedef struct { /** TLV tag and len; tag equals @@ -46002,6 +46639,7 @@ typedef enum { WMI_MLO_LINK_FORCE_REASON_LINK_REMOVAL = 3, /* Set force specific links because of AP-side link removal */ WMI_MLO_LINK_FORCE_REASON_TDLS = 4, /* Set force specific links because of 11BE MLO TDLS setup/teardown */ WMI_MLO_LINK_FORCE_REASON_REVERT_FAILURE = 5, /* Set force specific links for revert previous failed due to host reject */ + WMI_MLO_LINK_FORCE_REASON_LINK_DELETE = 6, /* Set force specific links because link is deleted from associated link set */ } WMI_MLO_LINK_FORCE_REASON; #define WMI_MLO_CONTROL_FLAGS_GET_OVERWRITE_FORCE_ACTIVE(mlo_flags) \ @@ -46225,6 +46863,9 @@ typedef struct { A_UINT32 mld_group_id; /** pdev_id for identifying the MAC, See macros starting with WMI_PDEV_ID_ for values. */ A_UINT32 pdev_id; + + A_UINT32 max_num_ml_peers; + /* * Followed by TLVs: * A_UINT32 hw_link_ids[]; @@ -46309,6 +46950,31 @@ typedef struct { */ } wmi_mlo_link_recommendation_fixed_param; +typedef struct { + /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_mlo_link_reconfig_fixed_param */ + A_UINT32 tlv_header; + /* unique id identifying the VDEV, generated by the caller */ + A_UINT32 vdev_id; + wmi_mac_addr mld_addr; /* MLD address of AP */ + /* The TLVs follows this structure: + * wmi_mlo_link_add_param link_add_param[]; + * wmi_mlo_link_del_param link_del_param[]; + */ +} wmi_mlo_link_reconfig_fixed_param; + +typedef struct { + /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_mlo_link_reconfig_complete_fixed_param */ + A_UINT32 tlv_header; + /* unique id identifying the VDEV, generated by the caller */ + A_UINT32 vdev_id; + /* MLD address of AP */ + wmi_mac_addr mld_addr; + /* any non-zero values of status indicate link reconfig failure. */ + A_UINT32 status; + /* valid only when status is non-zero. fw will do reassociation if link reconfig failure */ + A_UINT32 reassoc_if_failure; +} wmi_mlo_link_reconfig_complete_fixed_param; + #define WMI_TID_TO_LINK_MAP_TID_NUM_GET(_var) WMI_GET_BITS(_var, 0, 5) #define WMI_TID_TO_LINK_MAP_TID_NUM_SET(_var, _val) WMI_SET_BITS(_var, 0, 5, _val) @@ -46463,7 +47129,7 @@ typedef struct { */ } wmi_peer_tid_to_link_map_fixed_param; -typedef struct{ +typedef struct { /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_mlo_ap_vdev_tid_to_link_map_cmd_fixed_param */ A_UINT32 tlv_header; /** pdev_id for identifying the MAC, See macros starting with WMI_PDEV_ID_ for values. */ @@ -47173,6 +47839,19 @@ typedef struct { A_UINT32 svc_class_id; /* which service class is being disabled */ } wmi_sawf_svc_class_disable_cmd_fixed_param; +/* Used to store Hop count info for SDWF-Ezmesh scenario based on topology changes */ +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_sawf_ezmesh_hop_count_cmd_fixed_param */ + A_UINT32 peer_id; + A_UINT32 hop_count; + /* delay_bound: + * Placeholder for future functionality where delay bound will be directly + * passed to FW from host. + * (units = ms) + */ + A_UINT32 delay_bound; +} wmi_sawf_ezmesh_hop_count_cmd_fixed_param; + typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_sw_cal_ver_cap */ A_UINT32 bdf_cal_ver; /* SW cal version in BDF */ @@ -48342,6 +49021,7 @@ typedef enum _WMI_VDEV_PAUSE_TYPE WMI_VDEV_PAUSE_TYPE_UNKNOWN = 0, WMI_VDEV_PAUSE_TYPE_MLO_LINK = 1, WMI_VDEV_PAUSE_TYPE_TX = 2, + WMI_VDEV_PAUSE_TYPE_TX_DATA = 3, } WMI_VDEV_PAUSE_TYPE; typedef struct { @@ -48356,10 +49036,26 @@ typedef struct { A_UINT32 pause_dur_ms; } wmi_vdev_pause_cmd_fixed_param; +typedef enum _WMI_MLO_link_BSS_OP_CODE +{ + MLO_LINK_BSS_OP_UPDATE = 0, + MLO_LINK_BSS_OP_ADD = 1, + MLO_LINK_BSS_OP_DEL = 2, +} WMI_MLO_link_BSS_OP_CODE; + typedef struct { A_UINT32 tlv_header; A_UINT32 ieee_link_id; /* key to identify a link */ wmi_channel wmi_chan; + A_UINT32 op_code; /* see definition of WMI_MLO_link_BSS_OP_CODE */ + /* bss_id: + * This field is only relevant for op_code MLO_LINK_BSS_OP_ADD. + */ + wmi_mac_addr bss_id; + /* self_mac: + * This field is only relevant for op_code MLO_LINK_BSS_OP_ADD. + */ + wmi_mac_addr self_mac; } wmi_mlo_link_bss_param; typedef struct { @@ -48915,13 +49611,15 @@ typedef struct { #define WMI_PEER_ACTIVE_TRAFFIC_TYPE_BACKGROUND_S 2 /* bits 3-15 are reserved for new non-interactive traffic types */ -#define WMI_PEER_ACTIVE_TRAFFIC_TYPE_GAMING_M 0x00010000 -#define WMI_PEER_ACTIVE_TRAFFIC_TYPE_GAMING_S 16 -#define WMI_PEER_ACTIVE_TRAFFIC_TYPE_VOIP_M 0x00020000 -#define WMI_PEER_ACTIVE_TRAFFIC_TYPE_VOIP_S 17 -#define WMI_PEER_ACTIVE_TRAFFIC_TYPE_VIDEO_CONF_M 0x00040000 -#define WMI_PEER_ACTIVE_TRAFFIC_TYPE_VIDEO_CONF_S 18 -/* bits 19-31 are reserved for new interactive traffic types */ +#define WMI_PEER_ACTIVE_TRAFFIC_TYPE_GAMING_M 0x00010000 +#define WMI_PEER_ACTIVE_TRAFFIC_TYPE_GAMING_S 16 +#define WMI_PEER_ACTIVE_TRAFFIC_TYPE_VOIP_M 0x00020000 +#define WMI_PEER_ACTIVE_TRAFFIC_TYPE_VOIP_S 17 +#define WMI_PEER_ACTIVE_TRAFFIC_TYPE_VIDEO_CONF_M 0x00040000 +#define WMI_PEER_ACTIVE_TRAFFIC_TYPE_VIDEO_CONF_S 18 +#define WMI_PEER_ACTIVE_TRAFFIC_TYPE_WEB_BROWSING_M 0x00080000 +#define WMI_PEER_ACTIVE_TRAFFIC_TYPE_WEB_BROWSING_S 19 +/* bits 20-31 are reserved for new interactive traffic types */ typedef struct { A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_peer_active_traffic_map_cmd_fixed_param */ @@ -48982,6 +49680,50 @@ typedef struct { A_UINT32 vdev_id; } wmi_mlo_peer_tid_to_link_map_event_fixed_param; +typedef struct { + /** TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_mlo_link_reconfig_start_indication_event_fixed_param */ + A_UINT32 tlv_header; + /* vdev_id on which link reconfig indicate event is received */ + A_UINT32 vdev_id; + /* MLD MAC address */ + wmi_mac_addr mld_mac_address; + /* trigger reason of request link reconfig to host, + * enum of WMI_ROAM_TRIGGER_REASON_ID. + * WMI_ROAM_TRIGGER_REASON_FORCED will be used for STA(User/Host) + * initiated link reconfig. + * WMI_ROAM_TRIGGER_REASON_BTM will be used for AP initiated link reconfig. + * Other will be used for STA(fw) initiated link reconfig. + */ + A_UINT32 trigger_reason; + /* trigger_result: + * This field is only valid when trigger_reason == + * WMI_ROAM_TRIGGER_REASON_FORCED. + * Any non-zero values of trigger_result indicate link reconfig failure. + */ + A_UINT32 trigger_result; + /* The TLVs follows this structure: + * wmi_mlo_link_add_param link_add_param[]; + * wmi_mlo_link_del_param link_del_param[]; + */ +} wmi_mlo_link_reconfig_start_indication_event_fixed_param; + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_mlo_link_add_param */ + A_UINT32 link_id; /* AP's link ID of add link */ + wmi_mac_addr link_addr; /* AP's link address of add link */ + /* vdev_id: + * which vdev to repurpose on with add link_id if it's not 0xff + */ + A_UINT32 vdev_id; +} wmi_mlo_link_add_param; + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_mlo_link_del_param */ + A_UINT32 link_id; /* AP's link id of delete link */ + wmi_mac_addr link_addr; /* AP's link address of delete link */ +} wmi_mlo_link_del_param; + typedef enum { WMI_EVENT_POWER_BOOST_START_TRAINING = 0, WMI_EVENT_POWER_BOOST_ABORT, @@ -48990,6 +49732,13 @@ typedef enum { WMI_EVENT_POWER_BOOST_MAX } wmi_pdev_power_boost_event_type; +typedef enum { + WMI_PDEV_POWER_BOOST_TS_FIRST_PASS = 0, + WMI_PDEV_POWER_BOOST_TS_SECOND_PASS, + + WMI_PDEV_POWER_BOOST_TS_MAX +} wmi_pdev_power_boost_training_stage; + typedef struct { /* WMITLV_TAG_STRUC_wmi_pdev_power_boost_event_fixed_param */ A_UINT32 tlv_header; @@ -48998,8 +49747,8 @@ typedef struct { /* enum wmi_pdev_power_boost_event_type to update the power boost status */ A_UINT32 status; /* training_stage: - * The training stage such as 1st, 2nd for which the I/Q samples are - * updated in DDR. + * The training stage for which the I/Q samples are updated in DDR. + * This field holds a wmi_pdev_power_boost_training_stage value. */ A_UINT32 training_stage; /* MCS value for which the current DPD training has been done */ @@ -49021,8 +49770,275 @@ typedef struct { * training has been done */ A_UINT32 phy_mode; + /* size_kb: + * Size of the buffer consumed to write the I/Q samples data by uCode, + * in units of KB + */ + A_UINT32 size_kb; } wmi_pdev_power_boost_event_fixed_param; +typedef enum { + WMI_CMD_POWER_BOOST_READY = 0, + WMI_CMD_POWER_BOOST_ESTIMATED_DATA, + WMI_CMD_POWER_BOOST_ABORT, + + WMI_CMD_POWER_BOOST_MAX +} wmi_pdev_power_boost_cmd_type; + +typedef struct { + /* WMITLV_TAG_STRUC_wmi_pdev_power_boost_cmd_fixed_param */ + A_UINT32 tlv_header; + /* to identify for which pdev the cmd is sent */ + A_UINT32 pdev_id; + /* enum wmi_pdev_power_boost_cmd_type to update the power boost status */ + A_UINT32 status; + /* wmi_pdev_power_boost_training_stage value to indicate training stage */ + A_UINT32 training_stage; + /* MCS value for which the Power Boost training has been done */ + A_UINT32 mcs; + /* Bandwidth in Mhz for which the Power Boost training has been done */ + A_UINT32 bandwidth; + /* current target temperature while training the DPD packet in degree C */ + A_INT32 temperature_degreeC; + /* primary 20 MHz channel frequency in MHz */ + A_UINT32 primary_chan_mhz; + /* Center frequency 1 in MHz*/ + A_UINT32 band_center_freq1; + /* Center frequency 2 in MHz - valid only for 11acvht 80plus80 mode*/ + A_UINT32 band_center_freq2; + /* phy_mode: + * phy mode as listed by enum WLAN_PHY_MODE, for which the current + * Power Boost training has been done. + */ + A_UINT32 phy_mode; + /* tx_evm: + * Tx_evm value as calculated after the Power Boost training, + * in units of 1/4 (0.25dBm) steps. + */ + A_INT32 tx_evm; + /* tx_mask_margin: + * Tx spectral mask margin value as calculated after the Power Boost + * training, in units of 1/4 (0.25dBm) steps. + */ + A_INT32 tx_mask_margin; +} wmi_pdev_power_boost_cmd_fixed_param; + +typedef struct { + /* WMITLV_TAG_STRUC_wmi_pdev_power_boost_mem_addr_cmd_fixed_param */ + A_UINT32 tlv_header; + /* to identify for which pdev the cmd is sent */ + A_UINT32 pdev_id; + /* Lower 32 bit DDR address as allocated by the host */ + A_UINT32 paddr_aligned_lo; + /* Higher 32 bit DDR address as allocated by the host */ + A_UINT32 paddr_aligned_hi; + /* Size of the buffer been allocated by the Host in units of KB */ + A_UINT32 size; +} wmi_pdev_power_boost_mem_addr_cmd_fixed_param; + +typedef struct { + /* WMITLV_TAG_STRUC_wmi_get_scan_cache_result_cmd_fixed_param */ + A_UINT32 tlv_header; +} wmi_get_scan_cache_result_cmd_fixed_param; + +/* Element ID 61 (HT Operation) is present (see HT 7.3.2) */ +#define WIFI_CACHED_SCAN_RESULT_FLAGS_HT_OPS_PRESENT_GET(flags) WMI_GET_BITS(flags, 0, 1) +#define WIFI_CACHED_SCAN_RESULT_FLAGS_HT_OPS_PRESENT_SET(flags, value) WMI_SET_BITS(flags, 0, 1, value) + +/* Element ID 192 (VHT Operation) is present (see VHT 8.4.2) */ +#define WIFI_CACHED_SCAN_RESULT_FLAGS_VHT_OPS_PRESENT_GET(flags) WMI_GET_BITS(flags, 1, 1) +#define WIFI_CACHED_SCAN_RESULT_FLAGS_VHT_OPS_PRESENT_SET(flags, value) WMI_SET_BITS(flags, 1, 1, value) + +/* Element ID 255 + Extension 36 (HE Operation) is present (see 802.11ax 9.4.2.1) */ +#define WIFI_CACHED_SCAN_RESULT_FLAGS_HE_OPS_PRESENT_GET(flags) WMI_GET_BITS(flags, 2, 1) +#define WIFI_CACHED_SCAN_RESULT_FLAGS_HE_OPS_PRESENT_SET(flags, value) WMI_SET_BITS(flags, 2, 1, value) + +/* Element ID 255 + Extension 106 (EHT Operation) is present(see 802.11be D1.5 9.4.2.1) */ +#define WIFI_CACHED_SCAN_RESULT_FLAGS_EHT_OPS_PRESENT_GET(flags) WMI_GET_BITS(flags, 3, 1) +#define WIFI_CACHED_SCAN_RESULT_FLAGS_EHT_OPS_PRESENT_SET(flags, value) WMI_SET_BITS(flags, 3, 1, value) + +/* Element ID 127 (Extended Capabilities) is present, and bit 70 (Fine Timing Measurement Responder) is set to 1 (see IEEE Std 802.11-2016 9.4.2.27) */ +#define WIFI_CACHED_SCAN_RESULT_FLAGS_IS_FTM_RESPONDER_GET(flags) WMI_GET_BITS(flags, 4, 1) +#define WIFI_CACHED_SCAN_RESULT_FLAGS_IS_FTM_RESPONDER_SET(flags, value) WMI_SET_BITS(flags, 4, 1, value) + + +typedef struct { + wmi_channel_width width; + A_UINT32 center_frequency0; /* Frequency value in MHz */ + A_UINT32 center_frequency1; /* Frequency value in MHz */ + A_UINT32 primary_frequency; /* Frequency value in MHz */ +} wifi_channel_spec; + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_scan_cache_info */ + /* age_ms: + * Number of milliseconds prior to WMI_GET_SCAN_CACHE_RESULT_CMDID + * from when the probe response or beacon frame that was used to + * populate this info. + */ + A_UINT32 age_ms; + + /* The Capability Information field from beacon or probe response frame */ + A_UINT32 capability; + + wmi_ssid ssid; + + wmi_mac_addr bssid; + + /* A set of flags from WIFI_CACHED_SCAN_RESULT_FLAGS_* */ + A_UINT32 flags; + + A_INT32 rssi; /* units = dBm */ + + wifi_channel_spec chanspec; +} wmi_scan_cache_info; + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_scan_cache_result_event_fixed_param */ + + /* The below TLVs follow this TLV in the WMI_SCAN_CACHE_RESULT_EVENT msg: + * - A_UINT32 scan_freq_list[]; + * - struct wmi_scan_cache_info scan_cache_info[]; + */ +} wmi_scan_cache_result_fixed_param; + +#define WMI_POWER_BOOST_CAPABILITIES_PHY_ID_GET(word32) WMI_GET_BITS(word32, 0, 4) +#define WMI_POWER_BOOST_CAPABILITIES_PHY_ID_SET(word32, value) WMI_SET_BITS(word32, 0, 4, value) +#define WMI_POWER_BOOST_CAPABILITIES_POWER_BOOST_ENABLE_GET(word32) WMI_GET_BITS(word32, 4, 1) +#define WMI_POWER_BOOST_CAPABILITIES_POWER_BOOST_ENABLE_SET(word32, value) WMI_SET_BITS(word32, 4, 1, value) + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_POWER_BOOST_CAPABILITIES */ + union { + A_UINT32 phy_id__power_boost_enable__word32; + struct { + /* + * bits 3:0 -> PHY ID + * bit 4 -> power boost enable flag + * bits 31:5 -> reserved + */ + A_UINT32 + phy_id: 4, + /* Power Boost feature is enabled or not */ + power_boost_enable: 1, + reserved: 27; + }; + }; +} WMI_POWER_BOOST_CAPABILITIES; + +#define WMI_RSSI_ACCURACY_IMPROVEMENT_CAPABILITIES_PHY_ID_GET(word32) WMI_GET_BITS(word32, 0, 4) +#define WMI_RSSI_ACCURACY_IMPROVEMENT_CAPABILITIES_PHY_ID_SET(word32, value) WMI_SET_BITS(word32, 0, 4, value) +#define WMI_RSSI_ACCURACY_IMPROVEMENT_CAPABILITIES_RSSI_ACCURACY_ENABLE_GET(word32) WMI_GET_BITS(word32, 4, 1) +#define WMI_RSSI_ACCURACY_IMPROVEMENT_CAPABILITIES_RSSI_ACCURACY_ENABLE_SET(word32, value) WMI_SET_BITS(word32, 4, 1, value) + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_RSSI_ACCURACY_CAPABILITIES */ + union { + A_UINT32 phy_id__multigain_rssi_accuracy_enable__word32; + struct { + /* + * bits 3:0 -> PHY ID + * bit 4 -> rssi accuracy enhancement using MultiGainRSSI + * offset correction enable flag + * bits 31:5 -> reserved + */ + A_UINT32 + phy_id: 4, + rssi_accuracy_enable: 1, + reserved: 27; + }; + }; +} WMI_RSSI_ACCURACY_IMPROVEMENT_CAPABILITIES; + +typedef struct { + A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_vdev_vbss_config_cmd_fixed_param */ + /** unique id identifying the VDEV, generated by the caller */ + A_UINT32 vdev_id; + /** VBSS PEER MAC address */ + wmi_mac_addr peer_mac_addr; + union { + A_UINT32 action__word32; + struct { + /** 3:0 -> Action (4 bits) + * 31:4 -> reserved (28 bits) + */ + A_UINT32 + action: 4, /* refer to wmi_vbss_action */ + reserved: 28; + }; + }; + /* + * The below TLVs follow this TLV in the WMI_VDEV_VBSS_CONFIG_CMDID msg: + * - wmi_vdev_vbss_peer_sn_info[]; + * - wmi_vdev_vbss_peer_pn_info[]; + */ +} wmi_vdev_vbss_config_cmd_fixed_param; + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_vdev_vbss_peer_pn_info */ + union { + A_UINT32 pn_ctxt_id__word32; + struct { + /** 3:0 unicast/mcast/beacon + * 31:4 reserved + */ + A_UINT32 + pn_ctxt_id: 4, + reserved: 28; + }; + }; + A_UINT8 pn[16]; +} wmi_vdev_vbss_peer_pn_info; + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_vdev_vbss_peer_sn_info */ + union { + A_UINT32 tid_num__ssn__word32; + struct { + /** 15:0 tid number + * 31:16 start sequence number + */ + A_UINT32 + tid_num: 16, + ssn: 16; + }; + }; + /* The below TLVs follow this TLV in the WMI_VDEV_VBSS_CONFIG_EVENTID msg: + * - A_UINT32 scan_freq_list[]; + * - wmi_vdev_vbss_config_event_fixed_param[]; + */ +} wmi_vdev_vbss_peer_sn_info; + +typedef enum { + WMI_VBSS_GET_PEER_CONTEXT = 0x1, + WMI_VBSS_SET_PEER_CONTEXT = 0x2, +} wmi_vbss_action; + +#define WMI_VDEV_VBSS_GET_ACTION(action) WMI_GET_BITS(action, 0, 4) +#define WMI_VDEV_VBSS_SET_ACTION(action, value) WMI_SET_BITS(action, 0, 4, value) + +#define WMI_VDEV_VBSS_PN_INFO_GET_PN_CTXT_ID(pn_ctxt_id) WMI_GET_BITS(pn_ctxt_id, 0, 4) +#define WMI_VDEV_VBSS_PN_INFO_SET_PN_CTXT_ID(pn_ctxt_id, value) WMI_SET_BITS(pn_ctxt_id, 0, 4, value) + +#define WMI_VDEV_VBSS_SN_INFO_GET_tid_num(tid_num_ssn) WMI_GET_BITS(tid_num_ssn, 0, 16) +#define WMI_VDEV_VBSS_SN_INFO_SET_tid_num(action, value) WMI_SET_BITS(tid_num_ssn, 0, 16, value) + +#define WMI_VDEV_VBSS_SN_INFO_GET_SSN(tid_num_ssn) WMI_GET_BITS(tid_num_ssn, 16, 16) +#define WMI_VDEV_VBSS_SN_INFO_SET_SSN(action, value) WMI_SET_BITS(tid_num_ssn, 16, 16, value) + + +typedef struct { + A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_vdev_vbss_config_event_fixed_param */ + /** unique id identifying the VDEV, generated by the caller */ + A_UINT32 vdev_id; + /** PEER MAC address */ + wmi_mac_addr peer_mac_addr; + /* The below TLVs follow this TLV in the WMI_VDEV_VBSS_CONFIG_EVENTID msg: + * - wmi_vdev_vbss_peer_sn_info[]; + * - wmi_vdev_vbss_peer_pn_info[]; + */ +} wmi_vdev_vbss_config_event_fixed_param; + /* ADD NEW DEFS HERE */ diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 7d27c70b84a0..37f5972c4b92 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -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_ 1523 +#define __WMI_REVISION_ 1564 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work diff --git a/hw/kiwi/v1/wcss_seq_hwioreg_umac.h b/hw/kiwi/v1/wcss_seq_hwioreg_umac.h index 69dac92cb19e..03a0e8f9dc2d 100644 --- a/hw/kiwi/v1/wcss_seq_hwioreg_umac.h +++ b/hw/kiwi/v1/wcss_seq_hwioreg_umac.h @@ -1,6 +1,6 @@ /* - * Copyright (c) 2021 Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) 2021,2024 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -386,6 +386,11 @@ #define HWIO_WBM_R2_WBM2SW1_RELEASE_RING_HP_ADDR(x) ((x) + 0x30d0) #define HWIO_WBM_R0_WBM2SW0_RELEASE_RING_BASE_MSB_RING_SIZE_BMSK 0xfffff00 #define HWIO_WBM_R0_WBM2SW0_RELEASE_RING_BASE_MSB_RING_SIZE_SHFT 8 +#define HWIO_REO_R0_REO2SW1_RING_STATUS_ADDR(x) ((x) + 0x3b0) +#define HWIO_REO_R0_REO2SW1_RING_STATUS_NUM_AVAIL_WORDS_BMSK 0xffff0000 +#define HWIO_REO_R0_REO2SW1_RING_STATUS_NUM_AVAIL_WORDS_SHFT 16 +#define HWIO_REO_R0_REO2SW1_RING_STATUS_NUM_VALID_WORDS_BMSK 0xffff +#define HWIO_REO_R0_REO2SW1_RING_STATUS_NUM_VALID_WORDS_SHFT 0 #define HWIO_REO_R0_REO2SW1_RING_MSI2_BASE_LSB_ADDR(x) ((x) + 0x3fc) #define HWIO_REO_R0_REO2SW1_RING_MSI2_BASE_MSB_ADDR(x) ((x) + 0x400) #define HWIO_REO_R0_REO2SW1_RING_MSI2_DATA_ADDR(x) ((x) + 0x404) diff --git a/hw/kiwi/v2/wcss_seq_hwioreg_umac.h b/hw/kiwi/v2/wcss_seq_hwioreg_umac.h index f594c525deed..11cb09569e7d 100644 --- a/hw/kiwi/v2/wcss_seq_hwioreg_umac.h +++ b/hw/kiwi/v2/wcss_seq_hwioreg_umac.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) 2022-2024 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -224,6 +224,11 @@ #define HWIO_REO_R0_REO2SW1_RING_BASE_MSB_RING_SIZE_BMSK 0xfffff00 #define HWIO_REO_R0_REO2SW1_RING_BASE_MSB_RING_SIZE_SHFT 8 #define HWIO_REO_R0_REO2SW1_RING_ID_ADDR(x) ((x) + 0x4ec) +#define HWIO_REO_R0_REO2SW1_RING_STATUS_ADDR(x) ((x) + 0x4f0) +#define HWIO_REO_R0_REO2SW1_RING_STATUS_NUM_AVAIL_WORDS_BMSK 0xffff0000 +#define HWIO_REO_R0_REO2SW1_RING_STATUS_NUM_AVAIL_WORDS_SHFT 16 +#define HWIO_REO_R0_REO2SW1_RING_STATUS_NUM_VALID_WORDS_BMSK 0xffff +#define HWIO_REO_R0_REO2SW1_RING_STATUS_NUM_VALID_WORDS_SHFT 0 #define HWIO_REO_R0_REO2SW1_RING_MISC_ADDR(x) ((x) + 0x4f4) #define HWIO_REO_R0_REO2SW1_RING_HP_ADDR_LSB_ADDR(x) ((x) + 0x4f8) #define HWIO_REO_R0_REO2SW1_RING_HP_ADDR_MSB_ADDR(x) ((x) + 0x4fc) diff --git a/hw/peach/v1/wcss_seq_hwioreg_umac.h b/hw/peach/v1/wcss_seq_hwioreg_umac.h index 70f00a564205..b56832a90289 100644 --- a/hw/peach/v1/wcss_seq_hwioreg_umac.h +++ b/hw/peach/v1/wcss_seq_hwioreg_umac.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) 2023-2024 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -794,6 +794,11 @@ #define HWIO_REO_R0_REO2SW1_RING_BASE_MSB_RING_SIZE_BMSK 0xfffff00 #define HWIO_REO_R0_REO2SW1_RING_BASE_MSB_RING_SIZE_SHFT 8 #define HWIO_REO_R0_REO2SW1_RING_ID_ADDR(x) ((x) + 0x508) +#define HWIO_REO_R0_REO2SW1_RING_STATUS_ADDR(x) ((x) + 0x50c) +#define HWIO_REO_R0_REO2SW1_RING_STATUS_NUM_AVAIL_WORDS_BMSK 0xffff0000 +#define HWIO_REO_R0_REO2SW1_RING_STATUS_NUM_AVAIL_WORDS_SHFT 16 +#define HWIO_REO_R0_REO2SW1_RING_STATUS_NUM_VALID_WORDS_BMSK 0xffff +#define HWIO_REO_R0_REO2SW1_RING_STATUS_NUM_VALID_WORDS_SHFT 0 #define HWIO_REO_R0_REO2SW1_RING_MISC_ADDR(x) ((x) + 0x510) #define HWIO_REO_R0_REO2SW1_RING_MISC_TRANSACTION_TYPE_BMSK 0x8000000 #define HWIO_REO_R0_REO2SW1_RING_MISC_TRANSACTION_TYPE_SHFT 27 diff --git a/hw/peach/v2/wcss_seq_hwioreg_umac.h b/hw/peach/v2/wcss_seq_hwioreg_umac.h index 4bfd1cc75984..a70dea57d36a 100644 --- a/hw/peach/v2/wcss_seq_hwioreg_umac.h +++ b/hw/peach/v2/wcss_seq_hwioreg_umac.h @@ -797,6 +797,11 @@ #define HWIO_REO_R0_REO2SW1_RING_MISC_ADDR(x) ((x) + 0x510) #define HWIO_REO_R0_REO2SW1_RING_MISC_TRANSACTION_TYPE_BMSK 0x8000000 #define HWIO_REO_R0_REO2SW1_RING_MISC_TRANSACTION_TYPE_SHFT 27 +#define HWIO_REO_R0_REO2SW1_RING_STATUS_ADDR(x) ((x) + 0x50c) +#define HWIO_REO_R0_REO2SW1_RING_STATUS_NUM_AVAIL_WORDS_BMSK 0xffff0000 +#define HWIO_REO_R0_REO2SW1_RING_STATUS_NUM_AVAIL_WORDS_SHFT 16 +#define HWIO_REO_R0_REO2SW1_RING_STATUS_NUM_VALID_WORDS_BMSK 0xffff +#define HWIO_REO_R0_REO2SW1_RING_STATUS_NUM_VALID_WORDS_SHFT 0 #define HWIO_REO_R0_REO2SW1_RING_HP_ADDR_LSB_ADDR(x) ((x) + 0x514) #define HWIO_REO_R0_REO2SW1_RING_HP_ADDR_MSB_ADDR(x) ((x) + 0x518) #define HWIO_REO_R0_REO2SW1_RING_PRODUCER_INT_SETUP_ADDR(x) ((x) + 0x524)