Merge tag 'LA.UM.9.14.r1-19600.01-LAHAINA.QSSI12.0' of https://git.codelinaro.org/clo/la/platform/vendor/qcom-opensource/wlan/fw-api into android12-5.4-lahaina

"LA.UM.9.14.r1-19600.01-LAHAINA.QSSI12.0"

* tag 'LA.UM.9.14.r1-19600.01-LAHAINA.QSSI12.0' of https://git.codelinaro.org/clo/la/platform/vendor/qcom-opensource/wlan/fw-api:
  fw-api: CL 17951131 - update fw common interface files
  fw-api: CL 17946727 - update fw common interface files
  fw-api: CL 17935445 - update fw common interface files
  fw-api: CL 17913152 - update fw common interface files
  fw-api: CL 17913125 - update fw common interface files
  fw-api: CL 17879597 - update fw common interface files
  fw-api: CL 17848238 - update fw common interface files
  fw-api: CL 17845264 - update fw common interface files
  fw-api: CL 17844347 - update fw common interface files
  fw-api: CL 17844331 - update fw common interface files
  fw-api: CL 17808556 - update fw common interface files
  fw-api: CL 17793582 - update fw common interface files
  fw-api: CL 17793208 - update fw common interface files
  fw-api: CL 17771149 - update fw common interface files
  fw-api: CL 17768134 - update fw common interface files
  fw-api: CL 17745034 - update fw common interface files
  fw-api: CL 17741957 - update fw common interface files
  fw-api: CL 17725153 - update fw common interface files
  fw-api: CL 17712037 - update fw common interface files
  fw-api: CL 17660651 - update fw common interface files
  fw-api: CL 17644061 - update fw common interface files
  fw-api: Fix compilation issue for common user info TLV
  fw-api: CL 17628058 - update fw common interface files
  fw-api: CL 17624712 - update fw common interface files
  fw-api: CL 17605663 - update fw common interface files
  fw-api: Add hw headers for HW reinjection support
  fw-api: CL 17592053 - update fw common interface files
  fw-api: CL 17577504 - update fw common interface files
  fw-api: CL 17554759 - update fw common interface files
  fw-api: CL 17539128 - update fw common interface files
  qcacmn: Add HW headers for Waikiki Monitor (QCN9224)
  fw-api: CL 17524652 - update fw common interface files
  fw-api: CL 17514144 - update fw common interface files
  fw-api: CL 17503513 - update fw common interface files
  fw-api: CL 17485838 - update fw common interface files
  fw-api: CL 17480751 - update fw common interface files
  fw-api: CL 17479040 - update fw common interface files
  fw-api: CL 17463702 - update fw common interface files

Change-Id: I4a6634222fa666bf9f9a526a3d0c2bacbd234917
This commit is contained in:
Michael Bestas 2022-05-24 09:13:26 +03:00
commit 111a9386c3
No known key found for this signature in database
GPG key ID: CC95044519BE6669
11 changed files with 1785 additions and 79 deletions

View file

