From ea9dd77c75ba0b333202c04e327e58ca9e2d8ec6 Mon Sep 17 00:00:00 2001 From: spuligil Date: Fri, 11 Mar 2022 06:01:04 -0800 Subject: [PATCH 01/38] fw-api: CL 17463702 - update fw common interface files HTT stats: add AX SU embedded trig data PPDU cntrs Change-Id: I4ac86a0fc5af0876e97bfd5d5a97cd5a63741a18 CRs-Fixed: 2262693 --- fw/htt_stats.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/fw/htt_stats.h b/fw/htt_stats.h index b212bd63a5d6..fc8bc89aaeff 100644 --- a/fw/htt_stats.h +++ b/fw/htt_stats.h @@ -4320,6 +4320,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 { From 728b5cdc42cd14cc9fefaeb4c132b352f8ceeb63 Mon Sep 17 00:00:00 2001 From: spuligil Date: Mon, 14 Mar 2022 18:01:21 -0700 Subject: [PATCH 02/38] fw-api: CL 17479040 - update fw common interface files HTT stats: efficient AX ofdma stats, add BE ofdma stats Change-Id: I7a79c4f1569076e71522abef6612aa6a254b46dc CRs-Fixed: 2262693 --- fw/htt.h | 16 ++- fw/htt_stats.h | 319 ++++++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 317 insertions(+), 18 deletions(-) diff --git a/fw/htt.h b/fw/htt.h index 01777502e28b..3aa5918cc793 100644 --- a/fw/htt.h +++ b/fw/htt.h @@ -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,14 @@ 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_MAX_TAG, diff --git a/fw/htt_stats.h b/fw/htt_stats.h index fc8bc89aaeff..b182849fcea3 100644 --- a/fw/htt_stats.h +++ b/fw/htt_stats.h @@ -565,6 +565,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 @@ -2226,7 +2245,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 +2257,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 +2269,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 +2286,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 +2309,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; From 464cace595851355ac57eb2597a9a915b9a3b97d Mon Sep 17 00:00:00 2001 From: spuligil Date: Mon, 14 Mar 2022 18:01:51 -0700 Subject: [PATCH 03/38] fw-api: CL 17480751 - update fw common interface files Change-Id: I234f9482d5135a7b09a369262fe88c478aeb0ec3 WMI: add eMLSR flags CRs-Fixed: 2262693 --- fw/wmi_unified.h | 14 +++++++++++++- fw/wmi_version.h | 2 +- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index f1a8aa93841c..3a5fd2e6b152 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -11837,7 +11837,8 @@ 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 */ + unused: 25; }; A_UINT32 mlo_flags; }; @@ -16011,6 +16012,10 @@ 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 { @@ -29350,6 +29355,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 +29375,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 +29384,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: diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 2751dffedf5d..fd72284ea87c 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -37,7 +37,7 @@ #define __WMI_VER_MINOR_ 0 /** WMI revision number has to be incremented when there is a * change that may or may not break compatibility. */ -#define __WMI_REVISION_ 1127 +#define __WMI_REVISION_ 1128 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 33cc03df600c92e6df71cb6c9be32573799e1e7e Mon Sep 17 00:00:00 2001 From: spuligil Date: Tue, 15 Mar 2022 06:01:09 -0700 Subject: [PATCH 04/38] fw-api: CL 17485838 - update fw common interface files Change-Id: I40e631150cc9d583e94c1f92cf377a0d3da332e5 WMI: reduce buffer reqts of PDEV_RSSI_DBM_CONVERSION_PARAMS_INFO_EVENT msg CRs-Fixed: 2262693 --- fw/wmi_services.h | 1 + fw/wmi_unified.h | 31 ++++++++++++++++++------------- fw/wmi_version.h | 2 +- 3 files changed, 20 insertions(+), 14 deletions(-) diff --git a/fw/wmi_services.h b/fw/wmi_services.h index 56afaa5d8e3b..5ea457c50d6e 100644 --- a/fw/wmi_services.h +++ b/fw/wmi_services.h @@ -581,6 +581,7 @@ 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_MAX_EXT2_SERVICE diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 3a5fd2e6b152..2a0ddd388966 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -1612,7 +1612,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, @@ -16260,14 +16260,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): @@ -16303,9 +16301,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, @@ -16323,7 +16328,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] @@ -17810,10 +17815,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*/ @@ -22435,7 +22440,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; @@ -22565,7 +22570,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 @@ -22612,7 +22617,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; @@ -24758,7 +24763,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; @@ -24964,7 +24969,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 */ diff --git a/fw/wmi_version.h b/fw/wmi_version.h index fd72284ea87c..196a0f0e6d58 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -37,7 +37,7 @@ #define __WMI_VER_MINOR_ 0 /** WMI revision number has to be incremented when there is a * change that may or may not break compatibility. */ -#define __WMI_REVISION_ 1128 +#define __WMI_REVISION_ 1129 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From e0016128f650c2dd2e0752f02ed857c50c3771c3 Mon Sep 17 00:00:00 2001 From: spuligil Date: Wed, 16 Mar 2022 18:00:59 -0700 Subject: [PATCH 05/38] fw-api: CL 17503513 - update fw common interface files Change-Id: I53d2b22f2dda65d87148e4573109d7a5be60834d WMI: negotiate allocation of scratch registers CRs-Fixed: 2262693 --- fw/wmi_tlv_defs.h | 25 +++++++++++++++++++++ fw/wmi_unified.h | 55 ++++++++++++++++++++++++++++++++++++++++++++++- fw/wmi_version.h | 2 +- 3 files changed, 80 insertions(+), 2 deletions(-) diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index 2417a02a341e..c55d45396384 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1254,6 +1254,11 @@ 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_ID; /* @@ -1745,6 +1750,7 @@ 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) \ /* add new CMD_LIST elements above this line */ @@ -2028,6 +2034,8 @@ 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) \ /* add new EVT_LIST elements above this line */ @@ -4980,6 +4988,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 *******************************/ @@ -6737,6 +6751,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 } diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 2a0ddd388966..d86d9476a023 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -1146,6 +1146,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 */ @@ -2061,6 +2064,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 @@ -31018,6 +31027,7 @@ 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); } return (A_UINT8 *) "Invalid WMI cmd"; @@ -37957,11 +37967,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! */ @@ -38023,7 +38076,7 @@ typedef struct { /***************************************************************************** * END DEPRECATED */ - +// } /* ADD NEW DEFS ABOVE THIS DEPRECATED SECTION */ diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 196a0f0e6d58..e912df5c1cd7 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -37,7 +37,7 @@ #define __WMI_VER_MINOR_ 0 /** WMI revision number has to be incremented when there is a * change that may or may not break compatibility. */ -#define __WMI_REVISION_ 1129 +#define __WMI_REVISION_ 1130 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From d8c77ad3eff2ab44b533f33f5cf6b6b8b10f9907 Mon Sep 17 00:00:00 2001 From: spuligil Date: Thu, 17 Mar 2022 06:01:15 -0700 Subject: [PATCH 06/38] fw-api: CL 17514144 - update fw common interface files Change-Id: I6c04954a11e7553a2c770ee2ca02df831a2829a2 WMI: more 11be EHT cap + phy capability flags CRs-Fixed: 2262693 --- fw/wmi_unified.h | 45 +++++++++++++++++++++++++++++++++++++++++---- fw/wmi_version.h | 2 +- 2 files changed, 42 insertions(+), 5 deletions(-) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index d86d9476a023..0dcba12d4cb1 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -15945,6 +15945,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 /** @@ -35654,25 +35655,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 ******/ diff --git a/fw/wmi_version.h b/fw/wmi_version.h index e912df5c1cd7..4de0209c9324 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -37,7 +37,7 @@ #define __WMI_VER_MINOR_ 0 /** WMI revision number has to be incremented when there is a * change that may or may not break compatibility. */ -#define __WMI_REVISION_ 1130 +#define __WMI_REVISION_ 1131 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 079d1c50fd14063d3e2a131425925135fe86db4c Mon Sep 17 00:00:00 2001 From: spuligil Date: Fri, 18 Mar 2022 07:16:32 -0700 Subject: [PATCH 07/38] fw-api: CL 17524652 - update fw common interface files Change-Id: Id2bedfe7a273aca7e45420d0c9184949c4516dff WMI: add cu_vdev_map_cat1,2 to bcn_tmpl_ml_params TLV CRs-Fixed: 2262693 --- fw/wmi_tlv_defs.h | 4 +++- fw/wmi_unified.h | 20 ++++++++++++++++++++ fw/wmi_version.h | 2 +- 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index c55d45396384..d35366d30f58 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1259,6 +1259,7 @@ typedef enum { 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_ID; /* @@ -2477,7 +2478,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); diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 0dcba12d4cb1..35638a3e3c4b 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -14419,6 +14419,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 */ diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 4de0209c9324..79cde0c63078 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -37,7 +37,7 @@ #define __WMI_VER_MINOR_ 0 /** WMI revision number has to be incremented when there is a * change that may or may not break compatibility. */ -#define __WMI_REVISION_ 1131 +#define __WMI_REVISION_ 1132 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From d6da72303e7b2f5e20bf80f186e0d1f84b76b6b9 Mon Sep 17 00:00:00 2001 From: Amir Patel Date: Sun, 20 Mar 2022 16:15:16 +0530 Subject: [PATCH 08/38] qcacmn: Add HW headers for Waikiki Monitor (QCN9224) Add HW headers for Waikiki Monitor (QCN9224) CRs-Fixed: 3154610 Change-Id: I850fb86e39afef9e8b7e872dfcaead06c105442d --- hw/qcn9224/mon_drop.h | 101 +++++++++++++ hw/qcn9224/phyrx_common_user_info.h | 211 ++++++++++++++++++++++++++++ 2 files changed, 312 insertions(+) create mode 100644 hw/qcn9224/mon_drop.h create mode 100644 hw/qcn9224/phyrx_common_user_info.h diff --git a/hw/qcn9224/mon_drop.h b/hw/qcn9224/mon_drop.h new file mode 100644 index 000000000000..89feeacf076b --- /dev/null +++ b/hw/qcn9224/mon_drop.h @@ -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 diff --git a/hw/qcn9224/phyrx_common_user_info.h b/hw/qcn9224/phyrx_common_user_info.h new file mode 100644 index 000000000000..61f0dbbbe37b --- /dev/null +++ b/hw/qcn9224/phyrx_common_user_info.h @@ -0,0 +1,211 @@ + +/* 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_DESTINATION_RING_WITH_DROP_H_ + +#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 From 8366bb27570157257c21bff8378a7c25950246df Mon Sep 17 00:00:00 2001 From: spuligil Date: Sun, 20 Mar 2022 12:01:02 -0700 Subject: [PATCH 09/38] fw-api: CL 17539128 - update fw common interface files Change-Id: Id17f93c690bbbc687d8d0ff86de7628a941e7610 WMI: add VDEV_TX_PEER_FILTER_CMD msg def CRs-Fixed: 2262693 --- fw/wmi_tlv_defs.h | 7 +++++++ fw/wmi_unified.h | 18 +++++++++++++++++- fw/wmi_version.h | 2 +- 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index d35366d30f58..5c2cfc1dace7 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1260,6 +1260,7 @@ typedef enum { 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_ID; /* @@ -1752,6 +1753,7 @@ typedef enum { 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) \ /* add new CMD_LIST elements above this line */ @@ -4213,6 +4215,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) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 35638a3e3c4b..77cbddeb09a3 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -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 */ @@ -6528,8 +6530,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. */ diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 79cde0c63078..2be66ad2ab5e 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -37,7 +37,7 @@ #define __WMI_VER_MINOR_ 0 /** WMI revision number has to be incremented when there is a * change that may or may not break compatibility. */ -#define __WMI_REVISION_ 1132 +#define __WMI_REVISION_ 1133 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 30d7ea92fe3ccabb3c85018b3c668c1d15aa6708 Mon Sep 17 00:00:00 2001 From: spuligil Date: Mon, 21 Mar 2022 18:01:04 -0700 Subject: [PATCH 10/38] fw-api: CL 17554759 - update fw common interface files HTT stats: add DMAC reset stats Change-Id: I22bf2748d99b5cc04bfd3a547a19441c11782c08 CRs-Fixed: 2262693 --- fw/htt.h | 1 + fw/htt_stats.h | 29 +++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/fw/htt.h b/fw/htt.h index 3aa5918cc793..c0f12156ce60 100644 --- a/fw/htt.h +++ b/fw/htt.h @@ -740,6 +740,7 @@ typedef enum { 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, diff --git a/fw/htt_stats.h b/fw/htt_stats.h index b182849fcea3..f10eee916b89 100644 --- a/fw/htt_stats.h +++ b/fw/htt_stats.h @@ -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, }; @@ -7164,4 +7173,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__ */ From 739c0a6ef59fefacf20b04d16d5d1bbc7626cc8a Mon Sep 17 00:00:00 2001 From: spuligil Date: Wed, 23 Mar 2022 06:01:07 -0700 Subject: [PATCH 11/38] fw-api: CL 17577504 - update fw common interface files HTT stats: add tx_meas_req_count field in vdev_rtt_init_stats Change-Id: Ia685a3e6118816165df21cd42f1a01aee4cf5c76 CRs-Fixed: 2262693 --- fw/htt_stats.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/fw/htt_stats.h b/fw/htt_stats.h index f10eee916b89..e32613aa4208 100644 --- a/fw/htt_stats.h +++ b/fw/htt_stats.h @@ -6690,6 +6690,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 { From ae4fcd466d9d0449f030cdd638634fff82f811b1 Mon Sep 17 00:00:00 2001 From: spuligil Date: Thu, 24 Mar 2022 06:01:05 -0700 Subject: [PATCH 12/38] fw-api: CL 17592053 - update fw common interface files HTT stats: PPDU OBSS counters per Access Category Change-Id: I577c89e976f3aa93bf06b98ff360aa06b2c294c7 CRs-Fixed: 2262693 --- fw/htt_stats.h | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/fw/htt_stats.h b/fw/htt_stats.h index e32613aa4208..6524a9b3266a 100644 --- a/fw/htt_stats.h +++ b/fw/htt_stats.h @@ -6164,6 +6164,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: From 5612268282843ff96a110aeeef2cff8e25c232e8 Mon Sep 17 00:00:00 2001 From: Sai Rupesh Chevuru Date: Wed, 9 Mar 2022 16:56:28 +0530 Subject: [PATCH 13/38] fw-api: Add hw headers for HW reinjection support Add hw headers for HW reinjection support for MLO Multicast Change-Id: Ic6432b5b470475d56fd1d0a6fe390d622648ba4f --- hw/qcn9224/wcss_seq_hwioreg_umac.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/hw/qcn9224/wcss_seq_hwioreg_umac.h b/hw/qcn9224/wcss_seq_hwioreg_umac.h index 4860d11e746a..6130085d8adf 100644 --- a/hw/qcn9224/wcss_seq_hwioreg_umac.h +++ b/hw/qcn9224/wcss_seq_hwioreg_umac.h @@ -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) From d2e0fc9d4eaf4ba9f2ae9d63e247d3d7966b267e Mon Sep 17 00:00:00 2001 From: spuligil Date: Fri, 25 Mar 2022 06:01:01 -0700 Subject: [PATCH 14/38] fw-api: CL 17605663 - update fw common interface files Change-Id: I9cd4721a8c83ebff7bab22e710a739587943317f WMI: pdev stats for latency and air time CRs-Fixed: 2262693 --- fw/wmi_services.h | 1 + fw/wmi_tlv_defs.h | 4 +++- fw/wmi_unified.h | 18 +++++++++++++++++- fw/wmi_version.h | 2 +- 4 files changed, 22 insertions(+), 3 deletions(-) diff --git a/fw/wmi_services.h b/fw/wmi_services.h index 5ea457c50d6e..aa2389aa1328 100644 --- a/fw/wmi_services.h +++ b/fw/wmi_services.h @@ -582,6 +582,7 @@ typedef enum { 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_MAX_EXT2_SERVICE diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index 5c2cfc1dace7..1bb9edce1619 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1261,6 +1261,7 @@ typedef enum { 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_ID; /* @@ -5558,7 +5559,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 */ diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 77cbddeb09a3..6f039bbe041a 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -9212,6 +9212,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; /* @@ -9676,7 +9677,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 */ @@ -10090,6 +10090,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 */ @@ -11507,6 +11511,18 @@ 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, units in micro seconds */ + A_UINT32 avg_chan_lat_per_ac[WMI_AC_MAX]; + /* estimated airtime per access category, units in percentage */ + A_UINT32 estimated_air_time_per_ac[WMI_AC_MAX]; +} wmi_pdev_telemetry_stats; + /** * VDEV statistics * @todo diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 2be66ad2ab5e..19f938ac6a5c 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -37,7 +37,7 @@ #define __WMI_VER_MINOR_ 0 /** WMI revision number has to be incremented when there is a * change that may or may not break compatibility. */ -#define __WMI_REVISION_ 1133 +#define __WMI_REVISION_ 1134 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 1446f9d8ae2926d675649413e6c33be44af39860 Mon Sep 17 00:00:00 2001 From: spuligil Date: Sat, 26 Mar 2022 12:01:24 -0700 Subject: [PATCH 15/38] fw-api: CL 17624712 - update fw common interface files HTT stats: add TQM stats for MSDU queue timestamp updates Change-Id: I48673bf15f59094fff08b56010818b0971887458 CRs-Fixed: 2262693 --- fw/htt_stats.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/fw/htt_stats.h b/fw/htt_stats.h index 6524a9b3266a..c7c19e390044 100644 --- a/fw/htt_stats.h +++ b/fw/htt_stats.h @@ -3546,6 +3546,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 { From d71da2bb566f917f8956c5473d913c2aa213cd0f Mon Sep 17 00:00:00 2001 From: spuligil Date: Mon, 28 Mar 2022 06:01:13 -0700 Subject: [PATCH 16/38] fw-api: CL 17628058 - update fw common interface files Change-Id: I9c8638409403e7a53bf9834beac3b52ba827c9bd WMI: add AFC indoor / outdoor support flags CRs-Fixed: 2262693 --- fw/wmi_unified.h | 36 +++++++++++++++++++++++++++++++++++- fw/wmi_version.h | 2 +- 2 files changed, 36 insertions(+), 2 deletions(-) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 6f039bbe041a..195de6685245 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -3133,6 +3133,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.*/ @@ -3240,6 +3246,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[]; @@ -4203,7 +4215,19 @@ 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. + * Bits 31:12 - Reserved */ A_UINT32 host_service_flags; @@ -4582,6 +4606,16 @@ 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_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) \ diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 19f938ac6a5c..7aeca4a64171 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -37,7 +37,7 @@ #define __WMI_VER_MINOR_ 0 /** WMI revision number has to be incremented when there is a * change that may or may not break compatibility. */ -#define __WMI_REVISION_ 1134 +#define __WMI_REVISION_ 1135 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 0b1c6ea5dafef29097643a017f87d03e5ff9c98c Mon Sep 17 00:00:00 2001 From: Amir Patel Date: Wed, 30 Mar 2022 11:16:25 +0530 Subject: [PATCH 17/38] fw-api: Fix compilation issue for common user info TLV Fix compilation issue for common user info TLV Change-Id: Ibd99d7b2c80ddabed51854ff3966ce8b9c22cabd CRs-Fixed: 3162639 --- hw/qcn9224/phyrx_common_user_info.h | 1 - 1 file changed, 1 deletion(-) diff --git a/hw/qcn9224/phyrx_common_user_info.h b/hw/qcn9224/phyrx_common_user_info.h index 61f0dbbbe37b..6094d1e4be79 100644 --- a/hw/qcn9224/phyrx_common_user_info.h +++ b/hw/qcn9224/phyrx_common_user_info.h @@ -20,7 +20,6 @@ -#ifndef _MON_DESTINATION_RING_WITH_DROP_H_ #ifndef _PHYRX_COMMON_USER_INFO_H_ #define _PHYRX_COMMON_USER_INFO_H_ From 4c3809e5d0d6a35ce326747dcb2d4b92ded67d54 Mon Sep 17 00:00:00 2001 From: spuligil Date: Tue, 29 Mar 2022 06:01:15 -0700 Subject: [PATCH 18/38] fw-api: CL 17644061 - update fw common interface files Change-Id: I368317984c46e16279421f62d00625a437b23fac WMI: add REO_QREF_FEATURE_SUPPORT config flag CRs-Fixed: 2262693 --- fw/wmi_unified.h | 15 ++++++++++++++- fw/wmi_version.h | 2 +- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 195de6685245..44cf89d83a77 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -4227,7 +4227,15 @@ typedef struct { * 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. - * Bits 31:12 - Reserved + * 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; @@ -4616,6 +4624,11 @@ typedef struct { #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) \ diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 7aeca4a64171..ec5f68db0219 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -37,7 +37,7 @@ #define __WMI_VER_MINOR_ 0 /** WMI revision number has to be incremented when there is a * change that may or may not break compatibility. */ -#define __WMI_REVISION_ 1135 +#define __WMI_REVISION_ 1136 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 82fff4d47477be97da7b1dfe61eb4cb237abd07a Mon Sep 17 00:00:00 2001 From: spuligil Date: Wed, 30 Mar 2022 06:01:36 -0700 Subject: [PATCH 19/38] fw-api: CL 17660651 - update fw common interface files Change-Id: I4bf5c5362d714059e85f7dbf01c703bb03c90dfb WMI: add bssid and sae_preauth_indicator fields in roam_frame_info CRs-Fixed: 2262693 --- fw/wmi_services.h | 1 + fw/wmi_unified.h | 17 ++++++++++++++--- fw/wmi_version.h | 2 +- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/fw/wmi_services.h b/fw/wmi_services.h index aa2389aa1328..053022bee21e 100644 --- a/fw/wmi_services.h +++ b/fw/wmi_services.h @@ -583,6 +583,7 @@ typedef enum { 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_MAX_EXT2_SERVICE diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 44cf89d83a77..b876c5868f37 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -33768,12 +33768,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(4bits) : Lower 4 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; @@ -33800,6 +33805,12 @@ typedef struct { * sequence number) is retransmitted, in protocol level. */ A_UINT32 retry_count; + wmi_mac_addr bssid; /* AP MAC address */ + /* sae_preauth_indicator + * 1 -> SAE auth happened in host, so auth frame history saved in host + * 0 -> SAE auth not happened, so firmware will send auth frame info + */ + A_UINT32 sae_preauth_indicator; } wmi_roam_frame_info; typedef enum { diff --git a/fw/wmi_version.h b/fw/wmi_version.h index ec5f68db0219..e97fba8bf1ef 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -37,7 +37,7 @@ #define __WMI_VER_MINOR_ 0 /** WMI revision number has to be incremented when there is a * change that may or may not break compatibility. */ -#define __WMI_REVISION_ 1136 +#define __WMI_REVISION_ 1137 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 251acfea279eb8738388d1a3410d06b97c392dfa Mon Sep 17 00:00:00 2001 From: spuligil Date: Tue, 5 Apr 2022 06:01:11 -0700 Subject: [PATCH 20/38] fw-api: CL 17712037 - update fw common interface files Change-Id: I42a3eb23667a14ad144a22d76b475757b6e09636 WMI: add BIOS_PARAM_TAS_ CONFIG_TYPE,DATA_TYPE defs CRs-Fixed: 2262693 --- fw/wmi_unified.h | 95 ++++++++++++++++++++++++++++++++++++++++++++++++ fw/wmi_version.h | 2 +- 2 files changed, 96 insertions(+), 1 deletion(-) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index b876c5868f37..4e6cf4febe0f 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -27687,6 +27687,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; diff --git a/fw/wmi_version.h b/fw/wmi_version.h index e97fba8bf1ef..e0f4da56d903 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -37,7 +37,7 @@ #define __WMI_VER_MINOR_ 0 /** WMI revision number has to be incremented when there is a * change that may or may not break compatibility. */ -#define __WMI_REVISION_ 1137 +#define __WMI_REVISION_ 1138 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From e250a71836d301dcc9be86a3fa78cf460573e626 Mon Sep 17 00:00:00 2001 From: spuligil Date: Wed, 6 Apr 2022 06:01:06 -0700 Subject: [PATCH 21/38] fw-api: CL 17725153 - update fw common interface files add WMI_AFC_EXPIRY_EVENT_STOP_TX def Change-Id: Ief73f7550834de2f60c2565f99d03cd72f4c5bb3 CRs-Fixed: 2262693 --- fw/wmi_unified.h | 4 ++++ fw/wmi_version.h | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 4e6cf4febe0f..38a3c291ff32 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -31662,10 +31662,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 { diff --git a/fw/wmi_version.h b/fw/wmi_version.h index e0f4da56d903..cefed424fa49 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -37,7 +37,7 @@ #define __WMI_VER_MINOR_ 0 /** WMI revision number has to be incremented when there is a * change that may or may not break compatibility. */ -#define __WMI_REVISION_ 1138 +#define __WMI_REVISION_ 1139 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 286e4cf34eacaa036af93386509a41428f021db9 Mon Sep 17 00:00:00 2001 From: spuligil Date: Wed, 6 Apr 2022 18:01:14 -0700 Subject: [PATCH 22/38] fw-api: CL 17741957 - update fw common interface files Change-Id: Ief3272f790319e7ac49f09017e4319edf22d9183 WMI: reduce size of wmi_pdev_telemetry_stats CRs-Fixed: 2262693 --- fw/wmi_unified.h | 20 +++++++++++++++++--- fw/wmi_version.h | 2 +- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 38a3c291ff32..ba01c7049bc9 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -11564,10 +11564,24 @@ typedef struct { 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, units in micro seconds */ + /* + * 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]; - /* estimated airtime per access category, units in percentage */ - A_UINT32 estimated_air_time_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; /** diff --git a/fw/wmi_version.h b/fw/wmi_version.h index cefed424fa49..094747c9a2c7 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -37,7 +37,7 @@ #define __WMI_VER_MINOR_ 0 /** WMI revision number has to be incremented when there is a * change that may or may not break compatibility. */ -#define __WMI_REVISION_ 1139 +#define __WMI_REVISION_ 1140 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From b82c51924c808bdada05d477115ab41fb077c2b2 Mon Sep 17 00:00:00 2001 From: spuligil Date: Thu, 7 Apr 2022 06:01:24 -0700 Subject: [PATCH 23/38] fw-api: CL 17745034 - update fw common interface files HTT stats: add TQM bypass frame + byte counts Change-Id: I59c6eccc6b95ad04b7406cbc34497649b71f8624 CRs-Fixed: 2262693 --- fw/htt.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/fw/htt.h b/fw/htt.h index c0f12156ce60..ea0d9e33ce9e 100644 --- a/fw/htt.h +++ b/fw/htt.h @@ -18135,6 +18135,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; /* From e785d24ce53020ea23f9c9adaee21b4dea585b3c Mon Sep 17 00:00:00 2001 From: spuligil Date: Fri, 8 Apr 2022 18:01:00 -0700 Subject: [PATCH 24/38] fw-api: CL 17768134 - update fw common interface files Change-Id: I42f8a6197396dd6db7cb55abbd536c1aa2a33a5b WMI: add MLO info to MGMT_RX_EVENT msg CRs-Fixed: 2262693 --- fw/wmi_tlv_defs.h | 5 ++++- fw/wmi_unified.h | 35 +++++++++++++++++++++++++++++++++++ fw/wmi_version.h | 2 +- 3 files changed, 40 insertions(+), 2 deletions(-) diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index 1bb9edce1619..12cc02d2947b 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1262,6 +1262,7 @@ typedef enum { 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_ID; /* @@ -5267,7 +5268,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 */ diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index ba01c7049bc9..b191eda7e788 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -5760,6 +5760,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, diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 094747c9a2c7..7c3fb780ce0d 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -37,7 +37,7 @@ #define __WMI_VER_MINOR_ 0 /** WMI revision number has to be incremented when there is a * change that may or may not break compatibility. */ -#define __WMI_REVISION_ 1140 +#define __WMI_REVISION_ 1141 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 757864a62d6a7d0dcec30663bb51a5cddae64e92 Mon Sep 17 00:00:00 2001 From: spuligil Date: Sat, 9 Apr 2022 06:01:13 -0700 Subject: [PATCH 25/38] fw-api: CL 17771149 - update fw common interface files Change-Id: I5986a055ef93b21646d3ab227d6886537e33c234 WMI: report min,max tx pwr as signed values CRs-Fixed: 2262693 --- fw/wmi_services.h | 1 + fw/wmi_tlv_defs.h | 4 +++- fw/wmi_unified.h | 11 +++++++++++ fw/wmi_version.h | 2 +- 4 files changed, 16 insertions(+), 2 deletions(-) diff --git a/fw/wmi_services.h b/fw/wmi_services.h index 053022bee21e..40f9db0829ed 100644 --- a/fw/wmi_services.h +++ b/fw/wmi_services.h @@ -584,6 +584,7 @@ typedef enum { 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_MAX_EXT2_SERVICE diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index 12cc02d2947b..9ac19257bf63 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -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, @@ -5058,7 +5059,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) \ diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index b191eda7e788..617f4fb43a6f 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -2818,6 +2818,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 @@ -3261,6 +3271,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; diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 7c3fb780ce0d..f0cea44db1bf 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -37,7 +37,7 @@ #define __WMI_VER_MINOR_ 0 /** WMI revision number has to be incremented when there is a * change that may or may not break compatibility. */ -#define __WMI_REVISION_ 1141 +#define __WMI_REVISION_ 1142 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 52bf2903dc7f4bb291a812a0bc30f2859363c9fd Mon Sep 17 00:00:00 2001 From: spuligil Date: Thu, 14 Apr 2022 10:28:43 -0700 Subject: [PATCH 26/38] fw-api: CL 17793208 - update fw common interface files Change-Id: Id9c37e996ed94c81a8f20a66ee26bf42217214e5 WMI: remove sae_preauth_indicator field from roam_frame_info CRs-Fixed: 2262693 --- fw/wmi_unified.h | 7 +------ fw/wmi_version.h | 2 +- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 617f4fb43a6f..3f045107e5e6 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -33933,7 +33933,7 @@ typedef struct { * 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(4bits) : Lower 4 bits of 9.4.1.1 Authentication Algorithm + * 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 @@ -33965,11 +33965,6 @@ typedef struct { */ A_UINT32 retry_count; wmi_mac_addr bssid; /* AP MAC address */ - /* sae_preauth_indicator - * 1 -> SAE auth happened in host, so auth frame history saved in host - * 0 -> SAE auth not happened, so firmware will send auth frame info - */ - A_UINT32 sae_preauth_indicator; } wmi_roam_frame_info; typedef enum { diff --git a/fw/wmi_version.h b/fw/wmi_version.h index f0cea44db1bf..d5688900ce2f 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -37,7 +37,7 @@ #define __WMI_VER_MINOR_ 0 /** WMI revision number has to be incremented when there is a * change that may or may not break compatibility. */ -#define __WMI_REVISION_ 1142 +#define __WMI_REVISION_ 1143 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 14695cc293b610565b77e70c8aee57b6d773aa25 Mon Sep 17 00:00:00 2001 From: spuligil Date: Thu, 14 Apr 2022 10:33:44 -0700 Subject: [PATCH 27/38] fw-api: CL 17793582 - update fw common interface files Change-Id: I9b7b7df6cb9b41f9cdbff1b4324e040c3aa8b87f HTT: add rx_hdr_len bitfield to H2T RX_RING_SELECTION_CFG msg CRs-Fixed: 2262693 --- fw/htt.h | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/fw/htt.h b/fw/htt.h index ea0d9e33ce9e..665ce2acfc02 100644 --- a/fw/htt.h +++ b/fw/htt.h @@ -5585,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 @@ -5723,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; @@ -5886,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 @@ -6660,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); \ From bc9846320f341ec9af0fbd5770d67a5b814b68f5 Mon Sep 17 00:00:00 2001 From: spuligil Date: Thu, 14 Apr 2022 10:43:31 -0700 Subject: [PATCH 28/38] fw-api: CL 17808556 - update fw common interface files Change-Id: Ibcb346cdcb3772775d356f5b241864edecfaaccc WMI: VDEV_LATENCY_LEVEL_EVENT msg def CRs-Fixed: 2262693 --- fw/wmi_services.h | 1 + fw/wmi_tlv_defs.h | 7 ++++ fw/wmi_unified.h | 93 +++++++++++++++++++++++++++++++++++++++-------- fw/wmi_version.h | 2 +- 4 files changed, 86 insertions(+), 17 deletions(-) diff --git a/fw/wmi_services.h b/fw/wmi_services.h index 40f9db0829ed..b5fd37e15afb 100644 --- a/fw/wmi_services.h +++ b/fw/wmi_services.h @@ -585,6 +585,7 @@ typedef enum { 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_MAX_EXT2_SERVICE diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index 9ac19257bf63..b91810c142bc 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1264,6 +1264,7 @@ typedef enum { 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_ID; /* @@ -2042,6 +2043,7 @@ typedef enum { 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 */ @@ -6681,6 +6683,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) \ diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 3f045107e5e6..4cbce8fc9853 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -1695,6 +1695,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 */ @@ -13973,6 +13975,35 @@ 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 */ + /*=== ADD NEW VDEV PARAM TYPES ABOVE THIS LINE === * The below vdev param types are used for prototyping, and are @@ -32290,6 +32321,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 * @@ -32402,31 +32441,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 */ diff --git a/fw/wmi_version.h b/fw/wmi_version.h index d5688900ce2f..de8829f104fd 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -37,7 +37,7 @@ #define __WMI_VER_MINOR_ 0 /** WMI revision number has to be incremented when there is a * change that may or may not break compatibility. */ -#define __WMI_REVISION_ 1143 +#define __WMI_REVISION_ 1144 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 028e554fff4f01bd1eeee3973a59afc188f93b0e Mon Sep 17 00:00:00 2001 From: spuligil Date: Mon, 18 Apr 2022 03:17:26 -0700 Subject: [PATCH 29/38] fw-api: CL 17844331 - update fw common interface files MLO shmem: add 2nd version of mgmt_rx_reo_snapshot Change-Id: Ieb5aa7371f523c2aa007b3cbf73c422c2027021a CRs-Fixed: 2262693 --- fw/wlan_defs.h | 201 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 199 insertions(+), 2 deletions(-) diff --git a/fw/wlan_defs.h b/fw/wlan_defs.h index f39cc7cc66df..f2afdca04ce7 100755 --- a/fw/wlan_defs.h +++ b/fw/wlan_defs.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2016, 2018-2021 The Linux Foundation. All rights reserved.* + * Copyright (c) 2013-2016, 2018-20222The Linux Foundation. All rights reserved.* * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * @@ -1313,7 +1313,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 +1357,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 +1430,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 +1628,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 +1650,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 From a1ffefdda2bd02a9c8f4ff064812c3066f65feda Mon Sep 17 00:00:00 2001 From: spuligil Date: Mon, 18 Apr 2022 04:22:09 -0700 Subject: [PATCH 30/38] fw-api: CL 17844347 - update fw common interface files Change-Id: Ic72c034a0b6f3bc7966ed414cdc7a14184e3362b WMI: add rx mgmt frm duration and timestamp fields CRs-Fixed: 2262693 --- fw/wmi_unified.h | 4 ++++ fw/wmi_version.h | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 4cbce8fc9853..f1d8c966ef81 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -5617,6 +5617,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 */ @@ -5646,6 +5648,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 */ diff --git a/fw/wmi_version.h b/fw/wmi_version.h index de8829f104fd..e9084c902fbf 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -37,7 +37,7 @@ #define __WMI_VER_MINOR_ 0 /** WMI revision number has to be incremented when there is a * change that may or may not break compatibility. */ -#define __WMI_REVISION_ 1144 +#define __WMI_REVISION_ 1145 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From aebfff53f2ef48d0bb6c13cdd617576d00251f2c Mon Sep 17 00:00:00 2001 From: spuligil Date: Mon, 18 Apr 2022 04:22:43 -0700 Subject: [PATCH 31/38] fw-api: CL 17845264 - update fw common interface files HTT stats: rx leak counters Change-Id: Id8a64408a16196183c23d8671961697149f200ff CRs-Fixed: 2262693 --- fw/htt_stats.h | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/fw/htt_stats.h b/fw/htt_stats.h index c7c19e390044..a565b19b03da 100644 --- a/fw/htt_stats.h +++ b/fw/htt_stats.h @@ -1038,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 { From 8fb8d70f4ac8bd3107f9e27e16a98393ea1886cd Mon Sep 17 00:00:00 2001 From: spuligil Date: Mon, 18 Apr 2022 04:23:14 -0700 Subject: [PATCH 32/38] fw-api: CL 17848238 - update fw common interface files HTT stats: add punc_pattern_bitmap field in ppdu_stats_user_rate TLV Change-Id: I86168bf8d84a7306407f291a496fcdac60fc2351 CRs-Fixed: 2262693 --- fw/htt_ppdu_stats.h | 145 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 142 insertions(+), 3 deletions(-) diff --git a/fw/htt_ppdu_stats.h b/fw/htt_ppdu_stats.h index ca52aef4b360..2e5f4d48053c 100644 --- a/fw/htt_ppdu_stats.h +++ b/fw/htt_ppdu_stats.h @@ -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 From 1851893b25c953a851be3e8256e3afe1cc7d5e85 Mon Sep 17 00:00:00 2001 From: spuligil Date: Tue, 19 Apr 2022 12:01:14 -0700 Subject: [PATCH 33/38] fw-api: CL 17879597 - update fw common interface files Change-Id: Ic5c2fd141717c51cec0740cbeecbee1e0765e326 WMI: add PEER_TID_TO_LINK_MAP_CMD msg def CRs-Fixed: 2262693 --- fw/wmi_tlv_defs.h | 13 ++++++- fw/wmi_unified.h | 87 +++++++++++++++++++++++++++++++++++++++++++++++ fw/wmi_version.h | 2 +- 3 files changed, 100 insertions(+), 2 deletions(-) diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index b91810c142bc..acabf2831a55 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1265,6 +1265,9 @@ typedef enum { 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; /* @@ -1758,6 +1761,7 @@ typedef enum { 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 */ @@ -2530,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); @@ -4904,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) \ diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index f1d8c966ef81..ca83f9a7b7ca 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -1460,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 */ @@ -16222,6 +16224,31 @@ typedef struct { 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 */ @@ -16363,6 +16390,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; @@ -31318,6 +31346,7 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command) 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"; @@ -37965,6 +37994,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 diff --git a/fw/wmi_version.h b/fw/wmi_version.h index e9084c902fbf..c3d111134963 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -37,7 +37,7 @@ #define __WMI_VER_MINOR_ 0 /** WMI revision number has to be incremented when there is a * change that may or may not break compatibility. */ -#define __WMI_REVISION_ 1145 +#define __WMI_REVISION_ 1146 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From afa6b3414e447622c53fe9f0ba20df8131c3c514 Mon Sep 17 00:00:00 2001 From: spuligil Date: Thu, 21 Apr 2022 12:01:13 -0700 Subject: [PATCH 34/38] fw-api: CL 17913125 - update fw common interface files HTT stats: add rx_mcs_ext field to rx_pdev_rate_stats TLV Change-Id: Iaa172cd954f0fd3b82fc8215a3adf04911f5cb9d CRs-Fixed: 2262693 --- fw/htt_stats.h | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/fw/htt_stats.h b/fw/htt_stats.h index a565b19b03da..b713cbc6386b 100644 --- a/fw/htt_stats.h +++ b/fw/htt_stats.h @@ -4986,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 From ec7902e539bc2d371c1793cf801776f5a4bdf0ac Mon Sep 17 00:00:00 2001 From: spuligil Date: Fri, 22 Apr 2022 18:01:03 -0700 Subject: [PATCH 35/38] fw-api: CL 17913152 - update fw common interface files Change-Id: I0fd5c790e069c908f4a3a5b7e0bc20d7cc890093 WMI: add num_max_active_vdevs in INIT_CMD and READY_EVENT msgs CRs-Fixed: 2262693 --- fw/wmi_unified.h | 20 +++++++++++++++++++- fw/wmi_version.h | 2 +- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index ca83f9a7b7ca..44565279dac0 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -3454,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]; @@ -4335,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) \ @@ -11994,7 +12003,8 @@ typedef struct { 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 */ emlsr_support:1, /* indicate that eMLSR is supported */ - unused: 25; + mlo_force_link_inactive:1, /* indicate this link is forced inactive */ + unused: 24; }; A_UINT32 mlo_flags; }; @@ -14010,6 +14020,14 @@ typedef enum { */ 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 diff --git a/fw/wmi_version.h b/fw/wmi_version.h index c3d111134963..da068781770b 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -37,7 +37,7 @@ #define __WMI_VER_MINOR_ 0 /** WMI revision number has to be incremented when there is a * change that may or may not break compatibility. */ -#define __WMI_REVISION_ 1146 +#define __WMI_REVISION_ 1147 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From d48ff7f8b0a088f55136a0f985d99dafb7b94c40 Mon Sep 17 00:00:00 2001 From: spuligil Date: Fri, 22 Apr 2022 18:01:35 -0700 Subject: [PATCH 36/38] fw-api: CL 17935445 - update fw common interface files Change-Id: I979b961d7f8c9988183fea845acbe29a07a5bc20 WMI: AFC payload clear counter + AFC_CMD_TYPE CRs-Fixed: 2262693 --- fw/wmi_services.h | 1 + fw/wmi_unified.h | 5 +++++ fw/wmi_version.h | 2 +- 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/fw/wmi_services.h b/fw/wmi_services.h index b5fd37e15afb..89a217faf3f8 100644 --- a/fw/wmi_services.h +++ b/fw/wmi_services.h @@ -586,6 +586,7 @@ typedef enum { 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 diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 44565279dac0..10728000b880 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -11462,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 { @@ -31422,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 */ diff --git a/fw/wmi_version.h b/fw/wmi_version.h index da068781770b..32d4ffb405df 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -37,7 +37,7 @@ #define __WMI_VER_MINOR_ 0 /** WMI revision number has to be incremented when there is a * change that may or may not break compatibility. */ -#define __WMI_REVISION_ 1147 +#define __WMI_REVISION_ 1148 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 47329d822a5f1d016e3466ff36b9939b13cf06d0 Mon Sep 17 00:00:00 2001 From: spuligil Date: Mon, 25 Apr 2022 00:02:38 -0700 Subject: [PATCH 37/38] fw-api: CL 17946727 - update fw common interface files Update the copyright header comment on wlan_defs.h to have QUIC as the copyright holder for 2022 Change-Id: I5db48a5db9bf30928be7499f5cb5349cb9f2b208 CRs-Fixed: 3180263 --- fw/wlan_defs.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/fw/wlan_defs.h b/fw/wlan_defs.h index f2afdca04ce7..b2f5bcb5dc68 100755 --- a/fw/wlan_defs.h +++ b/fw/wlan_defs.h @@ -1,5 +1,6 @@ /* - * Copyright (c) 2013-2016, 2018-20222The 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. * From 914d261132316a864d7d61b3ad2a3efae3cf0ea3 Mon Sep 17 00:00:00 2001 From: spuligil Date: Mon, 25 Apr 2022 00:08:48 -0700 Subject: [PATCH 38/38] fw-api: CL 17951131 - update fw common interface files HTT stats: add probe_cnt_per_rcmode to tx_rate_stats_per TLV Change-Id: I93d71e6dd35039c252f07e0a636973ba4d823cf0 CRs-Fixed: 2262693 --- fw/htt_stats.h | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/fw/htt_stats.h b/fw/htt_stats.h index b713cbc6386b..838e332342ca 100644 --- a/fw/htt_stats.h +++ b/fw/htt_stats.h @@ -6016,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 { @@ -6537,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; @@ -6558,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: