Merge tag 'LA.UM.9.14.1.r1-21100-QCM6490.QISI15.0' of https://git.codelinaro.org/clo/la/platform/vendor/qcom-opensource/wlan/fw-api into android13-5.4-lahaina

LA.UM.9.14.1.r1-21100-QCM6490.QISI15.0

* tag 'LA.UM.9.14.1.r1-21100-QCM6490.QISI15.0' of https://git.codelinaro.org/clo/la/platform/vendor/qcom-opensource/wlan/fw-api:
  fw-api: CL 29789367 - update fw common interface files
  fw-api: CL 29778978 - update fw common interface files
  fw-api: CL 29754585 - update fw common interface files
  fw-api: CL 29754552 - update fw common interface files
  fw-api: CL 29734524 - update fw common interface files
  fw-api: CL 29712800 - update fw common interface files
  fw-api: CL 29678196 - update fw common interface files
  fw-api: CL 29659315 - update fw common interface files
  fw-api: CL 29622365 - update fw common interface files
  fw-api: CL 29596437 - update fw common interface files
  fw-api: CL 29574189 - update fw common interface files
  fw-api: CL 29563157 - update fw common interface files
  fw-api: CL 29563125 - update fw common interface files
  fw-api: CL 29527156 - update fw common interface files
  fw-api: CL 29499792 - update fw common interface files
  fw-api: CL 29498712 - update fw common interface files
  fw-api: CL 29497269 - update fw common interface files
  fw-api: CL 29496038 - update fw common interface files
  fw-api: CL 29495802 - update fw common interface files
  fw-api: CL 29472287 - update fw common interface files
  fw-api: CL 29472280 - update fw common interface files
  fw-api: CL 29472274 - update fw common interface files
  fw-api: CL 29449928 - update fw common interface files
  fw-api: CL 29449355 - update fw common interface files
  fw-api: CL 29412107 - update fw common interface files
  fw-api: CL 29384929 - update fw common interface files
  fw-api: CL 29372661 - update fw common interface files
  fw-api: CL 29372366 - update fw common interface files
  fw-api: CL 29370374 - update fw common interface files
  fw-api: CL 29370368 - update fw common interface files
  fw-api: CL 29347560 - update fw common interface files
  fw-api: CL 29346866 - update fw common interface files
  fw-api: CL 29346863 - update fw common interface files
  qca-cmn-fw : Add extra parameter in existing rate_upper_cap command
  fw-api: CL 29312190 - update fw common interface files
  fw-api: CL 29310832 - update fw common interface files
  fw-api: CL 29310378 - update fw common interface files
  fw-api: CL 29309854 - update fw common interface files
  fw-api: CL 29309837 - update fw common interface files
  fw-api: CL 29289452 - update fw common interface files
  fw-api: CL 29289444 - update fw common interface files
  fw-api: CL 29280684 - update fw common interface files
  fw-api: CL 29279982 - update fw common interface files
  fw-api: CL 29254060 - update fw common interface files
  fw-api: CL 29230158 - update fw common interface files
  fw-api: CL 29217789 - update fw common interface files
  fw-api: CL 29208203 - update fw common interface files
  fw-api: CL 29193068 - update fw common interface files
  fw-api: CL 29182219 - update fw common interface files
  fw-api: CL 29158320 - update fw common interface files
  fw-api: CL 29137988 - update fw common interface files
  fw-api: CL 29126604 - update fw common interface files
  fw-api: CL 29115376 - update fw common interface files
  fw-api: CL 29072944 - update fw common interface files
  fw-api: CL 29042940 - update fw common interface files
  fw-api: CL 29035093 - update fw common interface files
  fw-api: CL 29026260 - update fw common interface files
  fw-api: CL 29018064 - update fw common interface files
  fw-api: CL 29017022 - update fw common interface files
  fw-api: CL 29007944 - update fw common interface files
  fw-api: CL 28998846 - update fw common interface files
  fw-api: CL 28998301 - update fw common interface files
  fw-api: CL 28990820 - update fw common interface files
  fw-api: CL 28971130 - update fw common interface files
  fw-api: CL 28972929 - update fw common interface files
  fw-api: CL 28970374 - update fw common interface files
  fw-api: CL 28944690 - update fw common interface files
  fw-api: CL 28942439 - update fw common interface files
  fw-api: CL 28935775 - update fw common interface files
  fw-api: CL 28933869 - update fw common interface files
  fw-api: CL 28911997 - update fw common interface files
  fw-api: CL 28903851 - update fw common interface files
  fw-api: CL 28887056 - update fw common interface files
  fw-api: CL 28862777 - update fw common interface files
  fw-api: CL 28855140 - update fw common interface files
  fw-api: CL 28843692 - update fw common interface files
  fw-api: CL 28837244 - update fw common interface files
  fw-api: CL 28829747 - update fw common interface files
  fw-api: CL 28811455 - update fw common interface files
  fw-api: CL 28805911 - update fw common interface files
  fw-api: CL 28757294 - update fw common interface files
  fw-api: CL 28748436 - update fw common interface files
  fw-api: CL 28739491 - update fw common interface files
  fw-api: CL 28727084 - update fw common interface files
  fw-api: CL 28705885 - update fw common interface files
  fw-api: CL 28686055 - update fw common interface files
  fw-api: CL 28676060 - update fw common interface files
  fw-api: CL 28639946 - update fw common interface files
  fw-api: CL 28638758 - update fw common interface files
  fw-api: CL 28611293 - update fw common interface files
  fw-api: CL 28602565 - update fw common interface files
  fw-api: CL 28584645 - update fw common interface files
  fw-api: CL 28583592 - update fw common interface files

Change-Id: If92c430fd46f708ab3642087b2c8f6ac655c4743
This commit is contained in:
Michael Bestas 2026-04-30 21:10:43 +03:00
commit 031cd7d112
No known key found for this signature in database
GPG key ID: CC95044519BE6669
10 changed files with 3821 additions and 532 deletions

View file

@ -1,6 +1,6 @@
/*
* Copyright (c) 2012, 2014-2017, 2020 The Linux Foundation. All rights reserved.
* Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
* Copyright (c) 2022-2023, 2025 Qualcomm Innovation Center, Inc. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@ -93,6 +93,11 @@ typedef enum {
*/
#define HTT_DATA3_MSG_SVC MAKE_SERVICE_ID(HTT_SERVICE_GROUP,2)
/* HTT_DATA4_MSG_SVC
* H2T channel to transfer MSDU/MPDU queue info from host to target
*/
#define HTT_DATA4_MSG_SVC MAKE_SERVICE_ID(HTT_SERVICE_GROUP,3)
/* raw stream service (i.e. flash, tcmd, calibration apps) */
#define HTC_RAW_STREAMS_SVC MAKE_SERVICE_ID(HTC_TEST_GROUP,0)

View file