@ -698,10 +698,10 @@ typedef enum {
HTT_STATS_UNAVAILABLE_ERROR_STATS_TAG = 110, /* htt_stats_error_tlv_v */
HTT_STATS_TX_SELFGEN_AC_SCHED_STATUS_STATS_TAG = 111, /* htt_tx_selfgen_ac_sched_status_stats_tlv */
HTT_STATS_TX_SELFGEN_AX_SCHED_STATUS_STATS_TAG = 112, /* htt_tx_selfgen_ax_sched_status_stats_tlv */
HTT_STATS_TXBF_OFDMA_NDPA_STATS_TAG = 113, /* htt_txbf_ofdma_ndpa_stats_tlv */
HTT_STATS_TXBF_OFDMA_NDP_STATS_TAG = 114, /* htt_txbf_ofdma_ndp_stats_tlv */
HTT_STATS_TXBF_OFDMA_BRP_STATS_TAG = 115, /* htt_txbf_ofdma_brp_stats_tlv */
HTT_STATS_TXBF_OFDMA_STEER_STATS_TAG = 116, /* htt_txbf_ofdma_steer_stats_tlv */
HTT_STATS_TXBF_OFDMA_NDPA_STATS_TAG = 113, /* htt_txbf_ofdma_ndpa_stats_tlv - DEPRECATED */
HTT_STATS_TXBF_OFDMA_NDP_STATS_TAG = 114, /* htt_txbf_ofdma_ndp_stats_tlv - DEPRECATED */
HTT_STATS_TXBF_OFDMA_BRP_STATS_TAG = 115, /* htt_txbf_ofdma_brp_stats_tlv - DEPRECATED */
HTT_STATS_TXBF_OFDMA_STEER_STATS_TAG = 116, /* htt_txbf_ofdma_steer_stats_tlv - DEPRECATED */
HTT_STATS_STA_UL_OFDMA_STATS_TAG = 117, /* htt_sta_ul_ofdma_stats_tlv */
HTT_STATS_VDEV_RTT_RESP_STATS_TAG = 118, /* htt_vdev_rtt_resp_stats_tlv */
HTT_STATS_PKTLOG_AND_HTT_RING_STATS_TAG = 119, /* htt_pktlog_and_htt_ring_stats_tlv */
@ -732,6 +732,15 @@ typedef enum {
HTT_STATS_TX_PDEV_SAWF_RATE_STATS_TAG = 144, /* htt_tx_pdev_rate_stats_sawf_tlv */
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 */
HTT_STATS_TXBF_OFDMA_AX_NDPA_STATS_TAG = 147, /* htt_txbf_ofdma_ax_ndpa_stats_tlv */
HTT_STATS_TXBF_OFDMA_AX_NDP_STATS_TAG = 148, /* htt_txbf_ofdma_ax_ndp_stats_tlv */
HTT_STATS_TXBF_OFDMA_AX_BRP_STATS_TAG = 149, /* htt_txbf_ofdma_ax_brp_stats_tlv */
HTT_STATS_TXBF_OFDMA_AX_STEER_STATS_TAG = 150, /* htt_txbf_ofdma_ax_steer_stats_tlv */
HTT_STATS_TXBF_OFDMA_BE_NDPA_STATS_TAG = 151, /* htt_txbf_ofdma_be_ndpa_stats_tlv */
HTT_STATS_TXBF_OFDMA_BE_NDP_STATS_TAG = 152, /* htt_txbf_ofdma_be_ndp_stats_tlv */
HTT_STATS_TXBF_OFDMA_BE_BRP_STATS_TAG = 153, /* htt_txbf_ofdma_be_brp_stats_tlv */
HTT_STATS_TXBF_OFDMA_BE_STEER_STATS_TAG = 154, /* htt_txbf_ofdma_be_steer_stats_tlv */
HTT_STATS_DMAC_RESET_STATS_TAG = 155, /* htt_dmac_reset_stats_tlv */
HTT_STATS_MAX_TAG,
@ -5576,7 +5585,15 @@ enum htt_srng_ring_id {
* 010 - 128bytes
* 100 - 256bytes
* 111 - Full mpdu bytes
* b'25:31 - rsvd2: Reserved for future use
* b'25:26 - rx_hdr_len:
* Specifies the number of bytes of recvd packet to copy
* into the rx_hdr tlv.
* supported values for now by host:
* 01 - 64bytes
* 10 - 128bytes
* 11 - 256bytes
* default - 128 bytes
* b'27:31 - rsvd2: Reserved for future use
* dword2 - b'0:31 - packet_type_enable_flags_0:
* Enable MGMT packet from 0b0000 to 0b1001
* bits from low to high: FP, MD, MO - 3 bits
@ -5714,7 +5731,8 @@ PREPACK struct htt_rx_ring_selection_cfg_t {
config_length_mgmt:3,
config_length_ctrl:3,
config_length_data:3,
rsvd2: 7;
rx_hdr_len: 2,
rsvd2: 5;
A_UINT32 packet_type_enable_flags_0;
A_UINT32 packet_type_enable_flags_1;
A_UINT32 packet_type_enable_flags_2;
@ -5877,6 +5895,16 @@ PREPACK struct htt_rx_ring_selection_cfg_t {
((_var) |= ((_val) << HTT_RX_RING_SELECTION_CFG_CONFIG_LENGTH_DATA_S)); \
} while (0)
#define HTT_RX_RING_SELECTION_CFG_RX_HDR_LEN_M 0x06000000
#define HTT_RX_RING_SELECTION_CFG_RX_HDR_LEN_S 25
#define HTT_RX_RING_SELECTION_CFG_RX_HDR_LEN_GET(_var) \
(((_var) & HTT_RX_RING_SELECTION_CFG_RX_HDR_LEN_M) >> \
HTT_RX_RING_SELECTION_CFG_RX_HDR_LEN_S)
#define HTT_RX_RING_SELECTION_CFG_RX_HDR_LEN_SET(_var, _val) \
do { \
HTT_CHECK_SET_VAL( HTT_RX_RING_SELECTION_CFG_RX_HDR_LEN, _val); \
((_var) |= ((_val) << HTT_RX_RING_SELECTION_CFG_RX_HDR_LEN_S));\
} while(0)
#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG_0_M 0xffffffff
#define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG_0_S 0
@ -6651,6 +6679,9 @@ PREPACK struct htt_rx_ring_selection_cfg_t {
#define HTT_RX_RING_SELECTION_CFG_TLV_FILTER_IN_FLAG_RX_PPDU_END_STATUS_DONE_M 0x00001000
#define HTT_RX_RING_SELECTION_CFG_TLV_FILTER_IN_FLAG_RX_PPDU_END_STATUS_DONE_S 12
#define HTT_RX_RING_SELECTION_CFG_TLV_FILTER_IN_FLAG_RX_PPDU_START_USER_INFO_M 0x00002000
#define HTT_RX_RING_SELECTION_CFG_TLV_FILTER_IN_FLAG_RX_PPDU_START_USER_INFO_S 13
#define HTT_RX_RING_TLV_ENABLE_SET(word, httsym, enable) \
do { \
HTT_CHECK_SET_VAL(httsym, enable); \
@ -18126,6 +18157,14 @@ typedef struct {
/* discarded tx msdus byte cnt coz of time to live expiry */
A_UINT32 tx_msdu_ttl_expire_drop_byte_cnt_lo;
A_UINT32 tx_msdu_ttl_expire_drop_byte_cnt_hi;
/* TQM bypass frame cnt */
A_UINT32 tqm_bypass_frame_cnt_lo;
A_UINT32 tqm_bypass_frame_cnt_hi;
/* TQM bypass byte cnt */
A_UINT32 tqm_bypass_byte_cnt_lo;
A_UINT32 tqm_bypass_byte_cnt_hi;
} htt_t2h_vdev_txrx_stats_hw_stats_tlv;
/*

View file

@ -1571,6 +1571,144 @@ typedef enum HTT_PPDU_STATS_RESP_PPDU_TYPE HTT_PPDU_STATS_RESP_PPDU_TYPE;
((_var) |= ((_val) << HTT_PPDU_STATS_USER_RATE_TLV_RESP_PPDU_TYPE_S)); \
} while (0)
#define HTT_PPDU_STATS_USER_RATE_TLV_RU_FORMAT_M 0x0000f000
#define HTT_PPDU_STATS_USER_RATE_TLV_RU_FORMAT_S 12
#define HTT_PPDU_STATS_USER_RATE_TLV_RU_FORMAT_GET(_var) \
(((_var) & HTT_PPDU_STATS_USER_RATE_TLV_RU_FORMAT_M) >> \
HTT_PPDU_STATS_USER_RATE_TLV_RU_FORMAT_S)
#define HTT_PPDU_STATS_USER_RATE_TLV_RU_FORMAT_SET(_var, _val) \
do { \
HTT_CHECK_SET_VAL(HTT_PPDU_STATS_USER_RATE_TLV_RU_FORMAT, _val); \
((_var) |= ((_val) << HTT_PPDU_STATS_USER_RATE_TLV_RU_FORMAT_S)); \
} while (0)
#define HTT_PPDU_STATS_USER_RATE_TLV_RU_END_M 0x0000ffff
#define HTT_PPDU_STATS_USER_RATE_TLV_RU_END_S 0
#define HTT_PPDU_STATS_USER_RATE_TLV_RU_END_GET(_var) \
(((_var) & HTT_PPDU_STATS_USER_RATE_TLV_RU_END_M) >> \
HTT_PPDU_STATS_USER_RATE_TLV_RU_END_S)
#define HTT_PPDU_STATS_USER_RATE_TLV_RU_END_SET(_var, _val) \
do { \
HTT_CHECK_SET_VAL(HTT_PPDU_STATS_USER_RATE_TLV_RU_END, _val); \
((_var) |= ((_val) << HTT_PPDU_STATS_USER_RATE_TLV_RU_END_S)); \
} while (0)
#define HTT_PPDU_STATS_USER_RATE_TLV_RU_START_M 0xffff0000
#define HTT_PPDU_STATS_USER_RATE_TLV_RU_START_S 16
#define HTT_PPDU_STATS_USER_RATE_TLV_RU_START_GET(_var) \
(((_var) & HTT_PPDU_STATS_USER_RATE_TLV_RU_START_M) >> \
HTT_PPDU_STATS_USER_RATE_TLV_RU_START_S)
#define HTT_PPDU_STATS_USER_RATE_TLV_RU_START_SET(_var, _val) \
do { \
HTT_CHECK_SET_VAL(HTT_PPDU_STATS_USER_RATE_TLV_RU_START, _val); \
((_var) |= ((_val) << HTT_PPDU_STATS_USER_RATE_TLV_RU_START_S)); \
} while (0)
#define HTT_PPDU_STATS_USER_RATE_TLV_RU_INDEX_M 0x0000ffff
#define HTT_PPDU_STATS_USER_RATE_TLV_RU_INDEX_S 0
#define HTT_PPDU_STATS_USER_RATE_TLV_RU_INDEX_GET(_var) \
(((_var) & HTT_PPDU_STATS_USER_RATE_TLV_RU_INDEX_M) >> \
HTT_PPDU_STATS_USER_RATE_TLV_RU_INDEX_S)
#define HTT_PPDU_STATS_USER_RATE_TLV_RU_INDEX_SET(_var, _val) \
do { \
HTT_CHECK_SET_VAL(HTT_PPDU_STATS_USER_RATE_TLV_RU_INDEX, _val); \
((_var) |= ((_val) << HTT_PPDU_STATS_USER_RATE_TLV_RU_INDEX_S)); \
} while (0)
#define HTT_PPDU_STATS_USER_RATE_TLV_RU_SIZE_M 0xffff0000
#define HTT_PPDU_STATS_USER_RATE_TLV_RU_SIZE_S 16
#define HTT_PPDU_STATS_USER_RATE_TLV_RU_SIZE_GET(_var) \
(((_var) & HTT_PPDU_STATS_USER_RATE_TLV_RU_SIZE_M) >> \
HTT_PPDU_STATS_USER_RATE_TLV_RU_SIZE_S)
#define HTT_PPDU_STATS_USER_RATE_TLV_RU_SIZE_SET(_var, _val) \
do { \
HTT_CHECK_SET_VAL(HTT_PPDU_STATS_USER_RATE_TLV_RU_SIZE, _val); \
((_var) |= ((_val) << HTT_PPDU_STATS_USER_RATE_TLV_RU_SIZE_S)); \
} while (0)
#define HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_END_M 0x0000ffff
#define HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_END_S 0
#define HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_END_GET(_var) \
(((_var) & HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_END_M) >> \
HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_END_S)
#define HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_END_SET(_var, _val) \
do { \
HTT_CHECK_SET_VAL(HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_END, _val); \
((_var) |= ((_val) << HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_END_S)); \
} while (0)
#define HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_START_M 0xffff0000
#define HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_START_S 16
#define HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_START_GET(_var) \
(((_var) & HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_START_M) >> \
HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_START_S)
#define HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_START_SET(_var, _val) \
do { \
HTT_CHECK_SET_VAL(HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_START, _val); \
((_var) |= ((_val) << HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_START_S)); \
} while (0)
#define HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_INDEX_M 0x0000ffff
#define HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_INDEX_S 0
#define HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_INDEX_GET(_var) \
(((_var) & HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_INDEX_M) >> \
HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_INDEX_S)
#define HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_INDEX_SET(_var, _val) \
do { \
HTT_CHECK_SET_VAL(HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_INDEX, _val); \
((_var) |= ((_val) << HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_INDEX_S)); \
} while (0)
#define HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_SIZE_M 0xffff0000
#define HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_SIZE_S 16
#define HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_SIZE_GET(_var) \
(((_var) & HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_SIZE_M) >> \
HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_SIZE_S)
#define HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_SIZE_SET(_var, _val) \
do { \
HTT_CHECK_SET_VAL(HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_SIZE, _val); \
((_var) |= ((_val) << HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_SIZE_S)); \
} while (0)
#define HTT_PPDU_STATS_USER_RATE_TLV_PUNC_PATTERN_BITMAP_M 0x0000ffff
#define HTT_PPDU_STATS_USER_RATE_TLV_PUNC_PATTERN_BITMAP_S 0
#define HTT_PPDU_STATS_USER_RATE_TLV_PUNC_PATTERN_BITMAP_GET(_var) \
(((_var) & HTT_PPDU_STATS_USER_RATE_TLV_PUNC_PATTERN_BITMAP_M) >> \
HTT_PPDU_STATS_USER_RATE_TLV_PUNC_PATTERN_BITMAP_S)
#define HTT_PPDU_STATS_USER_RATE_TLV_PUNC_PATTERN_BITMAP_SET (_var , _val) \
do { \
HTT_CHECK_SET_VAL(HTT_PPDU_STATS_USER_RATE_TLV_PUNC_PATTERN_BITMAP, _val); \
((_var) |= ((_val) << HTT_PPDU_STATS_USER_RATE_TLV_PUNC_PATTERN_BITMAP_S)); \
} while (0)
typedef enum HTT_PPDU_STATS_RU_SIZE {
HTT_PPDU_STATS_RU_26,
HTT_PPDU_STATS_RU_52,
@ -1754,10 +1892,11 @@ typedef struct {
};
/*
* This is an unused word that can be safely renamed / used
* by any future feature.
* BIT [15:0] :- Punctured BW bitmap pattern to indicate which BWs are
* punctured.
*/
A_UINT32 reserved4;
A_UINT32 punc_pattern_bitmap: 16,
reserved4: 16;
} htt_ppdu_stats_user_rate_tlv;
#define HTT_PPDU_STATS_USR_RATE_VALID_M 0x80000000

View file

@ -434,6 +434,15 @@ enum htt_dbg_ext_stats_type {
HTT_STRM_GEN_MPDUS_STATS = 43,
HTT_STRM_GEN_MPDUS_DETAILS_STATS = 44,
/** HTT_DBG_SOC_ERROR_STATS
* PARAMS:
* - No Params
* RESP MSG:
* - htt_dmac_reset_stats_tlv
*/
HTT_DBG_SOC_ERROR_STATS = 45,
/* keep this last */
HTT_DBG_NUM_EXT_STATS = 256,
};
@ -565,6 +574,25 @@ typedef enum {
HTT_RX_UL_MUMIMO_TRIGGER_STATS_UPLOAD_11BE,
} htt_rx_ul_mumimo_trigger_stats_upload_t;
/* htt_tx_pdev_txbf_ofdma_stats_upload_t
* Enumerations for specifying which stats to upload in response to
* HTT_DBG_EXT_STATS_TXBF_OFDMA.
*/
typedef enum {
/* upload 11ax TXBF OFDMA stats
*
* TLV: htt_tx_pdev_ax_txbf_ofdma_stats_t
*/
HTT_UPLOAD_AX_TXBF_OFDMA_STATS,
/*
* Upload 11be TXBF OFDMA stats
*
* TLV: htt_tx_pdev_be_txbf_ofdma_stats_t
*/
HTT_UPLOAD_BE_TXBF_OFDMA_STATS,
} htt_tx_pdev_txbf_ofdma_stats_upload_t;
#define HTT_STATS_MAX_STRING_SZ32 4
#define HTT_STATS_MACID_INVALID 0xff
#define HTT_TX_HWQ_MAX_DIFS_LATENCY_BINS 10
@ -1010,6 +1038,27 @@ typedef struct {
A_UINT32 phy_warm_reset_reason_tx_hwsch_reset_war;
A_UINT32 phy_warm_reset_reason_hwsch_wdog_or_cca_wdog_war;
A_UINT32 fw_rx_rings_reset;
/**
* Num of iterations rx leak prevention successfully done.
*/
A_UINT32 rx_dest_drain_rx_descs_leak_prevention_done;
/**
* Num of rx descs successfully saved by rx leak prevention.
*/
A_UINT32 rx_dest_drain_rx_descs_saved_cnt;
/*
* Stats to debug reason Rx leak prevention
* was not required to be kicked in.
*/
A_UINT32 rx_dest_drain_rxdma2reo_leak_detected;
A_UINT32 rx_dest_drain_rxdma2fw_leak_detected;
A_UINT32 rx_dest_drain_rxdma2wbm_leak_detected;
A_UINT32 rx_dest_drain_rxdma1_2sw_leak_detected;
A_UINT32 rx_dest_drain_rx_drain_ok_mac_idle;
A_UINT32 rx_dest_drain_ok_mac_not_idle;
A_UINT32 rx_dest_drain_prerequisite_invld;
A_UINT32 rx_dest_drain_skip_for_non_lmac_reset;
A_UINT32 rx_dest_drain_hw_fifo_not_empty_post_drain_wait;
} htt_hw_stats_pdev_errs_tlv;
typedef struct {
@ -2226,7 +2275,7 @@ typedef struct {
A_UINT32 be_ul_mumimo_trigger[HTT_TX_PDEV_STATS_NUM_BE_MUMIMO_USER_STATS];
} htt_tx_selfgen_be_stats_tlv;
typedef struct {
typedef struct { /* DEPRECATED */
htt_tlv_hdr_t tlv_hdr;
/** 11AX HE OFDMA NDPA frame queued to the HW */
A_UINT32 ax_ofdma_ndpa_queued[HTT_TX_PDEV_STATS_NUM_OFDMA_USER_STATS];
@ -2238,7 +2287,7 @@ typedef struct {
A_UINT32 ax_ofdma_ndpa_err[HTT_TX_PDEV_STATS_NUM_OFDMA_USER_STATS];
} htt_txbf_ofdma_ndpa_stats_tlv;
typedef struct {
typedef struct { /* DEPRECATED */
htt_tlv_hdr_t tlv_hdr;
/** 11AX HE OFDMA NDP frame queued to the HW */
A_UINT32 ax_ofdma_ndp_queued[HTT_TX_PDEV_STATS_NUM_OFDMA_USER_STATS];
@ -2250,7 +2299,7 @@ typedef struct {
A_UINT32 ax_ofdma_ndp_err[HTT_TX_PDEV_STATS_NUM_OFDMA_USER_STATS];
} htt_txbf_ofdma_ndp_stats_tlv;
typedef struct {
typedef struct { /* DEPRECATED */
htt_tlv_hdr_t tlv_hdr;
/** 11AX HE OFDMA MU BRPOLL frame queued to the HW */
A_UINT32 ax_ofdma_brpoll_queued[HTT_TX_PDEV_STATS_NUM_OFDMA_USER_STATS];
@ -2267,7 +2316,7 @@ typedef struct {
A_UINT32 ax_ofdma_brp_err_num_cbf_rcvd[HTT_TX_PDEV_STATS_NUM_OFDMA_USER_STATS+1];
} htt_txbf_ofdma_brp_stats_tlv;
typedef struct {
typedef struct { /* DEPRECATED */
htt_tlv_hdr_t tlv_hdr;
/**
* 11AX HE OFDMA PPDUs that were sent over the air with steering
@ -2290,23 +2339,295 @@ typedef struct {
A_UINT32 ax_ofdma_num_usrs_force_sound[HTT_TX_PDEV_STATS_NUM_OFDMA_USER_STATS];
} htt_txbf_ofdma_steer_stats_tlv;
/* Note:
* This struct htt_tx_pdev_txbf_ofdma_stats_t and all its constituent
* struct TLVs are deprecated, due to the need for restructuring these
* stats into a variable length array
*/
typedef struct { /* DEPRECATED */
htt_txbf_ofdma_ndpa_stats_tlv ofdma_ndpa_tlv;
htt_txbf_ofdma_ndp_stats_tlv ofdma_ndp_tlv;
htt_txbf_ofdma_brp_stats_tlv ofdma_brp_tlv;
htt_txbf_ofdma_steer_stats_tlv ofdma_steer_tlv;
} htt_tx_pdev_txbf_ofdma_stats_t;
typedef struct {
/** 11AX HE OFDMA NDPA frame queued to the HW */
A_UINT32 ax_ofdma_ndpa_queued;
/** 11AX HE OFDMA NDPA frame sent over the air */
A_UINT32 ax_ofdma_ndpa_tried;
/** 11AX HE OFDMA NDPA frame flushed by HW */
A_UINT32 ax_ofdma_ndpa_flushed;
/** 11AX HE OFDMA NDPA frame completed with error(s) */
A_UINT32 ax_ofdma_ndpa_err;
} htt_txbf_ofdma_ax_ndpa_stats_elem_t;
typedef struct {
htt_tlv_hdr_t tlv_hdr;
/**
* This field is populated with the num of elems in the ax_ndpa[]
* variable length array.
*/
A_UINT32 num_elems_ax_ndpa_arr;
/**
* This field will be filled by target with value of
* sizeof(htt_txbf_ofdma_ax_ndpa_stats_elem_t).
* This is for allowing host to infer how much data target has provided,
* even if it using different version of the struct def than what target
* had used.
*/
A_UINT32 arr_elem_size_ax_ndpa;
htt_txbf_ofdma_ax_ndpa_stats_elem_t ax_ndpa[1]; /* variable length */
} htt_txbf_ofdma_ax_ndpa_stats_tlv;
typedef struct {
/** 11AX HE OFDMA NDP frame queued to the HW */
A_UINT32 ax_ofdma_ndp_queued;
/** 11AX HE OFDMA NDPA frame sent over the air */
A_UINT32 ax_ofdma_ndp_tried;
/** 11AX HE OFDMA NDPA frame flushed by HW */
A_UINT32 ax_ofdma_ndp_flushed;
/** 11AX HE OFDMA NDPA frame completed with error(s) */
A_UINT32 ax_ofdma_ndp_err;
} htt_txbf_ofdma_ax_ndp_stats_elem_t;
typedef struct {
htt_tlv_hdr_t tlv_hdr;
/**
* This field is populated with the num of elems in the the ax_ndp[]
* variable length array.
*/
A_UINT32 num_elems_ax_ndp_arr;
/**
* This field will be filled by target with value of
* sizeof(htt_txbf_ofdma_ax_ndp_stats_elem_t).
* This is for allowing host to infer how much data target has provided,
* even if it using different version of the struct def than what target
* had used.
*/
A_UINT32 arr_elem_size_ax_ndp;
htt_txbf_ofdma_ax_ndp_stats_elem_t ax_ndp[1]; /* variable length */
} htt_txbf_ofdma_ax_ndp_stats_tlv;
typedef struct {
/** 11AX HE OFDMA MU BRPOLL frame queued to the HW */
A_UINT32 ax_ofdma_brpoll_queued;
/** 11AX HE OFDMA MU BRPOLL frame sent over the air */
A_UINT32 ax_ofdma_brpoll_tried;
/** 11AX HE OFDMA MU BRPOLL frame flushed by HW */
A_UINT32 ax_ofdma_brpoll_flushed;
/** 11AX HE OFDMA MU BRPOLL frame completed with error(s) */
A_UINT32 ax_ofdma_brp_err;
/**
* Number of CBF(s) received when 11AX HE OFDMA MU BRPOLL frame
* completed with error(s)
*/
A_UINT32 ax_ofdma_brp_err_num_cbf_rcvd;
} htt_txbf_ofdma_ax_brp_stats_elem_t;
typedef struct {
htt_tlv_hdr_t tlv_hdr;
/**
* This field is populated with the num of elems in the the ax_brp[]
* variable length array.
*/
A_UINT32 num_elems_ax_brp_arr;
/**
* This field will be filled by target with value of
* sizeof(htt_txbf_ofdma_ax_brp_stats_elem_t).
* This is for allowing host to infer how much data target has provided,
* even if it using different version of the struct than what target
* had used.
*/
A_UINT32 arr_elem_size_ax_brp;
htt_txbf_ofdma_ax_brp_stats_elem_t ax_brp[1]; /* variable length */
} htt_txbf_ofdma_ax_brp_stats_tlv;
typedef struct {
/**
* 11AX HE OFDMA PPDUs that were sent over the air with steering
* (TXBF + OFDMA)
*/
A_UINT32 ax_ofdma_num_ppdu_steer;
/** 11AX HE OFDMA PPDUs that were sent over the air in open loop */
A_UINT32 ax_ofdma_num_ppdu_ol;
/**
* 11AX HE OFDMA number of users for which CBF prefetch was initiated
* to PHY HW during TX
*/
A_UINT32 ax_ofdma_num_usrs_prefetch;
/**
* 11AX HE OFDMA number of users for which sounding was initiated
* during TX
*/
A_UINT32 ax_ofdma_num_usrs_sound;
/** 11AX HE OFDMA number of users for which sounding was forced during TX */
A_UINT32 ax_ofdma_num_usrs_force_sound;
} htt_txbf_ofdma_ax_steer_stats_elem_t;
typedef struct {
htt_tlv_hdr_t tlv_hdr;
/**
* This field is populated with the num of elems in the ax_steer[]
* variable length array.
*/
A_UINT32 num_elems_ax_steer_arr;
/**
* This field will be filled by target with value of
* sizeof(htt_txbf_ofdma_ax_steer_stats_elem_t).
* This is for allowing host to infer how much data target has provided,
* even if it using different version of the struct than what target
* had used.
*/
A_UINT32 arr_elem_size_ax_steer;
htt_txbf_ofdma_ax_steer_stats_elem_t ax_steer[1]; /* variable length */
} htt_txbf_ofdma_ax_steer_stats_tlv;
typedef struct {
/** 11BE EHT OFDMA NDPA frame queued to the HW */
A_UINT32 be_ofdma_ndpa_queued;
/** 11BE EHT OFDMA NDPA frame sent over the air */
A_UINT32 be_ofdma_ndpa_tried;
/** 11BE EHT OFDMA NDPA frame flushed by HW */
A_UINT32 be_ofdma_ndpa_flushed;
/** 11BE EHT OFDMA NDPA frame completed with error(s) */
A_UINT32 be_ofdma_ndpa_err;
} htt_txbf_ofdma_be_ndpa_stats_elem_t;
typedef struct {
htt_tlv_hdr_t tlv_hdr;
/**
* This field is populated with the num of elems in the be_ndpa[]
* variable length array.
*/
A_UINT32 num_elems_be_ndpa_arr;
/**
* This field will be filled by target with value of
* sizeof(htt_txbf_ofdma_be_ndpa_stats_elem_t).
* This is for allowing host to infer how much data target has provided,
* even if it using different version of the struct than what target
* had used.
*/
A_UINT32 arr_elem_size_be_ndpa;
htt_txbf_ofdma_be_ndpa_stats_elem_t be_ndpa[1]; /* variable length */
} htt_txbf_ofdma_be_ndpa_stats_tlv;
typedef struct {
/** 11BE EHT OFDMA NDP frame queued to the HW */
A_UINT32 be_ofdma_ndp_queued;
/** 11BE EHT OFDMA NDPA frame sent over the air */
A_UINT32 be_ofdma_ndp_tried;
/** 11BE EHT OFDMA NDPA frame flushed by HW */
A_UINT32 be_ofdma_ndp_flushed;
/** 11BE EHT OFDMA NDPA frame completed with error(s) */
A_UINT32 be_ofdma_ndp_err;
} htt_txbf_ofdma_be_ndp_stats_elem_t;
typedef struct {
htt_tlv_hdr_t tlv_hdr;
/**
* This field is populated with the num of elems in the be_ndp[]
* variable length array.
*/
A_UINT32 num_elems_be_ndp_arr;
/**
* This field will be filled by target with value of
* sizeof(htt_txbf_ofdma_be_ndp_stats_elem_t).
* This is for allowing host to infer how much data target has provided,
* even if it using different version of the struct than what target
* had used.
*/
A_UINT32 arr_elem_size_be_ndp;
htt_txbf_ofdma_be_ndp_stats_elem_t be_ndp[1]; /* variable length */
} htt_txbf_ofdma_be_ndp_stats_tlv;
typedef struct {
/** 11BE EHT OFDMA MU BRPOLL frame queued to the HW */
A_UINT32 be_ofdma_brpoll_queued;
/** 11BE EHT OFDMA MU BRPOLL frame sent over the air */
A_UINT32 be_ofdma_brpoll_tried;
/** 11BE EHT OFDMA MU BRPOLL frame flushed by HW */
A_UINT32 be_ofdma_brpoll_flushed;
/** 11BE EHT OFDMA MU BRPOLL frame completed with error(s) */
A_UINT32 be_ofdma_brp_err;
/**
* Number of CBF(s) received when 11BE EHT OFDMA MU BRPOLL frame
* completed with error(s)
*/
A_UINT32 be_ofdma_brp_err_num_cbf_rcvd;
} htt_txbf_ofdma_be_brp_stats_elem_t;
typedef struct {
htt_tlv_hdr_t tlv_hdr;
/**
* This field is populated with the num of elems in the be_brp[]
* variable length array.
*/
A_UINT32 num_elems_be_brp_arr;
/**
* This field will be filled by target with value of
* sizeof(htt_txbf_ofdma_be_brp_stats_elem_t).
* This is for allowing host to infer how much data target has provided,
* even if it using different version of the struct than what target
* had used
*/
A_UINT32 arr_elem_size_be_brp;
htt_txbf_ofdma_be_brp_stats_elem_t be_brp[1]; /* variable length */
} htt_txbf_ofdma_be_brp_stats_tlv;
typedef struct {
/**
* 11BE EHT OFDMA PPDUs that were sent over the air with steering
* (TXBF + OFDMA)
*/
A_UINT32 be_ofdma_num_ppdu_steer;
/** 11BE EHT OFDMA PPDUs that were sent over the air in open loop */
A_UINT32 be_ofdma_num_ppdu_ol;
/**
* 11BE EHT OFDMA number of users for which CBF prefetch was initiated
* to PHY HW during TX
*/
A_UINT32 be_ofdma_num_usrs_prefetch;
/**
* 11BE EHT OFDMA number of users for which sounding was initiated
* during TX
*/
A_UINT32 be_ofdma_num_usrs_sound;
/**
* 11BE EHT OFDMA number of users for which sounding was forced during TX
*/
A_UINT32 be_ofdma_num_usrs_force_sound;
} htt_txbf_ofdma_be_steer_stats_elem_t;
typedef struct {
htt_tlv_hdr_t tlv_hdr;
/**
* This field is populated with the num of elems in the be_steer[]
* variable length array.
*/
A_UINT32 num_elems_be_steer_arr;
/**
* This field will be filled by target with value of
* sizeof(htt_txbf_ofdma_be_steer_stats_elem_t).
* This is for allowing host to infer how much data target has provided,
* even if it using different version of the struct than what target
* had used.
*/
A_UINT32 arr_elem_size_be_steer;
htt_txbf_ofdma_be_steer_stats_elem_t be_steer[1]; /* variable length */
} htt_txbf_ofdma_be_steer_stats_tlv;
/* STATS_TYPE : HTT_DBG_EXT_STATS_TXBF_OFDMA
* TLV_TAGS:
* - HTT_STATS_TXBF_OFDMA_NDPA_STATS_TAG
* - HTT_STATS_TXBF_OFDMA_NDP_STATS_TAG
* - HTT_STATS_TXBF_OFDMA_BRP_STATS_TAG
* - HTT_STATS_TXBF_OFDMA_STEER_STATS_TAG
* - HTT_STATS_TXBF_OFDMA_BE_NDPA_STATS_TAG
* - HTT_STATS_TXBF_OFDMA_BE_NDP_STATS_TAG
* - HTT_STATS_TXBF_OFDMA_BE_BRP_STATS_TAG
* - HTT_STATS_TXBF_OFDMA_BE_STEER_STATS_TAG
*/
/* NOTE:
* This structure is for documentation, and cannot be safely used directly.
* Instead, use the constituent TLV structures to fill/parse.
*/
typedef struct {
htt_txbf_ofdma_ndpa_stats_tlv ofdma_ndpa_tlv;
htt_txbf_ofdma_ndp_stats_tlv ofdma_ndp_tlv;
htt_txbf_ofdma_brp_stats_tlv ofdma_brp_tlv;
htt_txbf_ofdma_steer_stats_tlv ofdma_steer_tlv;
} htt_tx_pdev_txbf_ofdma_stats_t;
typedef struct {
htt_tlv_hdr_t tlv_hdr;
@ -3246,6 +3567,14 @@ typedef struct {
A_UINT32 tqm_active_tids;
A_UINT32 tqm_inactive_tids;
A_UINT32 tqm_active_msduq_flows;
/* SAWF system delay reference timestamp updation related stats */
A_UINT32 total_msduq_timestamp_updates;
A_UINT32 total_msduq_timestamp_updates_by_get_mpdu_head_info_cmd;
A_UINT32 total_msduq_timestamp_updates_by_empty_to_nonempty_status;
A_UINT32 total_get_mpdu_head_info_cmds_by_sched_algo_la_query;
A_UINT32 total_get_mpdu_head_info_cmds_by_tac;
A_UINT32 total_gen_mpdu_cmds_by_sched_algo_la_query;
} htt_tx_tqm_cmn_stats_tlv;
typedef struct {
@ -4320,6 +4649,10 @@ typedef struct {
A_UINT32 ofdma_tx_ru_size[HTT_TX_PDEV_STATS_NUM_AX_RU_SIZE_COUNTERS];
/** 11AX HE DL MU OFDMA HE-SIG-B MCS stats */
A_UINT32 ofdma_he_sig_b_mcs[HTT_TX_PDEV_STATS_NUM_HE_SIG_B_MCS_COUNTERS];
/** 11AX HE SU data + embedded trigger PPDU success stats (stats for HETP ack success PPDU cnt) */
A_UINT32 ax_su_embedded_trigger_data_ppdu;
/** 11AX HE SU data + embedded trigger PPDU failure stats (stats for HETP ack failure PPDU cnt) */
A_UINT32 ax_su_embedded_trigger_data_ppdu_err;
} htt_tx_pdev_rate_stats_tlv;
typedef struct {
@ -4653,13 +4986,15 @@ typedef struct {
*/
A_UINT32 rx_ulofdma_data_nusers[HTT_RX_PDEV_MAX_OFDMA_NUM_USER];
/*
* NOTE - this TLV is already large enough that it causes the HTT message
* carrying it to be nearly at the message size limit that applies to
* many targets/hosts.
* No further fields should be added to this TLV without very careful
* review to ensure the size increase is acceptable.
*/
/* Stats for MCS 12/13 */
A_UINT32 rx_mcs_ext[HTT_RX_PDEV_STATS_NUM_EXTRA_MCS_COUNTERS];
/*
* NOTE - this TLV is already large enough that it causes the HTT message
* carrying it to be nearly at the message size limit that applies to
* many targets/hosts.
* No further fields should be added to this TLV without very careful
* review to ensure the size increase is acceptable.
*/
} htt_rx_pdev_rate_stats_tlv;
/* STATS_TYPE : HTT_DBG_EXT_STATS_PDEV_RX_RATE
@ -5681,6 +6016,7 @@ typedef enum {
HTT_TX_AC_SOUNDING_MODE = 0,
HTT_TX_AX_SOUNDING_MODE = 1,
HTT_TX_BE_SOUNDING_MODE = 2,
HTT_TX_CMN_SOUNDING_MODE = 3,
} htt_stats_sounding_tx_mode;
typedef struct {
@ -5860,6 +6196,36 @@ typedef struct {
* Count of number of times PSR based TX transmissions were successful.
*/
A_UINT32 num_psr_ppdu_success;
/**
* Count of number of times TX PPDU per access category were transmitted
* using non-SRG opportunities created.
*/
A_UINT32 num_non_srg_ppdu_tried_per_ac[HTT_NUM_AC_WMM];
/**
* Count of number of times non-SRG based TX transmissions per access
* category were successful
*/
A_UINT32 num_non_srg_ppdu_success_per_ac[HTT_NUM_AC_WMM];
/**
* Count of number of times TX PPDU per access category were transmitted
* using SRG opportunities created.
*/
A_UINT32 num_srg_ppdu_tried_per_ac[HTT_NUM_AC_WMM];
/**
* Count of number of times SRG based TX transmissions per access
* category were successful
*/
A_UINT32 num_srg_ppdu_success_per_ac[HTT_NUM_AC_WMM];
/**
* Count of number of times ppdu was flushed due to ongoing OBSS
* frame duration value lesser than minimum required frame duration.
*/
A_UINT32 num_obss_min_duration_check_flush_cnt;
/**
* Count of number of times ppdu was flushed due to ppdu duration
* exceeding aborted OBSS frame duration
*/
A_UINT32 num_sr_ppdu_abort_flush_cnt;
} htt_pdev_obss_pd_stats_tlv;
/* NOTE:
@ -6172,6 +6538,19 @@ typedef struct {
A_UINT32 mpdus_failed;
} htt_tx_rate_stats_t;
typedef enum {
HTT_RC_MODE_SU_OL,
HTT_RC_MODE_SU_BF,
HTT_RC_MODE_MU1_INTF,
HTT_RC_MODE_MU2_INTF,
HTT_Rc_MODE_MU3_INTF,
HTT_RC_MODE_MU4_INTF,
HTT_RC_MODE_MU5_INTF,
HTT_RC_MODE_MU6_INTF,
HTT_RC_MODE_MU7_INTF,
HTT_RC_MODE_2D_COUNT,
} HTT_RC_MODE;
typedef struct {
htt_tlv_hdr_t tlv_hdr;
@ -6193,6 +6572,7 @@ typedef struct {
/** 320MHz extension for PER */
htt_tx_rate_stats_t per_bw320;
A_UINT32 probe_cnt_per_rcmode[HTT_RC_MODE_2D_COUNT];
} htt_tx_rate_stats_per_tlv;
/* NOTE:
@ -6386,6 +6766,8 @@ typedef struct {
A_UINT32 rx_ftm_cnt;
/** Initiator Terminate count */
A_UINT32 initiator_terminate_cnt;
/** Debug count to check the Measurement request from host */
A_UINT32 tx_meas_req_count;
} htt_vdev_rtt_init_stats_tlv;
typedef struct {
@ -6869,4 +7251,24 @@ typedef struct {
} burst_size;
} htt_stats_strm_gen_mpdus_details_tlv_t;
typedef struct {
htt_tlv_hdr_t tlv_hdr;
A_UINT32 reset_count;
/** lower portion (bits 31:0) of reset time, in milliseconds */
A_UINT32 reset_time_lo_ms;
/** upper portion (bits 63:32) of reset time, in milliseconds */
A_UINT32 reset_time_hi_ms;
/** lower portion (bits 31:0) of disengage time, in milliseconds */
A_UINT32 disengage_time_lo_ms;
/** upper portion (bits 63:32) of disengage time, in milliseconds */
A_UINT32 disengage_time_hi_ms;
/** lower portion (bits 31:0) of engage time, in milliseconds */
A_UINT32 engage_time_lo_ms;
/** upper portion (bits 63:32) of engage time, in milliseconds */
A_UINT32 engage_time_hi_ms;
A_UINT32 disengage_count;
A_UINT32 engage_count;
A_UINT32 drain_dest_ring_mask;
} htt_dmac_reset_stats_tlv;
#endif /* __HTT_STATS_H__ */

View file

@ -1,5 +1,6 @@
/*
* Copyright (c) 2013-2016, 2018-2021 The Linux Foundation. All rights reserved.*
* Copyright (c) 2013-2016, 2018-2021 The Linux Foundation. All rights reserved.
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@ -1313,7 +1314,7 @@ typedef enum {
/** MGMT RX REO Changes */
/* Macros for having versioning info for compatibility check between host and firmware */
#define MLO_SHMEM_MAJOR_VERSION 1
#define MLO_SHMEM_MAJOR_VERSION 2
#define MLO_SHMEM_MINOR_VERSION 1
/** Helper Macros for tlv header of the given tlv buffer */
@ -1357,6 +1358,36 @@ typedef enum {
(_var) |= (((_val) & ((1 << (_num_bits)) - 1)) << (_index)); \
} while (0)
/**
* Enum which defines different versions of management Rx reorder snapshots.
*/
typedef enum {
/**
* DWORD Lower:
* [15:0] : Management packet counter
* [30:16] : Redundant global time stamp = Global time stamp[14:0]
* [31] : Valid
*
* DWORD Upper:
* [31:0] : Global time stamp
*
*/
MGMT_RX_REO_SNAPSHOT_VERSION_TIMESTAMP_REDUNDANCY = 0,
/**
* DWORD Lower:
* [14:0] : Global time stamp[14:0]
* [30:15] : Management packet counter
* [31] : Valid
*
* DWORD Upper:
* [14:0] : Redundant management packet counter = Management packet
* counter[14:0]
* [31:15] : Global time stamp[31:15]
*/
MGMT_RX_REO_SNAPSHOT_VERSION_PKT_CTR_REDUNDANCY = 1,
} MGMT_RX_REO_SNAPSHOT_VERSION;
/** Definition of the GLB_H_SHMEM arena tlv structures */
typedef enum {
@ -1400,6 +1431,152 @@ typedef enum {
#define MLO_SHMEM_MGMT_RX_REO_SNAPSHOT_GET_ADRESS(mgmt_rx_reo_snapshot) \
(&mgmt_rx_reo_snapshot->mgmt_rx_reo_snapshot_low)
/**
* Helper macros/functions for params GET/SET of different hw version
* of the mgmt_rx_reo_snapshot
*/
static INLINE A_UINT8
MLO_SHMEM_MGMT_RX_REO_SNAPSHOT_VALID_GET(
A_UINT32 mgmt_rx_reo_snapshot_low, A_UINT8 snapshot_ver)
{
if ((snapshot_ver != MGMT_RX_REO_SNAPSHOT_VERSION_TIMESTAMP_REDUNDANCY) &&
(snapshot_ver != MGMT_RX_REO_SNAPSHOT_VERSION_PKT_CTR_REDUNDANCY))
{
A_ASSERT(0);
}
return MLO_SHMEM_GET_BITS(mgmt_rx_reo_snapshot_low, 31, 1);
}
static INLINE void
MLO_SHMEM_MGMT_RX_REO_SNAPSHOT_VALID_SET(
A_UINT32 *mgmt_rx_reo_snapshot_low, A_UINT8 value, A_UINT8 snapshot_ver)
{
if ((snapshot_ver != MGMT_RX_REO_SNAPSHOT_VERSION_TIMESTAMP_REDUNDANCY) &&
(snapshot_ver != MGMT_RX_REO_SNAPSHOT_VERSION_PKT_CTR_REDUNDANCY)) {
A_ASSERT(0);
}
MLO_SHMEM_SET_BITS(*mgmt_rx_reo_snapshot_low, 31, 1, value);
}
static INLINE A_UINT16
MLO_SHMEM_MGMT_RX_REO_SNAPSHOT_MGMT_PKT_CTR_GET(
A_UINT32 mgmt_rx_reo_snapshot_low, A_UINT8 snapshot_ver)
{
if (snapshot_ver == MGMT_RX_REO_SNAPSHOT_VERSION_TIMESTAMP_REDUNDANCY) {
return MLO_SHMEM_GET_BITS(mgmt_rx_reo_snapshot_low, 0, 16);
} else if (snapshot_ver == MGMT_RX_REO_SNAPSHOT_VERSION_PKT_CTR_REDUNDANCY){
return MLO_SHMEM_GET_BITS(mgmt_rx_reo_snapshot_low, 15, 16);
} else {
A_ASSERT(0);
return 0;
}
}
static INLINE void
MLO_SHMEM_MGMT_RX_REO_SNAPSHOT_MGMT_PKT_CTR_SET(
A_UINT32 *mgmt_rx_reo_snapshot_low, A_UINT16 value, A_UINT8 snapshot_ver)
{
if (snapshot_ver == MGMT_RX_REO_SNAPSHOT_VERSION_TIMESTAMP_REDUNDANCY) {
MLO_SHMEM_SET_BITS(*mgmt_rx_reo_snapshot_low, 0, 16, value);
} else if (snapshot_ver == MGMT_RX_REO_SNAPSHOT_VERSION_PKT_CTR_REDUNDANCY){
MLO_SHMEM_SET_BITS(*mgmt_rx_reo_snapshot_low, 15, 16, value);
} else {
A_ASSERT(0);
}
}
#define MLO_SHMEM_MGMT_RX_REO_SNAPSHOT_MGMT_PKT_CTR_REDUNDANT_GET( \
mgmt_rx_reo_snapshot_high) \
MLO_SHMEM_GET_BITS(mgmt_rx_reo_snapshot_high, 0, 15)
#define MLO_SHMEM_MGMT_RX_REO_SNAPSHOT_MGMT_PKT_CTR_REDUNDANT_SET( \
mgmt_rx_reo_snapshot_high, value) \
MLO_SHMEM_SET_BITS(mgmt_rx_reo_snapshot_high, 0, 15, value)
#define MLO_SHMEM_MGMT_RX_REO_SNAPSHOT_GLOBAL_TIMESTAMP_REDUNDANT_GET( \
mgmt_rx_reo_snapshot_low) \
MLO_SHMEM_GET_BITS(mgmt_rx_reo_snapshot_low, 16, 15)
#define MLO_SHMEM_MGMT_RX_REO_SNAPSHOT_GLOBAL_TIMESTAMP_REDUNDANT_SET( \
mgmt_rx_reo_snapshot_low, value) \
MLO_SHMEM_SET_BITS(mgmt_rx_reo_snapshot_low, 16, 15, value)
static INLINE A_UINT32
MLO_SHMEM_MGMT_RX_REO_SNAPSHOT_GLOBAL_TIMESTAMP_GET(
A_UINT32 mgmt_rx_reo_snapshot_low,
A_UINT32 mgmt_rx_reo_snapshot_high,
A_UINT8 snapshot_ver)
{
if (snapshot_ver == MGMT_RX_REO_SNAPSHOT_VERSION_TIMESTAMP_REDUNDANCY) {
return mgmt_rx_reo_snapshot_high;
} else if (snapshot_ver == MGMT_RX_REO_SNAPSHOT_VERSION_PKT_CTR_REDUNDANCY){
return
((MLO_SHMEM_GET_BITS(mgmt_rx_reo_snapshot_high, 15, 17) << 15) |
MLO_SHMEM_GET_BITS(mgmt_rx_reo_snapshot_low, 0, 15));
} else {
A_ASSERT(0);
return 0;
}
}
static INLINE void
MLO_SHMEM_MGMT_RX_REO_SNAPSHOT_GLOBAL_TIMESTAMP_SET(
A_UINT32 *mgmt_rx_reo_snapshot_low,
A_UINT32 *mgmt_rx_reo_snapshot_high,
A_UINT32 value,
A_UINT8 snapshot_ver)
{
if (snapshot_ver == MGMT_RX_REO_SNAPSHOT_VERSION_TIMESTAMP_REDUNDANCY) {
*mgmt_rx_reo_snapshot_high = value;
} else if (snapshot_ver == MGMT_RX_REO_SNAPSHOT_VERSION_PKT_CTR_REDUNDANCY){
MLO_SHMEM_SET_BITS(
*mgmt_rx_reo_snapshot_high, 15, 17, ((value) >> 15));
MLO_SHMEM_SET_BITS(
*mgmt_rx_reo_snapshot_low, 0, 15, ((value) & 0x7fff));
} else {
A_ASSERT(0);
}
}
static INLINE A_BOOL
MLO_SHMEM_MGMT_RX_REO_SNAPSHOT_CHECK_CONSISTENCY(
A_UINT32 mgmt_rx_reo_snapshot_low,
A_UINT32 mgmt_rx_reo_snapshot_high,
A_UINT8 snapshot_ver)
{
if (snapshot_ver == MGMT_RX_REO_SNAPSHOT_VERSION_TIMESTAMP_REDUNDANCY) {
A_UINT32 global_timestamp;
A_UINT32 global_timestamp_redundant;
global_timestamp = MLO_SHMEM_MGMT_RX_REO_SNAPSHOT_GLOBAL_TIMESTAMP_GET(
mgmt_rx_reo_snapshot_low, mgmt_rx_reo_snapshot_high, snapshot_ver);
global_timestamp_redundant =
MLO_SHMEM_MGMT_RX_REO_SNAPSHOT_GLOBAL_TIMESTAMP_REDUNDANT_GET(
mgmt_rx_reo_snapshot_low);
return
(MLO_SHMEM_GET_BITS(global_timestamp, 0, 15) ==
MLO_SHMEM_GET_BITS(global_timestamp_redundant, 0, 15));
} else if (snapshot_ver == MGMT_RX_REO_SNAPSHOT_VERSION_PKT_CTR_REDUNDANCY){
A_UINT16 mgmt_pkt_ctr;
A_UINT16 mgmt_pkt_ctr_redundant;
mgmt_pkt_ctr = MLO_SHMEM_MGMT_RX_REO_SNAPSHOT_MGMT_PKT_CTR_GET(
mgmt_rx_reo_snapshot_low, snapshot_ver);
mgmt_pkt_ctr_redundant =
MLO_SHMEM_MGMT_RX_REO_SNAPSHOT_MGMT_PKT_CTR_REDUNDANT_GET(
mgmt_rx_reo_snapshot_high);
return
(MLO_SHMEM_GET_BITS(mgmt_pkt_ctr, 0, 15) ==
MLO_SHMEM_GET_BITS(mgmt_pkt_ctr_redundant, 0, 15));
} else {
A_ASSERT(0);
return 0;
}
}
/* REO snapshot structure */
typedef struct {
/* TLV tag and len; tag equals MLO_SHMEM_TLV_STRUCT_MGMT_RX_REO_SNAPSHOT */
@ -1452,6 +1629,15 @@ A_COMPILE_TIME_ASSERT(verify_mlo_glb_rx_reo_per_link_snapshot_fw_consumed_offset
#define MLO_SHMEM_GLB_RX_REO_SNAPSHOT_PARAM_VALID_LINK_BMAP_GET(link_info) MLO_SHMEM_GET_BITS(link_info, 4, 16)
#define MLO_SHMEM_GLB_RX_REO_SNAPSHOT_PARAM_VALID_LINK_BMAP_SET(link_info, value) MLO_SHMEM_SET_BITS(link_info, 4, 16, value)
#define MLO_SHMEM_GLB_RX_REO_SNAPSHOT_PARAM_HW_FWD_SNAPSHOT_VER_GET(snapshot_ver_info) MLO_SHMEM_GET_BITS(snapshot_ver_info, 0, 3)
#define MLO_SHMEM_GLB_RX_REO_SNAPSHOT_PARAM_HW_FWD_SNAPSHOT_VER_SET(snapshot_ver_info, value) MLO_SHMEM_SET_BITS(snapshot_ver_info, 0, 3, value)
#define MLO_SHMEM_GLB_RX_REO_SNAPSHOT_PARAM_FW_FWD_SNAPSHOT_VER_GET(snapshot_ver_info) MLO_SHMEM_GET_BITS(snapshot_ver_info, 3, 3)
#define MLO_SHMEM_GLB_RX_REO_SNAPSHOT_PARAM_FW_FWD_SNAPSHOT_VER_SET(snapshot_ver_info, value) MLO_SHMEM_SET_BITS(snapshot_ver_info, 3, 3, value)
#define MLO_SHMEM_GLB_RX_REO_SNAPSHOT_PARAM_FW_CONSUMED_SNAPSHOT_VER_GET(snapshot_ver_info) MLO_SHMEM_GET_BITS(snapshot_ver_info, 6, 3)
#define MLO_SHMEM_GLB_RX_REO_SNAPSHOT_PARAM_FW_CONSUMED_SNAPSHOT_VER_SET(snapshot_ver_info, value) MLO_SHMEM_SET_BITS(snapshot_ver_info, 6, 3, value)
/* Definition of the complete REO snapshot info */
typedef struct {
/* TLV tag and len; tag equals MLO_SHMEM_TLV_STRUCT_MLO_GLB_RX_REO_SNAPSHOT_INFO */
@ -1465,6 +1651,18 @@ typedef struct {
* [31:20]: reserved
*/
A_UINT32 link_info;
/**
* snapshot_ver_info
*
* [2:0]: hw_forwarded snapshot version
* [5:3]: fw_forwarded snapshot version
* [8:6]: fw_consumed snapshot version
* [31:9]: reserved
*/
A_UINT32 snapshot_ver_info;
A_UINT32 reserved_alignment_padding;
/* This TLV is followed by array of mlo_glb_rx_reo_per_link_snapshot_info:
* mlo_glb_rx_reo_per_link_snapshot_info will have multiple instances
* equal to num of hw links received by no_of_link

View file

@ -581,6 +581,12 @@ typedef enum {
WMI_SERVICE_DELETE_ALL_PEER_BITMAP_SUPPORT = 328, /* target supports cmd to delete all specific peer type within a vdev */
WMI_SERVICE_PN_REPLAY_CHECK_SUPPORT = 329, /* FW support to check RX mgmt frames has invalid PN in packets */
WMI_SERVICE_COMBINED_SET_PARAM_SUPPORT = 330, /* FW Supporting set param cmd combined for multiple params */
WMI_SERVICE_PDEV_RSSI_DBM_CONV_EVENT_SUPPORT = 331, /* FW supports advertising RSSI dB to dBm conversion params to host via WMI_PDEV_RSSI_DBM_CONVERSION_PARAMS_INFO_EVENTID */
WMI_SERVICE_PDEV_TELEMETRY_STATS_SUPPORT = 332,
WMI_SERVICE_ROAM_STAT_PER_CANDIDATE_FRAME_INFO_SUPPORT = 333, /* FW supports to send frame info for each candidate in roam stat */
WMI_SERVICE_HW_TX_POWER_CAPS_SIGNED_SUPPORT = 334, /* Indicates FW supports updating of Tx power capabilities as signed value */
WMI_SERVICE_MULTI_CLIENT_LL_SUPPORT = 335, /* FW supports set param cmd combined for multiple params */
WMI_SERVICE_AFC_PAYLOAD_CLEAR_SUPPORT = 336, /* FW supports clearing the AFC response payload in proxy mode */
WMI_MAX_EXT2_SERVICE

View file

@ -201,6 +201,7 @@ typedef enum {
WMITLV_TAG_ARRAY_STRUC,
WMITLV_TAG_ARRAY_FIXED_STRUC,
WMITLV_TAG_ARRAY_INT16,
WMITLV_TAG_ARRAY_INT32,
WMITLV_TAG_LAST_ARRAY_ENUM = 31, /* Last entry of ARRAY type tags */
WMITLV_TAG_STRUC_wmi_service_ready_event_fixed_param,
WMITLV_TAG_STRUC_HAL_REG_CAPABILITIES,
@ -1254,6 +1255,19 @@ typedef enum {
WMITLV_TAG_STRUC_wmi_vdev_pn_mgmt_rx_filter_cmd_fixed_param,
WMITLV_TAG_STRUC_wmi_set_multiple_pdev_vdev_param_cmd_fixed_param,
WMITLV_TAG_STRUC_wmi_set_param_info,
WMITLV_TAG_STRUC_wmi_pmm_scratch_reg_allocation_cmd_fixed_param,
WMITLV_TAG_STRUC_wmi_pmm_scratch_reg_info,
WMITLV_TAG_STRUC_wmi_pmm_available_scratch_reg_event_fixed_param,
WMITLV_TAG_STRUC_wmi_pmm_available_scratch_reg_info,
WMITLV_TAG_STRUC_wmi_pmm_scratch_reg_allocation_complete_event_fixed_param,
WMITLV_TAG_STRUC_wmi_bcn_tmpl_ml_info,
WMITLV_TAG_STRUC_wmi_peer_tx_filter_cmd_fixed_param,
WMITLV_TAG_STRUC_wmi_pdev_telemetry_stats,
WMITLV_TAG_STRUC_wmi_mgmt_ml_info,
WMITLV_TAG_STRUC_wmi_vdev_latency_event_fixed_param,
WMITLV_TAG_STRUC_wmi_tid_to_link_map,
WMITLV_TAG_STRUC_wmi_peer_tid_to_link_map_fixed_param,
WMITLV_TAG_STRUC_wmi_peer_assoc_tid_to_link_map,
} WMITLV_TAG_ID;
/*
@ -1745,6 +1759,9 @@ typedef enum {
OP(WMI_PEER_RX_PN_REQUEST_CMDID) \
OP(WMI_VDEV_PN_MGMT_RX_FILTER_CMDID) \
OP(WMI_SET_MULTIPLE_PDEV_VDEV_PARAM_CMDID) \
OP(WMI_PMM_SCRATCH_REG_ALLOCATION_CMDID) \
OP(WMI_PEER_TX_FILTER_CMDID) \
OP(WMI_MLO_PEER_TID_TO_LINK_MAP_CMDID) \
/* add new CMD_LIST elements above this line */
@ -2028,6 +2045,9 @@ typedef enum {
OP(WMI_RTT_PASN_PEER_DELETE_EVENTID) \
OP(WMI_PDEV_RSSI_DBM_CONVERSION_PARAMS_INFO_EVENTID) \
OP(WMI_PEER_RX_PN_RESPONSE_EVENTID) \
OP(WMI_PMM_AVAILABLE_SCRATCH_REG_EVENTID) \
OP(WMI_PMM_SCRATCH_REG_ALLOCATION_COMPLETE_EVENTID) \
OP(WMI_VDEV_LATENCY_LEVEL_EVENTID) \
/* add new EVT_LIST elements above this line */
@ -2469,7 +2489,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PRB_TMPL_CMDID);
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_bcn_tmpl_cmd_fixed_param, wmi_bcn_tmpl_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_bcn_prb_info, wmi_bcn_prb_info, bcn_prb_info, WMITLV_SIZE_FIX) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, bufp, WMITLV_SIZE_VAR) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_bcn_tmpl_ml_params, ml_bcn_param, WMITLV_SIZE_VAR)
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_bcn_tmpl_ml_params, ml_bcn_param, WMITLV_SIZE_VAR) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_bcn_tmpl_ml_info, ml_bcn_info, WMITLV_SIZE_VAR)
WMITLV_CREATE_PARAM_STRUC(WMI_BCN_TMPL_CMDID);
@ -2513,7 +2534,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_IPSEC_NATKEEPALIVE_FILTER_CMDID);
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_he_rate_set, peer_he_rates, WMITLV_SIZE_VAR) \
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_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_CREATE_PARAM_STRUC(WMI_PEER_ASSOC_CMDID);
@ -4203,6 +4225,11 @@ WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_SET_DSCP_TID_MAP_CMDID);
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_vdev_filter_nrp_config_cmd_fixed_param, wmi_vdev_filter_nrp_config_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_FILTER_NEIGHBOR_RX_PACKETS_CMDID);
/* Configure filter for Mac addr based filtering*/
#define WMITLV_TABLE_WMI_PEER_TX_FILTER_CMDID(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_peer_tx_filter_cmd_fixed_param, wmi_peer_tx_filter_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
WMITLV_CREATE_PARAM_STRUC(WMI_PEER_TX_FILTER_CMDID);
/* Configure filter for PN Rx Pkt indication which pkts need to be forwarded to host */
#define WMITLV_TABLE_WMI_VDEV_PN_MGMT_RX_FILTER_CMDID(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_vdev_pn_mgmt_rx_filter_cmd_fixed_param, wmi_vdev_pn_mgmt_rx_filter_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
@ -4882,6 +4909,12 @@ WMITLV_CREATE_PARAM_STRUC(WMI_MLO_READY_CMDID);
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mlo_teardown_fixed_param, wmi_mlo_teardown_fixed_param, fixed_param, WMITLV_SIZE_FIX)
WMITLV_CREATE_PARAM_STRUC(WMI_MLO_TEARDOWN_CMDID);
/** WMI cmd used to setup Tid to Link Mapping for a MLO Peer */
#define WMITLV_TABLE_WMI_MLO_PEER_TID_TO_LINK_MAP_CMDID(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_peer_tid_to_link_map_fixed_param, wmi_peer_tid_to_link_map_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_tid_to_link_map, tid_to_link_map, WMITLV_SIZE_VAR)
WMITLV_CREATE_PARAM_STRUC(WMI_MLO_PEER_TID_TO_LINK_MAP_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) \
@ -4980,6 +5013,12 @@ WMITLV_CREATE_PARAM_STRUC(WMI_RTT_PASN_AUTH_STATUS_CMD);
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_rtt_pasn_deauth_cmd_fixed_param, wmi_rtt_pasn_deauth_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
WMITLV_CREATE_PARAM_STRUC(WMI_RTT_PASN_DEAUTH_CMD);
/* Allocate PMM scratch registers */
#define WMITLV_TABLE_WMI_PMM_SCRATCH_REG_ALLOCATION_CMDID(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pmm_scratch_reg_allocation_cmd_fixed_param, wmi_pmm_scratch_reg_allocation_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_pmm_scratch_reg_info, scratch_reg_info, WMITLV_SIZE_VAR)
WMITLV_CREATE_PARAM_STRUC(WMI_PMM_SCRATCH_REG_ALLOCATION_CMDID);
/************************** TLV definitions of WMI events *******************************/
@ -5033,7 +5072,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_SERVICE_READY_EXT_EVENTID);
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_htt_msdu_idx_to_htt_msdu_qtype, htt_msdu_idx_to_qtype_map, WMITLV_SIZE_VAR) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_dbs_or_sbs_cap_ext, dbs_or_sbs_cap_ext, WMITLV_SIZE_VAR) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_cust_bdf_version_capabilities, cust_bdf_version_capabilities, WMITLV_SIZE_VAR) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_sw_cal_ver_cap, sw_cal_ver_cap, WMITLV_SIZE_VAR)
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_sw_cal_ver_cap, sw_cal_ver_cap, WMITLV_SIZE_VAR) \
WMITLV_FXAR(id,op,buf,len, WMITLV_TAG_ARRAY_INT32, A_INT32, hw_tx_power_signed, WMITLV_SIZE_FIX, WMI_HW_TX_POWER_CAPS_MAX)
WMITLV_CREATE_PARAM_STRUC(WMI_SERVICE_READY_EXT2_EVENTID);
#define WMITLV_TABLE_WMI_SPECTRAL_CAPABILITIES_EVENTID(id,op,buf,len) \
@ -5243,7 +5283,9 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PEER_STA_KICKOUT_EVENTID);
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_rssi_ctl_ext, rssi_ctl_ext, WMITLV_SIZE_VAR) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mgmt_rx_reo_params, wmi_mgmt_rx_reo_params, reo_params, WMITLV_SIZE_FIX) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_mgmt_rx_params_ext, mgmt_rx_params_ext, WMITLV_SIZE_VAR) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_frame_pn_params, pn_params, WMITLV_SIZE_VAR)
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_frame_pn_params, pn_params, WMITLV_SIZE_VAR) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_mgmt_ml_info, ml_info, WMITLV_SIZE_VAR) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, bpcc_bufp, WMITLV_SIZE_VAR)
WMITLV_CREATE_PARAM_STRUC(WMI_MGMT_RX_EVENTID);
/* Management Rx FW Consumed Event */
@ -5535,7 +5577,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_HOST_SWFDA_EVENTID);
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_peer_extd2_stats, peer_extd2_stats, WMITLV_SIZE_VAR) \
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_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_CREATE_PARAM_STRUC(WMI_UPDATE_STATS_EVENTID);
/* Update PN response Event */
@ -6651,6 +6694,11 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_GET_TPC_STATS_EVENTID);
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_vdev_bcn_latency_fixed_param, wmi_vdev_bcn_latency_fixed_param, fixed_param, WMITLV_SIZE_FIX)
WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_BCN_LATENCY_EVENTID);
/* Latency Level Event */
#define WMITLV_TABLE_WMI_VDEV_LATENCY_LEVEL_EVENTID(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_vdev_latency_event_fixed_param, wmi_vdev_latency_event_fixed_param, fixed_param, WMITLV_SIZE_FIX)
WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_LATENCY_LEVEL_EVENTID);
/* TWT Stats session event */
#define WMITLV_TABLE_WMI_TWT_SESSION_STATS_EVENTID(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_twt_session_stats_event_fixed_param, wmi_pdev_twt_session_stats_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
@ -6737,6 +6785,17 @@ WMITLV_CREATE_PARAM_STRUC(WMI_RTT_PASN_PEER_CREATE_REQ_EVENTID);
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_rtt_pasn_peer_delete_param, rtt_pasn_peer_param, WMITLV_SIZE_VAR)
WMITLV_CREATE_PARAM_STRUC(WMI_RTT_PASN_PEER_DELETE_EVENTID);
/* Available PMM scratch registers event */
#define WMITLV_TABLE_WMI_PMM_AVAILABLE_SCRATCH_REG_EVENTID(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pmm_available_scratch_reg_event_fixed_param, wmi_pmm_available_scratch_reg_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_pmm_available_scratch_reg_info, pmm_available_scratch_reg_info, WMITLV_SIZE_VAR)
WMITLV_CREATE_PARAM_STRUC(WMI_PMM_AVAILABLE_SCRATCH_REG_EVENTID);
/* Allocate PMM scratch registers event */
#define WMITLV_TABLE_WMI_PMM_SCRATCH_REG_ALLOCATION_COMPLETE_EVENTID(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pmm_scratch_reg_allocation_complete_event_fixed_param, wmi_pmm_scratch_reg_allocation_complete_event_fixed_param, fixed_param, WMITLV_SIZE_FIX)
WMITLV_CREATE_PARAM_STRUC(WMI_PMM_SCRATCH_REG_ALLOCATION_COMPLETE_EVENTID);
#ifdef __cplusplus
}

