Merge 8b50c4db78 on remote branch

Change-Id: Ida009310bd4ecdcc37356e38c4dadbcda14d4de9
This commit is contained in:
Linux Build Service Account 2024-05-08 02:07:17 -07:00
commit 22b720cac0
8 changed files with 668 additions and 68 deletions

View file

@ -825,6 +825,8 @@ typedef enum {
HTT_STATS_PDEV_RTT_HW_STATS_TAG = 196, /* htt_stats_pdev_rtt_hw_stats_tlv */
HTT_STATS_PDEV_RTT_TBR_SELFGEN_QUEUED_STATS_TAG = 197, /* htt_stats_pdev_rtt_tbr_selfgen_queued_stats_tlv */
HTT_STATS_PDEV_RTT_TBR_CMD_RESULT_STATS_TAG = 198, /* htt_stats_pdev_rtt_tbr_cmd_result_stats_tlv */
HTT_STATS_GTX_TAG = 199, /* htt_stats_gtx_tlv */
HTT_STATS_TX_PDEV_WIFI_RADAR_TAG = 200, /* htt_stats_tx_pdev_wifi_radar_tlv */
HTT_STATS_MAX_TAG,
@ -7171,33 +7173,35 @@ PREPACK struct htt_rx_ring_selection_cfg_t {
*
* The message would appear as follows:
*
* |31 26|25|24|23 22|21|20|19|18 16|15|14|13|12|11|10|9|8|7|6|5|4|3|2 0|
* |--------+--+--+-----+--+--+--+-----+--+--+--+--+--+--+-+-+-+-+-+-+-+----|
* | rsvd1 |PS|SS| ring_id | pdev_id | msg_type |
* |-----------+--------+--------+-----+------------------------------------|
* | rsvd2 | DATA | CTRL | MGMT| ring_buffer_size |
* |--------------------------------------+--+--+--+--+--+-+-+-+-+-+-+-+----|
* | | M| M| M| M| M|M|M|M|M|M|M|M| |
* | | S| S| S| P| P|P|S|S|S|P|P|P| |
* | | E| E| E| E| E|E|S|S|S|S|S|S| |
* | rsvd3 | D| C| M| D| C|M|D|C|M|D|C|M| E |
* |------------------------------------------------------------------------|
* | tlv_filter_mask_in0 |
* |------------------------------------------------------------------------|
* | tlv_filter_mask_in1 |
* |------------------------------------------------------------------------|
* | tlv_filter_mask_in2 |
* |------------------------------------------------------------------------|
* | tlv_filter_mask_in3 |
* |-----------------+-----------------+---------------------+--------------|
* | tx_msdu_start_wm| tx_queue_ext_wm | tx_peer_entry_wm |tx_fes_stup_wm|
* |------------------------------------------------------------------------|
* | pcu_ppdu_setup_word_mask |
* |--------------------+--+--+--+-----+---------------------+--------------|
* | rsvd4 | D| C| M| PT | rxpcu_usrsetp_wm |tx_mpdu_srt_wm|
* |------------------------------------------------------------------------|
* |31 28|27|26|25|24|23 22|21|20|19|18 16|15|14|13|12|11|10|9|8|7|6|5|4|3|2 0|
* |-----+--+--+--+--+-----+--+--+--+-----+--+--+--+--+--+--+-+-+-+-+-+-+-+----|
* |rsvd1|MF|TM|PS|SS| ring_id | pdev_id | msg_type |
* |--------------+--------+--------+-----+------------------------------------|
* | rsvd2 | DATA | CTRL | MGMT| ring_buffer_size |
* |-----------------------------------------+--+--+--+--+--+-+-+-+-+-+-+-+----|
* | | M| M| M| M| M|M|M|M|M|M|M|M| |
* | | S| S| S| P| P|P|S|S|S|P|P|P| |
* | | E| E| E| E| E|E|S|S|S|S|S|S| |
* | rsvd3 | D| C| M| D| C|M|D|C|M|D|C|M| E |
* |---------------------------------------------------------------------------|
* | tlv_filter_mask_in0 |
* |---------------------------------------------------------------------------|
* | tlv_filter_mask_in1 |
* |---------------------------------------------------------------------------|
* | tlv_filter_mask_in2 |
* |---------------------------------------------------------------------------|
* | tlv_filter_mask_in3 |
* |--------------------+-----------------+---------------------+--------------|
* | tx_msdu_start_wm | tx_queue_ext_wm | tx_peer_entry_wm |tx_fes_stup_wm|
* |---------------------------------------------------------------------------|
* | pcu_ppdu_setup_word_mask |
* |-----------------------+--+--+--+-----+---------------------+--------------|
* | rsvd4 | D| C| M| PT | rxpcu_usrsetp_wm |tx_mpdu_srt_wm|
* |---------------------------------------------------------------------------|
*
* Where:
* MF = MAC address filtering enable
* TM = tx monitor global enable
* PS = pkt_swap
* SS = status_swap
* The message is interpreted as follows:
@ -7216,7 +7220,9 @@ PREPACK struct htt_rx_ring_selection_cfg_t {
* e.g. wmac_top_reg_seq_hwioreg.h
* b'26 - tx_mon_global_en: Enable/Disable global register
* configuration in Tx monitor module.
* b'27:31 - rsvd1: reserved for future use
* b'27 - mac_addr_filter_en:
* Enable/Disable Mac Address based filter.
* b'28:31 - rsvd1: reserved for future use
* dword1 - b'0:15 - ring_buffer_size: size of bufferes referenced by rx ring,
* in byte units.
* Valid only for HW_TO_SW_RING and SW_TO_HW_RING
@ -7362,7 +7368,8 @@ PREPACK struct htt_tx_monitor_cfg_t {
status_swap: 1,
pkt_swap: 1,
tx_mon_global_en: 1,
rsvd1: 5;
mac_addr_filter_en: 1,
rsvd1: 4;
A_UINT32 ring_buffer_size: 16,
config_length_mgmt: 3,
config_length_ctrl: 3,
@ -7465,6 +7472,17 @@ PREPACK struct htt_tx_monitor_cfg_t {
((_var) |= ((_val) << HTT_TX_MONITOR_CFG_TX_MON_GLOBAL_EN_S)); \
} while (0)
#define HTT_TX_MONITOR_CFG_MAC_ADDR_FILTER_EN_M 0x08000000
#define HTT_TX_MONITOR_CFG_MAC_ADDR_FILTER_EN_S 27
#define HTT_TX_MONITOR_CFG_MAC_ADDR_FILTER_EN_GET(_var) \
(((_var) & HTT_TX_MONITOR_CFG_MAC_ADDR_FILTER_EN_M) >> \
HTT_TX_MONITOR_CFG_MAC_ADDR_FILTER_EN_S)
#define HTT_TX_MONITOR_CFG_MAC_ADDR_FILTER_EN_SET(_var, _val) \
do { \
HTT_CHECK_SET_VAL(HTT_TX_MONITOR_CFG_MAC_ADDR_FILTER_EN, _val); \
((_var) |= ((_val) << HTT_TX_MONITOR_CFG_MAC_ADDR_FILTER_EN_S)); \
} while (0)
#define HTT_TX_MONITOR_CFG_RING_BUFFER_SIZE_M 0x0000ffff
#define HTT_TX_MONITOR_CFG_RING_BUFFER_SIZE_S 0
#define HTT_TX_MONITOR_CFG_RING_BUFFER_SIZE_GET(_var) \
@ -21374,7 +21392,7 @@ PREPACK struct htt_t2h_sawf_msduq_event {
#define HTT_T2H_SAWF_MSDUQ_INFO_HTT_TGT_OPAQUE_ID_M 0x00FFFFFF
#define HTT_T2H_SAWF_MSDUQ_INFO_HTT_TGT_OPAQUE_ID_S 0
#define HTT_T2H_SAWF_MSDUQ_INFO_HTT_TGT_OPAQUE_ID_GET(_var) \
(((_var) & HTT_T2H_SAWF_MSDUQ_INFO_HTT_TGT_OPAQUE_ID) >> \
(((_var) & HTT_T2H_SAWF_MSDUQ_INFO_HTT_TGT_OPAQUE_ID_M) >> \
HTT_T2H_SAWF_MSDUQ_INFO_HTT_TGT_OPAQUE_ID_S)
#define HTT_T2H_SAWF_MSDUQ_INFO_HTT_TGT_OPAQUE_ID_SET(_var, _val) \
do { \
@ -22923,10 +22941,14 @@ typedef struct _htt_tx_latency_stats {
/* HTT_T2H_MSG_TYPE_SDWF_MSDUQ_CFG_IND */
typedef enum {
HTT_SDWF_MSDUQ_CFG_IND_ERROR_NONE = 0x00,
HTT_SDWF_MSDUQ_CFG_IND_ERROR_NONE = 0x00,
HTT_SDWF_MSDUQ_CFG_IND_ERROR_PEER_DELETE_IN_PROG = 0x01,
HTT_SDWF_MSDUQ_CFG_IND_ERROR_SW_MSDUQ_NULL = 0x02,
HTT_SDWF_MSDUQ_CFG_IND_ERROR_MSDUQ_LOCATE_ERROR = 0x03,
HTT_SDWF_MSDUQ_CFG_IND_ERROR_SW_MSDUQ_NULL = 0x02,
HTT_SDWF_MSDUQ_CFG_IND_ERROR_MSDUQ_LOCATE_ERROR = 0x03,
HTT_SDWF_MSDUQ_CFG_IND_ERROR_QPEER_NULL = 0x04,
HTT_SDWF_MSDUQ_CFG_IND_ERROR_DEACTIVATED_MSDUQ = 0x05,
HTT_SDWF_MSDUQ_CFG_IND_ERROR_REACTIVATED_MSDUQ = 0x06,
HTT_SDWF_MSDUQ_CFG_IND_ERROR_INVALID_SVC_CLASS = 0x07,
} HTT_SDWF_MSDUQ_CFG_IND_ERROR_CODE_E;
PREPACK struct htt_t2h_sdwf_msduq_cfg_ind {
@ -22983,7 +23005,7 @@ PREPACK struct htt_t2h_sdwf_msduq_cfg_ind {
#define HTT_T2H_MSG_TYPE_SDWF_MSDUQ_CFG_IND_HLOS_TID_GET(_var) \
(((_var) & HTT_T2H_MSG_TYPE_SDWF_MSDUQ_CFG_IND_HLOS_TID_M) >> \
HTT_T2H_MSG_TYPE_SDWF_MSDUQ_CFG_IND_HLOS_TID_S)
#define HTT_T2H_MSG_TYPE_MSDUQ_CFG_IN_DHLOS_TID_SET(_var, _val) \
#define HTT_T2H_MSG_TYPE_SDWF_MSDUQ_CFG_IND_HLOS_TID_SET(_var, _val) \
do { \
HTT_CHECK_SET_VAL(HTT_T2H_MSG_TYPE_SDWF_MSDUQ_CFG_IND_HLOS_TID, _val); \
((_var) |= ((_val) << HTT_T2H_MSG_TYPE_SDWF_MSDUQ_CFG_IND_HLOS_TID_S)); \

View file

@ -668,6 +668,14 @@ enum htt_dbg_ext_stats_type {
*/
HTT_DBG_EXT_STATS_LATENCY_PROF_STATS_LO = 67,
/** HTT_DBG_GTX_STATS
* PARAMS:
* - No Params
* RESP MSG:
* - htt_pdev_gtx_stats_tlv
*/
HTT_DBG_GTX_STATS = 68,
/* keep this last */
HTT_DBG_NUM_EXT_STATS = 256,
@ -4390,6 +4398,9 @@ typedef struct {
A_UINT32 sched_udp_notify2;
A_UINT32 sched_nonudp_notify1;
A_UINT32 sched_nonudp_notify2;
A_UINT32 tqm_enqueue_msdu_count;
A_UINT32 tqm_dropped_msdu_count;
A_UINT32 tqm_dequeue_msdu_count;
} htt_stats_tx_tqm_pdev_tlv;
/* preserve old name alias for new name consistent with the tag name */
typedef htt_stats_tx_tqm_pdev_tlv htt_tx_tqm_pdev_stats_tlv_v;
@ -4580,6 +4591,18 @@ typedef struct {
A_UINT32 eapol_start_packets;
A_UINT32 eapol_logoff_packets;
A_UINT32 eapol_encap_asf_packets;
A_UINT32 m1_success;
A_UINT32 m1_compl_fail;
A_UINT32 m2_success;
A_UINT32 m2_compl_fail;
A_UINT32 m3_success;
A_UINT32 m3_compl_fail;
A_UINT32 m4_success;
A_UINT32 m4_compl_fail;
A_UINT32 g1_success;
A_UINT32 g1_compl_fail;
A_UINT32 g2_success;
A_UINT32 g2_compl_fail;
} htt_stats_tx_de_eapol_packets_tlv;
/* preserve old name alias for new name consistent with the tag name */
typedef htt_stats_tx_de_eapol_packets_tlv htt_tx_de_eapol_packets_stats_tlv;
@ -5580,6 +5603,8 @@ typedef struct {
A_UINT32 extra_eht_ltf;
/** Counter for Extra EHT LTFs in OFDMA sequences */
A_UINT32 extra_eht_ltf_ofdma;
/** 11AX HE UL_BA RU Size stats */
A_UINT32 ofdma_ba_ru_size[HTT_TX_PDEV_STATS_NUM_AX_RU_SIZE_COUNTERS];
} htt_stats_tx_pdev_rate_stats_tlv;
/* preserve old name alias for new name consistent with the tag name */
typedef htt_stats_tx_pdev_rate_stats_tlv htt_tx_pdev_rate_stats_tlv;
@ -5668,6 +5693,7 @@ typedef struct {
A_UINT32 be_ofdma_tx_ru_size[HTT_TX_PDEV_STATS_NUM_BE_RU_SIZE_COUNTERS];
/** 11BE EHT DL MU OFDMA EHT-SIG MCS stats */
A_UINT32 be_ofdma_eht_sig_mcs[HTT_TX_PDEV_STATS_NUM_EHT_SIG_MCS_COUNTERS];
A_UINT32 be_ofdma_ba_ru_size[HTT_TX_PDEV_STATS_NUM_BE_RU_SIZE_COUNTERS];
} htt_stats_tx_pdev_rate_stats_be_ofdma_tlv;
/* preserve old name alias for new name consistent with the tag name */
typedef htt_stats_tx_pdev_rate_stats_be_ofdma_tlv
@ -8590,6 +8616,82 @@ typedef struct {
} htt_pdev_rtt_init_stats_t;
#endif /* ATH_TARGET */
enum {
HTT_STATS_WIFI_RADAR_CAL_TYPE_NONE = 0,
HTT_STATS_WIFI_RADAR_CAL_TYPE_GAIN_BINARY_SEARCH = 1,
HTT_STATS_WIFI_RADAR_CAL_TYPE_TX_GAIN_BINARY_SEARCH = 2,
HTT_STATS_WIFI_RADAR_CAL_TYPE_RECAL_GAIN_VALIDATION = 3,
HTT_STATS_WIFI_RADAR_CAL_TYPE_RECAL_GAIN_BINARY_SEARCH = 4,
/* the value 5 is reserved for future use */
HTT_STATS_NUM_WIFI_RADAR_CAL_TYPES = 6
};
enum {
HTT_STATS_WIFI_RADAR_CAL_FAILURE_NONE = 0,
HTT_STATS_WIFI_RADAR_CAL_FAILURE_DPD_ABORT = 1,
HTT_STATS_WIFI_RADAR_CAL_FAILURE_CONVERGENCE = 2,
HTT_STATS_WIFI_RADAR_CAL_FAILURE_TX_EXCEEDS_RETRY = 3,
HTT_STATS_WIFI_RADAR_CAL_FAILURE_CAPTURE = 4,
HTT_STATS_WIFI_RADAR_CAL_FAILURE_NEW_CHANNEL_CHANGE = 5,
HTT_STATS_WIFI_RADAR_CAL_FAILURE_NEW_CAL_REQ = 6,
/* the values 7-9 are reserved for future use */
HTT_STATS_NUM_WIFI_RADAR_CAL_FAILURE_REASONS = 10
};
typedef struct {
htt_tlv_hdr_t tlv_hdr;
A_UINT32 capture_in_progress;
A_UINT32 calibration_in_progress;
/* Capture time interval, in ms */
A_UINT32 periodicity;
/* Last user request timestamp, in ms */
A_UINT32 latest_req_timestamp;
/* Last target res timestamp, in ms */
A_UINT32 latest_resp_timestamp;
/* Time taken by last calibration to end, in ms */
A_UINT32 latest_calibration_timing;
/* Time taken by last calibration to end, in ms for each chain */
A_UINT32 calibration_timing_per_chain[HTT_STATS_MAX_CHAINS];
/* To log user request count */
A_UINT32 wifi_radar_req_count;
/* Total packet success count */
A_UINT32 num_wifi_radar_pkt_success;
/* Total packet queued count */
A_UINT32 num_wifi_radar_pkt_queued;
/* Total packet success count during latest calibration alone */
A_UINT32 num_wifi_radar_cal_pkt_success;
/* Tx Gain Calibration Output - Initial Tx Gain index*/
A_UINT32 wifi_radar_cal_init_tx_gain;
/* Last Calibration Type, refer to HTT_STATS_WIFI_RADAR_CAL_TYPE_ consts */
A_UINT32 latest_wifi_radar_cal_type;
/* Calibration Type counters */
A_UINT32 wifi_radar_cal_type_counts[HTT_STATS_NUM_WIFI_RADAR_CAL_TYPES];
/*
* Last Calibration Fail Reason,
* refer to HTT_STATS_WIFI_RADAR_CAL_FAILURE_ consts
*/
A_UINT32 latest_wifi_radar_cal_fail_reason;
/* Calibration Fail Reason counters */
A_UINT32 wifi_radar_cal_fail_reason_counts[HTT_STATS_NUM_WIFI_RADAR_CAL_FAILURE_REASONS];
/* WiFi Radar Licensed for SKU: 0 - No; 1 - Yes */
A_UINT32 wifi_radar_licensed;
/*
* cmd result to show failure count of CTS2SELF across MAX_CMD_RESULT
* reasons
*/
A_UINT32 cmd_results_cts2self[HTT_STATS_MAX_SCH_CMD_RESULT];
/*
* cmd result to show failure count of wifi radar across MAX_CMD_RESULT
* reasons
*/
A_UINT32 cmd_results_wifi_radar[HTT_STATS_MAX_SCH_CMD_RESULT];
/* Tx gain index from gain table obtained/used for calibration */
A_UINT32 wifi_radar_tx_gains[HTT_STATS_MAX_CHAINS];
/* Rx gain index from gain table obtained/used from calibration */
A_UINT32 wifi_radar_rx_gains[HTT_STATS_MAX_CHAINS][HTT_STATS_MAX_CHAINS];
} htt_stats_tx_pdev_wifi_radar_tlv;
/* STATS_TYPE : HTT_DBG_EXT_PKTLOG_AND_HTT_RING_STATS
* TLV_TAGS:
@ -10464,6 +10566,7 @@ typedef struct _htt_odd_mandatory_muofdma_pdev_stats_tlv {
A_UINT32 ax_mu_brp_sch_status[HTT_TX_PDEV_STATS_NUM_TX_ERR_STATUS];
A_UINT32 be_mu_brp_sch_status[HTT_TX_PDEV_STATS_NUM_TX_ERR_STATUS];
A_UINT32 ofdma_tx_ru_size[HTT_TX_PDEV_STATS_NUM_AX_RU_SIZE_COUNTERS];
A_UINT32 ofdma_ba_ru_size[HTT_TX_PDEV_STATS_NUM_AX_RU_SIZE_COUNTERS];
} htt_dbg_odd_mandatory_muofdma_tlv;
/* preserve old name alias for new name consistent with the tag name */
typedef htt_dbg_odd_mandatory_muofdma_tlv
@ -11704,5 +11807,15 @@ static INLINE A_UINT8 *htt_ctrl_path_cal_type_id_to_name(A_UINT32 cal_type_id)
}
#endif /* HTT_CTRL_PATH_STATS_CAL_TYPE_STRINGS */
/*===================== Start GTX stats ====================*/
#define HTT_NUM_MCS_PER_NSS 16
typedef struct {
htt_tlv_hdr_t tlv_hdr;
A_UINT32 gtx_enabled; /* shows whether Green Tx feature is enabled */
A_INT32 mcs_tpc_min[HTT_NUM_MCS_PER_NSS]; /* shows current MCS's minimum TPC in 0.25dBm units */
A_INT32 mcs_tpc_max[HTT_NUM_MCS_PER_NSS]; /* shows current MCS's maximum TPC in 0.25dBm units */
A_UINT32 mcs_tpc_diff[HTT_NUM_MCS_PER_NSS]; /* shows current MCS's difference between maximum and minimum TPC in 0.25dB unit*/
} htt_stats_gtx_tlv;
/*===================== End GTX stats ====================*/
#endif /* __HTT_STATS_H__ */

View file

@ -1,5 +1,5 @@
/*
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
* Copyright (c) 2022,2024 Qualcomm Innovation Center, Inc. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
@ -34,6 +34,22 @@
#define TXMON_FW2SW_MON_FES_SETUP_SCHEDULE_ID_M 0xffffffff
#define TXMON_FW2SW_MON_FES_SETUP_SCHEDULE_ID_S 0
#define TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_M 0x000fffff
#define TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_S 0
#define TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_SEQ_NUM_M 0x000007ff
#define TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_SEQ_NUM_S 0
#define TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_HW_LINK_ID_M 0x00003800
#define TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_HW_LINK_ID_S 11
#define TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_PACKET_ID_M 0x0007c000
#define TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_PACKET_ID_S 14
#define TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_VALID_M 0x00080000
#define TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_VALID_S 19
#define TXMON_FW2SW_MON_FES_SETUP_BAND_CENTER_FREQ1_GET(_var) \
(((_var) & TXMON_FW2SW_MON_FES_SETUP_BAND_CENTER_FREQ1_M) >> \
TXMON_FW2SW_MON_FES_SETUP_BAND_CENTER_FREQ1_S)
@ -84,6 +100,58 @@
((_var) |= ((_val) << TXMON_FW2SW_MON_FES_SETUP_SCHEDULE_ID_S)); \
} while (0)
#define TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_GET(_var) \
(((_var) & TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_M) >> \
TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_S)
#define TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_SET(_var, _val) \
do { \
HTT_CHECK_SET_VAL(TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE, _val); \
((_var) |= ((_val) << TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_S)); \
} while (0)
#define TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_SEQ_NUM_GET(_var) \
(((_var) & TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_SEQ_NUM_M) >> \
TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_SEQ_NUM_S)
#define TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_SEQ_NUM_SET(_var, _val) \
do { \
HTT_CHECK_SET_VAL(TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_SEQ_NUM, _val); \
((_var) |= ((_val) << TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_SEQ_NUM_S)); \
} while (0)
#define TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_HW_LINK_ID_GET(_var) \
(((_var) & TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_HW_LINK_ID_M) >> \
TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_HW_LINK_ID_S)
#define TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_HW_LINK_ID_SET(_var, _val) \
do { \
HTT_CHECK_SET_VAL(TXMON_FW2SW_MON_FES_SETUP_FW_COOKIEHW_LINK_ID, _val); \
((_var) |= ((_val) << TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_HW_LINK_ID_S)); \
} while (0)
#define TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_PACKET_ID_GET(_var) \
(((_var) & TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_PACKET_ID_M) >> \
TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_PACKET_ID_S)
#define TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_PACKET_ID_SET(_var, _val) \
do { \
HTT_CHECK_SET_VAL(TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_PACKET_ID, _val); \
((_var) |= ((_val) << TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_PACKET_ID_S)); \
} while (0)
#define TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_VALID_GET(_var) \
(((_var) & TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_VALID_M) >> \
TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_VALID_S)
#define TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_VALID_SET(_var, _val) \
do { \
HTT_CHECK_SET_VAL(TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_VALID, _val); \
((_var) |= ((_val) << TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_VALID_S)); \
} while (0)
enum txmon_fw2sw_user_id {
TXMON_FW2SW_TYPE_FES_SETUP = 0, /* Placed after FES_SETUP */
TXMON_FW2SW_TYPE_FES_SETUP_USER = 1, /* Placed before FES_SETUP_COMPLETE */
@ -98,6 +166,8 @@ typedef struct txmon_fw2sw_fes_setup {
mhz : 16,
reserved : 8;
A_UINT32 schedule_id;
A_UINT32 fw_cookie : 20,
rsvd : 12;
} txmon_fw2sw_fes_setup_t;
typedef struct txmon_fw2sw_fes_setup_ext {

View file

@ -1,6 +1,6 @@
/*
* Copyright (c) 2011-2021 The Linux Foundation. All rights reserved.
* Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
* Copyright (c) 2021-2024 Qualcomm Innovation Center, Inc. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@ -154,7 +154,7 @@ typedef enum {
WLAN_MODULE_SMART_TX, /* 0x71 */
WLAN_MODULE_BRIDGE_PEER, /* 0x72 */
WLAN_MODULE_AUX_MAC_MGR, /* 0x73 */
WLAN_MODULE_TCAM, /* 0x74 */
WLAN_MODULE_ID_MAX,
WLAN_MODULE_ID_INVALID = WLAN_MODULE_ID_MAX,

View file

@ -659,6 +659,9 @@ typedef enum {
WMI_SERVICE_REG_CC_EXT2_EVENT_SUPPORT = 405, /* Indicate FW would send EXT2 REG_CC event having data which would be a continuation to EXT REG_CC event */
WMI_SERVICE_MLO_MODE2_RECOVERY_SUPPORTED = 406, /* Indicate FW support for MLO mode2 recovery */
WMI_SERVICE_MSDUQ_RECFG = 407, /* FW support the HTT MSDUQ_RECFG_REQ + MSDUQ_CFG_IND messages */
WMI_SERVICE_TRAFFIC_CONTEXT_SUPPORT = 408, /* FW supports traffic context aware manager */
WMI_SERVICE_STA_SAP_NDP_CONCURRENCY_SUPPORT = 409, /* FW supports STA + SAP + NDP concurrency */
WMI_SERVICE_THERM_THROT_POUT_REDUCTION = 410, /* FW supports thermal throttling Pout reduction */
WMI_MAX_EXT2_SERVICE

View file

@ -1432,6 +1432,11 @@ typedef enum {
WMITLV_TAG_STRUC_wmi_pdev_enable_xlna_event_fixed_param,
WMITLV_TAG_STRUC_wmi_reg_chan_list_cc_event_ext2_fixed_param,
WMITLV_TAG_STRUC_wmi_pdev_set_custom_tx_power_per_mcs_cmd_fixed_param,
WMITLV_TAG_STRUC_wmi_peer_active_traffic_map_cmd_fixed_param,
WMITLV_TAG_STRUC_wmi_request_opm_stats_cmd_fixed_param,
WMITLV_TAG_STRUC_wmi_ctrl_path_vdev_bcn_tx_stats_struct,
WMITLV_TAG_STRUC_wmi_ctrl_path_pdev_bcn_tx_stats_struct,
WMITLV_TAG_STRUC_wmi_soc_tx_packet_custom_classify_cmd_fixed_param,
} WMITLV_TAG_ID;
/*
* IMPORTANT: Please add _ALL_ WMI Commands Here.
@ -1978,6 +1983,9 @@ typedef enum {
OP(WMI_PDEV_ENABLE_WIFI_RADAR_CMDID) \
OP(WMI_PDEV_ENABLE_XLNA_CMDID) \
OP(WMI_PDEV_SET_CUSTOM_TX_POWER_PER_MCS_CMDID) \
OP(WMI_PEER_ACTIVE_TRAFFIC_MAP_CMDID) \
OP(WMI_REQUEST_OPM_STATS_CMDID) \
OP(WMI_SOC_TX_PACKET_CUSTOM_CLASSIFY_CMDID) \
/* add new CMD_LIST elements above this line */
@ -4773,6 +4781,10 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_MULTIPLE_VDEV_RESTART_REQUEST_CMDID);
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_update_pkt_routing_cmd_fixed_param, wmi_pdev_update_pkt_routing_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_UPDATE_PKT_ROUTING_CMDID);
#define WMITLV_TABLE_WMI_SOC_TX_PACKET_CUSTOM_CLASSIFY_CMDID(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_soc_tx_packet_custom_classify_cmd_fixed_param, wmi_soc_tx_packet_custom_classify_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
WMITLV_CREATE_PARAM_STRUC(WMI_SOC_TX_PACKET_CUSTOM_CLASSIFY_CMDID);
/* Get cal version cmd */
#define WMITLV_TABLE_WMI_PDEV_CHECK_CAL_VERSION_CMDID(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_check_cal_version_cmd_fixed_param, wmi_pdev_check_cal_version_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
@ -5591,6 +5603,16 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_ENABLE_XLNA_CMDID);
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, txpower_bkoff_array, WMITLV_SIZE_VAR)
WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_SET_CUSTOM_TX_POWER_PER_MCS_CMDID);
/* cmd to Set active traffic type bitmap */
#define WMITLV_TABLE_WMI_PEER_ACTIVE_TRAFFIC_MAP_CMDID(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_peer_active_traffic_map_cmd_fixed_param, wmi_peer_active_traffic_map_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
WMITLV_CREATE_PARAM_STRUC(WMI_PEER_ACTIVE_TRAFFIC_MAP_CMDID);
/* cmd to request Opportunistic Power Mgmt (OPM) stats */
#define WMITLV_TABLE_WMI_REQUEST_OPM_STATS_CMDID(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_request_opm_stats_cmd_fixed_param, wmi_request_opm_stats_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
WMITLV_CREATE_PARAM_STRUC(WMI_REQUEST_OPM_STATS_CMDID);
/************************** TLV definitions of WMI events *******************************/
@ -7079,7 +7101,9 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PEER_STATS_INFO_EVENTID);
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_ctrl_path_blanking_stats_struct, ctrl_path_blanking_stats, WMITLV_SIZE_VAR) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_ctrl_path_peer_stats_struct, ctrl_path_peer_stats, WMITLV_SIZE_VAR) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_ctrl_path_vdev_stats_struct, ctrl_path_vdev_stats, WMITLV_SIZE_VAR) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_ctrl_path_sta_rrm_stats_struct, ctrl_path_sta_rrm_stats, WMITLV_SIZE_VAR)
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_ctrl_path_sta_rrm_stats_struct, ctrl_path_sta_rrm_stats, WMITLV_SIZE_VAR) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_ctrl_path_vdev_bcn_tx_stats_struct, ctrl_path_vdev_bcn_tx_stats, WMITLV_SIZE_VAR) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_ctrl_path_pdev_bcn_tx_stats_struct, ctrl_path_pdev_bcn_tx_stats, WMITLV_SIZE_VAR)
WMITLV_CREATE_PARAM_STRUC(WMI_CTRL_PATH_STATS_EVENTID);
/*

View file

@ -1302,6 +1302,13 @@ typedef enum {
/* WMI cmd used by host to send the switch response status to FW */
WMI_AUDIO_TRANSPORT_SWITCH_RESP_STATUS_CMDID,
/** WMI command to set active traffic type bitmap for a peer */
WMI_PEER_ACTIVE_TRAFFIC_MAP_CMDID,
/** WMI command to Request Opportunistic Power Mgmt (OPM) stats */
WMI_REQUEST_OPM_STATS_CMDID,
/* Offload 11k related requests */
WMI_11K_OFFLOAD_REPORT_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_11K_OFFLOAD),
/* invoke neighbor report from FW */
@ -1500,6 +1507,11 @@ typedef enum {
WMI_SOC_SET_ANTENNA_MODE_CMDID,
/** enable/disable TQM reset (SOC level) feature */
WMI_SOC_TQM_RESET_ENABLE_DISABLE_CMDID,
/*
* WMI Command to enable custom classification of packets in Tx path
* and specifiy packets of interest for classification.
*/
WMI_SOC_TX_PACKET_CUSTOM_CLASSIFY_CMDID,
/* packet filter commands */
WMI_PACKET_FILTER_CONFIG_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_PKT_FILTER),
@ -3452,6 +3464,11 @@ typedef struct {
#define WMI_TARGET_CAP_ML_MONITOR_MODE_SUPPORT_SET(target_cap_flags, value) \
WMI_SET_BITS(target_cap_flags, 14, 1, value)
#define WMI_TARGET_CAP_QDATA_TX_LCE_FILTER_SUPPORT_GET(target_cap_flags) \
WMI_GET_BITS(target_cap_flags, 15, 1)
#define WMI_TARGET_CAP_QDATA_TX_LCE_FILTER_SUPPORT_SET(target_cap_flags, value)\
WMI_SET_BITS(target_cap_flags, 15, 1, value)
/*
* wmi_htt_msdu_idx_to_htt_msdu_qtype GET/SET APIs
@ -3597,7 +3614,8 @@ typedef struct {
* Bit12 - [ML-STA + SL-SAP] 0: not supported; 1:supported
* Bit 13 - Support for multipass SAP
* Bit 14 - Support for ML monitor mode
* Bits 31:15 - Reserved
* Bit 15 - Support for Qdata Tx LCE filter installation
* Bits 31:16 - Reserved
*/
A_UINT32 target_cap_flags;
@ -4593,8 +4611,15 @@ typedef struct {
* WMI_SERVICE_DISABLE_WDS_PEER_MAP_UNMAP_EVENT_SUPPORT flag.
* Refer to WMI_RSRC_CFG_FLAGS2_DISABLE_WDS_PEER_MAP_UNMAP_EVENT_GET
* and _SET macros.
* Bit 19 - show whether the host supports 128 or 256 service classes
* This bit will be set when host supports for 256 service classes
* 0 -> host supports 128 service classes
* 1 -> host supports 255 [0-254] valid service classes,
* and 255 indicates an invalid service class
* Refer to WMI_RSRC_CFG_FLAGS2_SAWF_255_SVC_CLASS_SUPPORT_GET/SET
* macros.
*
* Bits 31:19 - Reserved
* Bits 31:20 - Reserved
*/
A_UINT32 flags2;
/** @brief host_service_flags - can be used by Host to indicate
@ -5084,6 +5109,11 @@ typedef struct {
#define WMI_RSRC_CFG_FLAGS2_DISABLE_WDS_PEER_MAP_UNMAP_EVENT_SET(flags2, value) \
WMI_SET_BITS(flags2, 18, 1, value)
#define WMI_RSRC_CFG_FLAGS2_SAWF_255_SVC_CLASS_SUPPORT_GET(flags2) \
WMI_GET_BITS(flags2, 19, 1)
#define WMI_RSRC_CFG_FLAGS2_SAWF_255_SVC_CLASS_SUPPORT_SET(flags2, value) \
WMI_SET_BITS(flags2, 19, 1, value)
#define WMI_RSRC_CFG_HOST_SERVICE_FLAG_NAN_IFACE_SUPPORT_GET(host_service_flags) \
WMI_GET_BITS(host_service_flags, 0, 1)
@ -5250,6 +5280,7 @@ typedef enum {
WMI_VENDOR1_REQ1_VERSION_3_30 = 3,
WMI_VENDOR1_REQ1_VERSION_3_40 = 4,
WMI_VENDOR1_REQ1_VERSION_4_00 = 5,
WMI_VENDOR1_REQ1_VERSION_4_10 = 6,
} WMI_VENDOR1_REQ1_VERSION;
typedef enum {
@ -5600,6 +5631,11 @@ typedef enum {
WMI_GET_BITS_ARRAY_LEN32_BYTES(var, feature_bitmap, 158, 1)
#define WMI_SET_STA_P2P_NAN_TDLS_SUPPORT(feature_bitmap, val) \
WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 158, 1, val)
/* NAN EHT supported info */
#define WMI_GET_NAN_EHT_SUPPORT(var, feature_bitmap) \
WMI_GET_BITS_ARRAY_LEN32_BYTES(var, feature_bitmap, 159, 1)
#define WMI_SET_NAN_EHT_SUPPORT(feature_bitmap, val) \
WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 159, 1, val)
/*
* Specify how many A_UINT32 words are needed to hold the feature bitmap flags.
@ -6155,8 +6191,15 @@ typedef struct {
#define MAX_NUM_CHAN_PER_WMI_CMD 58 /* each WMI cmd can hold 58 channel entries at most */
#define APPEND_TO_EXISTING_CHAN_LIST 1
#define CHANNEL_MAX_BANDWIDTH_VALID 2
#define WMI_APPEND_TO_EXISTING_CHAN_LIST 0x1
#define WMI_CHANNEL_MAX_BANDWIDTH_VALID 0x2
#define WMI_HONOR_HOST_6GHZ_CHANNEL_PASSIVE 0x4
/*
* To preserve backwards compatibility, retain old names (without WMI_ prefix)
* as aliases for the corrected names (with WMI_ prefix).
*/
#define APPEND_TO_EXISTING_CHAN_LIST WMI_APPEND_TO_EXISTING_CHAN_LIST
#define CHANNEL_MAX_BANDWIDTH_VALID WMI_CHANNEL_MAX_BANDWIDTH_VALID
typedef struct {
A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_scan_chan_list_cmd_fixed_param */
@ -7266,6 +7309,9 @@ typedef struct {
#define WMI_TX_SEND_FLAG_SET_PS_BUFFERING_FOR_SA_QUERY 0x00000002
#define WMI_TX_SEND_FLAG_SET_PS_BUFFERING_FOR_SA_QUERY_GET(tx_flags) WMI_GET_BITS(tx_flags, 1, 1)
#define WMI_TX_SEND_FLAG_SET_PS_BUFFERING_FOR_SA_QUERY_SET(tx_flags, value) WMI_SET_BITS(tx_flags, 1, 1, value)
#define WMI_TX_SEND_FLAG_SET_IS_SA_QUERY 0x00000004
#define WMI_TX_SEND_FLAG_SET_IS_SA_QUERY_GET(tx_flags) WMI_GET_BITS(tx_flags, 2, 1)
#define WMI_TX_SEND_FLAG_SET_IS_SA_QUERY_SET(tx_flags, value) WMI_SET_BITS(tx_flags, 2, 1, value)
typedef struct {
A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_tx_send_params */
@ -10065,6 +10111,16 @@ typedef enum {
WMI_MGMT_TX_COMP_TYPE_MAX,
} WMI_MGMT_TX_COMP_STATUS_TYPE;
#define WMI_VDEV_ID_VALID_FROM_INFO_GET(info) \
WMI_GET_BITS(info, 3, 1)
#define WMI_VDEV_ID_VALID_FROM_INFO_SET(info,val) \
WMI_SET_BITS(info, 3, 1, val)
#define WMI_VDEV_ID_FROM_INFO_GET(info) \
WMI_GET_BITS(info, 4, 8)
#define WMI_VDEV_ID_FROM_INFO_SET(info,val) \
WMI_SET_BITS(info, 4, 8, val)
typedef struct {
A_UINT32 tlv_header;
A_UINT32 desc_id; /* from tx_send_cmd */
@ -10098,7 +10154,11 @@ typedef struct {
* one of the wmi_mlo_band_info_t enum constants.
* Macros WMI_ROAM_BTM_RESP_MLO_BAND_INFO_GET,SET
* can be reused for setting mlo band info.
* Bit[3:31] - reserved
* Bit[3] - set when vdev_id_info is populated in Bit[4:11]
* macros WMI_VDEV_ID_VALID_FROM_INFO_GET,SET can be used
* Bit[4:11] - vdev_id on which frame is sent,
* Macros WMI_VDEV_ID_FROM_INFO_GET,SET can be used
* Bit[12:31] - reserved
*/
A_UINT32 info;
} wmi_mgmt_tx_compl_event_fixed_param;
@ -13556,6 +13616,27 @@ typedef struct {
#define WMI_PMLO_DL_AIRTIME_NON_AC_GET(airtime) WMI_GET_BITS(airtime, 24, 8)
#define WMI_PMLO_DL_AIRTIME_NON_AC_SET(airtime, value) WMI_SET_BITS(airtime, 24, 8, value)
#define WMI_PMLO_UL_DL_PAYLOAD_RATIO_GET_BE(airtime) WMI_GET_BITS(airtime, 0, 8)
#define WMI_PMLO_UL_DL_PAYLOAD_RATIO_SET_BE(airtime, value) WMI_SET_BITS(airtime, 0, 8, value)
#define WMI_PMLO_UL_DL_PAYLOAD_RATIO_GET_BK(airtime) WMI_GET_BITS(airtime, 8, 8)
#define WMI_PMLO_UL_DL_PAYLOAD_RATIO_SET_BK(airtime, value) WMI_SET_BITS(airtime, 8, 8, value)
#define WMI_PMLO_UL_DL_PAYLOAD_RATIO_GET_VI(airtime) WMI_GET_BITS(airtime, 16, 8)
#define WMI_PMLO_UL_DL_PAYLOAD_RATIO_SET_VI(airtime, value) WMI_SET_BITS(airtime, 16, 8, value)
#define WMI_PMLO_UL_DL_PAYLOAD_RATIO_GET_VO(airtime) WMI_GET_BITS(airtime, 24, 8)
#define WMI_PMLO_UL_DL_PAYLOAD_RATIO_SET_VO(airtime, value) WMI_SET_BITS(airtime, 24, 8, value)
/** Traffic condition used in estimating the available airtime value */
typedef enum {
WMI_PDEV_TRAFFIC_LIGHT = 0,
WMI_PDEV_TRAFFIC_MEDIUM = 1,
WMI_PDEV_TRAFFIC_HEAVY = 2,
WMI_PDEV_TRAFFIC_SATURATION = 3,
WMI_PDEV_TRAFFIC_MEDIUM_AND_OBSS = 4,
} wmi_pdev_traffic_condition;
/*
* The wmi_ctrl_path_pmlo_stats_struct is used to send Provisional MLO stats
* the WMI_CTRL_PATH_STATS_EVENT message, in response to a
@ -13657,6 +13738,112 @@ typedef struct {
};
A_UINT32 ul_dl_obss_free_aa_word32;
};
/*
* Traffic condition used in estimating the available airtime value.
* Refer to enum wmi_pdev_traffic_condition
* traffic_condition_used_per_ac[0] : AC_VO
* traffic_condition_used_per_ac[1] : AC_VI
* traffic_condition_used_per_ac[2] : AC_BE
* traffic_condition_used_per_ac[3] : AC_BK
* Saturation Traffic condition is evaluated to true when the number
* of associated stations and the number of active TIDs per access
* category crosses a threshold.
* Light Traffic condition is evaluated to true when the obss_rx_airtime
* is less than a threshold and the free channel is greater than the sum
* of DL and UL airtime per client.
* Heavy Traffic condition is evaluated to true when the free channel is
* less than a particular threshold and the number of active TIDs per
* access category crosses a threshold.
* OBSS (Medium) Traffic condition is evaluated to true when the
* obss_rx_airtime crosses a threshold.
* Medium Traffic case is carried out if all the above mentioned
* conditions evaluate to false.
*/
A_UINT32 traffic_condition_used_per_ac[WMI_AC_MAX];
/*
* Every PPDU has an associated txop overhead value in its PPDU duration.
* In order to consider only the duration taken to transfer the actual
* data, we estimate the payload ratio.
* The packet overhead is accumulated for each PPDU, where it is recorded
* for each access category separately.
* The payload_ratio_dl values indicate the percentage of actual data
* packets' duration in the entire TX duration by omitting the overhead
* (units are percentage).
* By estimating the payload ratio, we would be able to further measure
* the free channel with increased accuracy.
*
* BIT[0-7] : AC_BE
* BIT[8-15] : AC_BK
* BIT[16-23] : AC_VI
* BIT[24-31] : AC_VO
* Please refer to WMI_PMLO_UL_DL_PAYLOAD_RATIO_* macros
* to retrieve values for each access category in payload_ratio_dl_per_ac.
*/
union {
struct {
A_UINT32
payload_ratio_dl_ac_be: 8,
payload_ratio_dl_ac_bk: 8,
payload_ratio_dl_ac_vi: 8,
payload_ratio_dl_ac_vo: 8;
};
A_UINT32 payload_ratio_dl_per_ac;
};
/*
* Every PPDU has an associated txop overhead value in its PPDU duration.
* In order to consider only the duration taken to transfer the actual
* data, we estimate the payload ratio.
* The packet overhead is accumulated for each PPDU, where it is recorded
* for each access category separately.
* The payload_ratio_ul values indicate the percentage of actual data
* packets' duration in the entire RX duration by omitting the overhead
* (Units are percentage).
* By estimating the payload ratio, we would be able to further measure
* the free channel with increased accuracy.
*
* BIT[0-7] : AC_BE
* BIT[8-15] : AC_BK
* BIT[16-23] : AC_VI
* BIT[24-31] : AC_VO
* Please refer to WMI_PMLO_UL_DL_PAYLOAD_RATIO_* macros
* to retrieve values for each access category in payload_ratio_ul_per_ac.
*/
union {
struct {
A_UINT32
payload_ratio_ul_ac_be: 8,
payload_ratio_ul_ac_bk: 8,
payload_ratio_ul_ac_vi: 8,
payload_ratio_ul_ac_vo: 8;
};
A_UINT32 payload_ratio_ul_per_ac;
};
/*
* Error margin of the estimated available airtime per AC,
* units are percentage.
* error_margin_per_ac[0] : AC_VO
* error_margin_per_ac[1] : AC_VI
* error_margin_per_ac[2] : AC_BE
* error_margin_per_ac[3] : AC_BK
*/
A_UINT32 error_margin_per_ac[WMI_AC_MAX];
/*
* This parameter indicates the number of clients which would be
* considered to estimate the available airtime value during
* imbalanced traffic scenarios
* Value 0 indicates that we do not have imbalanced traffic.
* num_of_ul/dl_asymmetric_clients_per_ac[0] : AC_VO
* num_of_ul/dl_asymmetric_clients_per_ac[1] : AC_VI
* num_of_ul/dl_asymmetric_clients_per_ac[2] : AC_BE
* num_of_ul/dl_asymmetric_clients_per_ac[3] : AC_BK
*/
A_UINT32 num_of_ul_asymmetric_clients_per_ac[WMI_AC_MAX];
A_UINT32 num_of_dl_asymmetric_clients_per_ac[WMI_AC_MAX];
} wmi_ctrl_path_pmlo_stats_struct;
typedef struct {
@ -16072,6 +16259,55 @@ typedef struct {
A_UINT32 dot11RTSFailureCount;
} wmi_ctrl_path_sta_rrm_stats_struct;
typedef struct {
/* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_ctrl_path_vdev_bcn_stats_struct */
A_UINT32 tlv_header;
A_UINT32 vdev_id;
A_UINT32 beacon_succ_cnt;
A_UINT32 beacon_outage_cnt;
A_UINT32 beacon_cons_miss_cnt;
A_UINT32 beacon_curr_miss_cnt;
A_UINT32 beacon_sw_abort_cnt;
A_UINT32 beacon_tx_filter_cnt;
A_UINT32 beacon_tx_xretry_cnt;
A_UINT32 beacon_tx_drop_cnt;
A_UINT32 beacon_tx_abort_cnt;
A_UINT32 beacon_tx_tid_del_cnt;
A_UINT32 beacon_tx_mig_drop_cnt;
A_UINT32 beacon_fail_others_cnt;
A_UINT32 beacon_stuck_cnt;
A_UINT32 beacon_tbtt_skip_cnt;
A_UINT32 beacon_swba_cnt;
A_UINT32 beacon_enque_fail;
A_UINT32 scan_time_exceed_cnt;
A_UINT32 beacon_miss_systime_gap_us;
A_UINT32 beacon_last_miss_time_low_us;
A_UINT32 beacon_last_miss_time_high_us;
A_UINT32 last_tbtt_time_low_us;
A_UINT32 last_tbtt_time_high_us;
A_UINT32 last_tbtt_update_low_us;
A_UINT32 last_tbtt_update_high_us;
} wmi_ctrl_path_vdev_bcn_tx_stats_struct;
typedef struct {
/* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_ctrl_path_pdev_bcn_stats_struct */
A_UINT32 tlv_header;
A_UINT32 pdev_id;
A_UINT32 beacon_succ_cnt;
A_UINT32 beacon_outage_cnt;
A_UINT32 beacon_sw_abort_cnt;
A_UINT32 beacon_tx_filter_cnt;
A_UINT32 beacon_tx_xretry_cnt;
A_UINT32 beacon_tx_drop_cnt;
A_UINT32 beacon_tx_abort_cnt;
A_UINT32 beacon_tx_tid_del_cnt;
A_UINT32 beacon_tx_mig_drop_cnt;
A_UINT32 beacon_fail_others_cnt;
A_UINT32 beacon_stuck_cnt;
A_UINT32 beacon_swba_cnt;
A_UINT32 beacon_enque_fail;
} wmi_ctrl_path_pdev_bcn_tx_stats_struct;
/**
* peer statistics.
*/
@ -18543,6 +18779,11 @@ typedef enum {
/* VDEV parameter to configure Telescopic DTIM count */
WMI_VDEV_PARAM_TELESDTIM_CNT, /* 0xC3 */
/* Configure minimum DTIM level used by Telescopic DTIM */
WMI_VDEV_PARAM_MIN_TELES_DTIM_LVL, /* 0xC4 */
/* Set HW CTS2SELF before DL OFDMA Sequence */
WMI_VDEV_PARAM_HWCTS2SELF_OFDMA, /* 0xC5 */
/*=== ADD NEW VDEV PARAM TYPES ABOVE THIS LINE ===
* The below vdev param types are used for prototyping, and are
@ -22732,6 +22973,12 @@ typedef enum {
WMI_BL_REASON_REASSOC_RSSI_REJECT,
/* Reassoc resp with status code 17 - DENIED_NO_MORE_STAS */
WMI_BL_REASON_REASSOC_NO_MORE_STAS,
WMI_BL_REASON_BASIC_RATES_MIS_MATCH, /* Status code 18 */
WMI_BL_REASON_EHT_NOT_SUPPORTED, /* Status code 135 */
WMI_BL_REASON_EXISTING_MLD_ASSOCIATION, /* Status code 130 */
WMI_BL_REASON_LINK_TRANSMITTED_NOT_ACCEPTED, /* Status code 139 */
WMI_BL_REASON_DENIED_OTHER_REASON,
WMI_BL_REASON_BTM_LOAD_BALANCE,
} WMI_BLACKLIST_REASON_ID;
typedef enum {
@ -22739,6 +22986,8 @@ typedef enum {
WMI_BL_SOURCE_FW,
} WMI_BLACKLIST_SOURCE_ID;
#define WMI_MAX_FAILED_LINK_COMBO_COUNT 10
typedef struct {
/** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_blacklist_with_timeout_tlv_param */
A_UINT32 tlv_header;
@ -22761,11 +23010,18 @@ typedef struct {
/* Original timeout value in milli seconds when AP added to BL */
A_UINT32 original_timeout;
/*
* If disallow_linkid_bitmap is not 0, then means current entity
* is for MLD AP and bssid field is standing for MLD address.
* If all links for MLD AP is disallow, then the value shall be 0xffffffff
* The disallow link ID bitmap indicates links which should not be allowed
* for any assoc or partner link combination.
* If all links for MLD AP are disallowed, then the value shall be
* 0xffffffff.
*/
A_UINT32 disallow_linkid_bitmap;
/* MLD address of AP */
wmi_mac_addr mld;
/* List of link combinations for which association is failed */
A_UINT32 ml_failed_links_combo_bitmap[WMI_MAX_FAILED_LINK_COMBO_COUNT];
/* Failed link combo count filled in ml_failed_links_combo_bitmap[] */
A_UINT32 ml_failed_link_combo_count;
} wmi_roam_blacklist_with_timeout_tlv_param;
/** WMI_ROAM_BLACKLIST_EVENT: generated whenever STA needs to move AP to blacklist for a particluar time
@ -35341,6 +35597,8 @@ typedef enum {
WMI_REQUEST_CTRL_PATH_PEER_STAT = 16,
WMI_REQUEST_CTRL_PATH_VDEV_DEBUG_STAT = 17,
WMI_REQUEST_CTRL_STA_RRM_STAT = 18,
WMI_REQUEST_CTRL_PATH_VDEV_BCN_TX_STAT = 19,
WMI_REQUEST_CTRL_PATH_PDEV_BCN_TX_STAT = 20,
} wmi_ctrl_path_stats_id;
typedef enum {
@ -36531,27 +36789,38 @@ typedef struct {
/** TLV tag and len; tag equals
* WMITLV_TAG_STRUC_wmi_therm_throt_level_config_info */
A_UINT32 tlv_header;
/**
* temperature sensor value in celsius when to exit to lower zone,
* this value can be lower than HWM of lower zone as zone overlapping
* is permitted by design to provide hysteresis
*/
/** temp_lwm:
* temperature sensor value in celsius when to exit to lower zone,
* this value can be lower than HWM of lower zone as zone overlapping
* is permitted by design to provide hysteresis
*/
A_UINT32 temp_lwm;
/**
* temperature sensor value in celsius when to exit to higher zone,
* this value can be higher than LWM of higher zone as zone overlapping
* is permitted by design to provide hysteresis
*/
/** temp_hwm:
* temperature sensor value in celsius when to exit to higher zone,
* this value can be higher than LWM of higher zone as zone overlapping
* is permitted by design to provide hysteresis
*/
A_UINT32 temp_hwm;
A_UINT32 dc_off_percent; /* duty cycle off percent 0-100. 0 means no off, 100 means no on (shutdown the phy) */
/** Disable only the transmit queues in firmware that have lower priority than value defined by prio
* Prioritization:
* 0 = disable all data tx queues, No Prioritization defined
* 1 = disable BK tx queue
* 2 = disable BK+BE tx queues
* 3 = disable BK+BE+VI tx queues
*/
/** dc_off_percent:
* duty cycle off percent 0-100.
* 0 means no off, 100 means no on (shutdown the phy).
*/
A_UINT32 dc_off_percent;
/** prio:
* Disable only the transmit queues in firmware that have lower priority
* than value defined by prio.
* Prioritization:
* 0 = disable all data tx queues, No Prioritization defined
* 1 = disable BK tx queue
* 2 = disable BK+BE tx queues
* 3 = disable BK+BE+VI tx queues
*/
A_UINT32 prio;
/**
* Pout power reduction in 0.25 dB units.
* For example, a value of 5 causes a power reduction of 1.25 dB.
*/
A_UINT32 pout_reduction_25db;
} wmi_therm_throt_level_config_info;
typedef enum {
@ -37502,6 +37771,9 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command)
WMI_RETURN_STRING(WMI_VDEV_GET_TWT_SESSION_STATS_INFO_CMDID);
WMI_RETURN_STRING(WMI_PDEV_ENABLE_XLNA_CMDID);
WMI_RETURN_STRING(WMI_PDEV_SET_CUSTOM_TX_POWER_PER_MCS_CMDID);
WMI_RETURN_STRING(WMI_PEER_ACTIVE_TRAFFIC_MAP_CMDID);
WMI_RETURN_STRING(WMI_REQUEST_OPM_STATS_CMDID);
WMI_RETURN_STRING(WMI_SOC_TX_PACKET_CUSTOM_CLASSIFY_CMDID);
}
return (A_UINT8 *) "Invalid WMI cmd";
@ -38498,7 +38770,33 @@ typedef enum {
WMI_PDEV_WIFIRXCCE_USE_CCE2_E = 3,
} wmi_pdev_dest_ring_handler_type;
/* This command shall be sent only when no VDEV is up. If the command is sent after any VDEV is up, target will ignore the command */
typedef enum {
WMI_SOC_TX_PACKET_TYPE_ARP = 1,
WMI_SOC_TX_PACKET_TYPE_EAPOL = 2,
WMI_SOC_TX_PACKET_TYPE_DHCP = 3,
WMI_SOC_TX_PACKET_TYPE_DNS = 4,
WMI_SOC_TX_PACKET_TYPE_ICMP = 5,
} wmi_soc_tx_packet_type;
/*
* This command shall be sent only when no VDEV is up.
* If the command is sent after any VDEV is up, target will ignore the command.
*/
typedef struct {
/** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_soc_tx_packet_custom_classify_cmd_fixed_param */
A_UINT32 tlv_header;
/** packet_bitmap:
* bitmap of the packets to be classified,
* Refer to wmi_soc_tx_packet_type for the interpretation of the bits
* within the bitmap.
*/
A_UINT32 packet_bitmap;
} wmi_soc_tx_packet_custom_classify_cmd_fixed_param;
/*
* This command shall be sent only when no VDEV is up.
* If the command is sent after any VDEV is up, target will ignore the command.
*/
typedef struct {
/** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_pdev_update_pkt_routing_cmd_fixed_param */
A_UINT32 tlv_header;
@ -38735,10 +39033,17 @@ typedef struct {
#define WLM_FLAGS_PS_DISABLE_MLO_PROBE_SCAN 1 /* disable MLO probe scan */
/* bit 24: WLM_FLAGS_PS_DISABLE_ULL_FORCED_MLMR,
* disable forced MLMR on ULL if bit is set
* Disable forced MLMR on ULL if bit is set.
* (MLMR may still happen due to other reasons.)
*/
#define WLM_FLAGS_PS_DISABLE_ULL_FORCED_MLMR 1 /* disable forced MLMR on ULL */
/* bit 25: WLM_FLAGS_PS_DISABLE_ULL_FORCED_EMLSR,
* Disable forced EMLSR on ULL if bit is set.
* (eMLSR may still happen due to other reasons.)
*/
#define WLM_FLAGS_PS_DISABLE_ULL_FORCED_EMLSR 1 /* disable forced EMLSR on ULL */
#define WLM_FLAGS_SCAN_IS_SUPPRESS(flag) WMI_GET_BITS(flag, 0, 1)
#define WLM_FLAGS_SCAN_SET_SUPPRESS(flag, val) WMI_SET_BITS(flag, 0, 1, val)
#define WLM_FLAGS_SCAN_IS_SKIP_DFS(flag) WMI_GET_BITS(flag, 1, 1)
@ -38776,6 +39081,8 @@ typedef struct {
#define WLM_FLAGS_PS_SET_MLO_PROBE_SCAN_DISABLE(flag, val) WMI_SET_BITS(flag, 23, 1, val)
#define WLM_FLAGS_PS_IS_ULL_FORCED_MLMR_DISABLED(flag) WMI_GET_BITS(flag, 24, 1)
#define WLM_FLAGS_PS_SET_ULL_FORCED_MLMR_DISABLE(flag, val) WMI_SET_BITS(flag, 24, 1, val)
#define WLM_FLAGS_PS_IS_ULL_FORCED_EMLSR_DISABLED(flag) WMI_GET_BITS(flag, 25, 1)
#define WLM_FLAGS_PS_SET_ULL_FORCED_EMLSR_DISABLE(flag, val) WMI_SET_BITS(flag, 25, 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)
@ -39921,11 +40228,18 @@ typedef struct {
/* Original timeout value in milli seconds when AP added to BL */
A_UINT32 original_timeout;
/*
* If disallow_linkid_bitmap is not 0, then means current entity
* is for MLD AP and bssid field is standing for MLD address.
* If all links for MLD AP is disallow, then the value shall be 0xffffffff
* The disallow link ID bitmap indicates links which should not be allowed
* for any assoc or partner link combination.
* If all links for MLD AP are disallowed, then the value shall be
* 0xffffffff.
*/
A_UINT32 disallow_linkid_bitmap;
/* MLD address of AP */
wmi_mac_addr mld;
/* List of link combinations for which association is failed */
A_UINT32 ml_failed_links_combo_bitmap[WMI_MAX_FAILED_LINK_COMBO_COUNT];
/* Failed link combo count filled in ml_failed_links_combo_bitmap[] */
A_UINT32 ml_failed_link_combo_count;
} wmi_pdev_bssid_disallow_list_config_param;
typedef enum {
@ -40865,6 +41179,13 @@ typedef struct {
* each bit represents.
*/
A_UINT32 disallow_connect_modes;
/*
* If max_link_combo_count is non-zero, STA should try to roam to next
* candidate once max allowed link combinations is reached with current
* candidate AP.
*/
A_UINT32 max_link_combo_count;
} wmi_roam_mlo_config_cmd_fixed_param;
typedef struct {
@ -48113,6 +48434,53 @@ typedef struct {
A_UINT32 status;
} wmi_pdev_enable_xlna_event_fixed_param;
/**
* bits 0-15 are used for non interative traffic types like video streaming,
* or ping
* bit 16-31 are reserved for interactive traffic types like gaming, VoIP,
* or video conferencing
*/
#define WMI_PEER_ACTIVE_TRAFFIC_TYPE_STREAMING_M 0x00000001
#define WMI_PEER_ACTIVE_TRAFFIC_TYPE_STREAMING_S 0
#define WMI_PEER_ACTIVE_TRAFFIC_TYPE_PING_M 0x00000002
#define WMI_PEER_ACTIVE_TRAFFIC_TYPE_PING_S 1
#define WMI_PEER_ACTIVE_TRAFFIC_TYPE_BACKGROUND_M 0x00000004
#define WMI_PEER_ACTIVE_TRAFFIC_TYPE_BACKGROUND_S 2
/* bits 3-15 are reserved for new non-interactive traffic types */
#define WMI_PEER_ACTIVE_TRAFFIC_TYPE_GAMING_M 0x00010000
#define WMI_PEER_ACTIVE_TRAFFIC_TYPE_GAMING_S 16
#define WMI_PEER_ACTIVE_TRAFFIC_TYPE_VOIP_M 0x00020000
#define WMI_PEER_ACTIVE_TRAFFIC_TYPE_VOIP_S 17
#define WMI_PEER_ACTIVE_TRAFFIC_TYPE_VIDEO_CONF_M 0x00040000
#define WMI_PEER_ACTIVE_TRAFFIC_TYPE_VIDEO_CONF_S 18
/* bits 19-31 are reserved for new interactive traffic types */
typedef struct {
A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_peer_active_traffic_map_cmd_fixed_param */
A_UINT32 vdev_id;
wmi_mac_addr peer_macaddr; /* peer MAC address */
/* active_traffic_map:
* This field is a bitmap showing traffic types known to be currently
* present within the vdev.
* Refer to the WMI_PEER_ACTIVE_TRAFFIC_ definitions that specify which
* bits within the bitmap correspond to which traffic types.
*/
A_UINT32 active_traffic_map;
} wmi_peer_active_traffic_map_cmd_fixed_param;
/*
* WMI_REQUEST_OPM_STATS_CMDID triggered by host to collect OPM stats for trafic types identified by STC
* in respose this FW will send OEM_respose_event_id WMI_OEM_DATA_CMD_OPM_STATS
*
*/
typedef struct {
A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_request_opm_stats_cmd_fixed_param */
A_UINT32 pdev_id; /** pdev_id for identifying the MAC */
} wmi_request_opm_stats_cmd_fixed_param;
/* ADD NEW DEFS HERE */

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