@ -266,9 +266,14 @@
* 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.
* 3.138 Add T2H MLO_LATENCY_REQ, H2T _RESP msg defs.
* 3.139 Add CLASS_INFO_IDX field in MLO_R_PEER_MAP msg.
* 3.140 Add H2T MPDUQ_AND_MSDUQ_INFO_HDR and MPDUQ_OF_MSDUQ_INFO defs.
* 3.141 Add H2T HTT_AST_INFO for RxOLE.
* 3.142 Add T2H GLOBAL_PEER_ID_UNMAP def, update H2T MPDUQ_OR_MSDUQ_INFO def.
* 3.143 Add T2H HAPS msg def.
*/
#define HTT_CURRENT_VERSION_MAJOR 3
#define HTT_CURRENT_VERSION_MINOR 138
#define HTT_CURRENT_VERSION_MINOR 143
#define HTT_NUM_TX_FRAG_DESC 1024
@ -767,7 +772,10 @@ typedef enum {
HTT_STATS_AST_ENTRY_TAG = 132, /* htt_ast_entry_tlv */
HTT_STATS_TX_PDEV_BE_DL_MU_OFDMA_STATS_TAG = 133, /* htt_tx_pdev_dl_be_mu_ofdma_sch_stats_tlv, TOPIC=advanced */
HTT_STATS_TX_PDEV_BE_UL_MU_OFDMA_STATS_TAG = 134, /* htt_tx_pdev_ul_be_mu_ofdma_sch_stats_tlv, TOPIC=advanced */
HTT_STATS_TX_PDEV_RATE_STATS_BE_OFDMA_TAG = 135, /* htt_tx_pdev_rate_stats_be_ofdma_tlv */
HTT_STATS_TX_PDEV_RATE_BE_BN_OFDMA_TAG = 135, /* htt_stats_tx_pdev_rate_be_bn_ofdma_tlv */
/* retain deprecated name as an alias */
HTT_STATS_TX_PDEV_RATE_STATS_BE_OFDMA_TAG =
HTT_STATS_TX_PDEV_RATE_BE_BN_OFDMA_TAG,
HTT_STATS_RX_PDEV_UL_MUMIMO_TRIG_BE_STATS_TAG = 136, /* htt_rx_pdev_ul_mumimo_trig_be_stats_tlv, TOPIC=advanced */
HTT_STATS_TX_SELFGEN_BE_ERR_STATS_TAG = 137, /* htt_tx_selfgen_be_err_stats_tlv, TOPIC=advanced */
HTT_STATS_TX_SELFGEN_BE_STATS_TAG = 138, /* htt_tx_selfgen_be_stats_tlv, TOPIC=advanced */
@ -775,7 +783,10 @@ typedef enum {
HTT_STATS_TX_PDEV_BE_UL_MU_MIMO_STATS_TAG = 140, /* htt_tx_pdev_be_ul_mu_mimo_sch_stats_tlv */
HTT_STATS_RX_PDEV_BE_UL_MIMO_USER_STATS_TAG = 141, /* htt_rx_pdev_be_ul_mimo_user_stats_tlv */
HTT_STATS_RX_RING_STATS_TAG = 142, /* htt_rx_fw_ring_stats_tlv_v */
HTT_STATS_RX_PDEV_BE_UL_TRIG_STATS_TAG = 143, /* htt_rx_pdev_be_ul_trigger_stats_tlv, TOPIC=advanced */
HTT_STATS_RX_PDEV_BE_BN_UL_TRIG_TAG = 143, /* htt_stats_rx_pdev_be_bn_ul_trig_tlv, TOPIC=advanced */
/* retain deprecated name as an alias */
HTT_STATS_RX_PDEV_BE_UL_TRIG_STATS_TAG =
HTT_STATS_RX_PDEV_BE_BN_UL_TRIG_TAG,
HTT_STATS_TX_PDEV_SAWF_RATE_STATS_TAG = 144, /* htt_tx_pdev_rate_stats_sawf_tlv, TOPIC=advanced */
HTT_STATS_STRM_GEN_MPDUS_TAG = 145, /* htt_stats_strm_gen_mpdus_tlv_t */
HTT_STATS_STRM_GEN_MPDUS_DETAILS_TAG = 146, /* htt_stats_strm_gen_mpdus_details_tlv_t */
@ -844,6 +855,17 @@ typedef enum {
HTT_STATS_PDEV_UL_MUMIMO_DENYLIST_STATS_TAG = 209, /* htt_stats_pdev_ulmumimo_denylist_stats_tlv */
HTT_STATS_PDEV_UL_MUMIMO_SEQ_TERM_STATS_TAG = 210, /* htt_stats_pdev_ulmumimo_seq_term_stats_tlv */
HTT_STATS_PDEV_UL_MUMIMO_HIST_INELIGIBILITY_TAG = 211, /* htt_stats_pdev_ulmumimo_hist_ineligibility_tlv */
HTT_STATS_PHY_PAPRD_PB_TAG = 212, /* htt_stats_phy_paprd_pb_tlv */
HTT_STATS_HDS_PROF_STATS_TAG = 213, /* htt_stat_hds_prof_stats_tlv */
HTT_STATS_TX_PDEV_MDSB_NUM_USERS_HISTOGRAM_TLV_TAG = 214, /* htt_stats_tx_pdev_mdsb_num_users_histogram_tlv */
HTT_STATS_TX_PDEV_PENDING_SEQ_CNT_ON_SCHED_POST_HIST_TAG = 215, /* htt_stats_tx_pdev_pending_seq_cnt_on_sched_post_hist_tlv */
HTT_STATS_TX_PDEV_PENDING_SEQ_CNT_IN_HWQ_HIST_TAG = 216, /* htt_stats_tx_pdev_pending_seq_cnt_in_hwq_hist_tlv */
HTT_STATS_TX_PDEV_PENDING_SEQ_CNT_IN_TXQ_HIST_TAG = 217, /* htt_stats_tx_pdev_pending_seq_cnt_in_txq_hist_tlv */
HTT_STATS_SCHED_TXQ_EARLY_COMPL_TAG = 218, /* htt_stats_sched_txq_early_compl_tlv */
HTT_STATS_RX_PDEV_BN_UL_OFDMA_USER_TAG = 219, /* htt_stats_rx_pdev_bn_ul_ofdma_user_tlv */
HTT_STATS_TX_SELFGEN_BN_ERR_TAG = 220, /* htt_stats_tx_selfgen_bn_err_tlv, TOPIC=advanced */
HTT_STATS_TX_SELFGEN_BN_TAG = 221, /* htt_stats_tx_selfgen_bn_tlv, TOPIC=advanced */
HTT_STATS_TX_SELFGEN_BN_SCHED_STATUS_TAG = 222, /* htt_stats_tx_selfgen_bn_sched_status_tlv, TOPIC=advanced */
HTT_STATS_MAX_TAG,
} htt_stats_tlv_tag_t;
@ -878,47 +900,50 @@ typedef htt_stats_tlv_tag_t htt_tlv_tag_t;
/*=== host -> target messages ===============================================*/
enum htt_h2t_msg_type {
HTT_H2T_MSG_TYPE_VERSION_REQ = 0x0,
HTT_H2T_MSG_TYPE_TX_FRM = 0x1,
HTT_H2T_MSG_TYPE_RX_RING_CFG = 0x2,
HTT_H2T_MSG_TYPE_STATS_REQ = 0x3,
HTT_H2T_MSG_TYPE_SYNC = 0x4,
HTT_H2T_MSG_TYPE_AGGR_CFG = 0x5,
HTT_H2T_MSG_TYPE_FRAG_DESC_BANK_CFG = 0x6,
DEPRECATED_HTT_H2T_MSG_TYPE_MGMT_TX = 0x7, /* no longer used */
HTT_H2T_MSG_TYPE_WDI_IPA_CFG = 0x8,
HTT_H2T_MSG_TYPE_WDI_IPA_OP_REQ = 0x9,
HTT_H2T_MSG_TYPE_AGGR_CFG_EX = 0xa, /* per vdev amsdu subfrm limit */
HTT_H2T_MSG_TYPE_SRING_SETUP = 0xb,
HTT_H2T_MSG_TYPE_RX_RING_SELECTION_CFG = 0xc,
HTT_H2T_MSG_TYPE_ADD_WDS_ENTRY = 0xd,
HTT_H2T_MSG_TYPE_DELETE_WDS_ENTRY = 0xe,
HTT_H2T_MSG_TYPE_RFS_CONFIG = 0xf,
HTT_H2T_MSG_TYPE_EXT_STATS_REQ = 0x10,
HTT_H2T_MSG_TYPE_PPDU_STATS_CFG = 0x11,
HTT_H2T_MSG_TYPE_RX_FSE_SETUP_CFG = 0x12,
HTT_H2T_MSG_TYPE_RX_FSE_OPERATION_CFG = 0x13,
HTT_H2T_MSG_TYPE_CHAN_CALDATA = 0x14,
HTT_H2T_MSG_TYPE_RX_FISA_CFG = 0x15,
HTT_H2T_MSG_TYPE_3_TUPLE_HASH_CFG = 0x16,
HTT_H2T_MSG_TYPE_RX_FULL_MONITOR_MODE = 0x17,
HTT_H2T_MSG_TYPE_HOST_PADDR_SIZE = 0x18,
HTT_H2T_MSG_TYPE_RXDMA_RXOLE_PPE_CFG = 0x19,
HTT_H2T_MSG_TYPE_VDEVS_TXRX_STATS_CFG = 0x1a,
HTT_H2T_MSG_TYPE_TX_MONITOR_CFG = 0x1b,
HTT_H2T_SAWF_DEF_QUEUES_MAP_REQ = 0x1c,
HTT_H2T_SAWF_DEF_QUEUES_UNMAP_REQ = 0x1d,
HTT_H2T_SAWF_DEF_QUEUES_MAP_REPORT_REQ = 0x1e,
HTT_H2T_MSG_TYPE_MSI_SETUP = 0x1f,
HTT_H2T_MSG_TYPE_STREAMING_STATS_REQ = 0x20,
HTT_H2T_MSG_TYPE_UMAC_HANG_RECOVERY_PREREQUISITE_SETUP = 0x21,
HTT_H2T_MSG_TYPE_VERSION_REQ = 0x0,
HTT_H2T_MSG_TYPE_TX_FRM = 0x1,
HTT_H2T_MSG_TYPE_RX_RING_CFG = 0x2,
HTT_H2T_MSG_TYPE_STATS_REQ = 0x3,
HTT_H2T_MSG_TYPE_SYNC = 0x4,
HTT_H2T_MSG_TYPE_AGGR_CFG = 0x5,
HTT_H2T_MSG_TYPE_FRAG_DESC_BANK_CFG = 0x6,
DEPRECATED_HTT_H2T_MSG_TYPE_MGMT_TX = 0x7, /* no longer used */
HTT_H2T_MSG_TYPE_WDI_IPA_CFG = 0x8,
HTT_H2T_MSG_TYPE_WDI_IPA_OP_REQ = 0x9,
HTT_H2T_MSG_TYPE_AGGR_CFG_EX = 0xa, /* per vdev amsdu subfrm limit */
HTT_H2T_MSG_TYPE_SRING_SETUP = 0xb,
HTT_H2T_MSG_TYPE_RX_RING_SELECTION_CFG = 0xc,
HTT_H2T_MSG_TYPE_ADD_WDS_ENTRY = 0xd,
HTT_H2T_MSG_TYPE_DELETE_WDS_ENTRY = 0xe,
HTT_H2T_MSG_TYPE_RFS_CONFIG = 0xf,
HTT_H2T_MSG_TYPE_EXT_STATS_REQ = 0x10,
HTT_H2T_MSG_TYPE_PPDU_STATS_CFG = 0x11,
HTT_H2T_MSG_TYPE_RX_FSE_SETUP_CFG = 0x12,
HTT_H2T_MSG_TYPE_RX_FSE_OPERATION_CFG = 0x13,
HTT_H2T_MSG_TYPE_CHAN_CALDATA = 0x14,
HTT_H2T_MSG_TYPE_RX_FISA_CFG = 0x15,
HTT_H2T_MSG_TYPE_3_TUPLE_HASH_CFG = 0x16,
HTT_H2T_MSG_TYPE_RX_FULL_MONITOR_MODE = 0x17,
HTT_H2T_MSG_TYPE_HOST_PADDR_SIZE = 0x18,
HTT_H2T_MSG_TYPE_RXDMA_RXOLE_PPE_CFG = 0x19,
HTT_H2T_MSG_TYPE_VDEVS_TXRX_STATS_CFG = 0x1a,
HTT_H2T_MSG_TYPE_TX_MONITOR_CFG = 0x1b,
HTT_H2T_SAWF_DEF_QUEUES_MAP_REQ = 0x1c,
HTT_H2T_SAWF_DEF_QUEUES_UNMAP_REQ = 0x1d,
HTT_H2T_SAWF_DEF_QUEUES_MAP_REPORT_REQ = 0x1e,
HTT_H2T_MSG_TYPE_MSI_SETUP = 0x1f,
HTT_H2T_MSG_TYPE_STREAMING_STATS_REQ = 0x20,
HTT_H2T_MSG_TYPE_UMAC_HANG_RECOVERY_PREREQUISITE_SETUP = 0x21,
HTT_H2T_MSG_TYPE_UMAC_HANG_RECOVERY_SOC_START_PRE_RESET = 0x22,
HTT_H2T_MSG_TYPE_RX_CCE_SUPER_RULE_SETUP = 0x23,
HTT_H2T_MSG_TYPE_PRIMARY_LINK_PEER_MIGRATE_RESP = 0x24,
HTT_H2T_MSG_TYPE_TX_LATENCY_STATS_CFG = 0x25,
HTT_H2T_MSG_TYPE_TX_LCE_SUPER_RULE_SETUP = 0x26,
HTT_H2T_MSG_TYPE_SDWF_MSDUQ_RECFG_REQ = 0x27,
HTT_H2T_MSG_TYPE_MLO_LATENCY_STATS_RESP = 0x28,
HTT_H2T_MSG_TYPE_RX_CCE_SUPER_RULE_SETUP = 0x23,
HTT_H2T_MSG_TYPE_PRIMARY_LINK_PEER_MIGRATE_RESP = 0x24,
HTT_H2T_MSG_TYPE_TX_LATENCY_STATS_CFG = 0x25,
HTT_H2T_MSG_TYPE_TX_LCE_SUPER_RULE_SETUP = 0x26,
HTT_H2T_MSG_TYPE_SDWF_MSDUQ_RECFG_REQ = 0x27,
HTT_H2T_MSG_TYPE_MLO_LATENCY_STATS_RESP = 0x28,
HTT_H2T_MSG_TYPE_MPDUQ_AND_MSDUQ_INFO_HDR = 0x29,
HTT_H2T_MSG_TYPE_MPDUQ_OR_MSDUQ_INFO = 0x2a,
HTT_H2T_MSG_TYPE_AST_INFO = 0x2b,
/* keep this last */
HTT_H2T_NUM_MSGS
@ -11584,6 +11609,507 @@ PREPACK struct htt_h2t_mlo_latency_stats {
((_var) |= ((_val) << HTT_H2T_MSG_TYPE_MLO_LATENCY_STATS_NUM_OF_TX_PKT_S)); \
} while (0)
/**
* @brief host -> target msg to provide MSDUQ or MPDUQ for new TID in a peer
*
* MSG_TYPE => HTT_H2T_MSG_TYPE_MPDUQ_AND_MSDUQ_INFO_HDR
*
* @details
* struct htt_h2t_mpduq_and_msduq_info_hdr:
* HTT_H2T_MSG_TYPE_MPDUQ_AND_MSDUQ_INFO_HDR message is sent by the host to
* target to tell how many mpduq and msduq info TLVs, in units of bytes,
* are present in the htt payload
* Example message contents:
*-------------------------------------------------------------------
*| htt_h2t_mpduq_and_msduq_info_hdr |
*-------------------------------------------------------------------
*| mpduq_info_tlv -> tid 0 , peer_id 1 |
*-------------------------------------------------------------------
*| mpduq_info_tlv -> tid 6, peer_id 1 |
*-------------------------------------------------------------------
*| msduq_info_tlv -> tid 0, peer_id 1 |
*-------------------------------------------------------------------
*| msduq_info_tlv -> tid 0, peer_id 1 |
*-------------------------------------------------------------------
*| msduq_info_tlv -> tid 6, peer_id 1 |
*-------------------------------------------------------------------
*
* As shown in the above exampple, a single htt buffer can hold multiple mpduq
* and msduq info tlvs, the info within the tlvs will indicate the peer and tid
* to which they belong.
*/
/* HTT_H2T_MSG_TYPE_MPDUQ_AND_MSDUQ_INFO_HDR */
PREPACK struct htt_h2t_mpduq_and_msduq_info_hdr {
A_UINT32 msg_type: 8, /* bits 7:0 */
payload_size_bytes: 12, /* bits 19:8 */
reserved_1a: 12; /* bits 31:20 */
} POSTPACK;
#define HTT_H2T_MSG_TYPE_MPDUQ_AND_MSDUQ_INFO_HDR_PAYLOAD_SIZE_BYTES_M 0x000FFF00
#define HTT_H2T_MSG_TYPE_MPDUQ_AND_MSDUQ_INFO_HDR_PAYLOAD_SIZE_BYTES_S 8
#define HTT_H2T_MSG_TYPE_MPDUQ_AND_MSDUQ_INFO_HDR_PAYLOAD_SIZE_BYTES_GET(_var) \
(((_var) & HTT_H2T_MSG_TYPE_MPDUQ_AND_MSDUQ_INFO_HDR_PAYLOAD_SIZE_BYTES_M) >> \
HTT_H2T_MSG_TYPE_MPDUQ_AND_MSDUQ_INFO_HDR_PAYLOAD_SIZE_BYTES_S)
#define HTT_H2T_MSG_TYPE_MPDUQ_AND_MSDUQ_INFO_HDR_PAYLOAD_SIZE_BYTES_SET(_var, _val) \
do { \
HTT_CHECK_SET_VAL(HTT_H2T_MSG_TYPE_MPDUQ_AND_MSDUQ_INFO_HDR_PAYLOAD_SIZE_BYTES, _val); \
((_var) |= ((_val) << HTT_H2T_MSG_TYPE_MPDUQ_AND_MSDUQ_INFO_HDR_PAYLOAD_SIZE_BYTES_S)); \
} while (0)
/**
* @brief host -> target message to provide mpduq for a tid in a peer
*
* MSG_TYPE => HTT_H2T_MSG_TYPE_MPDUQ_OR_MSDUQ_INFO
*
* @details
* struct htt_h2t_mpduq_or_msduq_info:
* HTT_H2T_MSG_TYPE_MPDUQ_OR_MSDUQ_INFO message is sent by the host to
* specify the configuration of new MPDUQ/MSDUQ for a tid in a peer.
* This message supports the following configuration information:
* 1. Info provided per MPDUQ:
* upper 32 bit address of 256 byte aligned physical address for mpduq
* mpduq number
* pn address space
* 2. Info provided per MSDUQ:
* upper 32 bit address of 256 byte aligned physical address for msduq
* msduq_number
* service class id
*
* The message is interpreted as follows for mpduq type:
* dword0 - b'7:0 - msg_type: Identifies msduq and mpduq info to FW
* This will be set to 0x2a
* (HTT_H2T_MSG_TYPE_MPDUQ_OR_MSDUQ_INFO)
* b'12:8 - msduq_mpduq_type: Indicate whether this TLV is for
* a MPDU queue or MSDU queue, and if for a MSDU queue,
* what type.
* For an MPDU queue, it will be fixed value of 30 based
* on enum HTT_H2T_TID_MSDUQ_MPDUQ_TYPE.
* b'16:13 - hw_link_id: Indicates which HW link the message is for.
* This HW link ID is mainly relevant for split PHY
* usecases to identify the correct link in same SOC.
* dword1 - b'31:0 - mpduq_address_39_8: 256 byte aligned mpduq physical
* address, since lowest octet is zero for 256 byte aligned
* physical addresses just passing upper 32 bits of
* 40 bit address
* dword2 - b'11:0 – peer_id
* b'16:12 – tid_num
* b'23:17 – reserved
* b'31:24 - pn_addr_32_39: Upper 8 bits of 40 bit pn physical address
* Note that the mpduq_number is formed from the combination of
* peer_id (in bits 11:0)
* tid_num (in bits 16:12)
* msduq_mpduq_type (in bits 21:17)
* dword3 - b'31:0 - pn_addr_0_31: Lower 32 bits of 40 bit pn physical address
* Additional reserved dwords for future use cases
*
*
* The message is interpreted as follows for any msduq type:
* dword0 - b'7:0 - msg_type: Identifies msduq info to fw
* This will be set to 0x2A
* (HTT_H2T_MSG_TYPE_MPDUQ_OR_MSDUQ_INFO)
* b'12:8 - msduq_mpduq_type: type of the msduq based on
* enum HTT_H2T_TID_MSDUQ_MPDUQ_TYPE
* b'16:13 - hw_link_id: Indicates which HW link the message is
* intended for.
* This HW link ID is mainly relevant for split PHY
* usecases to identify the correct link in same SOC.
* dword1 - b'11:0 – peer_id
* b'16:12 – tid_num
* b'23:17 – reserved
* b'31:24 - svc_class_id : service class id of the msduq
* Note that the tx_msduq_number is formed from the combination of
* peer_id (in bits 11:0)
* tid_num (in bits 16:12)
* msduq_mpduq_type (in bits 21:17)
* dword2 - b'31:0 - msduq_address_39_8: 256 byte aligned msduq physical
* address, since lowest octet is zero for 256 byte aligned
* addresses just passing upper 32 bits of 40 bit address
* Additional reserved dwords for future use cases
*/
/*
* Enum describes the various msduq/mpduq types,
* First 8 types correspond to the standard msduq types for data
* Next come custom flows for specific purposes
* enum 30 is reserved for mpduq type
*/
typedef enum {
HTT_H2T_TID_MSDUQ_NONUDP, /* 0 */
HTT_H2T_TID_MSDUQ_UDP, /* 1 */
HTT_H2T_TID_MSDUQ_CUSTOM_0, /* 2 */
HTT_H2T_TID_MSDUQ_CUSTOM_1, /* 3 */
HTT_H2T_TID_MSDUQ_CUSTOM_2, /* 4 */
HTT_H2T_TID_MSDUQ_CUSTOM_3, /* 5 */
HTT_H2T_TID_MSDUQ_CUSTOM_4, /* 6 */
HTT_H2T_TID_MSDUQ_CUSTOM_5, /* 7 */
HTT_H2T_TID_MISC_MSDUQ_TYPE_START, /* 8 */
HTT_H2T_TID_MSDUQ_HOL = HTT_H2T_TID_MISC_MSDUQ_TYPE_START, /* also 8 */
HTT_H2T_TID_MSDUQ_MCAST, /* 9 */
HTT_H2T_TID_MSDUQ_FAST_ROAMING, /* 10 */
HTT_H2T_TID_MSDUQ_DATA_TYPE_END = 29, /* 29 */
HTT_H2T_TID_MPDUQ_TYPE, /* 30 */
HTT_H2T_TID_MSDUQ_MPDUQ_TYPE_END, /* 31 */
} HTT_H2T_TID_MSDUQ_MPDUQ_TYPE;
/*
* Enum to denote tid nums that can be used
* first 8 {0 - 7} numbers correspond to data access category
* {8 - 15} are for user defined usecases
* 16 is used to denote the non-qos tid
*/
typedef enum {
HTT_H2T_DEFAULT_TID_NUM = 0,
HTT_H2T_MAX_VALID_DATA_TID_NUM = 7,
HTT_H2T_NON_QOS_TID_NUM = 16,
HTT_H2T_MAX_TID_NUM = 31,
} H2T_TX_TID;
/* HTT_H2T_MSG_TYPE_MPDUQ_OR_MSDUQ_INFO */
PREPACK struct htt_h2t_mpduq_or_msduq_info {
A_UINT32 msg_type: 8, /* bits 7:0 */
msduq_mpduq_type: 5, /* bits 12:8 */
hw_link_id: 4, /* bits 16:13 */
reserved0: 15; /* bits 31:17 */
union {
struct {
A_UINT32 mpduq_address_39_8; /* bits 31:0 */
A_UINT32 mpduq_number: 24, /* bits 23:0 */
pn_addr_39_32: 8; /* bits 31:24 */
A_UINT32 pn_addr_31_0; /* bits 31:0 */
A_UINT32 reserved1a; /* bits 31:0 */
A_UINT32 reserved1b; /* bits 31:0 */
A_UINT32 reserved1c; /* bits 31:0 */
A_UINT32 reserved1d; /* bits 31:0 */
A_UINT32 reserved1e; /* bits 31:0 */
A_UINT32 reserved1f; /* bits 31:0 */
};
struct {
A_UINT32 tx_msduq_number: 24, /* bits 23:0 */
svc_class_id: 8; /* bits 31:24 */
A_UINT32 msduq_address_39_8; /* bits 31:0 */
A_UINT32 reserved2a; /* bits 31:0 */
A_UINT32 reserved2b; /* bits 31:0 */
A_UINT32 reserved2c; /* bits 31:0 */
A_UINT32 reserved2d; /* bits 31:0 */
A_UINT32 reserved2e; /* bits 31:0 */
A_UINT32 reserved2f; /* bits 31:0 */
A_UINT32 reserved2g; /* bits 31:0 */
};
};
} POSTPACK;
#define HTT_H2T_MSG_TYPE_MPDUQ_OR_MSDUQ_INFO_MSDUQ_MPDUQ_TYPE_M 0x00001F00
#define HTT_H2T_MSG_TYPE_MPDUQ_OR_MSDUQ_INFO_MSDUQ_MPDUQ_TYPE_S 8
#define HTT_H2T_MSG_TYPE_MPDUQ_OR_MSDUQ_INFO_MSDUQ_MPDUQ_TYPE_GET(_var) \
(((_var) & HTT_H2T_MSG_TYPE_MPDUQ_OR_MSDUQ_INFO_MSDUQ_MPDUQ_TYPE_M) >> \
HTT_H2T_MSG_TYPE_MPDUQ_OR_MSDUQ_INFO_MSDUQ_MPDUQ_TYPE_S)
#define HTT_H2T_MSG_TYPE_MPDUQ_OR_MSDUQ_INFO_MSDUQ_MPDUQ_TYPE_SET(_var, _val) \
do { \
HTT_CHECK_SET_VAL(HTT_H2T_MSG_TYPE_MPDUQ_OR_MSDUQ_INFO_MSDUQ_MPDUQ_TYPE, _val); \
((_var) |= ((_val) << HTT_H2T_MSG_TYPE_MPDUQ_OR_MSDUQ_INFO_MSDUQ_MPDUQ_TYPE_S)); \
} while (0)
#define HTT_H2T_MSG_TYPE_MPDUQ_OR_MSDUQ_INFO_HW_LINK_ID_M 0x0001E000
#define HTT_H2T_MSG_TYPE_MPDUQ_OR_MSDUQ_INFO_HW_LINK_ID_S 13
#define HTT_H2T_MSG_TYPE_MPDUQ_OR_MSDUQ_INFO_HW_LINK_ID_GET(_var) \
(((_var) & HTT_H2T_MSG_TYPE_MPDUQ_OR_MSDUQ_INFO_HW_LINK_ID_M) >> \
HTT_H2T_MSG_TYPE_MPDUQ_OR_MSDUQ_INFO_HW_LINK_ID_S)
#define HTT_H2T_MSG_TYPE_MPDUQ_OR_MSDUQ_INFO_HW_LINK_ID_SET(_var, _val) \
do { \
HTT_CHECK_SET_VAL(HTT_H2T_MSG_TYPE_MPDUQ_OR_MSDUQ_INFO_HW_LINK_ID, _val); \
((_var) |= ((_val) << HTT_H2T_MSG_TYPE_MPDUQ_OR_MSDUQ_INFO_HW_LINK_ID_S)); \
} while (0)
#define HTT_H2T_MSG_TYPE_MPDUQ_OR_MSDUQ_NUMBER_PEER_ID_M 0x00000FFF
#define HTT_H2T_MSG_TYPE_MPDUQ_OR_MSDUQ_NUMBER_PEER_ID_S 0
#define HTT_H2T_MSG_TYPE_MPDUQ_OR_MSDUQ_NUMBER_PEER_ID_GET(_var) \
(((_var) & HTT_H2T_MSG_TYPE_MPDUQ_OR_MSDUQ_NUMBER_PEER_ID_M) >> \
HTT_H2T_MSG_TYPE_MPDUQ_OR_MSDUQ_NUMBER_PEER_ID_S)
#define HTT_H2T_MSG_TYPE_MPDUQ_OR_MSDUQ_NUMBER_PEER_ID_SET(_var, _val) \
do { \
HTT_CHECK_SET_VAL(HTT_H2T_MSG_TYPE_MPDUQ_OR_MSDUQ_NUMBER_PEER_ID, _val); \
((_var) |= ((_val) << HTT_H2T_MSG_TYPE_MPDUQ_OR_MSDUQ_NUMBER_PEER_ID_S)); \
} while (0)
#define HTT_H2T_MSG_TYPE_MPDUQ_OR_MSDUQ_NUMBER_TID_NUM_M 0x0001F000
#define HTT_H2T_MSG_TYPE_MPDUQ_OR_MSDUQ_NUMBER_TID_NUM_S 12
#define HTT_H2T_MSG_TYPE_MPDUQ_OR_MSDUQ_NUMBER_TID_NUM_GET(_var) \
(((_var) & HTT_H2T_MSG_TYPE_MPDUQ_OR_MSDUQ_NUMBER_TID_NUM_M) >> \
HTT_H2T_MSG_TYPE_MPDUQ_OR_MSDUQ_NUMBER_TID_NUM_S)
#define HTT_H2T_MSG_TYPE_MPDUQ_OR_MSDUQ_NUMBER_TID_NUM_SET(_var, _val) \
do { \
HTT_CHECK_SET_VAL(HTT_H2T_MSG_TYPE_MPDUQ_OR_MSDUQ_NUMBER_TID_NUM, _val); \
((_var) |= ((_val) << HTT_H2T_MSG_TYPE_MPDUQ_OR_MSDUQ_NUMBER_TID_NUM_S)); \
} while (0)
#define HTT_H2T_MSG_TYPE_MPDUQ_OR_MSDUQ_NUMBER_MSDUQ_MPDUQ_TYPE_M 0x003E0000
#define HTT_H2T_MSG_TYPE_MPDUQ_OR_MSDUQ_NUMBER_MSDUQ_MPDUQ_TYPE_S 17
#define HTT_H2T_MSG_TYPE_MPDUQ_OR_MSDUQ_NUMBER_MSDUQ_MPDUQ_TYPE_GET(_var) \
(((_var) & HTT_H2T_MSG_TYPE_MPDUQ_OR_MSDUQ_NUMBER_MSDUQ_MPDUQ_TYPE_M) >> \
HTT_H2T_MSG_TYPE_MPDUQ_OR_MSDUQ_NUMBER_MSDUQ_MPDUQ_TYPE_S)
#define HTT_H2T_MSG_TYPE_MPDUQ_OR_MSDUQ_NUMBER_MSDUQ_MPDUQ_TYPE_SET(_var, _val) \
do { \
HTT_CHECK_SET_VAL(HTT_H2T_MSG_TYPE_MPDUQ_OR_MSDUQ_NUMBER_MSDUQ_MPDUQ_TYPE, _val); \
((_var) |= ((_val) << HTT_H2T_MSG_TYPE_MPDUQ_OR_MSDUQ_NUMBER_MSDUQ_MPDUQ_TYPE_S)); \
} while (0)
#define HTT_H2T_MSG_TYPE_MPDUQ_INFO_MPDUQ_ADDRESS_39_8_M 0xFFFFFFFF
#define HTT_H2T_MSG_TYPE_MPDUQ_INFO_MPDUQ_ADDRESS_39_8_S 0
#define HTT_H2T_MSG_TYPE_MPDUQ_INFO_MPDUQ_ADDRESS_39_8_GET(_var) \
(((_var) & HTT_H2T_MSG_TYPE_MPDUQ_INFO_MPDUQ_ADDRESS_39_8_M) >> \
HTT_H2T_MSG_TYPE_MPDUQ_INFO_MPDUQ_ADDRESS_39_8_S)
#define HTT_H2T_MSG_TYPE_MPDUQ_INFO_MPDUQ_ADDRESS_39_8_SET(_var, _val) \
do { \
HTT_CHECK_SET_VAL(HTT_H2T_MSG_TYPE_MPDUQ_INFO_MPDUQ_ADDRESS_39_8, _val); \
((_var) |= ((_val) << HTT_H2T_MSG_TYPE_MPDUQ_INFO_MPDUQ_ADDRESS_39_8_S)); \
} while (0)
#define HTT_H2T_MSG_TYPE_MPDUQ_INFO_MPDUQ_NUMBER_M 0x00FFFFFF
#define HTT_H2T_MSG_TYPE_MPDUQ_INFO_MPDUQ_NUMBER_S 0
#define HTT_H2T_MSG_TYPE_MPDUQ_INFO_MPDUQ_NUMBER_GET(_var) \
(((_var) & HTT_H2T_MSG_MPDUQ_INFO_MPDUQ_NUMBER_M) >> \
HTT_H2T_MSG_TYPE_MPDUQ_INFO_MPDUQ_NUMBER_S)
#define HTT_H2T_MSG_TYPE_MPDUQ_INFO_MPDUQ_NUMBER_SET(_var, _val) \
do { \
HTT_CHECK_SET_VAL(HTT_H2T_MSG_TYPE_MPDUQ_INFO_MPDUQ_NUMBER, _val); \
((_var) |= ((_val) << HTT_H2T_MSG_TYPE_MPDUQ_INFO_MPDUQ_NUMBER_S)); \
} while (0)
#define HTT_H2T_MSG_TYPE_MPDUQ_INFO_PN_ADDRESS_39_32_M 0xFF000000
#define HTT_H2T_MSG_TYPE_MPDUQ_INFO_PN_ADDRESS_39_32_S 24
#define HTT_H2T_MSG_TYPE_MPDUQ_INFO_PN_ADDRESS_39_32_GET(_var) \
(((_var) & HTT_H2T_MSG_TYPE_MPDUQ_INFO_PN_ADDRESS_39_32_M) >> \
HTT_H2T_MSG_TYPE_MPDUQ_INFO_PN_ADDRESS_39_32_S)
#define HTT_H2T_MSG_TYPE_MPDUQ_INFO_PN_ADDRESS_39_32_SET(_var, _val) \
do { \
HTT_CHECK_SET_VAL(HTT_H2T_MSG_TYPE_MPDUQ_INFO_PN_ADDRESS_39_32, _val); \
((_var) |= ((_val) << HTT_H2T_MSG_TYPE_MPDUQ_INFO_PN_ADDRESS_39_32_S)); \
} while (0)
#define HTT_H2T_MSG_TYPE_MPDUQ_INFO_PN_ADDRESS_31_0_M 0xFFFFFFFF
#define HTT_H2T_MSG_TYPE_MPDUQ_INFO_PN_ADDRESS_31_0_S 0
#define HTT_H2T_MSG_TYPE_MPDUQ_INFO_PN_ADDRESS_31_0_GET(_var) \
(((_var) & HTT_H2T_MSG_TYPE_MPDUQ_INFO_PN_ADDRESS_31_0_M) >> \
HTT_H2T_MSG_TYPE_MPDUQ_INFO_PN_ADDRESS_31_0_S)
#define HTT_H2T_MSG_TYPE_MPDUQ_INFO_PN_ADDRESS_31_0_SET(_var, _val) \
do { \
HTT_CHECK_SET_VAL(HTT_H2T_MSG_TYPE_MPDUQ_INFO_PN_ADDRESS_31_0, _val); \
((_var) |= ((_val) << HTT_H2T_MSG_TYPE_MPDUQ_INFO_PN_ADDRESS_31_0_S)); \
} while (0)
#define HTT_H2T_MSG_TYPE_MSDUQ_INFO_TX_MSDUQ_NUMBER_M 0x00FFFFFF
#define HTT_H2T_MSG_TYPE_MSDUQ_INFO_TX_MSDUQ_NUMBER_S 0
#define HTT_H2T_MSG_TYPE_MSDUQ_INFO_TX_MSDUQ_NUMBER_GET(_var) \
(((_var) & HTT_H2T_MSG_TYPE_MSDUQ_INFO_TX_MSDUQ_NUMBER_M) >> \
HTT_H2T_MSG_TYPE_MSDUQ_INFO_TX_MSDUQ_NUMBER_S)
#define HTT_H2T_MSG_TYPE_MSDUQ_INFO_TX_MSDUQ_NUMBER_SET(_var, _val) \
do { \
HTT_CHECK_SET_VAL(HTT_H2T_MSG_TYPE_MSDUQ_INFO_TX_MSDUQ_NUMBER, _val); \
((_var) |= ((_val) << HTT_H2T_MSG_TYPE_MSDUQ_INFO_TX_MSDUQ_NUMBER_S)); \
} while (0)
#define HTT_H2T_MSG_TYPE_MSDUQ_INFO_SVC_CLASS_ID_M 0xFF000000
#define HTT_H2T_MSG_TYPE_MSDUQ_INFO_SVC_CLASS_ID_S 24
#define HTT_H2T_MSG_TYPE_MSDUQ_INFO_SVC_CLASS_ID_GET(_var) \
(((_var) & HTT_H2T_MSG_TYPE_MSDUQ_INFO_SVC_CLASS_ID_M) >> \
HTT_H2T_MSG_TYPE_MSDUQ_INFO_SVC_CLASS_ID_S)
#define HTT_H2T_MSG_TYPE_MSDUQ_INFO_SVC_CLASS_ID_SET(_var, _val) \
do { \
HTT_CHECK_SET_VAL(HTT_H2T_MSG_TYPE_MSDUQ_INFO_SVC_CLASS_ID, _val); \
((_var) |= ((_val) << HTT_H2T_MSG_TYPE_MSDUQ_INFO_SVC_CLASS_ID_S)); \
} while (0)
#define HTT_H2T_MSG_TYPE_MSDUQ_INFO_MSDUQ_ADDRESS_39_8_M 0xFFFFFFFF
#define HTT_H2T_MSG_TYPE_MSDUQ_INFO_MSDUQ_ADDRESS_39_8_S 0
#define HTT_H2T_MSG_TYPE_MSDUQ_INFO_MSDUQ_ADDRESS_39_8_GET(_var) \
(((_var) & HTT_H2T_MSG_TYPE_MSDUQ_INFO_MSDUQ_ADDRESS_39_8_M) >> \
HTT_H2T_MSG_TYPE_MSDUQ_INFO_MSDUQ_ADDRESS_39_8_S)
#define HTT_H2T_MSG_TYPE_MSDUQ_INFO_MSDUQ_ADDRESS_39_8_SET(_var, _val) \
do { \
HTT_CHECK_SET_VAL(HTT_H2T_MSG_TYPE_MSDUQ_INFO_MSDUQ_ADDRESS_39_8, _val); \
((_var) |= ((_val) << HTT_H2T_MSG_TYPE_MSDUQ_INFO_MSDUQ_ADDRESS_39_8_S)); \
} while (0)
/*
* @brief host -> target HTT_AST_INFO message
*
* MSG_TYPE => HTT_H2T_MSG_TYPE_AST_INFO
*
* The message would appear as follows:
* |31 24|23 21|20|19|18|17|16|15 8|7 0|
* |--------------+-------------------------------------+-------------------|
* |ast_max_search| ast_table_size | msg_type |
* |------------------------------------------------------------------------|
* | ast_base_addr_31_0 |
* |------------------------------------------------------------------------|
* | ase_hash_key1 |
* |------------------------------------------------------------------------|
* | ase_hash_key2 |
* |------------------------------------------------------------------------|
* | ase_hash_key3 |
* |--------------------+--+--+--+--+--+----------------+-------------------|
* | reserved |L |K |J |I |H | tmo |ast_base_addr_39_32|
* |--------------------+--+--+--+--+--+----------------+-------------------|
*
* The message is interpreted as follows:
* dword0 b'7:0 - msg_type
* 0 b'23:8 - ast table size
* b'31:24 - ast max search
* dword1 - b'31:0 - ast table base address
* dword2 - b'31:0 - ase hash key 1
* dword3 - b'31:0 - ase hash key 2
* dword4 - b'31:0 - ase hash key 3
* dword5 - b'7:0 - ast_base_addr_39_32
* b'15:8 - ast_timeout_threshold
* b'16 - H - ast cache disable knob
* b'17 - I - ast cache faluires disable knob
* b'18 - J - ast cache cmd read bypass
* Bypassing the reads from memory when an entry is not
* found in cache, in case of full cache commands,
* write back or invalidate commands.
* b'19 - K - ast cache write back fx
* If this fix is disabled, then any write back command
* for a cache line will also lead to invalidation of
* that cache line.
* b'20 - L - ast cache only entry command fix
* If enabled, a new cache entry will always be created
* for requests for which matching data was found
* neither in cache nor in memory.
*/
PREPACK struct htt_ast_info_t {
A_UINT32 msg_type: 8,
ast_table_size: 16, /* number of entries in AST */
ast_max_search: 8;
A_UINT32 ast_base_addr; /* base address of the AST table */
A_UINT32 ase_hash_key1;
A_UINT32 ase_hash_key2;
A_UINT32 ase_hash_key3;
A_UINT32 ast_base_addr_39_32: 8, /* 7:0 */
ast_timeout_threshold: 8, /* 15:8 */
ast_cache_disable: 1, /* 16 */
ast_cache_failures_disable: 1, /* 17 */
ast_cache_cmd_read_bypass_dis: 1, /* 18 */
ast_cache_write_back_fix_dis: 1, /* 19 */
ast_cache_only_entry_cmd_fix_dis: 1, /* 20 */
reserved: 11;
} POSTPACK;
#define HTT_AST_INFO_SZ (sizeof(struct htt_ast_info_t))
/* DWORD0 */
#define HTT_AST_INFO_AST_TABLE_SIZE_M 0x00ffff00
#define HTT_AST_INFO_AST_TABLE_SIZE_S 8
#define HTT_AST_INFO_AST_TABLE_SIZE_GET(_var) \
(((_var) & HTT_AST_INFO_AST_TABLE_SIZE_M) >> \
HTT_AST_INFO_AST_TABLE_SIZE_S)
#define HTT_AST_INFO_AST_TABLE_SIZE_SET(_var, _val) \
do { \
HTT_CHECK_SET_VAL(HTT_AST_INFO_AST_TABLE_SIZE, _val); \
((_var) |= ((_val) << HTT_AST_INFO_AST_TABLE_SIZE__S)); \
} while (0)
#define HTT_AST_INFO_AST_MAX_SEARCH_M 0xff000000
#define HTT_AST_INFO_AST_MAX_SEARCH_S 24
#define HTT_AST_INFO_AST_MAX_SEARCH_GET(_var) \
(((_var) & HTT_AST_INFO_AST_MAX_SEARCH_M) >> \
HTT_AST_INFO_AST_MAX_SEARCH_S)
#define HTT_AST_INFO_AST_MAX_SEARCH_SET(_var, _val) \
do { \
HTT_CHECK_SET_VAL(HTT_AST_INFO_AST_MAX_SEARCH, _val); \
((_var) |= ((_val) << HTT_AST_INFO_AST_MAX_SEARCH_S)); \
} while (0)
/* DWORD5 */
#define HTT_AST_INFO_AST_BASE_ADDR_39_32_M 0x000000ff
#define HTT_AST_INFO_AST_BASE_ADDR_39_32_S 0
#define HTT_AST_INFO_AST_BASE_ADDR_39_32_GET(_var) \
(((_var) & HTT_AST_INFO_AST_BASE_ADDR_39_32_M) >> \
HTT_AST_INFO_AST_BASE_ADDR_39_32_S)
#define HTT_AST_INFO_AST_BASE_ADDR_39_32_SET(_var, _val) \
do { \
HTT_CHECK_SET_VAL(HTT_AST_INFO_AST_BASE_ADDR_39_32, _val); \
((_var) |= ((_val) << HTT_AST_INFO_AST_BASE_ADDR_39_32_S)); \
} while (0)
#define HTT_AST_INFO_AST_TIMEOUT_THRESHOLD_M 0x0000ff00
#define HTT_AST_INFO_AST_TIMEOUT_THRESHOLD_S 8
#define HTT_AST_INFO_AST_TIMEOUT_THRESHOLD_GET(_var) \
(((_var) & HTT_AST_INFO_AST_TIMEOUT_THRESHOLD_M) >> \
HTT_AST_INFO_AST_TIMEOUT_THRESHOLD_S)
#define HTT_AST_INFO_AST_TIMEOUT_THRESHOLD_SET(_var, _val) \
do { \
HTT_CHECK_SET_VAL(HTT_AST_INFO_AST_TIMEOUT_THRESHOLD, _val); \
((_var) |= ((_val) << HTT_AST_INFO_AST_TIMEOUT_THRESHOLD_S)); \
} while (0)
#define HTT_AST_INFO_AST_CACHE_DISABLE_M 0x00010000
#define HTT_AST_INFO_AST_CACHE_DISABLE_s 16
#define HTT_AST_INFO_AST_CACHE_DISABLE_GET(_var) \
(((_var) & HTT_AST_INFO_AST_CACHE_DISABLE_M) >> \
HTT_AST_INFO_AST_CACHE_DISABLE_s)
#define HTT_AST_INFO_AST_CACHE_DISABLE_SET(_var, _val) \
do { \
HTT_CHECK_SET_VAL(HTT_AST_INFO_AST_CACHE_DISABLE, _val); \
((_var) |= ((_val) << HTT_AST_INFO_AST_CACHE_DISABLE_S)); \
} while (0)
#define HTT_AST_INFO_AST_CACHE_FALUIRES_DISABLE_M 0x00020000
#define HTT_AST_INFO_AST_CACHE_FALUIRES_DISABLE_s 17
#define HTT_AST_INFO_AST_CACHE_FALUIRES_DISABLE_GET(_var) \
(((_var) & HTT_AST_INFO_AST_CACHE_FALUIRES_DISABLE_M) >> \
HTT_AST_INFO_AST_CACHE_FALUIRES_DISABLE_s)
#define HTT_AST_INFO_AST_CACHE_FALUIRES_DISABLE_SET(_var, _val) \
do { \
HTT_CHECK_SET_VAL(HTT_AST_INFO_AST_CACHE_FALUIRES_DISABLE, _val); \
((_var) |= ((_val) << HTT_AST_INFO_AST_CACHE_FALUIRES_DISABLE_S)); \
} while (0)
#define HTT_AST_INFO_AST_CACHE_CMD_READ_BYPASS_DIS_M 0x00040000
#define HTT_AST_INFO_AST_CACHE_CMD_READ_BYPASS_DIS_s 18
#define HTT_AST_INFO_AST_CACHE_CMD_READ_BYPASS_DIS_GET(_var) \
(((_var) & HTT_AST_INFO_AST_CACHE_CMD_READ_BYPASS_DIS_M) >> \
HTT_AST_INFO_AST_CACHE_CMD_READ_BYPASS_DIS_s)
#define HTT_AST_INFO_AST_CACHE_CMD_READ_BYPASS_DIS_SET(_var, _val) \
do { \
HTT_CHECK_SET_VAL(HTT_AST_INFO_AST_CACHE_CMD_READ_BYPASS_DIS, _val); \
((_var) |= ((_val) << HTT_AST_INFO_AST_CACHE_CMD_READ_BYPASS_DIS_S)); \
} while (0)
#define HTT_AST_INFO_AST_CACHE_WRITE_BACK_FIX_DIS_M 0x00080000
#define HTT_AST_INFO_AST_CACHE_WRITE_BACK_FIX_DIS_s 19
#define HTT_AST_INFO_AST_CACHE_WRITE_BACK_FIX_DIS_GET(_var) \
(((_var) & HTT_AST_INFO_AST_CACHE_WRITE_BACK_FIX_DIS_M) >> \
HTT_AST_INFO_AST_CACHE_WRITE_BACK_FIX_DIS_s)
#define HTT_AST_INFO_AST_CACHE_WRITE_BACK_FIX_DIS_SET(_var, _val) \
do { \
HTT_CHECK_SET_VAL(HTT_AST_INFO_AST_CACHE_WRITE_BACK_FIX_DIS, _val); \
((_var) |= ((_val) << HTT_AST_INFO_AST_CACHE_WRITE_BACK_FIX_DIS_S)); \
} while (0)
#define HTT_AST_INFO_AST_CACHE_ONLY_ENTRY_CMD_FIX_DIS_M 0x00100000
#define HTT_AST_INFO_AST_CACHE_ONLY_ENTRY_CMD_FIX_DIS_s 20
#define HTT_AST_INFO_AST_CACHE_ONLY_ENTRY_CMD_FIX_DIS_GET(_var) \
(((_var) & HTT_AST_INFO_AST_CACHE_ONLY_ENTRY_CMD_FIX_DIS_M) >> \
HTT_AST_INFO_AST_CACHE_ONLY_ENTRY_CMD_FIX_DIS_s)
#define HTT_AST_INFO_AST_CACHE_ONLY_ENTRY_CMD_FIX_DIS_SET(_var, _val) \
do { \
HTT_CHECK_SET_VAL(HTT_AST_INFO_AST_CACHE_ONLY_ENTRY_CMD_FIX_DIS, _val); \
((_var) |= ((_val) << HTT_AST_INFO_AST_CACHE_ONLY_ENTRY_CMD_FIX_DIS_S)); \
} while (0)
/*=== target -> host messages ===============================================*/
@ -11659,6 +12185,8 @@ enum htt_t2h_msg_type {
HTT_T2H_MSG_TYPE_TX_LCE_SUPER_RULE_SETUP_DONE = 0x3b,
HTT_T2H_MSG_TYPE_SDWF_MSDUQ_CFG_IND = 0x3c,
HTT_T2H_MSG_TYPE_MLO_LATENCY_REQ = 0x3d,
HTT_T2H_MSG_TYPE_GLOBAL_PEER_ID_UNMAP = 0x3e,
HTT_T2H_MSG_TYPE_HAPS = 0x3f,
HTT_T2H_MSG_TYPE_TEST,
@ -14661,40 +15189,41 @@ PREPACK struct htt_tx_offload_deliver_ind_hdr_t
* with, so that the host can use that MLO peer ID to determine which peer
* transmitted the rx frame.
*
* |31 |29 27|26 24|23 20|19 17|16|15 8|7 0|
* |-------------------------------------------------------------------------|
* |RSVD | PRC |NUMLINK| MLO peer ID | msg type |
* |-------------------------------------------------------------------------|
* | MAC addr 3 | MAC addr 2 | MAC addr 1 | MAC addr 0 |
* |-------------------------------------------------------------------------|
* | RSVD_16_31 | MAC addr 5 | MAC addr 4 |
* |-------------------------------------------------------------------------|
* |CACHE_SET_NUM| TIDMASK |CHIPID|V| Primary TCL AST IDX 0 |
* |-------------------------------------------------------------------------|
* |CACHE_SET_NUM| TIDMASK |CHIPID|V| Primary TCL AST IDX 1 |
* |-------------------------------------------------------------------------|
* |CACHE_SET_NUM| TIDMASK |CHIPID|V| Primary TCL AST IDX 2 |
* |-------------------------------------------------------------------------|
* |RSVD |
* |-------------------------------------------------------------------------|
* |RSVD |
* |-------------------------------------------------------------------------|
* | htt_tlv_hdr_t |
* |-------------------------------------------------------------------------|
* |RSVD_27_31 |CHIPID| VDEVID | SW peer ID |
* |-------------------------------------------------------------------------|
* | htt_tlv_hdr_t |
* |-------------------------------------------------------------------------|
* |RSVD_27_31 |CHIPID| VDEVID | SW peer ID |
* |-------------------------------------------------------------------------|
* | htt_tlv_hdr_t |
* |-------------------------------------------------------------------------|
* |RSVD_27_31 |CHIPID| VDEVID | SW peer ID |
* |-------------------------------------------------------------------------|
* |31 |29 27|26|25|24|23 20|19 17|16|15 8|7 0|
* |--------------------------------------------------------------------------|
* |RSVD | PRC | NUMLINK| MLO peer ID | msg type |
* |--------------------------------------------------------------------------|
* | MAC addr 3 | MAC addr 2 | MAC addr 1 | MAC addr 0 |
* |--------------------------------------------------------------------------|
* | RSVD_25_31 |CV| CLASS_INFO_IDX | MAC addr 5 | MAC addr 4 |
* |--------------------------------------------------------------------------|
* |CACHE_SET_NUM| TIDMASK |CHIPID|V| Primary TCL AST IDX 0 |
* |--------------------------------------------------------------------------|
* |CACHE_SET_NUM| TIDMASK |CHIPID|V| Primary TCL AST IDX 1 |
* |--------------------------------------------------------------------------|
* |CACHE_SET_NUM| TIDMASK |CHIPID|V| Primary TCL AST IDX 2 |
* |--------------------------------------------------------------------------|
* |RSVD |
* |--------------------------------------------------------------------------|
* |RSVD |
* |--------------------------------------------------------------------------|
* | htt_tlv_hdr_t |
* |--------------------------------------------------------------------------|
* |RSVD_27_31 | CHIPID | VDEVID | SW peer ID |
* |--------------------------------------------------------------------------|
* | htt_tlv_hdr_t |
* |--------------------------------------------------------------------------|
* |RSVD_27_31 | CHIPID | VDEVID | SW peer ID |
* |--------------------------------------------------------------------------|
* | htt_tlv_hdr_t |
* |--------------------------------------------------------------------------|
* |RSVD_27_31 | CHIPID | VDEVID | SW peer ID |
* |--------------------------------------------------------------------------|
*
* Where:
* PRC - Primary REO CHIPID - 3 Bits Bit24,25,26
* NUMLINK - NUM_LOGICAL_LINKS - 3 Bits Bit27,28,29
* CV - CLASSIFY_INFO_IDX_VALID - 1 Bit Bit24
* V (valid) - 1 Bit Bit17
* CHIPID - 3 Bits
* TIDMASK - 8 Bits
@ -14734,6 +15263,16 @@ PREPACK struct htt_tx_offload_deliver_ind_hdr_t
* Purpose: Identifies which peer node the peer ID is for.
* Value: upper 2 bytes of peer node's MAC address
*
* - CLASS_INFO_IDX
* Bits 23:16
* Purpose: Classify info index assists TCL-L Block in certain families of
* WLAN chips to start finding the flow from the corresponding
* entry in the FLOW LOOK UP TABLE in MLO case
* - CV (CLASS_INFO_IDX_VALID)
* Bit 24
* Purpose: if set indicates that the CLASS_INFO_IDX is valid,
* else ignore the value reported
*
* - PRIMARY_TCL_AST_IDX
* Bits 15:0
* Purpose: Primary TCL AST index for this peer.
@ -14805,6 +15344,11 @@ typedef enum {
#define HTT_RX_MLO_PEER_MAP_MAC_ADDR_U16_M 0x0000ffff
#define HTT_RX_MLO_PEER_MAP_MAC_ADDR_U16_S 0
#define HTT_RX_MLO_PEER_MAP_CLASSIFY_INFO_IDX_M 0x00ff0000
#define HTT_RX_MLO_PEER_MAP_CLASSIFY_INFO_IDX_S 16
#define HTT_RX_MLO_PEER_MAP_CLASSIFY_INFO_IDX_VALID_FLAG_M 0x01000000
#define HTT_RX_MLO_PEER_MAP_CLASSIFY_INFO_IDX_VALID_FLAG_S 24
#define HTT_RX_MLO_PEER_MAP_PRIMARY_AST_INDEX_M 0x0000ffff
#define HTT_RX_MLO_PEER_MAP_PRIMARY_AST_INDEX_S 0
#define HTT_RX_MLO_PEER_MAP_AST_INDEX_VALID_FLAG_M 0x00010000
@ -14853,6 +15397,30 @@ typedef enum {
#define HTT_RX_MLO_PEER_PRIMARY_REO_CHIP_ID_GET(word) \
(((word) & HTT_RX_MLO_PEER_PRIMARY_REO_CHIP_ID_M) >> HTT_RX_MLO_PEER_PRIMARY_REO_CHIP_ID_S)
#define HTT_RX_MLO_PEER_PRIMARY_REO_CHIP_ID_SET(word, value) \
do { \
HTT_CHECK_SET_VAL(HTT_RX_MLO_PEER_PRIMARY_REO_CHIP_ID, value); \
(word) |= (value) << HTT_RX_MLO_PEER_PRIMARY_REO_CHIP_ID_S; \
} while (0)
#define HTT_RX_MLO_PEER_PRIMARY_REO_CHIP_ID_GET(word) \
(((word) & HTT_RX_MLO_PEER_PRIMARY_REO_CHIP_ID_M) >> HTT_RX_MLO_PEER_PRIMARY_REO_CHIP_ID_S)
#define HTT_RX_MLO_PEER_MAP_CLASSIFY_INFO_IDX_SET(word, value) \
do { \
HTT_CHECK_SET_VAL(HTT_RX_MLO_PEER_MAP_CLASSIFY_INFO_IDX, value); \
(word) |= (value) << HTT_RX_MLO_PEER_MAP_CLASSIFY_INFO_IDX_S; \
} while (0)
#define HTT_RX_MLO_PEER_MAP_CLASSIFY_INFO_IDX_GET(word) \
(((word) & HTT_RX_MLO_PEER_MAP_CLASSIFY_INFO_IDX_M) >> HTT_RX_MLO_PEER_MAP_CLASSIFY_INFO_IDX_S)
#define HTT_RX_MLO_PEER_MAP_CLASSIFY_INFO_IDX_VALID_FLAG_SET(word, value) \
do { \
HTT_CHECK_SET_VAL(HTT_RX_MLO_PEER_MAP_CLASSIFY_INFO_IDX_VALID_FLAG, value); \
(word) |= (value) << HTT_RX_MLO_PEER_MAP_CLASSIFY_INFO_IDX_VALID_FLAG_S; \
} while (0)
#define HTT_RX_MLO_PEER_MAP_CLASSIFY_INFO_IDX_VALID_FLAG_GET(word) \
(((word) & HTT_RX_MLO_PEER_MAP_CLASSIFY_INFO_IDX_VALID_FLAG_M) >> HTT_RX_MLO_PEER_MAP_CLASSIFY_INFO_IDX_VALID_FLAG_S)
#define HTT_RX_MLO_PEER_MAP_PRIMARY_AST_INDEX_SET(word, value) \
do { \
HTT_CHECK_SET_VAL(HTT_RX_MLO_PEER_MAP_PRIMARY_AST_INDEX, value); \
@ -14935,6 +15503,8 @@ typedef enum {
#define HTT_RX_MLO_PEER_MAP_MAC_ADDR_OFFSET 4 /* bytes */
#define HTT_RX_MLO_PEER_MAP_CLASSIFY_INFO_IDX_OFFSET 8 /* bytes */
#define HTT_RX_MLO_PEER_MAP_CLASSIFY_INFO_IDX_VALID_FLAG_OFFSET 8 /* bytes */
#define HTT_RX_MLO_PEER_MAP_PRIMARY_AST_INDEX_0_OFFSET 12 /* bytes */
#define HTT_RX_MLO_PEER_MAP_PRIMARY_AST_INDEX_1_OFFSET 16 /* bytes */
#define HTT_RX_MLO_PEER_MAP_PRIMARY_AST_INDEX_2_OFFSET 20 /* bytes */
@ -23449,4 +24019,177 @@ PREPACK struct htt_t2h_mlo_latency_req_t {
} while (0)
/* MSG_TYPE => HTT_T2H_MSG_TYPE_GLOBAL_PEER_ID_UNMAP
*
* The following diagram shows the format of the global peer unmap message sent
* from the target to the host. This message is used to send unmap event to host
* after tid and msduq/mpduq cleanup in FW, host cleans up msduq/mpduq based on
* message.
*
* |31 24|23 20|19 8|7 0|
* |-----------------------------------------------------------------------|
* | reserved | hw_link_id | global_peer_id | msg type |
* |-----------------------------------------------------------------------|
* @details
* struct htt_t2h_global_peer_id_unmap_t:
*
* The message is interpreted as follows:
* dword0 - b'7:0 - msg_type: Identifies a request for MLO latency stats
* This will be set to 0x3e
* (HTT_T2H_MSG_TYPE_GLOBAL_PEER_ID_UNMAP)
* b'19:8 - global_peer_id : global peer id assigned by host
* b'23:20 - hw_link_id : hw link id for which unmap is being sent
*
*/
/* HTT_T2H_MSG_TYPE_GLOBAL_PEER_ID_UNMAP */
PREPACK struct htt_t2h_global_peer_id_unmap_t {
A_UINT32 msg_type: 8, /* bits 7:0 */
global_peer_id: 12, /* bits 19:8 */
hw_link_id: 4, /* bits 23:20 */
reserved: 8; /* bits 31:16 */
} POSTPACK;
#define HTT_T2H_MSG_TYPE_GLOBAL_PEER_ID_UNMAP_GLOBAL_PEER_ID_M 0x000FFF00
#define HTT_T2H_MSG_TYPE_GLOBAL_PEER_ID_UNMAP_GLOBAL_PEER_ID_S 8
#define HTT_T2H_MSG_TYPE_GLOBAL_PEER_ID_UNMAP_GLOBAL_PEER_ID_GET(_var) \
(((_var) & HTT_T2H_MSG_TYPE_GLOBAL_PEER_ID_UNMAP_GLOBAL_PEER_ID_M) >> \
HTT_T2H_MSG_TYPE_GLOBAL_PEER_ID_UNMAP_GLOBAL_PEER_ID_S)
#define HTT_T2H_MSG_TYPE_GLOBAL_PEER_ID_UNMAP_GLOBAL_PEER_ID_SET(_var, _val) \
do { \
HTT_CHECK_SET_VAL(HTT_T2H_MSG_TYPE_GLOBAL_PEER_ID_UNMAP_GLOBAL_PEER_ID, _val); \
((_var) |= ((_val) << HTT_T2H_MSG_TYPE_GLOBAL_PEER_ID_UNMAP_GLOBAL_PEER_ID_S)); \
} while (0)
#define HTT_T2H_MSG_TYPE_GLOBAL_PEER_ID_UNMAP_HW_LINK_ID_M 0x00F00000
#define HTT_T2H_MSG_TYPE_GLOBAL_PEER_ID_UNMAP_HW_LINK_ID_S 20
#define HTT_T2H_MSG_TYPE_GLOBAL_PEER_ID_UNMAP_HW_LINK_ID_GET(_var) \
(((_var) & HTT_T2H_MSG_TYPE_GLOBAL_PEER_ID_UNMAP_HW_LINK_ID_M) >> \
HTT_T2H_MSG_TYPE_GLOBAL_PEER_ID_UNMAP_HW_LINK_ID_S)
#define HTT_T2H_MSG_TYPE_GLOBAL_PEER_ID_UNMAP_HW_LINK_ID_SET(_var, _val) \
do { \
HTT_CHECK_SET_VAL(HTT_T2H_MSG_TYPE_GLOBAL_PEER_ID_UNMAP_HW_LINK_ID, _val); \
((_var) |= ((_val) << HTT_T2H_MSG_TYPE_GLOBAL_PEER_ID_UNMAP_HW_LINK_ID_S)); \
} while (0)
/*
* @brief target -> pause/unpause host tx queues based on FW indication
* MSG_TYPE => HTT_T2H_MSG_TYPE_HAPS
*
* @details * Header fields:
*
* |31 22|21 20|19 16|15 8|7 0|
* |---------+-------------+-----------+------------------+---------------|
* | RSVD |time_type |action_code| vdev_id | msg type |
* |----------------------------------------------------------------------|
* | time_high |
* |----------------------------------------------------------------------|
* | time_low |
* |----------------------------------------------------------------------|
*
* dword0 - b'7:0 - msg_type: This will be set to
* 0x3f (HTT_T2H_MSG_TYPE_HAPS)
* b'15:8 - vdev_id
* b'19:16 - action_code (HTT_T2H_HAPS_ACTION_CODE):
* b'0000: Pause
* b'0001: Pause with One-Shot Unpause
* b'0010: Unpause
* values 3-15: reserved
* b'21:20 - time_type
* b'31:22 - rsvd
* reverse action_code at time specified below
* (units are specified by the type_type bitfield)
* dword1 - b'31:0 uint32_t time_high
* dword2 - b'31:0 uint32_t time_low
*/
typedef enum {
HTT_T2H_HAPS_ACTION_PAUSE = 0x00,
HTT_T2H_HAPS_ACTION_PAUSE_WITH_ONESHOT_UNPAUSE = 0x01,
HTT_T2H_HAPS_ACTION_UNPAUSE = 0x02,
} HTT_T2H_HAPS_ACTION_CODE;
typedef enum {
HTT_T2H_HAPS_TIME_TYPE_HOST_QTIME = 0x00,
HTT_T2H_HAPS_TIME_TYPE_TSF = 0x01,
} HTT_T2H_HAPS_TIME_TYPE;
PREPACK struct htt_t2h_power_state_info {
uint32_t msg_type : 8, /* [7:0] */
vdev_id : 8, /* [15:8] */
action_code : 4, /* [19:16] */
time_type: 2, /* [21:20] */
rsvd: 10; /* [31:22] */
uint32_t time_low;
uint32_t time_high;
} POSTPACK;
#define HTT_T2H_POWER_STATE_INFO_SIZE (sizeof(struct htt_t2h_power_state_info))
#define HTT_T2H_POWER_STATE_INFO_HTT_VDEV_ID_M 0x0000FF00
#define HTT_T2H_POWER_STATE_INFO_HTT_VDEV_ID_S 8
#define HTT_T2H_POWER_STATE_INFO_HTT_VDEV_ID_GET(_var) \
(((_var) & HTT_T2H_POWER_STATE_INFO_HTT_VDEV_ID_M) >> \
HTT_T2H_POWER_STATE_INFO_HTT_VDEV_ID_S)
#define HTT_T2H_POWER_STATE_INFO_HTT_VDEV_ID_SET(_var, _val) \
do { \
HTT_CHECK_SET_VAL(HTT_T2H_POWER_STATE_INFO_HTT_VDEV_ID, _val); \
((_var) |= ((_val) << HTT_T2H_POWER_STATE_INFO_HTT_VDEV_ID_S));\
} while (0)
#define HTT_T2H_POWER_STATE_INFO_HTT_ACTION_CODE_M 0x000F0000
#define HTT_T2H_POWER_STATE_INFO_HTT_ACTION_CODE_S 16
#define HTT_T2H_POWER_STATE_INFO_HTT_ACTION_CODE_GET(_var) \
(((_var) & HTT_T2H_POWER_STATE_INFO_HTT_ACTION_CODE_M) >> \
HTT_T2H_POWER_STATE_INFO_HTT_ACTION_CODE_S)
#define HTT_T2H_POWER_STATE_INFO_HTT_ACTION_CODE_SET(_var, _val) \
do { \
HTT_CHECK_SET_VAL(HTT_T2H_POWER_STATE_INFO_HTT_ACTION_CODE, _val); \
((_var) |= ((_val) << HTT_T2H_POWER_STATE_INFO_HTT_ACTION_CODE_S));\
} while (0)
#define HTT_T2H_POWER_STATE_INFO_HTT_TIME_TYPE_M 0x00300000
#define HTT_T2H_POWER_STATE_INFO_HTT_TIME_TYPE_S 20
#define HTT_T2H_POWER_STATE_INFO_HTT_TIME_TYPE_GET(_var) \
(((_var) & HTT_T2H_POWER_STATE_INFO_HTT_TIME_TYPE_M) >> \
HTT_T2H_POWER_STATE_INFO_HTT_TIME_TYPE_S)
#define HTT_T2H_POWER_STATE_INFO_HTT_TIME_TYPE_SET(_var, _val) \
do { \
HTT_CHECK_SET_VAL(HTT_T2H_POWER_STATE_INFO_HTT_TIME_TYPE, _val); \
((_var) |= ((_val) << HTT_T2H_POWER_STATE_INFO_HTT_TIME_TYPE_S));\
} while (0)
#define HTT_T2H_POWER_STATE_INFO_HTT_TIME_HIGH_M 0xFFFFFFFF
#define HTT_T2H_POWER_STATE_INFO_HTT_TIME_HIGH_S 0
#define HTT_T2H_POWER_STATE_INFO_HTT_TIME_HIGH_GET(_var) \
(((_var) & HTT_T2H_POWER_STATE_INFO_HTT_TIME_HIGH_M) >> \
HTT_T2H_POWER_STATE_INFO_HTT_TIME_HIGH_S)
#define HTT_T2H_POWER_STATE_INFO_HTT_TIME_HIGH_SET(_var, _val) \
do { \
HTT_CHECK_SET_VAL(HTT_T2H_POWER_STATE_INFO_HTT_TIME_HIGH, _val); \
((_var) |= ((_val) << HTT_T2H_POWER_STATE_INFO_HTT_TIME_HIGH_S));\
} while (0)
#define HTT_T2H_POWER_STATE_INFO_HTT_TIME_LOW_M 0xFFFFFFFF
#define HTT_T2H_POWER_STATE_INFO_HTT_TIME_LOW_S 0
#define HTT_T2H_POWER_STATE_INFO_HTT_TIME_LOW_GET(_var) \
(((_var) & HTT_T2H_POWER_STATE_INFO_HTT_TIME_LOW_M) >> \
HTT_T2H_POWER_STATE_INFO_HTT_TIME_LOW_S)
#define HTT_T2H_POWER_STATE_INFO_HTT_TIME_LOW_SET(_var, _val) \
do { \
HTT_CHECK_SET_VAL(HTT_T2H_POWER_STATE_INFO_HTT_TIME_LOW, _val); \
((_var) |= ((_val) << HTT_T2H_POWER_STATE_INFO_HTT_TIME_LOW_S));\
} while (0)
#endif

View file

@ -707,6 +707,58 @@ typedef enum HTT_PPDU_STATS_SPATIAL_REUSE HTT_PPDU_STATS_SPATIAL_REUSE;
(((_val) & HTT_PPDU_STATS_COMMON_TRIG_COOKIE_M) >> \
HTT_PPDU_STATS_COMMON_TRIG_COOKIE_S)
#define HTT_PPDU_STATS_COMMON_TLV_HTT_SEQ_TYPE_M 0x00000001
#define HTT_PPDU_STATS_COMMON_TLV_HTT_SEQ_TYPE_S 0
#define HTT_PPDU_STATS_COMMON_TLV_HTT_SEQ_TYPE_GET(_var) \
(((_var) & HTT_PPDU_STATS_COMMON_TLV_HTT_SEQ_TYPE_M) >> \
HTT_PPDU_STATS_COMMON_TLV_HTT_SEQ_TYPE_S)
#define HTT_PPDU_STATS_COMMON_TLV_HTT_SEQ_TYPE_SET(_var, _val) \
do { \
HTT_CHECK_SET_VAL(HTT_PPDU_STATS_COMMON_TLV_HTT_SEQ_TYPE, _val); \
((_var) |= ((_val) << HTT_PPDU_STATS_COMMON_TLV_HTT_SEQ_TYPE_S)); \
} while (0)
#define HTT_PPDU_STATS_COMMON_TLV_IS_COMBINED_UL_BASIC_TRIGGER_M 0x00000002
#define HTT_PPDU_STATS_COMMON_TLV_IS_COMBINED_UL_BASIC_TRIGGER_S 1
#define HTT_PPDU_STATS_COMMON_TLV_IS_COMBINED_UL_BASIC_TRIGGER_GET(_var) \
(((_var) & HTT_PPDU_STATS_COMMON_TLV_IS_COMBINED_UL_BASIC_TRIGGER_M) >> \
HTT_PPDU_STATS_COMMON_TLV_IS_COMBINED_UL_BASIC_TRIGGER_S)
#define HTT_PPDU_STATS_COMMON_TLV_IS_COMBINED_UL_BASIC_TRIGGER_SET(_var, _val) \
do { \
HTT_CHECK_SET_VAL(HTT_PPDU_STATS_COMMON_TLV_IS_COMBINED_UL_BASIC_TRIGGER, _val); \
((_var) |= ((_val) << HTT_PPDU_STATS_COMMON_TLV_IS_COMBINED_UL_BASIC_TRIGGER_S)); \
} while (0)
#define HTT_PPDU_STATS_COMMON_TLV_IS_MANUAL_ULOFDMA_TRIGGER_M 0x00000004
#define HTT_PPDU_STATS_COMMON_TLV_IS_MANUAL_ULOFDMA_TRIGGER_S 2
#define HTT_PPDU_STATS_COMMON_TLV_IS_MANUAL_ULOFDMA_TRIGGER_GET(_var) \
(((_var) & HTT_PPDU_STATS_COMMON_TLV_IS_MANUAL_ULOFDMA_TRIGGER_M) >> \
HTT_PPDU_STATS_COMMON_TLV_IS_MANUAL_ULOFDMA_TRIGGER_S)
#define HTT_PPDU_STATS_COMMON_TLV_IS_MANUAL_ULOFDMA_TRIGGER_SET(_var, _val) \
do { \
HTT_CHECK_SET_VAL(HTT_PPDU_STATS_COMMON_TLV_IS_MANUAL_ULOFDMA_TRIGGER, _val); \
((_var) |= ((_val) << HTT_PPDU_STATS_COMMON_TLV_IS_MANUAL_ULOFDMA_TRIGGER_S)); \
} while (0)
#define HTT_PPDU_STATS_COMMON_TLV_IS_COMBINED_UL_BSRP_TRIGGER_M 0x00000008
#define HTT_PPDU_STATS_COMMON_TLV_IS_COMBINED_UL_BSRP_TRIGGER_S 3
#define HTT_PPDU_STATS_COMMON_TLV_IS_COMBINED_UL_BSRP_TRIGGER_GET(_var) \
(((_var) & HTT_PPDU_STATS_COMMON_TLV_IS_COMBINED_UL_BSRP_TRIGGER_M) >> \
HTT_PPDU_STATS_COMMON_TLV_IS_COMBINED_UL_BSRP_TRIGGER_S)
#define HTT_PPDU_STATS_COMMON_TLV_IS_COMBINED_UL_BSRP_TRIGGER_SET(_var, _val) \
do { \
HTT_CHECK_SET_VAL(HTT_PPDU_STATS_COMMON_TLV_IS_COMBINED_UL_BSRP_TRIGGER, _val); \
((_var) |= ((_val) << HTT_PPDU_STATS_COMMON_TLV_IS_COMBINED_UL_BSRP_TRIGGER_S)); \
} while (0)
enum HTT_SEQ_TYPE {
WAL_PPDU_SEQ_TYPE = 0,
HTT_PPDU_SEQ_TYPE = 1,
@ -902,26 +954,26 @@ typedef struct {
* HTT_PPDU_SEQ_TYPE then decoder should interpret the
* seq type as HTT_PPDU_STATS_SEQ_TYPE.
* htt_seq_type field will be set to HTT_PPDU_SEQ_TYPE in
* firmware versions where this field is defined.
* BIT [31: 1] - reserved
* BIT [1 : 1] - is_combined_ul_basic_trigger - Flag to indicate if a
* given UL OFDMA/MU-MIMO Basic trigger is sent combined
* as part of existing DL data sequence.
* BIT [2 : 2] - is_manual_ulofdma_trigger - Flag to indicate if a
* given UL OFDMA trigger is manually triggered from the Host.
* BIT [3 : 3] - is_combined_ul_bsrp_trigger - Flag to indicate if a
* given UL BSRP trigger is sent combined as part of
* an existing DL/UL data sequence
* BIT [31: 4] - reserved
*/
union {
A_UINT32 reserved__htt_seq_type;
struct {
A_UINT32 htt_seq_type: 1,
reserved3: 31;
is_combined_ul_basic_trigger: 1,
is_manual_ulofdma_trigger: 1,
is_combined_ul_bsrp_trigger: 1,
reserved3: 28;
};
};
/* is_manual_ulofdma_trigger:
* Flag to indicate if a given UL OFDMA trigger is manually triggered
* from the Host
*/
A_UINT32 is_manual_ulofdma_trigger;
/* is_combined_ul_bsrp_trigger:
* Flag to indicate if a given UL BSRP trigger is sent combined as
* part of existing DL/UL data sequence
*/
A_UINT32 is_combined_ul_bsrp_trigger;
/* Flag to indicate if the channel chosen is 320_1 / 320_2 */
A_UINT32 chan_type_320mhz;
} htt_ppdu_stats_common_tlv;

File diff suppressed because it is too large Load diff

View file

@ -161,6 +161,18 @@ typedef enum {
MODE_11BE_EHT40_2G = 32, /* For WIN */
#endif
#if defined(SUPPORT_11BN) && SUPPORT_11BN
MODE_11BN_UHR20 = 33,
MODE_11BN_UHR40 = 34,
MODE_11BN_UHR80 = 35,
MODE_11BN_UHR80_80 = 36,
MODE_11BN_UHR160 = 37,
MODE_11BN_UHR160_160 = 38,
MODE_11BN_UHR320 = 39,
MODE_11BN_UHR20_2G = 40,
MODE_11BN_UHR40_2G = 41,
#endif
/*
* MODE_UNKNOWN should not be used within the host / target interface.
* Thus, it is permissible for MODE_UNKNOWN to be conditionally-defined,
@ -262,6 +274,20 @@ typedef enum {
((mode) == MODE_11BE_EHT40_2G))
#endif /* SUPPORT_11BE */
#if defined(SUPPORT_11BN) && SUPPORT_11BN
#define IS_MODE_UHR(mode) (((mode) == MODE_11BN_UHR20) || \
((mode) == MODE_11BN_UHR40) || \
((mode) == MODE_11BN_UHR80) || \
((mode) == MODE_11BN_UHR80_80) || \
((mode) == MODE_11BN_UHR160) || \
((mode) == MODE_11BN_UHR160_160)|| \
((mode) == MODE_11BN_UHR320) || \
((mode) == MODE_11BN_UHR20_2G) || \
((mode) == MODE_11BN_UHR40_2G))
#define IS_MODE_UHR_2G(mode) (((mode) == MODE_11BN_UHR20_2G) || \
((mode) == MODE_11BN_UHR40_2G))
#endif /* SUPPORT_11BN */
#define IS_MODE_VHT_2G(mode) (((mode) == MODE_11AC_VHT20_2G) || \
((mode) == MODE_11AC_VHT40_2G) || \
((mode) == MODE_11AC_VHT80_2G))

View file

@ -196,6 +196,8 @@ typedef enum {
WLAN_MODULE_C2C, /* 0x98 */
WLAN_MODULE_VBSS, /* 0x99 */
WLAN_MODULE_OPT_DATA, /* 0x9a */
WLAN_MODULE_ASD, /* 0x9b */
WLAN_MODULE_ENERGY_MGMT, /* 0x9c */
WLAN_MODULE_ID_MAX,
WLAN_MODULE_ID_INVALID = WLAN_MODULE_ID_MAX,

View file

@ -695,6 +695,32 @@ typedef enum {
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_SERVICE_OPT_DP_DIAG_SUPPORT = 438, /* FW supports diag QDATA feature */
WMI_SERVICE_MLO_ROAM_PARTNER_BRINGUP_FROM_HOST = 439, /* Indicates FW supports new design in which FW expects the host to bringup the partner link during roaming */
WMI_SERVICE_CTRL_PATH_PEER_BA_STATS = 440, /* FW supports retrieving BlockAck stats through WMI_REQUEST_CTRL_PATH_PEER_STAT */
WMI_SERVICE_CTRL_PATH_STA_DAR_STATS_SUPPORT = 441, /* FW supports DAR stats reporting for STA mode */
WMI_SERVICE_APF_DATA_OFFLOAD_SUPPORT_ENABLED = 442, /* Indicates FW support for APFv6 handling offloads and disable QC data offloads */
WMI_SERVICE_PER_VDEV_TWT_RESP_DISABLE_SUPPORT = 443, /* FW supports vdev level TWT responder disable */
WMI_SERVICE_VENDOR_OUI_ACTION_V2 = 444, /* FW supports vendor OUI action version 2 */
WMI_SERVICE_HW_BLACKLIST_CHAN_SUPPORT = 445, /* Indicates FW support for computing and sending the HW channel blacklist for the current country and applicable power mode */
WMI_SERVICE_NDP_DFS_CHANNEL_SUPPORT = 446, /* FW supports forming NDP on DFS channels */
WMI_SERVICE_WFD_R2 = 447, /* Indicates FW supports WiFi-Direct R2 */
WMI_SERVICE_STA_MLO_RCFG_SUPPORT = 448, /* FW supports STA ML reconfig op */
WMI_SERVICE_PDEV_SUSPEND_EVENT_SUPPORT = 449, /* FW supports PDEV_SUSPEND event */
WMI_SERVICE_PCC_MODE = 450, /* Indicates FW support for PCC (P2P Connection Compatibility) Mode */
WMI_SERVICE_TDLS_NSS_CONFIRM_SUPPORT = 451, /* FW supports confirmation to host requested TDLS NSS operation */
WMI_SERVICE_EM_PCIE_CONFIG_CBW_SUPPORT = 452, /* Indicates support for channel bandwidth based PCIe config adjustment */
WMI_SERVICE_EM_PCIE_CONFIG_LPM_SUPPORT = 453, /* Indicates support for PCIe low power mode L0S/L1 */
WMI_SERVICE_EM_DCVS_SUPPORT = 454, /* Indicates support for Dynamic clock and voltage scaling */
WMI_SERVICE_EM_EDPS_SUPPORT = 455, /* Indicates support for Dynamic AP power save */
WMI_SERVICE_EM_PUO_SUPPORT = 456, /* Indicates support for TWT based periodic unavailability operation. */
WMI_SERVICE_EM_ECO_MODE_SUPPORT = 457, /* Indicates support for ECO mode config (LP BBF+ADC+SYNCT) */
WMI_SERVICE_11BN = 458, /* Indicates FW supports 802.11bn */
WMI_SERVICE_HOST_AWARE_POWERSAVE = 459, /* FW supports indicating the powerstate of FW to host */
WMI_SERVICE_PDEV_DIV_STATES_REPORT = 460, /* FW supports reporting antenna diversity states */
WMI_SERVICE_EAPOL_OVER_RAW = 461, /* FW supports sending EAPOL frames in raw mode even when the vdev is brought up in nwifi/ethernet mode */
WMI_SERVICE_MLO_SAP_LINK_REMOVAL_SUPPORT = 462, /* Indicates FW supports MLO SAP link removal operation */
WMI_MAX_EXT2_SERVICE

View file

@ -1476,6 +1476,29 @@ typedef enum {
WMITLV_TAG_STRUC_wmi_vdev_vbss_peer_sn_info,
WMITLV_TAG_STRUC_wmi_vdev_vbss_config_event_fixed_param,
WMITLV_TAG_STRUC_wmi_stats_ext_event_vdev_ext2_t,
WMITLV_TAG_STRUC_wmi_ndp_set_latency_tput_fixed_param,
WMITLV_TAG_STRUC_wmi_roam_partner_link_param,
WMITLV_TAG_STRUC_wmi_mlo_link_ttlm_complete_fixed_param,
WMITLV_TAG_STRUC_wmi_ctrl_path_sta_dar_stats_struct,
WMITLV_TAG_STRUC_wmi_bpf_set_supported_offload_bitmap_cmd_fixed_param,
WMITLV_TAG_STRUC_wmi_hw_blacklist_chan_fixed_param,
WMITLV_TAG_STRUC_wmi_hw_blacklist_chan_data,
WMITLV_TAG_STRUC_wmi_pdev_suspend_event_fixed_param,
WMITLV_TAG_STRUC_wmi_bpf_set_apf_mode_cmd_fixed_param,
WMITLV_TAG_STRUC_wmi_peer_assoc_operating_mode_params,
WMITLV_TAG_STRUC_wmi_recv_bcn_stats,
WMITLV_TAG_STRUC_wmi_vdev_vbss_peer_dyn_info,
WMITLV_TAG_STRUC_wmi_energy_mgmt_pcie_config_cmd_fixed_param,
WMITLV_TAG_STRUC_wmi_energy_mgmt_pcie_lpm_cmd_fixed_param,
WMITLV_TAG_STRUC_wmi_energy_mgmt_dcvs_config_cmd_fixed_param,
WMITLV_TAG_STRUC_wmi_energy_mgmt_edps_config_cmd_fixed_param,
WMITLV_TAG_STRUC_wmi_energy_mgmt_puo_config_cmd_fixed_param,
WMITLV_TAG_STRUC_wmi_energy_mgmt_eco_mode_config_cmd_fixed_param,
WMITLV_TAG_STRUC_wmi_peer_assoc_mgmt_mpduq_params,
WMITLV_TAG_STRUC_wmi_peer_assoc_mgmt_msduq_params,
WMITLV_TAG_STRUC_wmi_peer_assoc_hol_mdsuq_params,
WMITLV_TAG_STRUC_wmi_peer_tid_rate_custom_cmd_fixed_param,
WMITLV_TAG_STRUC_wmi_co_located_chan_info,
} WMITLV_TAG_ID;
/*
* IMPORTANT: Please add _ALL_ WMI Commands Here.
@ -2037,6 +2060,17 @@ typedef enum {
OP(WMI_MLO_LINK_RECONFIG_COMPLETE_CMDID) \
OP(WMI_SAWF_EZMESH_HOP_COUNT_CMDID) \
OP(WMI_VDEV_VBSS_CONFIG_CMDID) \
OP(WMI_NDP_SET_LATENCY_TPUT_CMDID) \
OP(WMI_MLO_LINK_TTLM_COMPLETE_CMDID) \
OP(WMI_BPF_SET_SUPPORTED_OFFLOAD_BITMAP_CMDID) \
OP(WMI_BPF_SET_APF_MODE_CMDID) \
OP(WMI_ENERGY_MGMT_PCIE_CONFIG_CMDID) \
OP(WMI_ENERGY_MGMT_PCIE_LPM_CMDID) \
OP(WMI_ENERGY_MGMT_DCVS_CONFIG_CMDID) \
OP(WMI_ENERGY_MGMT_EDPS_CONFIG_CMDID) \
OP(WMI_ENERGY_MGMT_PUO_CONFIG_CMDID) \
OP(WMI_ENERGY_MGMT_ECO_MODE_CONFIG_CMDID) \
OP(WMI_PEER_TID_RATE_CUSTOM_CMDID) \
/* add new CMD_LIST elements above this line */
@ -2372,6 +2406,8 @@ typedef enum {
OP(WMI_PDEV_WIFI_RADAR_CAPABILITIES_EVENTID) \
OP(WMI_VDEV_VBSS_CONFIG_EVENTID) \
OP(WMI_OPT_DP_DIAG_EVENTID) \
OP(WMI_HW_BLACKLIST_CHAN_EVENTID) \
OP(WMI_PDEV_SUSPEND_EVENTID) \
/* add new EVT_LIST elements above this line */
@ -2867,7 +2903,11 @@ WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_IPSEC_NATKEEPALIVE_FILTER_CMDID);
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_peer_assoc_mlo_params, mlo_params, WMITLV_SIZE_VAR) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_eht_rate_set, peer_eht_rates, WMITLV_SIZE_VAR) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_peer_assoc_mlo_partner_link_params, partner_link_params, WMITLV_SIZE_VAR) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_peer_assoc_tid_to_link_map, peer_tid_to_link_map, WMITLV_SIZE_VAR)
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_peer_assoc_tid_to_link_map, peer_tid_to_link_map, WMITLV_SIZE_VAR) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_peer_assoc_operating_mode_params, operating_mode_params, WMITLV_SIZE_VAR) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_peer_assoc_mgmt_mpduq_params, mgmt_mpduq_params, WMITLV_SIZE_VAR) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_peer_assoc_mgmt_msduq_params, mgmt_msduq_params, WMITLV_SIZE_VAR) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_peer_assoc_hol_mdsuq_params, hol_mdsuq_params, WMITLV_SIZE_VAR)
WMITLV_CREATE_PARAM_STRUC(WMI_PEER_ASSOC_CMDID);
@ -3611,7 +3651,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_DELETE_CMDID);
/* Vdev up Cmd */
#define WMITLV_TABLE_WMI_VDEV_UP_CMDID(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_vdev_up_cmd_fixed_param, wmi_vdev_up_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_vdev_up_cmd_fixed_param, wmi_vdev_up_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_co_located_chan_info, co_located_chan_info, WMITLV_SIZE_VAR)
WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_UP_CMDID);
@ -3643,7 +3684,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_UPDATE_MAC_ADDR_CMDID);
#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_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_vdev_vbss_peer_sn_info, vbss_peer_sn_info, WMITLV_SIZE_VAR) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_vdev_vbss_peer_dyn_info, vbss_peer_dyn_info, WMITLV_SIZE_VAR)
WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_VBSS_CONFIG_CMDID);
/* Pdev suspend Cmd */
@ -4099,6 +4141,11 @@ WMITLV_CREATE_PARAM_STRUC(WMI_NDP_END_REQ_CMDID);
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_ndp_cmd_param, wmi_ndp_cmd_param, fixed_param, WMITLV_SIZE_FIX)
WMITLV_CREATE_PARAM_STRUC(WMI_NDP_CMDID);
/* NDP Set Latency Tput Cmd */
#define WMITLV_TABLE_WMI_NDP_SET_LATENCY_TPUT_CMDID(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_ndp_set_latency_tput_fixed_param, wmi_ndp_set_latency_tput_fixed_param, fixed_param, WMITLV_SIZE_FIX)
WMITLV_CREATE_PARAM_STRUC(WMI_NDP_SET_LATENCY_TPUT_CMDID);
/* RCPI Info Request Cmd */
#define WMITLV_TABLE_WMI_REQUEST_RCPI_CMDID(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_request_rcpi_cmd_fixed_param, wmi_request_rcpi_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
@ -5384,6 +5431,11 @@ WMITLV_CREATE_PARAM_STRUC(WMI_MLO_LINK_RECONFIG_CMDID);
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);
/** WMI cmd to notify fw completion of link TTLM negotiation */
#define WMITLV_TABLE_WMI_MLO_LINK_TTLM_COMPLETE_CMDID(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mlo_link_ttlm_complete_fixed_param, wmi_mlo_link_ttlm_complete_fixed_param, fixed_param, WMITLV_SIZE_FIX)
WMITLV_CREATE_PARAM_STRUC(WMI_MLO_LINK_TTLM_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) \
@ -5745,6 +5797,50 @@ WMITLV_CREATE_PARAM_STRUC(WMI_GET_SCAN_CACHE_RESULT_CMDID);
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);
#define WMITLV_TABLE_WMI_BPF_SET_SUPPORTED_OFFLOAD_BITMAP_CMDID(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_bpf_set_supported_offload_bitmap_cmd_fixed_param, wmi_bpf_set_supported_offload_bitmap_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
WMITLV_CREATE_PARAM_STRUC(WMI_BPF_SET_SUPPORTED_OFFLOAD_BITMAP_CMDID);
#define WMITLV_TABLE_WMI_BPF_SET_APF_MODE_CMDID(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_bpf_set_apf_mode_cmd_fixed_param, wmi_bpf_set_apf_mode_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
WMITLV_CREATE_PARAM_STRUC(WMI_BPF_SET_APF_MODE_CMDID);
/* WMI cmd used to control PCIe config */
#define WMITLV_TABLE_WMI_ENERGY_MGMT_PCIE_CONFIG_CMDID(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_energy_mgmt_pcie_config_cmd_fixed_param, wmi_energy_mgmt_pcie_config_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
WMITLV_CREATE_PARAM_STRUC(WMI_ENERGY_MGMT_PCIE_CONFIG_CMDID);
/* WMI cmd used for PCIe LPM config */
#define WMITLV_TABLE_WMI_ENERGY_MGMT_PCIE_LPM_CMDID(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_energy_mgmt_pcie_lpm_cmd_fixed_param, wmi_energy_mgmt_pcie_lpm_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
WMITLV_CREATE_PARAM_STRUC(WMI_ENERGY_MGMT_PCIE_LPM_CMDID);
/* WMI cmd used to control DCVS config */
#define WMITLV_TABLE_WMI_ENERGY_MGMT_DCVS_CONFIG_CMDID(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_energy_mgmt_dcvs_config_cmd_fixed_param, wmi_energy_mgmt_dcvs_config_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
WMITLV_CREATE_PARAM_STRUC(WMI_ENERGY_MGMT_DCVS_CONFIG_CMDID);
/* WMI cmd used to control Dynamic AP Power Save config */
#define WMITLV_TABLE_WMI_ENERGY_MGMT_EDPS_CONFIG_CMDID(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_energy_mgmt_edps_config_cmd_fixed_param, wmi_energy_mgmt_edps_config_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
WMITLV_CREATE_PARAM_STRUC(WMI_ENERGY_MGMT_EDPS_CONFIG_CMDID);
/* WMI cmd used to control Scheduled AP Power Save config */
#define WMITLV_TABLE_WMI_ENERGY_MGMT_PUO_CONFIG_CMDID(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_energy_mgmt_puo_config_cmd_fixed_param, wmi_energy_mgmt_puo_config_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
WMITLV_CREATE_PARAM_STRUC(WMI_ENERGY_MGMT_PUO_CONFIG_CMDID);
/* WMI cmd used to control Un-scheduled AP Power Save config */
#define WMITLV_TABLE_WMI_ENERGY_MGMT_ECO_MODE_CONFIG_CMDID(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_energy_mgmt_eco_mode_config_cmd_fixed_param, wmi_energy_mgmt_eco_mode_config_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
WMITLV_CREATE_PARAM_STRUC(WMI_ENERGY_MGMT_ECO_MODE_CONFIG_CMDID);
/* peer tid rate customization cmd */
#define WMITLV_TABLE_WMI_PEER_TID_RATE_CUSTOM_CMDID(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_peer_tid_rate_custom_cmd_fixed_param, wmi_peer_tid_rate_custom_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, rate_code, WMITLV_SIZE_VAR)
WMITLV_CREATE_PARAM_STRUC(WMI_PEER_TID_RATE_CUSTOM_CMDID);
/************************** TLV definitions of WMI events *******************************/
@ -6092,7 +6188,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_AGGR_STATE_TRIG_EVENTID);
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, deauth_disassoc_frame, WMITLV_SIZE_VAR) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_pdev_hw_mode_transition_event_fixed_param, hw_mode_transition_fixed_param, WMITLV_SIZE_VAR) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_pdev_set_hw_mode_response_vdev_mac_entry, wmi_pdev_set_hw_mode_response_vdev_mac_mapping, WMITLV_SIZE_VAR) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_roam_bss_info_param, bss_info_param, WMITLV_SIZE_VAR)
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_roam_bss_info_param, bss_info_param, WMITLV_SIZE_VAR) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_roam_partner_link_param, partner_link_param, WMITLV_SIZE_VAR)
WMITLV_CREATE_PARAM_STRUC(WMI_ROAM_EVENTID);
/* Roam Synch Event */
@ -6365,7 +6462,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_HOST_SWFDA_EVENTID);
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_pmf_bcn_protect_stats, pmf_bcn_protect_stats, WMITLV_SIZE_VAR) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_vdev_extd_stats, vdev_extd_stats, WMITLV_SIZE_VAR) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_pdev_extd_stats, pdev_extd_stats, WMITLV_SIZE_VAR) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_pdev_telemetry_stats, pdev_telemetry_stats, WMITLV_SIZE_VAR)
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_pdev_telemetry_stats, pdev_telemetry_stats, WMITLV_SIZE_VAR) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_recv_bcn_stats, recv_bcn_stats, WMITLV_SIZE_VAR)
WMITLV_CREATE_PARAM_STRUC(WMI_UPDATE_STATS_EVENTID);
/* Update PN response Event */
@ -6801,6 +6899,11 @@ WMITLV_CREATE_PARAM_STRUC(WMI_MDNS_STATS_EVENTID);
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_resume_event_fixed_param, wmi_pdev_resume_event_fixed_param, fixed_param, WMITLV_SIZE_FIX)
WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_RESUME_EVENTID);
/* pdev suspend event */
#define WMITLV_TABLE_WMI_PDEV_SUSPEND_EVENTID(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_suspend_event_fixed_param, wmi_pdev_suspend_event_fixed_param, fixed_param, WMITLV_SIZE_FIX)
WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_SUSPEND_EVENTID);
/* SAP Authentication offload event */
#define WMITLV_TABLE_WMI_SAP_OFL_ADD_STA_EVENTID(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_sap_ofl_add_sta_event_fixed_param, wmi_sap_ofl_add_sta_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
@ -6954,7 +7057,9 @@ WMITLV_CREATE_PARAM_STRUC(WMI_REG_CHAN_LIST_CC_EVENTID);
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_regulatory_chan_priority_struct, reg_chan_priority, WMITLV_SIZE_VAR) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_regulatory_fcc_rule_struct, reg_fcc_rule, WMITLV_SIZE_VAR) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_reg_chan_list_cc_ext_additional_params, reg_more_data, WMITLV_SIZE_VAR) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_regulatory_rule_meta_data, reg_meta_data, WMITLV_SIZE_VAR)
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_regulatory_rule_meta_data, reg_meta_data, WMITLV_SIZE_VAR) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_hw_blacklist_chan_fixed_param, hw_blacklist_chan_fixed_param, WMITLV_SIZE_VAR) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_hw_blacklist_chan_data, hw_blacklist_chan_data, WMITLV_SIZE_VAR)
WMITLV_CREATE_PARAM_STRUC(WMI_REG_CHAN_LIST_CC_EXT_EVENTID);
/* WMI AFC info event */
@ -6964,9 +7069,17 @@ WMITLV_CREATE_PARAM_STRUC(WMI_REG_CHAN_LIST_CC_EXT_EVENTID);
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_afc_power_event_param, wmi_afc_power_event_param, afc_power_event_param, WMITLV_SIZE_FIX)\
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_6g_afc_frequency_info, freq_info_array, WMITLV_SIZE_VAR)\
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_6g_afc_channel_info, channel_info_array, WMITLV_SIZE_VAR)\
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_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_afc_chan_eirp_power_info, chan_eirp_power_info_array, WMITLV_SIZE_VAR) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_hw_blacklist_chan_fixed_param, hw_blacklist_chan_fixed_param, WMITLV_SIZE_VAR) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_hw_blacklist_chan_data, hw_blacklist_chan_data, WMITLV_SIZE_VAR)
WMITLV_CREATE_PARAM_STRUC(WMI_AFC_EVENTID);
/* HW blacklist channels for the current country code */
#define WMITLV_TABLE_WMI_HW_BLACKLIST_CHAN_EVENTID(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_hw_blacklist_chan_fixed_param, wmi_hw_blacklist_chan_fixed_param, hw_blacklist_chan_fixed_param, WMITLV_SIZE_FIX) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_hw_blacklist_chan_data, hw_blacklist_chan_data, WMITLV_SIZE_VAR)
WMITLV_CREATE_PARAM_STRUC(WMI_HW_BLACKLIST_CHAN_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)
@ -7257,7 +7370,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PEER_STATS_INFO_EVENTID);
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_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_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_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_ctrl_path_sta_dar_stats_struct, ctrl_path_sta_dar_stats, WMITLV_SIZE_VAR)
WMITLV_CREATE_PARAM_STRUC(WMI_CTRL_PATH_STATS_EVENTID);
/*
@ -7775,7 +7889,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_VENDOR_PEER_EVENTID);
#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_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_vdev_vbss_peer_sn_info, vbss_peer_sn_info, WMITLV_SIZE_VAR) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_vdev_vbss_peer_dyn_info, vbss_peer_dyn_info, WMITLV_SIZE_VAR)
WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_VBSS_CONFIG_EVENTID);
/* link switch event */

File diff suppressed because it is too large Load diff

View file

@ -37,7 +37,7 @@
#define __WMI_VER_MINOR_ 0
/** WMI revision number has to be incremented when there is a
* change that may or may not break compatibility. */
#define __WMI_REVISION_ 1575
#define __WMI_REVISION_ 1637
/** The Version Namespace should not be normally changed. Only
* host and firmware of the same WMI namespace will work