View file

@ -703,6 +703,8 @@ typedef enum {
WMI_PEER_RX_PN_REQUEST_CMDID,
/* Mac addr based filtering*/
WMI_PEER_TX_FILTER_CMDID,
/* beacon/management specific commands */
@ -1146,6 +1148,9 @@ typedef enum {
*/
WMI_SET_MULTIPLE_PDEV_VDEV_PARAM_CMDID,
/* WMI cmd used to allocate HW scratch registers */
WMI_PMM_SCRATCH_REG_ALLOCATION_CMDID,
/* Offload 11k related requests */
WMI_11K_OFFLOAD_REPORT_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_11K_OFFLOAD),
/* invoke neighbor report from FW */
@ -1455,6 +1460,8 @@ typedef enum {
WMI_MLO_READY_CMDID,
/** WMI cmd used for tearing down a hw_link part of MLO */
WMI_MLO_TEARDOWN_CMDID,
/** WMI cmd used to setup Tid to Link Mapping for a MLO Peer */
WMI_MLO_PEER_TID_TO_LINK_MAP_CMDID,
/** WMI commands specific to Service Aware WiFi (SAWF) */
/** configure or reconfigure the parameters for a service class */
@ -1612,7 +1619,7 @@ typedef enum {
WMI_PDEV_PKTLOG_DECODE_INFO_EVENTID,
/**
* RSSI dB to dDm conversion params info event
* RSSI dB to dBm conversion params info event
* sent to host after channel/bw/chainmask change per pdev.
*/
WMI_PDEV_RSSI_DBM_CONVERSION_PARAMS_INFO_EVENTID,
@ -1690,6 +1697,8 @@ typedef enum {
WMI_VDEV_SMART_MONITOR_EVENTID,
/** Send status of vdev mac address update request to host */
WMI_VDEV_UPDATE_MAC_ADDR_CONF_EVENTID,
/** event to report latency level honored by FW */
WMI_VDEV_LATENCY_LEVEL_EVENTID,
/* peer specific events */
/** FW reauet to kick out the station for reasons like inactivity,lack of response ..etc */
@ -2061,6 +2070,12 @@ typedef enum {
/** event to report ANI level of the channels */
WMI_GET_CHANNEL_ANI_EVENTID,
/* WMI event to available scratch registers */
WMI_PMM_AVAILABLE_SCRATCH_REG_EVENTID,
/* WMI event to scratch registers allocation */
WMI_PMM_SCRATCH_REG_ALLOCATION_COMPLETE_EVENTID,
/* GPIO Event */
WMI_GPIO_INPUT_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_GPIO),
/** upload H_CV info WMI event
@ -2807,6 +2822,16 @@ typedef enum {
#define WMI_SET_PROJECT_ID(hw_bd_info, val) ((hw_bd_info)[PROJECT_ID] = (val))
#define WMI_SET_BOARD_DATA_REV(hw_bd_info, val) ((hw_bd_info)[BOARD_DATA_REV] = (val))
/*
* Enum to indicate which Tx power capability is provided in which element of
* hw_tx_power_signed
*/
typedef enum {
WMI_HW_MIN_TX_POWER_SIGNED = 0,
WMI_HW_MAX_TX_POWER_SIGNED = 1,
WMI_HW_TX_POWER_CAPS_MAX,
} wmi_hw_tx_power_caps;
/**
* The following struct holds optional payload for
* wmi_service_ready_event_fixed_param,e.g., 11ac pass some of the
@ -3122,6 +3147,12 @@ typedef struct {
A_UINT32 index_and_type;
} wmi_htt_msdu_idx_to_htt_msdu_qtype;
typedef enum {
WMI_AFC_FEATURE_6G_DEPLOYMENT_UNSPECIFIED = 0,
WMI_AFC_FEATURE_6G_DEPLOYMENT_INDOOR_ONLY = 1,
WMI_AFC_FEATURE_6G_DEPLOYMENT_OUTDOOR_ONLY = 2,
} WMI_AFC_FEATURE_6G_DEPLOYMENT_TYPE;
typedef struct {
A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_service_ready_ext2_event_fixed_param.*/
@ -3229,6 +3260,12 @@ typedef struct {
*/
A_UINT32 default_num_msduq_supported_per_tid;
/*
* Indoor/Outdoor specification for AFC support -
* refer to WMI_AFC_FEATURE_6G_DEPLOYMENT_TYPE enum
*/
A_UINT32 afc_deployment_type;
/* Followed by next TLVs:
* WMI_DMA_RING_CAPABILITIES dma_ring_caps[];
* wmi_spectral_bin_scaling_params wmi_bin_scaling_params[];
@ -3238,6 +3275,7 @@ typedef struct {
* WMI_SCAN_RADIO_CAPABILITIES_EXT2 wmi_scan_radio_caps[];
* wmi_htt_msdu_idx_to_htt_msdu_qtype htt_msdu_idx_to_qtype_map[];
* wmi_dbs_or_sbs_cap_ext dbs_or_sbs_cap_ext;
* A_INT32 hw_tx_power_signed[WMI_HW_TX_POWER_CAPS_MAX];
*/
} wmi_service_ready_ext2_event_fixed_param;
@ -3416,6 +3454,9 @@ typedef struct {
*/
A_UINT32 num_of_linkview_peers;
/* Total number of "real" max_active_vdevs that FW supports. */
A_UINT32 num_max_active_vdevs;
/*
* This fixed_param TLV is followed by these additional TLVs:
* mac_addr_list[num_extra_mac_addr];
@ -4192,7 +4233,27 @@ typedef struct {
* Refer to the below definitions of the
* WMI_RSRC_CFG_HOST_SERVICE_FLAG_REG_DISCARD_REQ_ID_CHECK_GET
* and _SET macros.
* Bits 31:10 - Reserved
* Bit 10
* This bit will be set when host wants to enable indoor for AFC
* when this bit is set to 0 indoor mode not enabled
* when this bit is set to 1 indoor mode is enabled
* WMI_RSRC_CFG_HOST_SERVICE_FLAG_AFC_INDOOR_SUPPORT_CHECK_GET
* and SET macros
* Bit 11
* This bit will be set when host wants to enable outdoor for AFC
* when this bit is set to 0 outdoor mode not enabled
* when this bit is set to 1 outdoor mode is enabled
* WMI_RSRC_CFG_HOST_SERVICE_FLAG_AFC_OUTDOOR_SUPPORT_CHECK_GET
* and SET macros.
* Bit 12
* This bit will be set when host host wants to enable/disable
* REO QREF feature
* when set to 1 - Enable the REO QREF feature
* when set to 0 - Disable the REO QREF feature
* Refer to the below definitions of the
* WMI_RSRC_CFG_HOST_SERVICE_FLAG_REO_QREF_FEATURE_SUPPORT_GET
* and _SET macros.
* Bits 31:13 - Reserved
*/
A_UINT32 host_service_flags;
@ -4277,6 +4338,12 @@ typedef struct {
* LinkView peer in the target.
*/
A_UINT32 num_of_linkview_msduqs_per_tid;
/**
* @brief num_max_active_vdevs -
* number of max active virtual devices (VAPs) to support
*/
A_UINT32 num_max_active_vdevs;
} wmi_resource_config;
#define WMI_MSDU_FLOW_AST_ENABLE_GET(msdu_flow_config0, ast_x) \
@ -4571,6 +4638,21 @@ typedef struct {
#define WMI_RSRC_CFG_HOST_SERVICE_FLAG_REG_DISCARD_AFC_REQ_ID_CHECK_SET(host_service_flags, val) \
WMI_SET_BITS(host_service_flags, 9, 1, val)
#define WMI_RSRC_CFG_HOST_SERVICE_FLAG_AFC_INDOOR_SUPPORT_CHECK_GET(host_service_flags) \
WMI_GET_BITS(host_service_flags, 10, 1)
#define WMI_RSRC_CFG_HOST_SERVICE_FLAG_AFC_INDOOR_SUPPORT_CHECK_SET(host_service_flags, val) \
WMI_SET_BITS(host_service_flags, 10, 1, val)
#define WMI_RSRC_CFG_HOST_SERVICE_FLAG_AFC_OUTDOOR_SUPPORT_CHECK_GET(host_service_flags) \
WMI_GET_BITS(host_service_flags, 11, 1)
#define WMI_RSRC_CFG_HOST_SERVICE_FLAG_AFC_OUTDOOR_SUPPORT_CHECK_SET(host_service_flags, val) \
WMI_SET_BITS(host_service_flags, 11, 1, val)
#define WMI_RSRC_CFG_HOST_SERVICE_FLAG_REO_QREF_FEATURE_SUPPORT_GET(host_service_flags) \
WMI_GET_BITS(host_service_flags, 12, 1)
#define WMI_RSRC_CFG_HOST_SERVICE_FLAG_REO_QREF_FEATURE_SUPPORT_SET(host_service_flags, val) \
WMI_SET_BITS(host_service_flags, 12, 1, val)
#define WMI_RSRC_CFG_CARRIER_CFG_CHARTER_ENABLE_GET(carrier_config) \
WMI_GET_BITS(carrier_config, 0, 1)
#define WMI_RSRC_CFG_CARRIER_CFG_CHARTER_ENABLE_SET(carrier_config, val) \
@ -5546,6 +5628,8 @@ typedef struct {
* [31:16]: mgmt_pkt_ctr, Sequence number of the last fw consumed mgmt frame
*/
A_UINT32 mgmt_pkt_ctr_info;
A_UINT32 rx_ppdu_duration_us; /* receive duration in us */
A_UINT32 mpdu_end_timestamp; /* mpdu end timestamp in us (based on HWMLO timer) */
} wmi_mgmt_rx_fw_consumed_hdr;
/** Helper macro for param GET/SET of mgmt_rx_reo_params */
@ -5575,6 +5659,8 @@ typedef struct {
*/
A_UINT32 mgmt_pkt_ctr_link_info;
A_UINT32 rx_ppdu_duration_us; /* receive duration in us */
A_UINT32 mpdu_end_timestamp; /* mpdu end timestamp in us (based on HWMLO timer) */
} wmi_mgmt_rx_reo_params;
/** Helper macro for param GET/SET */
@ -5702,6 +5788,41 @@ typedef struct {
A_UINT8 prev_pn[WMI_MAX_PN_LEN];
} wmi_frame_pn_params;
typedef struct {
A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_mgmt_ml_info */
/**
* CU vdev map to initmate about the on-going Critical update
* per-link contains 16 VAPs at max.
*/
/*
* bits : 0-15 | 16-31
* link-id : 0 | 1
*/
A_UINT32 cu_vdev_map_1;
/*
* bits : 0-15 | 16-31
* link-id : 2 | 3
*/
A_UINT32 cu_vdev_map_2;
/*
* bits : 0-15 | 16-31
* link-id : 4 | 5
*/
A_UINT32 cu_vdev_map_3;
/*
* bits : 0-15 | 16-31
* link-id : 6 | 7
*/
A_UINT32 cu_vdev_map_4; /* bits 63:32 */
/**
* This is followed by byte array that contains BPCC value per MLO VAP.
* There will be 16 byte entries for each link corresponding to VAP-ID.
* So number of byte entries will be (num of max links supported by AP * 16)
* Note: num of max links supported = 8
*/
} wmi_mgmt_ml_info;
typedef enum {
PKT_CAPTURE_MODE_DISABLE = 0,
PKT_CAPTURE_MODE_MGMT_ONLY,
@ -6519,8 +6640,22 @@ typedef struct {
A_UINT32 bssid_idx;
} wmi_vdev_filter_nrp_config_cmd_fixed_param; /* Filter for Neighbor Rx Packets */
/* tx peer filter action - Filter Tx Packets - add/remove filter */
enum {
WMI_PEER_TX_FILTER_ACTION_ADD = 1,
WMI_PEER_TX_FILTER_ACTION_REMOVE = 2,
};
/*Command to set/unset chip in quiet mode*/
typedef struct {
A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_peer_tx_filter_cmd_fixed_param */
A_UINT32 vdev_id;
/* Client MAC addr */
wmi_mac_addr addr;
/* Add/Remove monitor_sta Filter */
A_UINT32 action; /* WMI_PEER_TX_FILTER_ACTION enum */
} wmi_peer_tx_filter_cmd_fixed_param; /* Filter for TX Packets */
/* Command to set/unset chip in quiet mode */
typedef struct {
A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_pdev_set_quiet_cmd_fixed_param */
A_UINT32 pdev_id; /** pdev_id for identifying the MAC, See macros starting with WMI_PDEV_ID_ for values. */
@ -9187,6 +9322,7 @@ typedef enum {
WMI_REQUEST_PMF_BCN_PROTECT_STAT = 0x08000,
WMI_REQUEST_VDEV_EXTD_STAT = 0x10000,
WMI_REQUEST_PDEV_EXTD_STAT = 0x20000,
WMI_REQUEST_PDEV_TELEMETRY_STAT = 0x40000,
} wmi_stats_id;
/*
@ -9651,7 +9787,6 @@ typedef struct {
* This TLV is followed by another TLV of array of bytes
* num_channels * size of(struct wmi_channel_stats)
*/
} wmi_radio_link_stats_event_fixed_param;
/* per rate statistics */
@ -10065,6 +10200,10 @@ typedef struct {
* wmi_pdev_extd_stats wmi_pdev_extd_stats[]
* follows the other TLVs
*/
/* If WMI_REQUEST_PDEV_TELEMETRY_STAT is set in stats_id, then TLV
* wmi_pdev_telemetry_stats wmi_pdev_telemetry_stats[]
* follows the other TLVs
*/
} wmi_stats_event_fixed_param;
/* WLAN channel CCA stats bitmap */
@ -11323,6 +11462,10 @@ typedef struct {
* Indoor = 1, Outdoor = 2
*/
A_UINT32 deployment_mode;
/*
* Proxy mode AFC-Response payload clear count
*/
A_UINT32 payload_clear_count;
} wmi_ctrl_path_afc_stats_struct;
typedef struct {
@ -11482,6 +11625,32 @@ typedef struct {
A_UINT32 rx_other_11ax_msdu_cnt;
} wmi_pdev_extd_stats;
/**
* pdev telemetry statistics
*/
typedef struct{
A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_pdev_telemetry_stats */
A_UINT32 pdev_id;
/*
* Average channel latency per AC, units in micro seconds.
* avg_chan_lat_per_ac[0] : AC_VO
* avg_chan_lat_per_ac[1] : AC_VI
* avg_chan_lat_per_ac[2] : AC_BE
* avg_chan_lat_per_ac[3] : AC_BK
*/
A_UINT32 avg_chan_lat_per_ac[WMI_AC_MAX];
/*
* Percentage of air time available for each AC, units in percentage.
* BIT[0-7] : AC_BE
* BIT[8-15] : AC_BK
* BIT[16-23] : AC_VI
* BIT[24-31] : AC_VO
* Please refer WMI_ESP_ESTIMATE_GET_* and WMI_ESP_ESTIMATE_SET_* macros
* to retrieve values for each access category in estimated_air_time_per_ac.
*/
A_UINT32 estimated_air_time_per_ac;
} wmi_pdev_telemetry_stats;
/**
* VDEV statistics
* @todo
@ -11837,7 +12006,9 @@ typedef struct {
mlo_logical_link_index_valid:1, /* indicate if the logial link index in wmi_peer_assoc_mlo_params is valid */
mlo_peer_id_valid:1, /* indicate if the mlo peer id in wmi_peer_assoc_mlo_params is valid */
mlo_mcast_vdev:1, /* indicate this is the MLO mcast primary vdev */
unused: 26;
emlsr_support:1, /* indicate that eMLSR is supported */
mlo_force_link_inactive:1, /* indicate this link is forced inactive */
unused: 24;
};
A_UINT32 mlo_flags;
};
@ -13824,6 +13995,43 @@ typedef enum {
*/
WMI_VDEV_PARAM_11AZ_SECURITY_CONFIG, /* 0xAB */
/*
* Latency Level Flags
*/
WMI_VDEV_PARAM_NORMAL_LATENCY_FLAGS_CONFIGURATION, /* 0xAC */
WMI_VDEV_PARAM_XR_LATENCY_FLAGS_CONFIGURATION, /* 0xAD */
WMI_VDEV_PARAM_LOW_LATENCY_FLAGS_CONFIGURATION, /* 0xAE */
WMI_VDEV_PARAM_ULTRA_LOW_LATENCY_FLAGS_CONFIGURATION, /* 0xAF */
/*
* Latency level UL/DL
* 0-15 bits: UL
* 16-31 bits: DL
*/
WMI_VDEV_PARAM_NORMAL_LATENCY_UL_DL_CONFIGURATION, /* 0xB0 */
WMI_VDEV_PARAM_XR_LATENCY_UL_DL_CONFIGURATION, /* 0xB1 */
WMI_VDEV_PARAM_LOW_LATENCY_UL_DL_CONFIGURATION, /* 0xB2 */
WMI_VDEV_PARAM_ULTRA_LOW_LATENCY_UL_DL_CONFIGURATION, /* 0xB3 */
/*
* Ini to
* Configure default latency level for all clients
*/
WMI_VDEV_PARAM_DEFAULT_LATENCY_LEVEL_CONFIGURATION, /* 0xB4 */
/*
* Ini to
* Configure multi client Low latency Feature
*/
WMI_VDEV_PARAM_MULTI_CLIENT_LL_FEATURE_CONFIGURATION, /* 0xB5 */
/*
* traffic config for per vdev
* bit 0: low latency vdev
* bit 1: high tput vdev
* bit 31:2 Reserved
*/
WMI_VDEV_PARAM_VDEV_TRAFFIC_CONFIG, /* 0xB6 */
/*=== ADD NEW VDEV PARAM TYPES ABOVE THIS LINE ===
* The below vdev param types are used for prototyping, and are
@ -14409,6 +14617,26 @@ typedef struct {
#define WMI_BEACON_TMPLT_GET_LAST_TEMPLATE(_ema_param) \
WMI_GET_BITS(_ema_param, WMI_BEACON_TMPLT_LAST_TEMPLATE_BITPOS, 8)
typedef struct {
A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_bcn_tmpl_ml_info */
/** hw_link_id:
* Unique link id across SOCs, got as part of QMI handshake
*/
A_UINT32 hw_link_id;
/**
* CU vdev map for the Critical update category-1
* (Inclusion of CU IES)
*/
A_UINT32 cu_vdev_map_cat1_lo; /* bits 31:0 */
A_UINT32 cu_vdev_map_cat1_hi; /* bits 63:32 */
/**
* CU vdev map for the Critical update category-2
* (modification of CU IES)
*/
A_UINT32 cu_vdev_map_cat2_lo; /* bits 31:0 */
A_UINT32 cu_vdev_map_cat2_hi; /* bits 63:32 */
} wmi_bcn_tmpl_ml_info;
typedef struct {
A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_bcn_tmpl_ml_params */
A_UINT32 vdev_id; /* partner vdev_id */
@ -15935,6 +16163,7 @@ typedef struct {
#define WMI_PEER_EXT_EHT 0x00000001 /* EHT enabled */
#define WMI_PEER_EXT_320MHZ 0x00000002 /* 320Mhz enabled */
#define WMI_PEER_EXT_DMS_CAPABLE 0x00000004
#define WMI_PEER_EXT_HE_CAPS_6GHZ_VALID 0x00000008 /* param he_caps_6ghz is valid or not */
#define WMI_PEER_EXT_F_CRIT_PROTO_HINT_ENABLED 0x40000000
/**
@ -16011,8 +16240,37 @@ typedef struct {
* In MCL systems, mld_peer_id will be set to invalid peer id.
*/
A_UINT32 mld_peer_id;
/** Link-ID of the AP to which STA is associated */
A_UINT32 ieee_link_id;
/** eMLSR transition timeout in microseconds */
A_UINT32 emlsr_trans_timeout_us;
} wmi_peer_assoc_mlo_params;
typedef struct {
/** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_peer_assoc_tid_to_link_map */
A_UINT32 tlv_header;
/**
* A_UINT32
* WMI_TID_TO_LINK_MAP_TID_NUM_GET / WMI_TID_TO_LINK_MAP_TID_NUM_SET
* tid_num:5,
*
* WMI_TID_TO_LINK_MAP_DIR_GET / WMI_TID_TO_LINK_MAP_DIR_SET
* dir:2, // 0 - DL, 1 - UL, 2 - BiDi
*
* WMI_TID_TO_LINK_MAP_DEFAULT_MAPPING_GET /
* WMI_TID_TO_LINK_MAP_DEFAULT_MAPPING_SET
* default_link_mapping:1, // If this is set to 1, ignore
* // link_mapping_mask for the specific tid
*
* WMI_TID_TO_LINK_MAP_LINK_MASK_GET / WMI_TID_TO_LINK_MAP_LINK_MASK_SET
* link_mapping_mask:16,
*
* rsvd:8;
*/
A_UINT32 tid_to_link_map_info;
} wmi_peer_assoc_tid_to_link_map;
typedef struct {
A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_peer_assoc_complete_cmd_fixed_param */
/** peer MAC address */
@ -16154,6 +16412,7 @@ typedef struct {
* For non-MLO peers the array length should be 0.
* wmi_eht_rate_set_peer_eht_rates; <-- EHT capabilities of the peer
* wmi_peer_assoc_mlo_partner_link_params link_info[] <-- partner link info
* wmi_peer_assoc_tid_to_link_map[] <-- tid to link_map info
*/
} wmi_peer_assoc_complete_cmd_fixed_param;
@ -16255,14 +16514,12 @@ typedef struct {
* from dB to dBm units.
*/
typedef struct{
typedef struct {
A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_rssi_dbm_conversion_params_info */
/* Current operating bandwidth as per wmi_channel_width */
A_UINT32 curr_bw;
/* Current rx chainmask */
A_UINT32 curr_rx_chainmask;
/* HW noise floor in dBm per chain, per 20MHz subband */
A_INT32 nf_hw_dbm[MAX_ANTENNA_EIGHT][MAX_20MHZ_SEGMENTS];
/* 3 Bytes of xbar_config are used for RF to BB mapping*/
/* Samples of xbar_config,
* If xbar_config is 0xFAC688(hex):
@ -16298,9 +16555,16 @@ typedef struct{
A_INT32 xlna_bypass_offset;
/* Low noise amplifier bypass threshold; signed integer; units are in dB */
A_INT32 xlna_bypass_threshold;
/* nf_hw_dbm:
* 2D byte array of HW noise floor in dBm per chain, per 20MHz subband
* This array is filled in little endian format.
* for big-endian hosts, manual endian conversion is needed to obtain
* correct sequence of values.
*/
A_INT8 nf_hw_dbm[MAX_ANTENNA_EIGHT][MAX_20MHZ_SEGMENTS];
} wmi_rssi_dbm_conversion_params_info;
typedef struct{
typedef struct {
A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_rssi_dbm_conversion_temp_offset_info */
/**
* RSSI offset based on the current temperature, signed integer,
@ -16318,7 +16582,7 @@ typedef struct {
A_UINT32 pdev_id;
/**
* Followed by these TLVs below.
* wmi_rssi_dbm_convresion_params_info rssi_dbm_conversion_param[0 or 1]
* wmi_rssi_dbm_conversion_params_info rssi_dbm_conversion_param[0 or 1]
* wmi_rssi_dbm_conversion_params_info will be sent in case of
* channel, BW, rx_chainmask change.
* wmi_rssi_dbm_conversion_temp_offset_info rssi_temp_offset[0 or 1]
@ -17805,10 +18069,10 @@ typedef struct
A_UINT32 is_add_ric; /**support add ric or delete ric*/
} wmi_ric_request_fixed_param;
/**tspec element: refer to 8.4.2.32 of 802.11 2012 spec
/** tspec element: refer to 8.4.2.32 of 802.11 2012 spec
* these elements are used to construct tspec field in RIC request, which allow station to require specific TS when 11r roaming
*/
typedef struct{
typedef struct {
A_UINT32 tlv_header;
A_UINT32 ts_info; /** bits value of TS Info field.*/
A_UINT32 nominal_msdu_size; /**Nominal MSDU Size field*/
@ -22430,7 +22694,7 @@ enum wmi_host_auto_shutdown_reason {
};
/* WMI_HOST_AUTO_SHUTDOWN_EVENTID */
typedef struct{
typedef struct {
A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_host_auto_shutdown_event_fixed_param */
A_UINT32 shutdown_reason; /* value: wmi_host_auto_shutdown_reason */
} wmi_host_auto_shutdown_event_fixed_param;
@ -22560,7 +22824,7 @@ typedef struct{
/** Bit map definition for basic_config_info ends */
typedef struct{
typedef struct {
A_UINT32 tlv_header;
/** Basic condition defined as bit map above, bitmap is chosen to save memory.
* Bit0 ~ Bit4: tpc offset which will be adjusted if condtion matches, the unit is 0.5dB. bit4 indicates signed
@ -22607,7 +22871,7 @@ typedef struct{
#define WMI_TPC_CHAINMASK_CONFIG_DISABLE 0 /** control the off for the tpc & chainmask*/
#define WMI_TPC_CHAINMASK_CONFIG_ENABLE 1 /** control the on for the tpc & chainmask*/
typedef struct{
typedef struct {
A_UINT32 tlv_header;
A_UINT32 enable; /** enable to set tpc & chainmask when condtions meet, 0: disabled, 1: enabled. */
A_UINT32 num_tpc_chainmask_configs;
@ -24753,7 +25017,7 @@ typedef struct {
} wmi_extscan_capabilities_event_fixed_param;
/* WMI_D0_WOW_DISABLE_ACK_EVENTID */
typedef struct{
typedef struct {
A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_d0_wow_disable_ack_event_fixed_param */
A_UINT32 reserved0; /* for future need */
} wmi_d0_wow_disable_ack_event_fixed_param;
@ -24959,7 +25223,7 @@ pattern returns to the MSB of X_0 and repeats. The GPIO state for each timing in
High and the first interval of the pattern represents the time when the GPIO is Low. When a timing interval of
Zero is reached, it is skipped and moves on to the next interval.
*/
typedef struct{
typedef struct {
A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_set_led_flashing_cmd_fixed_param */
A_UINT32 pattern_id; /* pattern identifier */
A_UINT32 led_x0; /* led flashing parameter0 */
@ -27568,6 +27832,101 @@ typedef enum {
* A_UINT8 agcEnergyDetThr6GVLP thrCcaExt40dB_ETSI_MKK_CHN
* A_UINT8 agcEnergyDetThr6GVLP.thrCcaExt80dB_ETSI_MKK_CHN
*/
BIOS_PARAM_TAS_CONFIG_TYPE,
/*
* BIOS_PARAM_TAS_CONFIG_TYPE Structure has 108 bytes. Please Note these fields of A_UINT32 or A_INT32.
* explicit endianness corrections will need to be done by any big-endian host when the little-endian target is paired with a big-endian host.
* PowerLimitIndicator points out which region(FCC OR ICNIRP) power limit value should be used.
* A bit of PowerLimitIndicator maps a country. bit value 0: ICNIRP 1: FCC
*
* A_UINT8 Version
* A_UINT8 TASIsPairWith3rdPartyWwan
* A_UINT8 SARAntennaGroupingExt[6] (6 Bytes)
* A_UINT32 TASPeakModeIndicator[8] (32 Bytes)
* A_UINT32 TAS_FCC_ICNIRP_Indicator[8] (32 Bytes)
* A_UINT32 PowerLimitIndicator[8] (32 Bytes)
* A_INT32 TASLogReducedLimit (4 Bytes)
*/
BIOS_PARAM_TAS_DATA_TYPE,
/*
* BIOS_PARAM_TAS_DATA_TYPE Structure has 69 bytes as below, power limit value unit is 0.25 dBm.
* If Enable flag is 0, FW will not use power limit value of bios.
*
* A_UINT8 Version
* A_UINT8 Enable Flag
* A_UINT8 Power Table Index
* ====================FCC POWER LIMIT VALUE======================
* A_INT8 FCC 2Ghz SISO (Chain0) Power Limit Value(unit: 0.25dBm)
* A_INT8 FCC 2Ghz SISO (Chain1) Power Limit Value(unit: 0.25dBm)
* A_INT8 FCC 2Ghz MIMO (Chain0 + Chain1) Power Limit Value(unit: 0.25dBm)
* A_INT8 FCC 5Ghz SISO (Chain0) Power Limit Value(unit: 0.25dBm) (UNII-1, Ch32 ~ Ch48)
* A_INT8 FCC 5Ghz SISO (Chain1) Power Limit Value(unit: 0.25dBm) (UNII-1, Ch32 ~ Ch48)
* A_INT8 FCC 5Ghz MIMO (Chain0 + Chain1) Power Limit Value(unit: 0.25dBm) (UNII-1, Ch32 ~ Ch48)
* A_INT8 FCC 5Ghz SISO (Chain0) Power Limit Value(unit: 0.25dBm) (UNII-2, Ch50 ~ Ch144)
* A_INT8 FCC 5Ghz SISO (Chain1) Power Limit Value(unit: 0.25dBm) (UNII-2, Ch50 ~ Ch144)
* A_INT8 FCC 5Ghz MIMO (Chain0 + Chain1) Power Limit Value(unit: 0.25dBm) (UNII-2, Ch50 ~ Ch144)
* A_INT8 FCC 5Ghz SISO (Chain0) Power Limit Value(unit: 0.25dBm) (UNII-3, Ch149 ~ Ch161)
* A_INT8 FCC 5Ghz SISO (Chain1) Power Limit Value(unit: 0.25dBm) (UNII-3, Ch149 ~ Ch161)
* A_INT8 FCC 5Ghz MIMO (Chain0 + Chain1) Power Limit Value(unit: 0.25dBm) (UNII-3, Ch149 ~ Ch161)
* A_INT8 FCC 5Ghz SISO (Chain0) Power Limit Value(unit: 0.25dBm) (UNII-4, Ch163 ~ Ch177)
* A_INT8 FCC 5Ghz SISO (Chain1) Power Limit Value(unit: 0.25dBm) (UNII-4, Ch163 ~ Ch177)
* A_INT8 FCC 5Ghz MIMO (Chain0 + Chain1) Power Limit Value(unit: 0.25dBm) (UNII-4, Ch163 ~ Ch177)
* A_INT8 FCC 6Ghz SISO (Chain0) Power Limit Value(unit: 0.25dBm) (UNII-5) (Ch1, Ch2 ~ Ch41)
* A_INT8 FCC 6Ghz SISO (Chain1) Power Limit Value(unit: 0.25dBm) (UNII-5) (Ch1, Ch2 ~ Ch41)
* A_INT8 FCC 6Ghz MIMO (Chain0 + Chain1) Power Limit Value(unit: 0.25dBm) (UNII-5) (Ch1, Ch2 ~ Ch41)
* A_INT8 FCC 6Ghz SISO (Chain0) Power Limit Value(unit: 0.25dBm) (UNII-5) (Ch45 ~ Ch93)
* A_INT8 FCC 6Ghz SISO (Chain1) Power Limit Value(unit: 0.25dBm) (UNII-5) (Ch45 ~ Ch93)
* A_INT8 FCC 6Ghz MIMO (Chain0 + Chain1) Power Limit Value(unit: 0.25dBm) (UNII-5) (Ch45 ~ Ch93)
* A_INT8 FCC 6Ghz SISO (Chain0) Power Limit Value(unit: 0.25dBm) (UNII-6) (Ch97~ Ch113)
* A_INT8 FCC 6Ghz SISO (Chain1) Power Limit Value(unit: 0.25dBm) (UNII-6) (Ch97~ Ch113)
* A_INT8 FCC 6Ghz MIMO (Chain0 + Chain1) Power Limit Value(unit: 0.25dBm) (UNII-6) (Ch97~ Ch113)
* A_INT8 FCC 6Ghz SISO (Chain0) Power Limit Value(unit: 0.25dBm) (UNII-7) (Ch117~Ch149)
* A_INT8 FCC 6Ghz SISO (Chain1) Power Limit Value(unit: 0.25dBm) (UNII-7) (Ch117~Ch149)
* A_INT8 FCC 6Ghz MIMO (Chain0 + Chain1) Power Limit Value(unit: 0.25dBm) (UNII-7) (Ch117~Ch149)
* A_INT8 FCC 6Ghz SISO (Chain0) Power Limit Value(unit: 0.25dBm) (UNII-7) (Ch117~Ch149)
* A_INT8 FCC 6Ghz SISO (Chain1) Power Limit Value(unit: 0.25dBm) (UNII-7) (Ch117~Ch149)
* A_INT8 FCC 6Ghz MIMO (Chain0 + Chain1) Power Limit Value(unit: 0.25dBm) (UNII-7) (Ch117~Ch149)
* A_INT8 FCC 6Ghz SISO (Chain0) Power Limit Value(unit: 0.25dBm) (UNII-8) (Ch117~Ch149)
* A_INT8 FCC 6Ghz SISO (Chain1) Power Limit Value(unit: 0.25dBm) (UNII-8) (Ch117~Ch149)
* A_INT8 FCC 6Ghz MIMO (Chain0 + Chain1) Power Limit Value(unit: 0.25dBm) (UNII-8) (Ch117~Ch149)
* ====================ICNIRP POWER LIMIT VALUE======================
* A_INT8 ICNIRP 2Ghz SISO (Chain0) Power Limit Value(unit: 0.25dBm)
* A_INT8 ICNIRP 2Ghz SISO (Chain1) Power Limit Value(unit: 0.25dBm)
* A_INT8 ICNIRP 2Ghz MIMO (Chain0 + Chain1) Power Limit Value(unit: 0.25dBm)
* A_INT8 ICNIRP 5Ghz SISO (Chain0) Power Limit Value(unit: 0.25dBm) (UNII-1, Ch32 ~ Ch48)
* A_INT8 ICNIRP 5Ghz SISO (Chain1) Power Limit Value(unit: 0.25dBm) (UNII-1, Ch32 ~ Ch48)
* A_INT8 ICNIRP 5Ghz MIMO (Chain0 + Chain1) Power Limit Value(unit: 0.25dBm) (UNII-1, Ch32 ~ Ch48)
* A_INT8 ICNIRP 5Ghz SISO (Chain0) Power Limit Value(unit: 0.25dBm) (UNII-2, Ch50 ~ Ch144)
* A_INT8 ICNIRP 5Ghz SISO (Chain1) Power Limit Value(unit: 0.25dBm) (UNII-2, Ch50 ~ Ch144)
* A_INT8 ICNIRP 5Ghz MIMO (Chain0 + Chain1) Power Limit Value(unit: 0.25dBm) (UNII-2, Ch50 ~ Ch144)
* A_INT8 ICNIRP 5Ghz SISO (Chain0) Power Limit Value(unit: 0.25dBm) (UNII-3, Ch149 ~ Ch161)
* A_INT8 ICNIRP 5Ghz SISO (Chain1) Power Limit Value(unit: 0.25dBm) (UNII-3, Ch149 ~ Ch161)
* A_INT8 ICNIRP 5Ghz MIMO (Chain0 + Chain1) Power Limit Value(unit: 0.25dBm) (UNII-3, Ch149 ~ Ch161)
* A_INT8 ICNIRP 5Ghz SISO (Chain0) Power Limit Value(unit: 0.25dBm) (UNII-4, Ch163 ~ Ch177)
* A_INT8 ICNIRP 5Ghz SISO (Chain1) Power Limit Value(unit: 0.25dBm) (UNII-4, Ch163 ~ Ch177)
* A_INT8 ICNIRP 5Ghz MIMO (Chain0 + Chain1) Power Limit Value(unit: 0.25dBm) (UNII-4, Ch163 ~ Ch177)
* A_INT8 ICNIRP 6Ghz SISO (Chain0) Power Limit Value(unit: 0.25dBm) (UNII-5) (Ch1, Ch2 ~ Ch41)
* A_INT8 ICNIRP 6Ghz SISO (Chain1) Power Limit Value(unit: 0.25dBm) (UNII-5) (Ch1, Ch2 ~ Ch41)
* A_INT8 ICNIRP 6Ghz MIMO (Chain0 + Chain1) Power Limit Value(unit: 0.25dBm) (UNII-5) (Ch1, Ch2 ~ Ch41)
* A_INT8 ICNIRP 6Ghz SISO (Chain0) Power Limit Value(unit: 0.25dBm) (UNII-5) (Ch45 ~ Ch93)
* A_INT8 ICNIRP 6Ghz SISO (Chain1) Power Limit Value(unit: 0.25dBm) (UNII-5) (Ch45 ~ Ch93)
* A_INT8 ICNIRP 6Ghz MIMO (Chain0 + Chain1) Power Limit Value(unit: 0.25dBm) (UNII-5) (Ch45 ~ Ch93)
* A_INT8 ICNIRP 6Ghz SISO (Chain0) Power Limit Value(unit: 0.25dBm) (UNII-6) (Ch97~ Ch113)
* A_INT8 ICNIRP 6Ghz SISO (Chain1) Power Limit Value(unit: 0.25dBm) (UNII-6) (Ch97~ Ch113)
* A_INT8 ICNIRP 6Ghz MIMO (Chain0 + Chain1) Power Limit Value(unit: 0.25dBm) (UNII-6) (Ch97~ Ch113)
* A_INT8 ICNIRP 6Ghz SISO (Chain0) Power Limit Value(unit: 0.25dBm) (UNII-7) (Ch117~Ch149)
* A_INT8 ICNIRP 6Ghz SISO (Chain1) Power Limit Value(unit: 0.25dBm) (UNII-7) (Ch117~Ch149)
* A_INT8 ICNIRP 6Ghz MIMO (Chain0 + Chain1) Power Limit Value(unit: 0.25dBm) (UNII-7) (Ch117~Ch149)
* A_INT8 ICNIRP 6Ghz SISO (Chain0) Power Limit Value(unit: 0.25dBm) (UNII-7) (Ch117~Ch149)
* A_INT8 ICNIRP 6Ghz SISO (Chain1) Power Limit Value(unit: 0.25dBm) (UNII-7) (Ch117~Ch149)
* A_INT8 ICNIRP 6Ghz MIMO (Chain0 + Chain1) Power Limit Value(unit: 0.25dBm) (UNII-7) (Ch117~Ch149)
* A_INT8 ICNIRP 6Ghz SISO (Chain0) Power Limit Value(unit: 0.25dBm) (UNII-8) (Ch117~Ch149)
* A_INT8 ICNIRP 6Ghz SISO (Chain1) Power Limit Value(unit: 0.25dBm) (UNII-8) (Ch117~Ch149)
* A_INT8 ICNIRP 6Ghz MIMO (Chain0 + Chain1) Power Limit Value(unit: 0.25dBm) (UNII-8) (Ch117~Ch149)
*/
BIOS_PARAM_TYPE_MAX,
} bios_param_type_e;
@ -29350,6 +29709,10 @@ typedef enum wmi_hw_mode_config_type {
WMI_HW_MODE_DBS_OR_SBS = 5, /* One PHY is on 5G and the other PHY can be in 2G or 5G. */
WMI_HW_MODE_DBS_2G_5G = 6, /* Both PHYs are active in different bands. PhyA 2G and PhyB 5G */
WMI_HW_MODE_2G_PHYB = 7, /* Ony PhyB 2G active */
WMI_HW_MODE_EMLSR = 8, /* Both PHYs are active in listen mode in 1x1
* and Tx/Rx trigger on any PHY will switch
* from 1x1 to 2x2 on that Phy
*/
} WMI_HW_MODE_CONFIG_TYPE;
/*
@ -29366,6 +29729,8 @@ typedef enum wmi_hw_mode_config_type {
* WMI_MLO_CAP_FLAG_STR_IN_SBS: Support Non-STR MLO when SBS for the
* specific HW mode
* WMI_MLO_CAP_FLAG_STR: Support STR for the specific HW mode.
*
* WMI_MLO_CAP_FLAG_EMLSR: Support eMLSR mode.
*/
#define WMI_MLO_CAP_FLAG_NONE 0x00
#define WMI_MLO_CAP_FLAG_NON_STR_IN_DBS 0x01
@ -29373,6 +29738,7 @@ typedef enum wmi_hw_mode_config_type {
#define WMI_MLO_CAP_FLAG_NON_STR_IN_SBS 0x04
#define WMI_MLO_CAP_FLAG_STR_IN_SBS 0x08
#define WMI_MLO_CAP_FLAG_STR 0x10
#define WMI_MLO_CAP_FLAG_EMLSR 0x20
/*
* hw_mode_config_type sub-fields for chips that support 802.11BE/MLO:
@ -31001,6 +31367,8 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command)
WMI_RETURN_STRING(WMI_VDEV_PN_MGMT_RX_FILTER_CMDID);
WMI_RETURN_STRING(WMI_PEER_RX_PN_REQUEST_CMDID);
WMI_RETURN_STRING(WMI_SET_MULTIPLE_PDEV_VDEV_PARAM_CMDID);
WMI_RETURN_STRING(WMI_PMM_SCRATCH_REG_ALLOCATION_CMDID);
WMI_RETURN_STRING(WMI_MLO_PEER_TID_TO_LINK_MAP_CMDID);
}
return (A_UINT8 *) "Invalid WMI cmd";
@ -31058,6 +31426,7 @@ typedef enum {
*/
WMI_AFC_CMD_SERV_RESP_READY = 1,
WMI_AFC_CMD_RESET = 2, /* Added cmd type to handle AFC reset */
WMI_AFC_CMD_CLEAR_PAYLOAD = 3, /* Added cmd type to clear AFC response payload in proxy mode */
} WMI_AFC_CMD_TYPE;
/** Host indicating AFC info availability to FW */
@ -31440,10 +31809,14 @@ typedef enum {
* with expiry event.
* 3. If AFC server is not responding to FW in specified time, FW will
* indicate host to switch to LPI.
* 4. In SP mode, if AFC server is not responding to FW in
* specified time then FW will indicate host to stop TX since
* there are no lower power mode available.
*/
WMI_AFC_EXPIRY_EVENT_START = 1,
WMI_AFC_EXPIRY_EVENT_RENEW = 2,
WMI_AFC_EXPIRY_EVENT_SWITCH_TO_LPI = 3,
WMI_AFC_EXPIRY_EVENT_STOP_TX = 4,
} WMI_AFC_EXPIRY_EVENT_SUBTYPE;
typedef enum {
@ -32004,6 +32377,14 @@ typedef enum {
WMI_WLM_LL_ULTRA_LOW = 0x3,
} WMI_WLM_LATENCY_LEVEL;
typedef struct {
A_UINT32 tlv_header; /* WMITLV_TAG_STRUC_wmi_vdev_latency_event_fixed_param */
/** The latency level for specified vdev_id */
A_UINT32 vdev_id;
/** latency level enum WMI_WLM_LATENCY_LEVEL honored by FW */
A_UINT32 latency_level;
} wmi_vdev_latency_event_fixed_param;
/*
* Lay out of flags in wmi_wlm_config_cmd_fixed_param
*
@ -32116,31 +32497,53 @@ typedef enum {
#define WLM_FLAGS_SCAN_SET_SPLIT_PAS_CH_ENABLE(flag, val) WMI_SET_BITS(flag, 21, 1, val)
#define WLM_FLAGS_SCAN_IS_ADAPT_SCAN_ENABLED(flag) WMI_GET_BITS(flag, 22, 1)
#define WLM_FLAGS_SCAN_SET_ADAPT_SCAN_ENABLE(flag, val) WMI_SET_BITS(flag, 22, 1, val)
#define WLM_FLAGS_SET_FORCE_DEFAULT_LATENCY(flag, val) WMI_SET_BITS(flag, 0, 1, val)
#define WLM_FLAGS_GET_FORCE_DEFAULT_LATENCY(flag) WMI_GET_BITS(flag, 0, 1)
#define WLM_MAX_HOST_CLIENTS 5
typedef struct {
/** TLV tag and len; tag equals
* WMI_WLM_CONFIG_CMD_fixed_param */
/** TLV tag and len; tag equals WMI_WLM_CONFIG_CMD_fixed_param */
A_UINT32 tlv_header;
/* VDEV identifier */
A_UINT32 vdev_id;
/* Refer to WMI_WLM_LATENCY_LEVEL
* Once latency change detected, WLM will notify modules e.g. STAPS or SCAN/ROAM,
* who subscribed this event. And subscribers, like SCAN, may disable/cutoff offchan
* operation to support lower latency of WLAN.
*/
/*
* Refer to WMI_WLM_LATENCY_LEVEL
* Once latency change detected, WLM will notify modules e.g. STAPS or SCAN/ROAM,
* who subscribed this event. And subscribers, like SCAN, may disable/cutoff offchan
* operation to support lower latency of WLAN.
*/
A_UINT32 latency_level;
/* represent uplink latency in ms
* This parameter will be used by STAPS module to decide timing parameters, like
* ITO or SPEC wakeup interval. For SCAN/ROAM, it may used to calculate offchan
* durations.
*/
/*
* represent uplink latency in ms
* This parameter will be used by STAPS module to decide timing parameters, like
* ITO or SPEC wakeup interval. For SCAN/ROAM, it may used to calculate offchan
* durations.
* For host and FW with multi client LL feature enabled, this field is obsolete.
*/
A_UINT32 ul_latency;
/* represent downlink latency in ms
* Similar usage as ul_latency
*/
/*
* represent downlink latency in ms
* Similar usage as ul_latency
* For host and FW with multi client LL feature enabled, this field is obsolete.
*/
A_UINT32 dl_latency;
/* flags for each client of WLM, refer to WLM_FLAGS_ definitions above */
/*
* flags for each client of WLM, refer to WLM_FLAGS_ definitions above.
* For host and FW with multi client LL feature enabled, this field is obsolete.
*/
A_UINT32 flags;
/*
* bit 0 used as force reset:
* to override the latency level as default
* for all the wlm clients
*/
A_UINT32 flags_ext;
/*
* clients of WLM Arbiter
* WLM_MAX_HOST_CLIENTS 5
*/
A_UINT32 client_id_bitmask;
} wmi_wlm_config_cmd_fixed_param;
/* Broadcast TWT enable/disable for both REQUESTER and RESPONDER */
@ -33641,12 +34044,17 @@ typedef struct {
/* timestamp is the absolute time w.r.t host timer which is synchronized between the host and target */
A_UINT32 timestamp; /* Timestamp when frame is sent or received */
/*
* frame_info = frame_type | (frame_subtype << 2) | (request_or_response << 6)| (seq_num << 16)
* frame_info = frame_type | (frame_subtype << 2) | (request_or_response << 6) | (auth_algo_num << 7) | (seq_num << 16)
* frame_type(2 bits), frame_subtype(4 bits) are from 802.11 spec.
* If frame_type is WMI_ROAM_FRAME_INFO_FRAME_TYPE_EXT, frame_subtype
* should be one of value in WMI_ROAM_FRAME_INFO_FRAME_TYPE_EXT_SUBTYPE.
* If frame_type is WMI_ROAM_FRAME_INFO_FRAME_TYPE_EXT, frame_subtype
* should be one of value in WMI_ROAM_FRAME_INFO_FRAME_TYPE_EXT_SUBTYPE.
* request_or_response(1 bit) - Valid if frame_subtype is authentication.
* 0 - Authentication request 1 - Authentication response
* auth_algo_num(5bits) : Lower 5 bits of 9.4.1.1 Authentication Algorithm
* Number field
* The auth_algo_num bits shall be ignored unless
* WMI_SERVICE_ROAM_STAT_PER_CANDIDATE_FRAME_INFO_SUPPORT is set and
* frame_subtype is auth frame.
* seq_num(16 bits) - frame sequence number
*/
A_UINT32 frame_info;
@ -33673,6 +34081,7 @@ typedef struct {
* sequence number) is retransmitted, in protocol level.
*/
A_UINT32 retry_count;
wmi_mac_addr bssid; /* AP MAC address */
} wmi_roam_frame_info;
typedef enum {
@ -35627,25 +36036,61 @@ typedef struct {
#define WMI_EHTCAP_PHY_MUBFMR320MHZ_GET(eht_cap_phy) WMI_GET_BITS(eht_cap_phy[1], 30, 1)
#define WMI_EHTCAP_PHY_MUBFMR320MHZ_SET(eht_cap_phy, value) WMI_SET_BITS(eht_cap_phy[1], 30, 1, value)
/* Bit 63: reserved */
/* Bit 63: TB sounding feedback rate limit */
#define WMI_EHTCAP_PHY_TBSUNDFBRATELIMIT_GET(eht_cap_phy) WMI_GET_BITS(eht_cap_phy[1], 31, 1)
#define WMI_EHTCAP_PHY_TBSUNDFBRATELIMIT_SET(eht_cap_phy, value) WMI_SET_BITS(eht_cap_phy[1], 31, 1, value)
/* Bit 64: Rx 1024-QAM in wider bandwidth DL OFDMA support */
#define WMI_EHTCAP_PHY_RX1024QAMWIDERBWDLOFDMA_GET(eht_cap_phy) WMI_GET_BITS(eht_cap_phy[2], 0, 1)
#define WMI_EHTCAP_PHY_RX1024QAMWIDERBWDLOFDMA_SET(eht_cap_phy, value) WMI_SET_BITS(eht_cap_phy[2], 0, 1, value)
/* Bit 65: Rx 4096-QAM in wider bandwidth DL OFDMA support */
#define WMI_EHTCAP_PHY_RX4096QAMWIDERBWDLOFDMA_GET(eht_cap_phy) WMI_GET_BITS(eht_cap_phy[2], 1, 1)
#define WMI_EHTCAP_PHY_RX4096QAMWIDERBWDLOFDMA_SET(eht_cap_phy, value) WMI_SET_BITS(eht_cap_phy[2], 1, 1, value)
/* Bits 66-71: reserved */
/****** End of 11BE EHT PHY Capabilities Information field ******/
/****** 11BE EHT MAC Capabilities Information field ******/
/* Bit 0: NSEP priority access supported */
/* Bit 0: NSEP/EPCS priority access supported: draft1.4 change the name from NSEP to EPCS
* To compatible with <= draft 1.4 ver, we keep 2 define there, but same bit.
*/
#define WMI_EHTCAP_MAC_NSEPPRIACCESS_GET(eht_cap_mac) WMI_GET_BITS(eht_cap_mac[0], 0, 1)
#define WMI_EHTCAP_MAC_NSEPPRIACCESS_SET(eht_cap_mac, value) WMI_SET_BITS(eht_cap_mac[0], 0, 1, value)
#define WMI_EHTCAP_MAC_EPCSPRIACCESS_GET(eht_cap_mac) WMI_EHTCAP_MAC_NSEPPRIACCESS_GET(eht_cap_mac)
#define WMI_EHTCAP_MAC_EPCSPRIACCESS_SET(eht_cap_mac, value) WMI_EHTCAP_MAC_NSEPPRIACCESS_SET(eht_cap_mac, value)
/* Bit 1: EHT OM control support */
#define WMI_EHTCAP_MAC_EHTOMCTRL_GET(eht_cap_mac) WMI_GET_BITS(eht_cap_mac[0], 1, 1)
#define WMI_EHTCAP_MAC_EHTOMCTRL_SET(eht_cap_mac, value) WMI_SET_BITS(eht_cap_mac[0], 1, 1, value)
/* Bit 2: triggered TXOP support */
/* Bit 2: triggered TXOP mode 1 support
* As in draft 1.4, we define mode2 and to compatible with old version, we keep 2 define there, but same bit.
*/
#define WMI_EHTCAP_MAC_TRIGTXOP_GET(eht_cap_mac) WMI_GET_BITS(eht_cap_mac[0], 2, 1)
#define WMI_EHTCAP_MAC_TRIGTXOP_SET(eht_cap_mac, value) WMI_SET_BITS(eht_cap_mac[0], 2, 1, value)
#define WMI_EHTCAP_MAC_TRIGTXOPMODE1_GET(eht_cap_mac) WMI_EHTCAP_MAC_TRIGTXOP_GET(eht_cap_mac)
#define WMI_EHTCAP_MAC_TRIGTXOPMODE1_SET(eht_cap_mac, value) WMI_EHTCAP_MAC_TRIGTXOP_SET(eht_cap_mac, value)
/* Bit 3-15: reserved */
/* Bit 3: triggered TXOP mode 2 support */
#define WMI_EHTCAP_MAC_TRIGTXOPMODE2_GET(eht_cap_mac) WMI_GET_BITS(eht_cap_mac[0], 3, 1)
#define WMI_EHTCAP_MAC_TRIGTXOPMODE2_SET(eht_cap_mac, value) WMI_SET_BITS(eht_cap_mac[0], 3, 1, value)
/* Bit 4: restricted TWT support */
#define WMI_EHTCAP_MAC_RESTRICTTWT_GET(eht_cap_mac) WMI_GET_BITS(eht_cap_mac[0], 4, 1)
#define WMI_EHTCAP_MAC_RESTRICTTWT_SET(eht_cap_mac, value) WMI_SET_BITS(eht_cap_mac[0], 4, 1, value)
/* Bit 5: SCS traffic description support */
#define WMI_EHTCAP_MAC_SCSTRAFFICDESC_GET(eht_cap_mac) WMI_GET_BITS(eht_cap_mac[0], 5, 1)
#define WMI_EHTCAP_MAC_SCSTRAFFICDESC_SET(eht_cap_mac, value) WMI_SET_BITS(eht_cap_mac[0], 5, 1, value)
/* Bit 6-7: maximum MPDU length */
#define WMI_EHTCAP_MAC_MAXMPDULEN_GET(eht_cap_mac) WMI_GET_BITS(eht_cap_mac[0], 6, 2)
#define WMI_EHTCAP_MAC_MAXMPDULEN_SET(eht_cap_mac, value) WMI_SET_BITS(eht_cap_mac[0], 6, 2, value)
/* Bit 8-15: reserved */
/****** End of 11BE EHT MAC Capabilities Information field ******/
@ -37572,6 +38017,64 @@ typedef struct {
A_UINT32 status;
} wmi_mlo_teardown_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)
#define WMI_TID_TO_LINK_MAP_DIR_GET(_var) WMI_GET_BITS(_var, 5, 2)
#define WMI_TID_TO_LINK_MAP_DIR_SET(_var, _val) WMI_SET_BITS(_var, 5, 2, _val)
#define WMI_TID_TO_LINK_MAP_DEFAULT_MAPPING_GET(_var) WMI_GET_BITS(_var, 7, 1)
#define WMI_TID_TO_LINK_MAP_DEFAULT_MAPPING_SET(_var, _val) WMI_SET_BITS(_var, 7, 1, _val)
#define WMI_TID_TO_LINK_MAP_LINK_MASK_GET(_var) WMI_GET_BITS(_var, 8, 16)
#define WMI_TID_TO_LINK_MAP_LINK_MASK_SET(_var, _val) WMI_SET_BITS(_var, 8, 16, _val)
enum {
WMI_TID_TO_LINK_MAP_DIR_DL,
WMI_TID_TO_LINK_MAP_DIR_UL,
WMI_TID_TO_LINK_MAP_DIR_BIDI,
};
typedef struct {
/** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_tid_to_link_map */
A_UINT32 tlv_header;
/**
* A_UINT32
* WMI_TID_TO_LINK_MAP_TID_NUM_GET / WMI_TID_TO_LINK_MAP_TID_NUM_SET
* tid_num:5,
*
* WMI_TID_TO_LINK_MAP_DIR_GET / WMI_TID_TO_LINK_MAP_DIR_SET
* dir:2, // 0 - DL, 1 - UL, 2 - BiDi
*
* WMI_TID_TO_LINK_MAP_DEFAULT_MAPPING_GET /
* WMI_TID_TO_LINK_MAP_DEFAULT_MAPPING_SET
* default_link_mapping:1, // If this is set to 1, ignore
* // link_mapping_mask for the specific tid
*
* WMI_TID_TO_LINK_MAP_LINK_MASK_GET / WMI_TID_TO_LINK_MAP_LINK_MASK_SET
* link_mapping_mask:16,
*
* rsvd:8;
*/
A_UINT32 tid_to_link_map_info;
} wmi_tid_to_link_map;
typedef struct {
/** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_peer_tid_to_link_map_fixed_param */
A_UINT32 tlv_header;
/** pdev_id for identifying the MAC, See macros starting with WMI_PDEV_ID_ for values. */
A_UINT32 pdev_id;
/** MLO Peer's current link MAC address */
wmi_mac_addr link_macaddr;
/**
* Following this structure is the TLV:
* struct wmi_tid_to_link_map tid_to_link_map[];
*/
} wmi_peer_tid_to_link_map_fixed_param;
#define WMI_IGMP_OFFLOAD_SUPPORT_DISABLE_BITMASK 0x0
#define WMI_IGMP_V1_OFFLOAD_SUPPORT_BITMASK 0x1
#define WMI_IGMP_V2_OFFLOAD_SUPPORT_BITMASK 0x2
@ -37940,11 +38443,54 @@ typedef struct {
wmi_mac_addr peer_mac_addr;
} wmi_rtt_pasn_deauth_cmd_fixed_param;
typedef struct {
A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_pmm_scratch_reg_info */
/** what the register is used for - see WFSS_PMM_SCRATCH_REG_PURPOSE enum */
A_UINT32 pmm_scratch_reg_purpose;
/** Address of scratch register */
A_UINT32 pmm_scratch_reg_address;
} wmi_pmm_scratch_reg_info;
typedef struct {
A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_pmm_scratch_reg_allocation_cmd_fixed_param */
/** pdev_id for identifying the MAC */
A_UINT32 pdev_id;
/*
* Following this structure is the TLV:
* wmi_pmm_scratch_reg_info scratch_reg_info[];
*/
} wmi_pmm_scratch_reg_allocation_cmd_fixed_param;
typedef struct {
A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_pmm_available_scratch_reg_info */
/** Scratch register address */
A_UINT32 pmm_scratch_reg_address;
} wmi_pmm_available_scratch_reg_info;
typedef struct {
A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_pmm_available_scratch_reg_event_fixed_param */
/** pdev_id for identifying the MAC */
A_UINT32 pdev_id;
/*
* Following this structure is the TLV:
* wmi_pmm_available_scratch_reg_info pmm_available_scratch_reg_info[];
*/
} wmi_pmm_available_scratch_reg_event_fixed_param;
typedef struct {
A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_pmm_scratch_reg_allocation_complete_event_fixed_param */
/** pdev_id for identifying the MAC */
A_UINT32 pdev_id;
/** 1 - success, 0 - failed */
A_UINT32 is_allocated;
} wmi_pmm_scratch_reg_allocation_complete_event_fixed_param;
/* ADD NEW DEFS HERE */
// {
/*****************************************************************************
* The following structures are deprecated. DO NOT USE THEM!
*/
@ -38006,7 +38552,7 @@ typedef struct {
/*****************************************************************************
* END DEPRECATED
*/
// }
/* ADD NEW DEFS ABOVE THIS DEPRECATED SECTION */

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

View file

@ -0,0 +1,101 @@
/* Copyright (c) 2022, 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
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
#ifndef _MON_DROP_H_
#define _MON_DROP_H_
#if !defined(__ASSEMBLER__)
#endif
#define NUM_OF_DWORDS_MON_DROP 2
#define NUM_OF_QWORDS_MON_DROP 1
struct mon_drop {
#ifndef WIFI_BIT_ORDER_BIG_ENDIAN
uint32_t ppdu_id : 32;
uint32_t ppdu_drop_cnt : 10,
mpdu_drop_cnt : 10,
tlv_drop_cnt : 10,
end_of_ppdu_seen : 1,
reserved_1a : 1;
#else
uint32_t ppdu_id : 32;
uint32_t reserved_1a : 1,
end_of_ppdu_seen : 1,
tlv_drop_cnt : 10,
mpdu_drop_cnt : 10,
ppdu_drop_cnt : 10;
#endif
};
#define MON_DROP_PPDU_ID_OFFSET 0x0000000000000000
#define MON_DROP_PPDU_ID_LSB 0
#define MON_DROP_PPDU_ID_MSB 31
#define MON_DROP_PPDU_ID_MASK 0x00000000ffffffff
#define MON_DROP_PPDU_DROP_CNT_OFFSET 0x0000000000000000
#define MON_DROP_PPDU_DROP_CNT_LSB 32
#define MON_DROP_PPDU_DROP_CNT_MSB 41
#define MON_DROP_PPDU_DROP_CNT_MASK 0x000003ff00000000
#define MON_DROP_MPDU_DROP_CNT_OFFSET 0x0000000000000000
#define MON_DROP_MPDU_DROP_CNT_LSB 42
#define MON_DROP_MPDU_DROP_CNT_MSB 51
#define MON_DROP_MPDU_DROP_CNT_MASK 0x000ffc0000000000
#define MON_DROP_TLV_DROP_CNT_OFFSET 0x0000000000000000
#define MON_DROP_TLV_DROP_CNT_LSB 52
#define MON_DROP_TLV_DROP_CNT_MSB 61
#define MON_DROP_TLV_DROP_CNT_MASK 0x3ff0000000000000
#define MON_DROP_END_OF_PPDU_SEEN_OFFSET 0x0000000000000000
#define MON_DROP_END_OF_PPDU_SEEN_LSB 62
#define MON_DROP_END_OF_PPDU_SEEN_MSB 62
#define MON_DROP_END_OF_PPDU_SEEN_MASK 0x4000000000000000
#define MON_DROP_RESERVED_1A_OFFSET 0x0000000000000000
#define MON_DROP_RESERVED_1A_LSB 63
#define MON_DROP_RESERVED_1A_MSB 63
#define MON_DROP_RESERVED_1A_MASK 0x8000000000000000
#endif

View file

@ -0,0 +1,210 @@
/* Copyright (c) 2022, 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
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
#ifndef _PHYRX_COMMON_USER_INFO_H_
#define _PHYRX_COMMON_USER_INFO_H_
#if !defined(__ASSEMBLER__)
#endif
#define NUM_OF_DWORDS_PHYRX_COMMON_USER_INFO 4
#define NUM_OF_QWORDS_PHYRX_COMMON_USER_INFO 2
struct phyrx_common_user_info {
uint32_t receive_duration : 16,
reserved_0a : 16;
uint32_t u_sig_puncture_pattern_encoding : 6,
reserved_1a : 26;
uint32_t eht_ppdu_type : 2,
bss_color_id : 6,
dl_ul_flag : 1,
txop_duration : 7,
cp_setting : 2,
ltf_size : 2,
spatial_reuse : 4,
rx_ndp : 1,
dot11be_su_extended : 1,
reserved_2a : 6;
uint32_t eht_duplicate : 2,
eht_sig_cmn_field_type : 2,
doppler_indication : 1,
sta_id : 11,
puncture_bitmap : 16;
};
#define PHYRX_COMMON_USER_INFO_RECEIVE_DURATION_OFFSET 0x0000000000000000
#define PHYRX_COMMON_USER_INFO_RECEIVE_DURATION_LSB 0
#define PHYRX_COMMON_USER_INFO_RECEIVE_DURATION_MSB 15
#define PHYRX_COMMON_USER_INFO_RECEIVE_DURATION_MASK 0x000000000000ffff
#define PHYRX_COMMON_USER_INFO_RESERVED_0A_OFFSET 0x0000000000000000
#define PHYRX_COMMON_USER_INFO_RESERVED_0A_LSB 16
#define PHYRX_COMMON_USER_INFO_RESERVED_0A_MSB 31
#define PHYRX_COMMON_USER_INFO_RESERVED_0A_MASK 0x00000000ffff0000
#define PHYRX_COMMON_USER_INFO_U_SIG_PUNCTURE_PATTERN_ENCODING_OFFSET 0x0000000000000000
#define PHYRX_COMMON_USER_INFO_U_SIG_PUNCTURE_PATTERN_ENCODING_LSB 32
#define PHYRX_COMMON_USER_INFO_U_SIG_PUNCTURE_PATTERN_ENCODING_MSB 37
#define PHYRX_COMMON_USER_INFO_U_SIG_PUNCTURE_PATTERN_ENCODING_MASK 0x0000003f00000000
#define PHYRX_COMMON_USER_INFO_RESERVED_1A_OFFSET 0x0000000000000000
#define PHYRX_COMMON_USER_INFO_RESERVED_1A_LSB 38
#define PHYRX_COMMON_USER_INFO_RESERVED_1A_MSB 63
#define PHYRX_COMMON_USER_INFO_RESERVED_1A_MASK 0xffffffc000000000
#define PHYRX_COMMON_USER_INFO_EHT_PPDU_TYPE_OFFSET 0x0000000000000008
#define PHYRX_COMMON_USER_INFO_EHT_PPDU_TYPE_LSB 0
#define PHYRX_COMMON_USER_INFO_EHT_PPDU_TYPE_MSB 1
#define PHYRX_COMMON_USER_INFO_EHT_PPDU_TYPE_MASK 0x0000000000000003
#define PHYRX_COMMON_USER_INFO_BSS_COLOR_ID_OFFSET 0x0000000000000008
#define PHYRX_COMMON_USER_INFO_BSS_COLOR_ID_LSB 2
#define PHYRX_COMMON_USER_INFO_BSS_COLOR_ID_MSB 7
#define PHYRX_COMMON_USER_INFO_BSS_COLOR_ID_MASK 0x00000000000000fc
#define PHYRX_COMMON_USER_INFO_DL_UL_FLAG_OFFSET 0x0000000000000008
#define PHYRX_COMMON_USER_INFO_DL_UL_FLAG_LSB 8
#define PHYRX_COMMON_USER_INFO_DL_UL_FLAG_MSB 8
#define PHYRX_COMMON_USER_INFO_DL_UL_FLAG_MASK 0x0000000000000100
#define PHYRX_COMMON_USER_INFO_TXOP_DURATION_OFFSET 0x0000000000000008
#define PHYRX_COMMON_USER_INFO_TXOP_DURATION_LSB 9
#define PHYRX_COMMON_USER_INFO_TXOP_DURATION_MSB 15
#define PHYRX_COMMON_USER_INFO_TXOP_DURATION_MASK 0x000000000000fe00
#define PHYRX_COMMON_USER_INFO_CP_SETTING_OFFSET 0x0000000000000008
#define PHYRX_COMMON_USER_INFO_CP_SETTING_LSB 16
#define PHYRX_COMMON_USER_INFO_CP_SETTING_MSB 17
#define PHYRX_COMMON_USER_INFO_CP_SETTING_MASK 0x0000000000030000
#define PHYRX_COMMON_USER_INFO_LTF_SIZE_OFFSET 0x0000000000000008
#define PHYRX_COMMON_USER_INFO_LTF_SIZE_LSB 18
#define PHYRX_COMMON_USER_INFO_LTF_SIZE_MSB 19
#define PHYRX_COMMON_USER_INFO_LTF_SIZE_MASK 0x00000000000c0000
#define PHYRX_COMMON_USER_INFO_SPATIAL_REUSE_OFFSET 0x0000000000000008
#define PHYRX_COMMON_USER_INFO_SPATIAL_REUSE_LSB 20
#define PHYRX_COMMON_USER_INFO_SPATIAL_REUSE_MSB 23
#define PHYRX_COMMON_USER_INFO_SPATIAL_REUSE_MASK 0x0000000000f00000
#define PHYRX_COMMON_USER_INFO_RX_NDP_OFFSET 0x0000000000000008
#define PHYRX_COMMON_USER_INFO_RX_NDP_LSB 24
#define PHYRX_COMMON_USER_INFO_RX_NDP_MSB 24
#define PHYRX_COMMON_USER_INFO_RX_NDP_MASK 0x0000000001000000
#define PHYRX_COMMON_USER_INFO_DOT11BE_SU_EXTENDED_OFFSET 0x0000000000000008
#define PHYRX_COMMON_USER_INFO_DOT11BE_SU_EXTENDED_LSB 25
#define PHYRX_COMMON_USER_INFO_DOT11BE_SU_EXTENDED_MSB 25
#define PHYRX_COMMON_USER_INFO_DOT11BE_SU_EXTENDED_MASK 0x0000000002000000
#define PHYRX_COMMON_USER_INFO_RESERVED_2A_OFFSET 0x0000000000000008
#define PHYRX_COMMON_USER_INFO_RESERVED_2A_LSB 26
#define PHYRX_COMMON_USER_INFO_RESERVED_2A_MSB 31
#define PHYRX_COMMON_USER_INFO_RESERVED_2A_MASK 0x00000000fc000000
#define PHYRX_COMMON_USER_INFO_EHT_DUPLICATE_OFFSET 0x0000000000000008
#define PHYRX_COMMON_USER_INFO_EHT_DUPLICATE_LSB 32
#define PHYRX_COMMON_USER_INFO_EHT_DUPLICATE_MSB 33
#define PHYRX_COMMON_USER_INFO_EHT_DUPLICATE_MASK 0x0000000300000000
#define PHYRX_COMMON_USER_INFO_EHT_SIG_CMN_FIELD_TYPE_OFFSET 0x0000000000000008
#define PHYRX_COMMON_USER_INFO_EHT_SIG_CMN_FIELD_TYPE_LSB 34
#define PHYRX_COMMON_USER_INFO_EHT_SIG_CMN_FIELD_TYPE_MSB 35
#define PHYRX_COMMON_USER_INFO_EHT_SIG_CMN_FIELD_TYPE_MASK 0x0000000c00000000
#define PHYRX_COMMON_USER_INFO_DOPPLER_INDICATION_OFFSET 0x0000000000000008
#define PHYRX_COMMON_USER_INFO_DOPPLER_INDICATION_LSB 36
#define PHYRX_COMMON_USER_INFO_DOPPLER_INDICATION_MSB 36
#define PHYRX_COMMON_USER_INFO_DOPPLER_INDICATION_MASK 0x0000001000000000
#define PHYRX_COMMON_USER_INFO_STA_ID_OFFSET 0x0000000000000008
#define PHYRX_COMMON_USER_INFO_STA_ID_LSB 37
#define PHYRX_COMMON_USER_INFO_STA_ID_MSB 47
#define PHYRX_COMMON_USER_INFO_STA_ID_MASK 0x0000ffe000000000
#define PHYRX_COMMON_USER_INFO_PUNCTURE_BITMAP_OFFSET 0x0000000000000008
#define PHYRX_COMMON_USER_INFO_PUNCTURE_BITMAP_LSB 48
#define PHYRX_COMMON_USER_INFO_PUNCTURE_BITMAP_MSB 63
#define PHYRX_COMMON_USER_INFO_PUNCTURE_BITMAP_MASK 0xffff000000000000
#endif

View file

@ -12708,6 +12708,12 @@ out_dword_masked_ns(HWIO_REO_R0_CACHE_CTL_GXI_PRIORITY_ADDR(x),m,v,HWIO_REO_R0_C
#define HWIO_TCL_R0_CONS_RING_CMN_CTRL_REG_DSCP_TID_MAP_PROGRAM_EN_BMSK 0x800000
#define HWIO_TCL_R0_CONS_RING_CMN_CTRL_REG_DSCP_TID_MAP_PROGRAM_EN_SHFT 23
#define HWIO_TCL_R0_CMN_CONFIG_ADDR(x) ((x) + 0x24)
#define HWIO_TCL_R0_CMN_CONFIG_VDEVID_MISMATCH_EXCEPTION_BMSK 0x400000
#define HWIO_TCL_R0_CMN_CONFIG_VDEVID_MISMATCH_EXCEPTION_SHFT 22
#define HWIO_TCL_R0_CMN_CONFIG_MCAST_CMN_PN_SN_MLO_REINJECT_ENABLE_BMSK 0x1
#define HWIO_TCL_R0_CMN_CONFIG_MCAST_CMN_PN_SN_MLO_REINJECT_ENABLE_SHFT 0
#define HWIO_TCL_R0_RBM_MAPPING0_ADDR(x) ((x) + 0x88)
#define HWIO_TCL_R0_RBM_MAPPING0_PHYS(x) ((x) + 0x88)
#define HWIO_TCL_R0_RBM_MAPPING0_OFFS (0x88)