From 7b0af5dc8d3d372ee13f82378f24afe4d752a34c Mon Sep 17 00:00:00 2001 From: spuligil Date: Wed, 18 Sep 2024 12:01:23 -0700 Subject: [PATCH 01/54] fw-api: CL 27656641 - update fw common interface files Change-Id: I8fee056be18a4b83c26f566b958e41bd4a307849 CRs-Fixed: 3830439 --- fw/wmi_unified.h | 9 +++++++++ fw/wmi_version.h | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index e1e2d982ecd3..d2d3d2d34719 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -3940,6 +3940,12 @@ typedef struct { /* Total number of "real" max_active_vdevs that FW supports. */ A_UINT32 num_max_active_vdevs; + /** max_num_ml_peers: + * Number of ml_peers for a SOC; used by Host to derive + * max number of peers in the system + */ + A_UINT32 max_num_ml_peers; + /* * This fixed_param TLV is followed by these additional TLVs: * mac_addr_list[num_extra_mac_addr]; @@ -46225,6 +46231,9 @@ typedef struct { A_UINT32 mld_group_id; /** pdev_id for identifying the MAC, See macros starting with WMI_PDEV_ID_ for values. */ A_UINT32 pdev_id; + + A_UINT32 max_num_ml_peers; + /* * Followed by TLVs: * A_UINT32 hw_link_ids[]; diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 7d27c70b84a0..dcc622cc2c4b 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -37,7 +37,7 @@ #define __WMI_VER_MINOR_ 0 /** WMI revision number has to be incremented when there is a * change that may or may not break compatibility. */ -#define __WMI_REVISION_ 1523 +#define __WMI_REVISION_ 1524 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 7493b62ab055fe57c879cb9f34a092bf40aa6b7f Mon Sep 17 00:00:00 2001 From: spuligil Date: Thu, 19 Sep 2024 18:01:24 -0700 Subject: [PATCH 02/54] fw-api: CL 27667035 - update fw common interface files Change-Id: I76d394721cd12cbc8648940129054b6ad0ce97ee CRs-Fixed: 3830439 --- fw/wmi_tlv_defs.h | 14 +++++++++ fw/wmi_unified.h | 79 +++++++++++++++++++++++++++++++++++++++++++++-- fw/wmi_version.h | 2 +- 3 files changed, 92 insertions(+), 3 deletions(-) diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index 161bb7c6f756..b1ddbd0f6e09 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1451,6 +1451,8 @@ typedef enum { WMITLV_TAG_STRUC_wmi_usd_service_event_fixed_param, WMITLV_TAG_STRUC_wmi_vdev_create_wfdr2_mode_params, WMITLV_TAG_STRUC_wmi_pdev_power_boost_event_fixed_param, + WMITLV_TAG_STRUC_wmi_pdev_power_boost_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_pdev_power_boost_mem_addr_cmd_fixed_param, } WMITLV_TAG_ID; /* * IMPORTANT: Please add _ALL_ WMI Commands Here. @@ -2005,6 +2007,8 @@ typedef enum { OP(WMI_P2P_GO_DFS_AP_CONFIG_CMDID) \ OP(WMI_VDEV_REPORT_AP_OPER_BW_CMDID) \ OP(WMI_USD_SERVICE_CMDID) \ + OP(WMI_PDEV_POWER_BOOST_CMDID) \ + OP(WMI_PDEV_POWER_BOOST_MEM_ADDR_CMDID) \ /* add new CMD_LIST elements above this line */ @@ -5668,6 +5672,16 @@ WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_REPORT_AP_OPER_BW_CMDID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, service_specific_info, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_USD_SERVICE_CMDID); +/* WMI cmd used to send Power Boost status update from Host to Target */ +#define WMITLV_TABLE_WMI_PDEV_POWER_BOOST_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_power_boost_cmd_fixed_param, wmi_pdev_power_boost_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_POWER_BOOST_CMDID); + +/* WMI cmd used to exchange the DDR address to the target for Power Boost feature */ +#define WMITLV_TABLE_WMI_PDEV_POWER_BOOST_MEM_ADDR_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_power_boost_mem_addr_cmd_fixed_param, wmi_pdev_power_boost_mem_addr_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_POWER_BOOST_MEM_ADDR_CMDID); + /************************** TLV definitions of WMI events *******************************/ diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index d2d3d2d34719..1c7450f8e33a 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -588,6 +588,13 @@ typedef enum { * WMI cmd to set custom TX power backoff value per band/chain/MCS to PHY. */ WMI_PDEV_SET_CUSTOM_TX_POWER_PER_MCS_CMDID, + /* WMI cmd to send Power Boost status update from Host */ + WMI_PDEV_POWER_BOOST_CMDID, + /** + * WMI cmd to exchange the address of the DDR buffer allocated by the Host + * for Power Boost feature + */ + WMI_PDEV_POWER_BOOST_MEM_ADDR_CMDID, /* VDEV (virtual device) specific commands */ @@ -38155,6 +38162,8 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command) WMI_RETURN_STRING(WMI_SET_AP_SUSPEND_RESUME_CMDID); WMI_RETURN_STRING(WMI_P2P_GO_DFS_AP_CONFIG_CMDID); WMI_RETURN_STRING(WMI_USD_SERVICE_CMDID); + WMI_RETURN_STRING(WMI_PDEV_POWER_BOOST_CMDID); + WMI_RETURN_STRING(WMI_PDEV_POWER_BOOST_MEM_ADDR_CMDID); } return (A_UINT8 *) "Invalid WMI cmd"; @@ -48999,6 +49008,13 @@ typedef enum { WMI_EVENT_POWER_BOOST_MAX } wmi_pdev_power_boost_event_type; +typedef enum { + WMI_PDEV_POWER_BOOST_TS_FIRST_PASS = 0, + WMI_PDEV_POWER_BOOST_TS_SECOND_PASS, + + WMI_PDEV_POWER_BOOST_TS_MAX +} wmi_pdev_power_boost_training_stage; + typedef struct { /* WMITLV_TAG_STRUC_wmi_pdev_power_boost_event_fixed_param */ A_UINT32 tlv_header; @@ -49007,8 +49023,8 @@ typedef struct { /* enum wmi_pdev_power_boost_event_type to update the power boost status */ A_UINT32 status; /* training_stage: - * The training stage such as 1st, 2nd for which the I/Q samples are - * updated in DDR. + * The training stage for which the I/Q samples are updated in DDR. + * This field holds a wmi_pdev_power_boost_training_stage value. */ A_UINT32 training_stage; /* MCS value for which the current DPD training has been done */ @@ -49032,6 +49048,65 @@ typedef struct { A_UINT32 phy_mode; } wmi_pdev_power_boost_event_fixed_param; +typedef enum { + WMI_CMD_POWER_BOOST_READY = 0, + WMI_CMD_POWER_BOOST_ESTIMATED_DATA, + WMI_CMD_POWER_BOOST_ABORT, + + WMI_CMD_POWER_BOOST_MAX +} wmi_pdev_power_boost_cmd_type; + +typedef struct { + /* WMITLV_TAG_STRUC_wmi_pdev_power_boost_cmd_fixed_param */ + A_UINT32 tlv_header; + /* to identify for which pdev the cmd is sent */ + A_UINT32 pdev_id; + /* enum wmi_pdev_power_boost_cmd_type to update the power boost status */ + A_UINT32 status; + /* wmi_pdev_power_boost_training_stage value to indicate training stage */ + A_UINT32 training_stage; + /* MCS value for which the Power Boost training has been done */ + A_UINT32 mcs; + /* Bandwidth in Mhz for which the Power Boost training has been done */ + A_UINT32 bandwidth; + /* current target temperature while training the DPD packet in degree C */ + A_INT32 temperature_degreeC; + /* primary 20 MHz channel frequency in MHz */ + A_UINT32 primary_chan_mhz; + /* Center frequency 1 in MHz*/ + A_UINT32 band_center_freq1; + /* Center frequency 2 in MHz - valid only for 11acvht 80plus80 mode*/ + A_UINT32 band_center_freq2; + /* phy_mode: + * phy mode as listed by enum WLAN_PHY_MODE, for which the current + * Power Boost training has been done. + */ + A_UINT32 phy_mode; + /* tx_evm: + * Tx_evm value as calculated after the Power Boost training, + * in units of 1/4 (0.25dBm) steps. + */ + A_INT32 tx_evm; + /* tx_mask_margin: + * Tx spectral mask margin value as calculated after the Power Boost + * training, in units of 1/4 (0.25dBm) steps. + */ + A_INT32 tx_mask_margin; +} wmi_pdev_power_boost_cmd_fixed_param; + +typedef struct { + /* WMITLV_TAG_STRUC_wmi_pdev_power_boost_mem_addr_cmd_fixed_param */ + A_UINT32 tlv_header; + /* to identify for which pdev the cmd is sent */ + A_UINT32 pdev_id; + /* Lower 32 bit DDR address as allocated by the host */ + A_UINT32 paddr_aligned_lo; + /* Higher 32 bit DDR address as allocated by the host */ + A_UINT32 paddr_aligned_hi; + /* Size of the buffer been allocated by the Host in units of KB */ + A_UINT32 size; +} wmi_pdev_power_boost_mem_addr_cmd_fixed_param; + /* ADD NEW DEFS HERE */ diff --git a/fw/wmi_version.h b/fw/wmi_version.h index dcc622cc2c4b..b5b3479f217e 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_ 1524 +#define __WMI_REVISION_ 1525 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From a1e3d432d63069e5651c746b9c55b05ea213e7a9 Mon Sep 17 00:00:00 2001 From: spuligil Date: Thu, 19 Sep 2024 18:05:53 -0700 Subject: [PATCH 03/54] fw-api: CL 27676646 - update fw common interface files Change-Id: I475fbe5d71fce10db2807bc935eb1517700dc750 CRs-Fixed: 3830439 --- fw/htt_stats.h | 232 +++++++++++++++++++++++++++++++++++-------------- 1 file changed, 167 insertions(+), 65 deletions(-) diff --git a/fw/htt_stats.h b/fw/htt_stats.h index 7dac64221028..6674524e5c4f 100644 --- a/fw/htt_stats.h +++ b/fw/htt_stats.h @@ -363,7 +363,7 @@ enum htt_dbg_ext_stats_type { */ HTT_DBG_EXT_STATS_FSE_RX = 28, - /** HTT_DBG_EXT_PEER_CTRL_PATH_TXRX_STATS + /** HTT_DBG_EXT_STATS_PEER_CTRL_PATH_TXRX * PARAMS: * - config_param0: [Bit0] : [1] for mac_addr based request * - config_param1: [Bit31 : Bit0] mac_addr31to0 @@ -371,7 +371,10 @@ enum htt_dbg_ext_stats_type { * RESP MSG: * - htt_ctrl_path_txrx_stats_t */ - HTT_DBG_EXT_PEER_CTRL_PATH_TXRX_STATS = 29, + HTT_DBG_EXT_STATS_PEER_CTRL_PATH_TXRX = 29, + /* retain the deprecated name as an alias */ + HTT_DBG_EXT_PEER_CTRL_PATH_TXRX_STATS = + HTT_DBG_EXT_STATS_PEER_CTRL_PATH_TXRX, /** HTT_DBG_EXT_STATS_PDEV_RX_RATE_EXT * PARAMS: @@ -393,15 +396,18 @@ enum htt_dbg_ext_stats_type { */ HTT_DBG_EXT_STATS_TXBF_OFDMA = 32, - /** HTT_DBG_EXT_STA_11AX_UL_STATS + /** HTT_DBG_EXT_STATS_STA_11AX_UL * PARAMS: * - No Params * RESP MSG: * - htt_sta_11ax_ul_stats */ - HTT_DBG_EXT_STA_11AX_UL_STATS = 33, + HTT_DBG_EXT_STATS_STA_11AX_UL = 33, + /* retain the deprecated name as an alias */ + HTT_DBG_EXT_STA_11AX_UL_STATS = + HTT_DBG_EXT_STATS_STA_11AX_UL, - /** HTT_DBG_EXT_VDEV_RTT_RESP_STATS + /** HTT_DBG_EXT_STATS_VDEV_RTT_RESP * PARAMS: * - config_param0: * [Bit7 : Bit0] vdev_id:8 @@ -409,61 +415,89 @@ enum htt_dbg_ext_stats_type { * RESP MSG: * - */ - HTT_DBG_EXT_VDEV_RTT_RESP_STATS = 34, + HTT_DBG_EXT_STATS_VDEV_RTT_RESP = 34, + /* retain the deprecated name as an alias */ + HTT_DBG_EXT_VDEV_RTT_RESP_STATS = + HTT_DBG_EXT_STATS_VDEV_RTT_RESP, - /** HTT_DBG_EXT_PKTLOG_AND_HTT_RING_STATS + /** HTT_DBG_EXT_STATS_PKTLOG_AND_HTT_RING * PARAMS: * - No Params * RESP MSG: * - htt_pktlog_and_htt_ring_stats_t */ - HTT_DBG_EXT_PKTLOG_AND_HTT_RING_STATS = 35, + HTT_DBG_EXT_STATS_PKTLOG_AND_HTT_RING = 35, + /* retain the deprecated name as an alias */ + HTT_DBG_EXT_PKTLOG_AND_HTT_RING_STATS = + HTT_DBG_EXT_STATS_PKTLOG_AND_HTT_RING, - /** HTT_DBG_EXT_STATS_DLPAGER_STATS + /** HTT_DBG_EXT_STATS_DLPAGER * PARAMS: * * RESP MSG: * - htt_dlpager_stats_t */ - HTT_DBG_EXT_STATS_DLPAGER_STATS = 36, + HTT_DBG_EXT_STATS_DLPAGER = 36, + /* retain the deprecated name as an alias */ + HTT_DBG_EXT_STATS_DLPAGER_STATS = + HTT_DBG_EXT_STATS_DLPAGER, - /** HTT_DBG_EXT_PHY_COUNTERS_AND_PHY_STATS + /** HTT_DBG_EXT_STATS_PHY * PARAMS: * - No Params * RESP MSG: * - htt_phy_counters_and_phy_stats_t */ - HTT_DBG_EXT_PHY_COUNTERS_AND_PHY_STATS = 37, + HTT_DBG_EXT_STATS_PHY = 37, + /* retain the deprecated name as an alias */ + HTT_DBG_EXT_PHY_COUNTERS_AND_PHY_STATS = + HTT_DBG_EXT_STATS_PHY, - /** HTT_DBG_EXT_VDEVS_TXRX_STATS + /** HTT_DBG_EXT_STATS_VDEVS_TXRX * PARAMS: * - No Params * RESP MSG: * - htt_vdevs_txrx_stats_t */ - HTT_DBG_EXT_VDEVS_TXRX_STATS = 38, + HTT_DBG_EXT_STATS_VDEVS_TXRX = 38, + /* retain the deprecated name as an alias */ + HTT_DBG_EXT_VDEVS_TXRX_STATS = + HTT_DBG_EXT_STATS_VDEVS_TXRX, - HTT_DBG_EXT_VDEV_RTT_INITIATOR_STATS = 39, + HTT_DBG_EXT_STATS_VDEV_RTT_INITIATOR = 39, + /* retain the deprecated name as an alias */ + HTT_DBG_EXT_VDEV_RTT_INITIATOR_STATS = + HTT_DBG_EXT_STATS_VDEV_RTT_INITIATOR, - /** HTT_DBG_EXT_PDEV_PER_STATS + /** HTT_DBG_EXT_STATS_PDEV_PER * PARAMS: * - No Params * RESP MSG: * - htt_tx_pdev_per_stats_t */ - HTT_DBG_EXT_PDEV_PER_STATS = 40, + HTT_DBG_EXT_STATS_PDEV_PER = 40, + /* retain the deprecated name as an alias */ + HTT_DBG_EXT_PDEV_PER_STATS = + HTT_DBG_EXT_STATS_PDEV_PER, - HTT_DBG_EXT_AST_ENTRIES = 41, + HTT_DBG_EXT_STATS_AST_ENTRIES = 41, + /* retain the deprecated name as an alias */ + HTT_DBG_EXT_AST_ENTRIES = + HTT_DBG_EXT_STATS_AST_ENTRIES, - /** HTT_DBG_EXT_RX_RING_STATS + /** HTT_DBG_EXT_STATS_RX_RING * PARAMS: * - No Params * RESP MSG: * - htt_rx_fw_ring_stats_tlv_v */ - HTT_DBG_EXT_RX_RING_STATS = 42, + HTT_DBG_EXT_STATS_RX_RING = 42, + /* retain the deprecated name as an alias */ + HTT_DBG_EXT_RX_RING_STATS = + HTT_DBG_EXT_STATS_RX_RING, - /** HTT_STRM_GEN_MPDUS_STATS, HTT_STRM_GEN_MPDUS_DETAILS_STATS + /** HTT_DBG_EXT_STATS_STRM_GEN_MPDUS, + * HTT_DBG_EXT_STATS_STRM_GEN_MPDUS_DETAILS * PARAMS: * - No params * RESP MSG: HTT_T2H STREAMING_STATS_IND (not EXT_STATS_CONF) @@ -472,25 +506,36 @@ enum htt_dbg_ext_stats_type { * - HTT_STRM_GEN_MPDUS_DETAILS_STATS: * htt_stats_strm_gen_mpdus_details_tlv_t */ - HTT_STRM_GEN_MPDUS_STATS = 43, - HTT_STRM_GEN_MPDUS_DETAILS_STATS = 44, + HTT_DBG_EXT_STATS_STRM_GEN_MPDUS = 43, + HTT_DBG_EXT_STATS_STRM_GEN_MPDUS_DETAILS = 44, + /* retain the deprecated names as aliases */ + HTT_STRM_GEN_MPDUS_STATS = + HTT_DBG_EXT_STATS_STRM_GEN_MPDUS, + HTT_STRM_GEN_MPDUS_DETAILS_STATS = + HTT_DBG_EXT_STATS_STRM_GEN_MPDUS_DETAILS, - /** HTT_DBG_SOC_ERROR_STATS + /** HTT_DBG_EXT_STATS_SOC_ERROR * PARAMS: * - No Params * RESP MSG: * - htt_dmac_reset_stats_tlv */ - HTT_DBG_SOC_ERROR_STATS = 45, + HTT_DBG_EXT_STATS_SOC_ERROR = 45, + /* retain the deprecated name as an alias */ + HTT_DBG_SOC_ERROR_STATS = + HTT_DBG_EXT_STATS_SOC_ERROR, - /** HTT_DBG_PDEV_PUNCTURE_STATS + /** HTT_DBG_EXT_STATS_PDEV_PUNCTURE * PARAMS: * - param 0: enum from htt_tx_pdev_puncture_stats_upload_t, indicating * the stats to upload * RESP MSG: * - one or more htt_pdev_puncture_stats_tlv, depending on param 0 */ - HTT_DBG_PDEV_PUNCTURE_STATS = 46, + HTT_DBG_EXT_STATS_PDEV_PUNCTURE = 46, + /* retain the deprecated name as an alias */ + HTT_DBG_PDEV_PUNCTURE_STATS = + HTT_DBG_EXT_STATS_PDEV_PUNCTURE, /** HTT_DBG_EXT_STATS_ML_PEERS_INFO * PARAMS: @@ -504,44 +549,59 @@ enum htt_dbg_ext_stats_type { */ HTT_DBG_EXT_STATS_ML_PEERS_INFO = 47, - /** HTT_DBG_ODD_MANDATORY_STATS + /** HTT_DBG_EXT_STATS_ODD_MANDATORY * params: * None * Response MSG: * htt_odd_mandatory_pdev_stats_tlv */ - HTT_DBG_ODD_MANDATORY_STATS = 48, + HTT_DBG_EXT_STATS_ODD_MANDATORY = 48, + /* retain the deprecated name as an alias */ + HTT_DBG_ODD_MANDATORY_STATS = + HTT_DBG_EXT_STATS_ODD_MANDATORY, - /** HTT_DBG_PDEV_SCHED_ALGO_STATS + /** HTT_DBG_EXT_STATS_PDEV_SCHED_ALGO * PARAMS: * - No Params * RESP MSG: * - htt_pdev_sched_algo_ofdma_stats_tlv */ - HTT_DBG_PDEV_SCHED_ALGO_STATS = 49, + HTT_DBG_EXT_STATS_PDEV_SCHED_ALGO = 49, + /* retain the deprecated name as an alias */ + HTT_DBG_PDEV_SCHED_ALGO_STATS = + HTT_DBG_EXT_STATS_PDEV_SCHED_ALGO, - /** HTT_DBG_ODD_MANDATORY_MUMIMO_STATS + /** HTT_DBG_EXT_STATS_ODD_MANDATORY_MUMIMO * params: * None * Response MSG: * htt_odd_mandatory_mumimo_pdev_stats_tlv */ - HTT_DBG_ODD_MANDATORY_MUMIMO_STATS = 50, - /** HTT_DBG_ODD_MANDATORY_MUOFDMA_STATS + HTT_DBG_EXT_STATS_ODD_MANDATORY_MUMIMO = 50, + /* retain the deprecated name as an alias */ + HTT_DBG_ODD_MANDATORY_MUMIMO_STATS = + HTT_DBG_EXT_STATS_ODD_MANDATORY_MUMIMO, + /** HTT_DBG_EXT_STATS_ODD_MANDATORY_MUOFDMA * params: * None * Response MSG: * htt_odd_mandatory_muofdma_pdev_stats_tlv */ - HTT_DBG_ODD_MANDATORY_MUOFDMA_STATS = 51, + HTT_DBG_EXT_STATS_ODD_MANDATORY_MUOFDMA = 51, + /* retain the deprecated name as an alias */ + HTT_DBG_ODD_MANDATORY_MUOFDMA_STATS = + HTT_DBG_EXT_STATS_ODD_MANDATORY_MUOFDMA, - /** HTT_DBG_EXT_PHY_PROF_CAL_STATS + /** HTT_DBG_EXT_STATS_PHY_PROF_CAL * params: * None * Response MSG: * htt_stats_latency_prof_cal_data_tlv */ - HTT_DBG_EXT_PHY_PROF_CAL_STATS = 52, + HTT_DBG_EXT_STATS_PHY_PROF_CAL = 52, + /* retain the deprecated name as an alias */ + HTT_DBG_EXT_PHY_PROF_CAL_STATS = + HTT_DBG_EXT_STATS_PHY_PROF_CAL, /** HTT_DBG_EXT_STATS_PDEV_BW_MGR * PARAMS: @@ -551,94 +611,127 @@ enum htt_dbg_ext_stats_type { */ HTT_DBG_EXT_STATS_PDEV_BW_MGR = 53, - /** HTT_DBG_PDEV_MBSSID_CTRL_FRAME_STATS + /** HTT_DBG_EXT_STATS_PDEV_MBSSID_CTRL_FRAME * PARAMS: * - No Params * RESP MSG: * - htt_pdev_mbssid_ctrl_frame_stats */ - HTT_DBG_PDEV_MBSSID_CTRL_FRAME_STATS = 54, + HTT_DBG_EXT_STATS_PDEV_MBSSID_CTRL_FRAME = 54, + /* retain the deprecated name as an alias */ + HTT_DBG_PDEV_MBSSID_CTRL_FRAME_STATS = + HTT_DBG_EXT_STATS_PDEV_MBSSID_CTRL_FRAME, - /** HTT_DBG_SOC_SSR_STATS + /** HTT_DBG_EXT_STATS_SOC_SSR * Used for non-MLO UMAC recovery stats. * PARAMS: * - No Params * RESP MSG: * - htt_umac_ssr_stats_tlv */ - HTT_DBG_SOC_SSR_STATS = 55, + HTT_DBG_EXT_STATS_SOC_SSR = 55, + /* retain the deprecated name as an alias */ + HTT_DBG_SOC_SSR_STATS = + HTT_DBG_EXT_STATS_SOC_SSR, - /** HTT_DBG_MLO_UMAC_SSR_STATS + /** HTT_DBG_EXT_STATS_MLO_UMAC_SSR * Used for MLO UMAC recovery stats. * PARAMS: * - No Params * RESP MSG: * - htt_mlo_umac_ssr_stats_tlv */ - HTT_DBG_MLO_UMAC_SSR_STATS = 56, + HTT_DBG_EXT_STATS_MLO_UMAC_SSR = 56, + /* retain the deprecated name as an alias */ + HTT_DBG_MLO_UMAC_SSR_STATS = + HTT_DBG_EXT_STATS_MLO_UMAC_SSR, - /** HTT_DBG_PDEV_TDMA_STATS + /** HTT_DBG_EXT_STATS_PDEV_TDMA * PARAMS: * - No Params * RESP MSG: * - htt_pdev_tdma_stats_tlv */ - HTT_DBG_PDEV_TDMA_STATS = 57, + HTT_DBG_EXT_STATS_PDEV_TDMA = 57, + /* retain the deprecated name as an alias */ + HTT_DBG_PDEV_TDMA_STATS = + HTT_DBG_EXT_STATS_PDEV_TDMA, - /** HTT_DBG_CODEL_STATS + /** HTT_DBG_EXT_STATS_CODEL * PARAMS: * - No Params * RESP MSG: * - htt_codel_svc_class_stats_tlv * - htt_codel_msduq_stats_tlv */ - HTT_DBG_CODEL_STATS = 58, + HTT_DBG_EXT_STATS_CODEL = 58, + /* retain the deprecated name as an alias */ + HTT_DBG_CODEL_STATS = + HTT_DBG_EXT_STATS_CODEL, - /** HTT_DBG_ODD_PDEV_BE_TX_MU_OFDMA_STATS + /** HTT_DBG_EXT_STATS_ODD_PDEV_BE_TX_MU_OFDMA * PARAMS: * - No Params * RESP MSG: * - htt_tx_pdev_mpdu_stats_tlv */ - HTT_DBG_ODD_PDEV_BE_TX_MU_OFDMA_STATS = 59, + HTT_DBG_EXT_STATS_ODD_PDEV_BE_TX_MU_OFDMA = 59, + /* retain the deprecated name as an alias */ + HTT_DBG_ODD_PDEV_BE_TX_MU_OFDMA_STATS = + HTT_DBG_EXT_STATS_ODD_PDEV_BE_TX_MU_OFDMA, - /** HTT_DBG_EXT_STATS_PDEV_UL_TRIGGER + /** HTT_DBG_EXT_STATS_ODD_UL_BE_OFDMA * PARAMS: * - No Params * RESP MSG: * - htt_rx_pdev_be_ul_ofdma_user_stats_tlv */ - HTT_DBG_ODD_UL_BE_OFDMA_STATS = 60, + HTT_DBG_EXT_STATS_ODD_UL_BE_OFDMA = 60, + /* retain the deprecated name as an alias */ + HTT_DBG_ODD_UL_BE_OFDMA_STATS = + HTT_DBG_EXT_STATS_ODD_UL_BE_OFDMA, - /** HTT_DBG_ODD_BE_TXBF_OFDMA_STATS + /** HTT_DBG_EXT_STATS_ODD_BE_TXBF_OFDMA */ - HTT_DBG_ODD_BE_TXBF_OFDMA_STATS = 61, + HTT_DBG_EXT_STATS_ODD_BE_TXBF_OFDMA = 61, + /* retain the deprecated name as an alias */ + HTT_DBG_ODD_BE_TXBF_OFDMA_STATS = + HTT_DBG_EXT_STATS_ODD_BE_TXBF_OFDMA, - /** HTT_DBG_ODD_STATS_PDEV_BE_UL_MUMIMO_TRIG_STATS + /** HTT_DBG_EXT_STATS_ODD_STATS_PDEV_BE_UL_MUMIMO_TRIG * PARAMS: * - No Params * RESP MSG: * - htt_rx_pdev_be_ul_ofdma_user_stats_tlv */ - HTT_DBG_ODD_STATS_PDEV_BE_UL_MUMIMO_TRIG_STATS = 62, + HTT_DBG_EXT_STATS_ODD_STATS_PDEV_BE_UL_MUMIMO_TRIG = 62, + /* retain the deprecated name as an alias */ + HTT_DBG_ODD_STATS_PDEV_BE_UL_MUMIMO_TRIG_STATS = + HTT_DBG_EXT_STATS_ODD_STATS_PDEV_BE_UL_MUMIMO_TRIG, - /** HTT_DBG_MLO_SCHED_STATS + /** HTT_DBG_EXT_STATS_MLO_SCHED * PARAMS: * - No Params * RESP MSG: * - htt_pdev_mlo_sched_stats_tlv */ - HTT_DBG_MLO_SCHED_STATS = 63, + HTT_DBG_EXT_STATS_MLO_SCHED = 63, + /* retain the deprecated name as an alias */ + HTT_DBG_MLO_SCHED_STATS = + HTT_DBG_EXT_STATS_MLO_SCHED, - /** HTT_DBG_PDEV_MLO_IPC_STATS + /** HTT_DBG_EXT_STATS_PDEV_MLO_IPC * PARAMS: * - No Params * RESP MSG: * - htt_pdev_mlo_ipc_stats_tlv */ - HTT_DBG_PDEV_MLO_IPC_STATS = 64, + HTT_DBG_EXT_STATS_PDEV_MLO_IPC = 64, + /* retain the deprecated name as an alias */ + HTT_DBG_PDEV_MLO_IPC_STATS = + HTT_DBG_EXT_STATS_PDEV_MLO_IPC, - /** HTT_DBG_EXT_PDEV_RTT_RESP_STATS + /** HTT_DBG_EXT_STATS_PDEV_RTT_RESP * PARAMS: * - No Params * RESP MSG: @@ -647,16 +740,22 @@ enum htt_dbg_ext_stats_type { * - htt_stats_pdev_rtt_tbr_selfgen_queued_stats_tlv * - htt_stats_pdev_rtt_tbr_cmd_result_stats_tlv */ - HTT_DBG_EXT_PDEV_RTT_RESP_STATS = 65, + HTT_DBG_EXT_STATS_PDEV_RTT_RESP = 65, + /* retain the deprecated name as an alias */ + HTT_DBG_EXT_PDEV_RTT_RESP_STATS = + HTT_DBG_EXT_STATS_PDEV_RTT_RESP, - /** HTT_DBG_EXT_PDEV_RTT_INITIATOR_STATS + /** HTT_DBG_EXT_STATS_PDEV_RTT_INITIATOR * PARAMS: * - No Params * RESP MSG: * - htt_stats_pdev_rtt_init_stats_tlv * - htt_stats_pdev_rtt_hw_stats_tlv */ - HTT_DBG_EXT_PDEV_RTT_INITIATOR_STATS = 66, + HTT_DBG_EXT_STATS_PDEV_RTT_INITIATOR = 66, + /* retain the deprecated name as an alias */ + HTT_DBG_EXT_PDEV_RTT_INITIATOR_STATS = + HTT_DBG_EXT_STATS_PDEV_RTT_INITIATOR, /** HTT_DBG_EXT_STATS_LATENCY_PROF_STATS_LO * PARAMS: @@ -668,13 +767,16 @@ enum htt_dbg_ext_stats_type { */ HTT_DBG_EXT_STATS_LATENCY_PROF_STATS_LO = 67, - /** HTT_DBG_GTX_STATS + /** HTT_DBG_EXT_STATS_GTX * PARAMS: * - No Params * RESP MSG: * - htt_pdev_gtx_stats_tlv */ - HTT_DBG_GTX_STATS = 68, + HTT_DBG_EXT_STATS_GTX = 68, + /* retain the deprecated name as an alias */ + HTT_DBG_GTX_STATS = + HTT_DBG_EXT_STATS_GTX, /** HTT_DBG_EXT_STATS_TX_VDEV_NSS * PARAMS: From 627d7b19733c6fc4176ef7eb1eac465ce0c33686 Mon Sep 17 00:00:00 2001 From: spuligil Date: Thu, 19 Sep 2024 18:04:25 -0700 Subject: [PATCH 04/54] fw-api: CL 27676510 - update fw common interface files Change-Id: I840de4bd97051bf71dcc72411a941417e31d7081 CRs-Fixed: 3830439 --- fw/htt.h | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/fw/htt.h b/fw/htt.h index 3273beb9e331..a45735e9db34 100644 --- a/fw/htt.h +++ b/fw/htt.h @@ -264,9 +264,10 @@ * 3.134 Add qdata_refill flag in rx_peer_metadata_v1a. * 3.135 Add HTT_HOST4_TO_FW_RXBUF_RING def. * 3.136 Add htt_ext_present flag in htt_tx_tcl_global_seq_metadata. + * 3.137 Add more HTT_SDWF_MSDUQ_CFG_IND_ERROR codes. */ #define HTT_CURRENT_VERSION_MAJOR 3 -#define HTT_CURRENT_VERSION_MINOR 136 +#define HTT_CURRENT_VERSION_MINOR 137 #define HTT_NUM_TX_FRAG_DESC 1024 @@ -23096,15 +23097,18 @@ typedef struct _htt_tx_latency_stats { /* HTT_T2H_MSG_TYPE_SDWF_MSDUQ_CFG_IND */ typedef enum { - HTT_SDWF_MSDUQ_CFG_IND_ERROR_NONE = 0x00, - HTT_SDWF_MSDUQ_CFG_IND_ERROR_PEER_DELETE_IN_PROG = 0x01, - HTT_SDWF_MSDUQ_CFG_IND_ERROR_SW_MSDUQ_NULL = 0x02, - HTT_SDWF_MSDUQ_CFG_IND_ERROR_MSDUQ_LOCATE_ERROR = 0x03, - HTT_SDWF_MSDUQ_CFG_IND_ERROR_QPEER_NULL = 0x04, - HTT_SDWF_MSDUQ_CFG_IND_ERROR_DEACTIVATED_MSDUQ = 0x05, - HTT_SDWF_MSDUQ_CFG_IND_ERROR_REACTIVATED_MSDUQ = 0x06, - HTT_SDWF_MSDUQ_CFG_IND_ERROR_INVALID_SVC_CLASS = 0x07, - HTT_SDWF_MSDUQ_CFG_IND_ERROR_TIDQ_LOCATE_ERROR = 0x08, + HTT_SDWF_MSDUQ_CFG_IND_ERROR_NONE = 0x00, + HTT_SDWF_MSDUQ_CFG_IND_ERROR_PEER_DELETE_IN_PROG = 0x01, + HTT_SDWF_MSDUQ_CFG_IND_ERROR_SW_MSDUQ_NULL = 0x02, + HTT_SDWF_MSDUQ_CFG_IND_ERROR_MSDUQ_LOCATE_ERROR = 0x03, + HTT_SDWF_MSDUQ_CFG_IND_ERROR_QPEER_NULL = 0x04, + HTT_SDWF_MSDUQ_CFG_IND_ERROR_DEACTIVATED_MSDUQ = 0x05, + HTT_SDWF_MSDUQ_CFG_IND_ERROR_REACTIVATED_MSDUQ = 0x06, + HTT_SDWF_MSDUQ_CFG_IND_ERROR_INVALID_SVC_CLASS = 0x07, + HTT_SDWF_MSDUQ_CFG_IND_ERROR_TIDQ_LOCATE_ERROR = 0x08, + HTT_SDWF_MSDUQ_CFG_IND_ERROR_INCORRECT_SVC_CLASS = 0x09, + HTT_SDWF_MSDUQ_CFG_IND_ERROR_DISABLED_SVC_CLASS = 0x0a, + HTT_SDWF_MSDUQ_CFG_IND_ERROR_SVC_CLASS_OUT_OF_RANGE = 0x0b, } HTT_SDWF_MSDUQ_CFG_IND_ERROR_CODE_E; PREPACK struct htt_t2h_sdwf_msduq_cfg_ind { From 55b9bd2fc96d2046d8474cf90889eec2ae389492 Mon Sep 17 00:00:00 2001 From: spuligil Date: Thu, 19 Sep 2024 18:02:56 -0700 Subject: [PATCH 05/54] fw-api: CL 27676361 - update fw common interface files Change-Id: Iecdaf350a2c158b2e1385034bb06f488ca9f0bf4 CRs-Fixed: 3830439 --- 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 1c7450f8e33a..daea0f5716a0 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -41515,6 +41515,9 @@ typedef struct { #define WMI_MLO_LINK_INFO_GET_IEEE_LINK_ID(link_info) WMI_GET_BITS(link_info, 10, 4) #define WMI_MLO_LINK_INFO_SET_IEEE_LINK_ID(link_info, val) WMI_SET_BITS(link_info, 10, 4, val) +#define WMI_MLO_LINK_INFO_GET_FREQ(link_info) WMI_GET_BITS(link_info, 14, 16) +#define WMI_MLO_LINK_INFO_SET_FREQ(link_info, val) WMI_SET_BITS(link_info, 14, 16, val) + typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_mlo_link_info_tlv_param */ wmi_mac_addr link_addr; @@ -41527,6 +41530,7 @@ typedef struct { * 1 - rejected * b[7-9] : Band - link band info (band value is from wmi_mlo_band_info) * b[10-13] : IEEE link id - Link id associated with AP + * b[14-29] : Frequency - Link channel frequency in MHz units */ } wmi_mlo_link_info; diff --git a/fw/wmi_version.h b/fw/wmi_version.h index b5b3479f217e..ce5996da9f09 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_ 1525 +#define __WMI_REVISION_ 1526 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 56612edff363608fd16ee29571731a3b875f1e50 Mon Sep 17 00:00:00 2001 From: Pragaspathi Thilagaraj Date: Wed, 25 Sep 2024 06:01:21 -0700 Subject: [PATCH 06/54] fw-api: CL 27688085 - update fw common interface files Change-Id: I6615d782d55c62d7e886c3c0f6717f4380d93f56 CRs-Fixed: 3830439 --- fw/wmi_unified.h | 16 +++++++++------- fw/wmi_version.h | 2 +- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index daea0f5716a0..f24a73a970a5 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -48937,13 +48937,15 @@ typedef struct { #define WMI_PEER_ACTIVE_TRAFFIC_TYPE_BACKGROUND_S 2 /* bits 3-15 are reserved for new non-interactive traffic types */ -#define WMI_PEER_ACTIVE_TRAFFIC_TYPE_GAMING_M 0x00010000 -#define WMI_PEER_ACTIVE_TRAFFIC_TYPE_GAMING_S 16 -#define WMI_PEER_ACTIVE_TRAFFIC_TYPE_VOIP_M 0x00020000 -#define WMI_PEER_ACTIVE_TRAFFIC_TYPE_VOIP_S 17 -#define WMI_PEER_ACTIVE_TRAFFIC_TYPE_VIDEO_CONF_M 0x00040000 -#define WMI_PEER_ACTIVE_TRAFFIC_TYPE_VIDEO_CONF_S 18 -/* bits 19-31 are reserved for new interactive traffic types */ +#define WMI_PEER_ACTIVE_TRAFFIC_TYPE_GAMING_M 0x00010000 +#define WMI_PEER_ACTIVE_TRAFFIC_TYPE_GAMING_S 16 +#define WMI_PEER_ACTIVE_TRAFFIC_TYPE_VOIP_M 0x00020000 +#define WMI_PEER_ACTIVE_TRAFFIC_TYPE_VOIP_S 17 +#define WMI_PEER_ACTIVE_TRAFFIC_TYPE_VIDEO_CONF_M 0x00040000 +#define WMI_PEER_ACTIVE_TRAFFIC_TYPE_VIDEO_CONF_S 18 +#define WMI_PEER_ACTIVE_TRAFFIC_TYPE_WEB_BROWSING_M 0x00080000 +#define WMI_PEER_ACTIVE_TRAFFIC_TYPE_WEB_BROWSING_S 19 +/* bits 20-31 are reserved for new interactive traffic types */ typedef struct { A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_peer_active_traffic_map_cmd_fixed_param */ diff --git a/fw/wmi_version.h b/fw/wmi_version.h index ce5996da9f09..475835ecac95 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_ 1526 +#define __WMI_REVISION_ 1527 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From f531feeaca93ee561482d54ba8ccbb16f36e95db Mon Sep 17 00:00:00 2001 From: Pragaspathi Thilagaraj Date: Thu, 26 Sep 2024 12:01:35 -0700 Subject: [PATCH 07/54] fw-api: CL 27708433 - update fw common interface files Change-Id: Ic1ed92462200cda95f1a391dd91c9d72c5d9683c CRs-Fixed: 3830439 --- fw/wmi_tlv_defs.h | 7 +++++++ fw/wmi_unified.h | 35 +++++++++++++++++++++++++++++++++++ fw/wmi_version.h | 2 +- 3 files changed, 43 insertions(+), 1 deletion(-) diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index b1ddbd0f6e09..044617d1a738 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1453,6 +1453,7 @@ typedef enum { WMITLV_TAG_STRUC_wmi_pdev_power_boost_event_fixed_param, WMITLV_TAG_STRUC_wmi_pdev_power_boost_cmd_fixed_param, WMITLV_TAG_STRUC_wmi_pdev_power_boost_mem_addr_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_c2c_detect_event_fixed_param, } WMITLV_TAG_ID; /* * IMPORTANT: Please add _ALL_ WMI Commands Here. @@ -2338,6 +2339,7 @@ typedef enum { OP(WMI_MLO_PEER_TID_TO_LINK_MAP_EVENTID) \ OP(WMI_USD_SERVICE_EVENTID) \ OP(WMI_PDEV_POWER_BOOST_EVENTID) \ + OP(WMI_C2C_DETECT_EVENTID) \ /* add new EVT_LIST elements above this line */ @@ -6889,6 +6891,11 @@ WMITLV_CREATE_PARAM_STRUC(WMI_REG_CHAN_LIST_CC_EXT_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_afc_chan_eirp_power_info, chan_eirp_power_info_array, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_AFC_EVENTID); +/* Indicate LPI AP detect or not to Host */ +#define WMITLV_TABLE_WMI_C2C_DETECT_EVENTID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_c2c_detect_event_fixed_param, wmi_c2c_detect_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_C2C_DETECT_EVENTID); + /* FIPS event */ #define WMITLV_TABLE_WMI_PDEV_FIPS_EVENTID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_fips_event_fixed_param, wmi_pdev_fips_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index f24a73a970a5..0b726e79eb6d 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -2504,6 +2504,7 @@ typedef enum { WMI_REG_CHAN_LIST_CC_EXT_EVENTID, WMI_AFC_EVENTID, WMI_REG_CHAN_LIST_CC_EXT2_EVENTID, /* DEPRECATED */ + WMI_C2C_DETECT_EVENTID, /** Events for TWT(Target Wake Time) of STA and AP */ WMI_TWT_ENABLE_COMPLETE_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_TWT), @@ -3959,6 +3960,15 @@ typedef struct { */ } wmi_ready_event_fixed_param; +typedef enum { + WMI_C2C_INT_TYPE_STA = 0, + WMI_C2C_INT_TYPE_SAP = 1, + WMI_C2C_INT_TYPE_P2P = 2, + WMI_C2C_INT_TYPE_NAN = 3, + WMI_C2C_INT_TYPE_TDLS = 4, + WMI_C2C_INT_TYPE_XPAN_SAP = 5, +} WMI_C2C_INT_TYPE; + typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_resource_config */ /** @@ -4939,6 +4949,20 @@ typedef struct { * number of max active partner links of a ML BSS */ A_UINT32 num_max_active_mlo_link_per_ml_bss; + + /** + * @brief c2c_int_type_config + * C2C interface type configuration, + * interface type defined in enum WMI_C2C_INT_TYPE: + * BIT 0 set -> Interface type STA enable C2C + * BIT 1 set -> Interface type SAP enable C2C + * BIT 2 set -> Interface type P2P enable C2C + * BIT 3 set -> Interface type NAN enable C2C + * BIT 4 set -> Interface type TDLS enable C2C + * BIT 5 set -> Interface type XPAN_SAP enable C2C + * BIT 6 : 31 Reserved + */ + A_UINT32 c2c_int_type_config; } wmi_resource_config; #define WMI_MSDU_FLOW_AST_ENABLE_GET(msdu_flow_config0, ast_x) \ @@ -6321,6 +6345,8 @@ typedef struct { #define WMI_APPEND_TO_EXISTING_CHAN_LIST 0x1 #define WMI_CHANNEL_MAX_BANDWIDTH_VALID 0x2 #define WMI_HONOR_HOST_6GHZ_CHANNEL_PASSIVE 0x4 +#define WMI_SCAN_TO_DETECT_6GHZ_C2C_AP 0x8 + /* * To preserve backwards compatibility, retain old names (without WMI_ prefix) * as aliases for the corrected names (with WMI_ prefix). @@ -24233,6 +24259,9 @@ typedef enum wake_reason_e { WOW_REASON_P2P_CLI_DFS_AP_BMISS_DETECTED, /* if Page Fault blocking feature enabled and PF observed under WoW */ WOW_REASON_PF_BLOCKING_LAST_TIME, + /* C2C scan report LPI AP detect or not event */ + WOW_REASON_C2C_DETECT_EVENT, + /* add new WOW_REASON_ defs before this line */ WOW_REASON_MAX, @@ -38865,6 +38894,12 @@ typedef struct { A_UINT32 new_alpha2; /** alpha2 characters representing the country code */ } wmi_11d_new_country_event_fixed_param; +/** FW indicating LPI AP detect or not to Host */ +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_c2c_detect_event_fixed_param */ + A_UINT32 lpi_ap_detect; /** flag to indicate LPI AP detect or not */ +} wmi_c2c_detect_event_fixed_param; + typedef struct { /** TLV tag and len; tag equals * WMITLV_TAG_STRUC_wmi_coex_get_antenna_isolation_cmd_fixed_param */ diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 475835ecac95..eeaf4c2062a3 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_ 1527 +#define __WMI_REVISION_ 1528 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 0db73a32cb8f1d972712839488bc15e34ea5f38a Mon Sep 17 00:00:00 2001 From: spuligil Date: Sat, 28 Sep 2024 02:44:31 -0700 Subject: [PATCH 08/54] fw-api: CL 27733361 - update fw common interface files Change-Id: I9358934b6ccece386cf5988f809bc220b6d59ef3 CRs-Fixed: 3830439 --- fw/wmi_unified.h | 30 ++++++++++++++++++++++++++---- fw/wmi_version.h | 2 +- 2 files changed, 27 insertions(+), 5 deletions(-) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 0b726e79eb6d..6ca4e9ad7042 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -16800,8 +16800,12 @@ typedef struct { #define WMI_MLO_FLAGS_SET_MLO_LINK_SWITCH(mlo_flags, value) WMI_SET_BITS(mlo_flags, 13, 1, value) #define WMI_MLO_FLAGS_GET_MLO_BRIDGE_LINK(mlo_flags) WMI_GET_BITS(mlo_flags, 14, 1) #define WMI_MLO_FLAGS_SET_MLO_BRIDGE_LINK(mlo_flags, value) WMI_SET_BITS(mlo_flags, 14, 1, value) +#define WMI_MLO_FLAGS_GET_LINK_ADD_CANCEL(mlo_flags) WMI_GET_BITS(mlo_flags, 15, 1) +#define WMI_MLO_FLAGS_SET_LINK_ADD_CANCEL(mlo_flags, value) WMI_SET_BITS(mlo_flags, 15, 1, value) +#define WMI_MLO_FLAGS_GET_LINK_DEL_CANCEL(mlo_flags) WMI_GET_BITS(mlo_flags, 16, 1) +#define WMI_MLO_FLAGS_SET_LINK_DEL_CANCEL(mlo_flags, value) WMI_SET_BITS(mlo_flags, 16, 1, value) -/* this structure used for pass mlo flags*/ +/* this structure used for passing MLO flags */ typedef struct { union { struct { @@ -16813,8 +16817,8 @@ typedef struct { mlo_mcast_vdev:1, /* indicate this is the MLO mcast primary vdev */ emlsr_support:1, /* indicate that eMLSR is supported */ mlo_force_link_inactive:1, /* indicate this link is forced inactive */ - mlo_link_add:1, /* Indicate dynamic link addition in an MLD VAP */ - mlo_link_del:1, /* Indicate dynamic link deletion in an MLD VAP */ + mlo_link_add:1, /* Indicate dynamic link addition in an MLD VAP / ML peer */ + mlo_link_del:1, /* Indicate dynamic link deletion in an MLD VAP / ML peer */ mlo_bridge_peer:1, /* Indicate if this link has bridge_peer */ nstr_bitmap_present:1, /* Indicate if at least one NSTR link pair is present in the MLD */ /* nstr_bitmap_size: @@ -16826,7 +16830,9 @@ typedef struct { nstr_bitmap_size:1, mlo_link_switch: 1, /* indicate the command is a part of link switch procedure */ mlo_bridge_link:1, /* indicate link is bridge link */ - unused: 17; + mlo_link_add_cancel:1, /* rollback of previous dynamic link addition */ + mlo_link_del_cancel:1, /* rollback of previous dynamic link deletion */ + unused: 15; }; A_UINT32 mlo_flags; }; @@ -21393,6 +21399,14 @@ typedef struct { wmi_mac_addr self_mac; } wmi_peer_assoc_mlo_partner_link_params; +/* + * ml_reconfig for assoc mlo params: + * Bit 0: Indicate dynamic ML reconfig + */ +#define WMI_ASSOC_MLO_PEER_ML_RECONFIG 0x00000001 +#define WMI_ASSOC_MLO_PEER_ML_RECONFIG_GET(ml_reconfig_word) WMI_GET_BITS(ml_reconfig_word, 0, 1) +#define WMI_ASSOC_MLO_PEER_ML_RECONFIG_SET(ml_reconfig_word, value) WMI_SET_BITS(ml_reconfig_word, 0, 1, value) + /* This TLV structure used to pass mlo Parameters on peer assoc, only apply for mlo-peers */ typedef struct { A_UINT32 tlv_header; /** TLV tag and len; */ @@ -21436,6 +21450,14 @@ typedef struct { /** max num of active links recommended by AP or applications */ A_UINT32 recommended_max_num_simultaneous_links; + + union { + A_UINT32 ml_reconfig__word; + struct { + A_UINT32 ml_reconfig: 1, + unused: 31; + }; + }; } wmi_peer_assoc_mlo_params; typedef struct { diff --git a/fw/wmi_version.h b/fw/wmi_version.h index eeaf4c2062a3..0e13349106eb 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_ 1528 +#define __WMI_REVISION_ 1529 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 66c54657a11d3c0d45cc79bc6f9248225212949e Mon Sep 17 00:00:00 2001 From: spuligil Date: Sat, 28 Sep 2024 02:46:02 -0700 Subject: [PATCH 09/54] fw-api: CL 27739788 - update fw common interface files Change-Id: I076a9c44e1b31beda2d9c0c4ea337c341e382ca6 CRs-Fixed: 3830439 --- fw/htt.h | 3 ++ fw/htt_stats.h | 139 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 142 insertions(+) diff --git a/fw/htt.h b/fw/htt.h index a45735e9db34..9a27a307d8a5 100644 --- a/fw/htt.h +++ b/fw/htt.h @@ -835,6 +835,9 @@ typedef enum { HTT_STATS_TXBF_OFDMA_BE_PARBW_TAG = 201, /* htt_stats_txbf_ofdma_be_parbw_tlv */ HTT_STATS_RX_PDEV_RSSI_HIST_TAG = 202, /* htt_stats_rx_pdev_rssi_hist_tlv */ HTT_STATS_TX_VDEV_NSS_TAG = 203, /* htt_stats_tx_vdev_nss_tlv */ + HTT_STATS_PDEV_SPECTRAL_TAG = 204, /* htt_stats_pdev_spectral_tlv */ + HTT_STATS_PDEV_RTT_DELAY_TAG = 205, /* htt_stats_pdev_rtt_delay_tlv */ + HTT_STATS_PDEV_AOA_TAG = 206, /* htt_stats_pdev_aoa_tlv */ HTT_STATS_MAX_TAG, } htt_stats_tlv_tag_t; diff --git a/fw/htt_stats.h b/fw/htt_stats.h index 6674524e5c4f..2421e4fb72b2 100644 --- a/fw/htt_stats.h +++ b/fw/htt_stats.h @@ -786,6 +786,30 @@ enum htt_dbg_ext_stats_type { */ HTT_DBG_EXT_STATS_TX_VDEV_NSS = 69, + /** HTT_DBG_EXT_STATS_PDEV_RTT_DELAY + * PARAMS: + * - No Params + * RESP MSG: + * - htt_stats_pdev_rtt_delay_tlv + */ + HTT_DBG_EXT_STATS_PDEV_RTT_DELAY = 70, + + /** HTT_DBG_EXT_STATS_PDEV_SPECTRAL + * PARAMS: + * - No Params + * RESP MSG: + * - htt_stats_pdev_spectral_tlv + */ + HTT_DBG_EXT_STATS_PDEV_SPECTRAL = 71, + + /** HTT_DBG_EXT_STATS_PDEV_AOA + * PARAMS: + * - No Params + * RESP MSG: + * - htt_stats_pdev_aoa_tlv + */ + HTT_DBG_EXT_STATS_PDEV_AOA = 72, + /* keep this last */ HTT_DBG_NUM_EXT_STATS = 256, @@ -8888,6 +8912,121 @@ typedef struct { typedef htt_stats_pktlog_and_htt_ring_stats_tlv htt_pktlog_and_htt_ring_stats_tlv; +/* STATS_TYPE: HTT_DBG_EXT_STATS_PDEV_SPECTRAL + * TLV_TAGS: + * HTT_STATS_PDEV_SPECTRAL_TAG + */ +#define HTT_STATS_PDEV_SPECTRAL_PCFG_MAX_DET (3) +#define HTT_STATS_PDEV_SPECTRAL_MAX_PCSS_RING_FOR_IPC (3) + +typedef struct { + htt_tlv_hdr_t tlv_hdr; + + A_UINT32 dbg_num_buf; + A_UINT32 dbg_num_events; + + /* HOST_ring_HI */ + A_UINT32 host_head_idx; + A_UINT32 host_tail_idx; + A_UINT32 host_shadow_tail_idx; + + /* SHADOW_ring_HI */ + A_UINT32 in_ring_head_idx; + A_UINT32 in_ring_tail_idx; + A_UINT32 in_ring_shadow_tail_idx; + A_UINT32 in_ring_shadow_head_idx; + + /* OUT_ring_HI */ + A_UINT32 out_ring_head_idx; + A_UINT32 out_ring_tail_idx; + A_UINT32 out_ring_shadow_tail_idx; + A_UINT32 out_ring_shadow_head_idx; + + /* IPC_ring MAX_PCSS_RING_FOR_IPC */ + struct { + A_UINT32 head_idx; + A_UINT32 tail_idx; + A_UINT32 shadow_tail_idx; + A_UINT32 shadow_head_idx; + } ipc_rings[HTT_STATS_PDEV_SPECTRAL_MAX_PCSS_RING_FOR_IPC]; + + /* VREG Counters */ + struct { + A_UINT32 scan_priority; + A_UINT32 scan_count; + A_UINT32 scan_period; + A_UINT32 scan_chn_mask; + A_UINT32 scan_ena; + A_UINT32 scan_update_mask; + A_UINT32 scan_ready_intrpt; + A_UINT32 scans_performed; + A_UINT32 intrpts_sent; + A_UINT32 scan_pending_count; + A_UINT32 num_pcss_elem_zero; + A_UINT32 num_in_elem_zero; + A_UINT32 num_out_elem_zero; + A_UINT32 num_elem_moved; + } pcfg_stats_det[HTT_STATS_PDEV_SPECTRAL_PCFG_MAX_DET]; + + struct { + A_UINT32 scan_no_ipc_buf_avail; + A_UINT32 agile_scan_no_ipc_buf_avail; + A_UINT32 scan_FFT_discard_count; + A_UINT32 scan_recapture_FFT_discard_count; + A_UINT32 scan_recapture_count; + } pcfg_stats_vreg; +} htt_stats_pdev_spectral_tlv; + +/* STATS_TYPE: HTT_DBG_EXT_STATS_PDEV_RTT_DELAY + * TLV_TAGS: + * HTT_STATS_PDEV_RTT_DELAY_TAG + */ +#define HTT_STATS_PDEV_RTT_DELAY_NUM_INSTANCES (2) +/* HTT_STATS_PDEV_RTT_DELAY_PKT_BW: + * 0 -> 20 MHz + * 1 -> 40 MHz + * 2 -> 80 MHz + * 3 -> 160 MHz + * 4 -> 320 MHz + * 5: reserved + */ +#define HTT_STATS_PDEV_RTT_DELAY_PKT_BW (6) +typedef struct { + htt_tlv_hdr_t tlv_hdr; + + struct { + /* base_delay: picosecond units */ + A_UINT32 base_delay[HTT_STATS_PDEV_RTT_DELAY_PKT_BW]; + /* final_delay: picosecond units */ + A_UINT32 final_delay[HTT_STATS_PDEV_RTT_DELAY_PKT_BW]; + A_UINT32 per_chan_bias; + A_UINT32 off_chan_bias; + A_UINT32 chan_bw_bias; + A_UINT32 digital_block_status; + A_UINT32 chan_freq; /* MHz units */ + A_UINT32 bandwidth; /* MHz units */ + } rtt_delay[HTT_STATS_PDEV_RTT_DELAY_NUM_INSTANCES]; +} htt_stats_pdev_rtt_delay_tlv; + +/* STATS_TYPE: HTT_DBG_EXT_STATS_PDEV_AOA + * TLV_TAGS: + * HTT_STATS_PDEV_AOA_TAG + */ +#define HTT_STATS_PDEV_AOA_MAX_HISTOGRAM (10) +typedef struct { + htt_tlv_hdr_t tlv_hdr; + + A_UINT32 gain_idx[HTT_STATS_PDEV_AOA_MAX_HISTOGRAM]; + /* gain table element values: + * 0 -> default gain + * 1 -> low gain + * 2 -> very low gain + */ + A_UINT32 gain_table[HTT_STATS_PDEV_AOA_MAX_HISTOGRAM]; + A_UINT32 phase_calculated[HTT_STATS_PDEV_AOA_MAX_HISTOGRAM]; + A_UINT32 phase_in_degree[HTT_STATS_PDEV_AOA_MAX_HISTOGRAM]; +} htt_stats_pdev_aoa_tlv; + #define HTT_DLPAGER_STATS_MAX_HIST 10 #define HTT_DLPAGER_ASYNC_LOCKED_PAGE_COUNT_M 0x000000FF #define HTT_DLPAGER_ASYNC_LOCKED_PAGE_COUNT_S 0 From bb559e2b74748cbf8ade4f623b5f4f210927a4ff Mon Sep 17 00:00:00 2001 From: spuligil Date: Sat, 28 Sep 2024 02:47:29 -0700 Subject: [PATCH 10/54] fw-api: CL 27741883 - update fw common interface files Change-Id: I271da1ba190ae095561e62c427201eaad1adeea4 CRs-Fixed: 3830439 --- fw/wmi_unified.h | 77 ++++++++++++++++++++++++++++++++++++++++++++++++ fw/wmi_version.h | 2 +- 2 files changed, 78 insertions(+), 1 deletion(-) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 6ca4e9ad7042..78a752ae3405 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -3603,6 +3603,58 @@ typedef enum { WMI_BDF_VERSION_FW_TOO_NEW = 5, } wmi_bdf_version_status_type; + +/* + * supported_wifi_generations GET/SET APIs + */ +#define WMI_SUPPORTED_WIFI_4_GENERATION_GET(wifi_generations) \ + WMI_GET_BITS(wifi_generations, 0, 1) +#define WMI_SUPPORTED_WIFI_5_GENERATION_GET(wifi_generations) \ + WMI_GET_BITS(supported_wifi_generations, 1, 1) +#define WMI_SUPPORTED_WIFI_6_GENERATION_GET(wifi_generations) \ + WMI_GET_BITS(supported_wifi_generations, 2, 1) +#define WMI_SUPPORTED_WIFI_7_GENERATION_GET(wifi_generations) \ + WMI_GET_BITS(supported_wifi_generations, 3, 1) +#define WMI_SUPPORTED_WIFI_8_GENERATION_GET(wifi_generations) \ + WMI_GET_BITS(supported_wifi_generations, 4, 1) + +#define WMI_SUPPORTED_WIFI_4_GENERATION_SET(wifi_generations, value) \ + WMI_SET_BITS(supported_wifi_generations, 0, 1, value) +#define WMI_SUPPORTED_WIFI_5_GENERATION_SET(wifi_generations, value) \ + WMI_SET_BITS(supported_wifi_generations, 1, 1, value) +#define WMI_SUPPORTED_WIFI_6_GENERATION_SET(wifi_generations, value) \ + WMI_SET_BITS(supported_wifi_generations, 2, 1, value) +#define WMI_SUPPORTED_WIFI_7_GENERATION_SET(wifi_generations, value) \ + WMI_SET_BITS(supported_wifi_generations, 3, 1, value) +#define WMI_SUPPORTED_WIFI_8_GENERATION_SET(wifi_generations, value) \ + WMI_SET_BITS(supported_wifi_generations, 4, 1, value) + +/* + * supported_wifi_certified_generations GET/SET APIs + */ +#define WMI_SUPPORTED_WIFI_4_CERTIFIED_GENERATION_GET(wifi_generations) \ + WMI_GET_BITS(wifi_generations, 0, 1) +#define WMI_SUPPORTED_WIFI_5_CERTIFIED_GENERATION_GET(wifi_generations) \ + WMI_GET_BITS(wifi_generations, 1, 1) +#define WMI_SUPPORTED_WIFI_6_CERTIFIED_GENERATION_GET(wifi_generations) \ + WMI_GET_BITS(wifi_generations, 2, 1) +#define WMI_SUPPORTED_WIFI_7_CERTIFIED_GENERATION_GET(wifi_generations) \ + WMI_GET_BITS(wifi_generations, 3, 1) +#define WMI_SUPPORTED_WIFI_8_CERTIFIED_GENERATION_GET(wifi_generations) \ + WMI_GET_BITS(wifi_generations, 4, 1) + +#define WMI_SUPPORTED_WIFI_4_CERTIFIED_GENERATION_SET(wifi_certified_generations, value) \ + WMI_SET_BITS(wifi_certified_generations, 0, 1, value) +#define WMI_SUPPORTED_WIFI_5_CERTIFIED_GENERATION_SET(wifi_certified_generations, value) \ + WMI_SET_BITS(wifi_certified_generations, 1, 1, value) +#define WMI_SUPPORTED_WIFI_6_CERTIFIED_GENERATION_SET(wifi_certified_generations, value) \ + WMI_SET_BITS(wifi_certified_generations, 2, 1, value) +#define WMI_SUPPORTED_WIFI_7_CERTIFIED_GENERATION_SET(wifi_certified_generations, value) \ + WMI_SET_BITS(wifi_certified_generations, 3, 1, value) +#define WMI_SUPPORTED_WIFI_8_CERTIFIED_GENERATION_SET(wifi_certified_generations, value) \ + WMI_SET_BITS(wifi_certified_generations, 4, 1, value) + + typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_service_ready_ext2_event_fixed_param.*/ @@ -3756,6 +3808,31 @@ typedef struct { */ A_UINT32 num_max_mlo_link_per_ml_sap_supp; + /* supported_wifi_generations: + * Indicate the transmitting STA's MAC/PHY feature support includes all the + * mandatory features of the particular Wi-Fi generation. + * Refer to the WMI_SUPPORTED_WIFI_x_GENERATION_GET/SET macros + * for interpreting which bit within this bitmap corresponds to which + * WiFi generation. + * The individual bits should only be checked if + * supported_wifi_generations != 0x0. + * This field is invalid and should be ignored unless it contains + * at least 1 set bit. + */ + A_UINT32 supported_wifi_generations; + + /* supported_wifi_certified_generations: + * Indicate the transmitting STA's Wi-Fi Alliance certifications. + * Refer to the WMI_SUPPORTED_WIFI_x_CERTIFIED_GENERATION_GET/SET macros + * for interpreting which bit within this bitmap corresponds to which + * WiFi generation. + * The individual bits should only be checked if + * supported_wifi_certified_generations != 0x0. + * This field is invalid and should be ignored unless it contains + * at least 1 set bit. + */ + A_UINT32 supported_wifi_certified_generations; + /* Followed by next TLVs: * WMI_DMA_RING_CAPABILITIES dma_ring_caps[]; * wmi_spectral_bin_scaling_params wmi_bin_scaling_params[]; diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 0e13349106eb..17e29b659d6c 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_ 1529 +#define __WMI_REVISION_ 1530 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 14605dbebe2ca4ae5bb6d3d9c774aac5f8388310 Mon Sep 17 00:00:00 2001 From: spuligil Date: Wed, 2 Oct 2024 06:01:35 -0700 Subject: [PATCH 11/54] fw-api: CL 27771965 - update fw common interface files Change-Id: I94e73aefbea07858c2ae06c6c56af7cc5278f4a2 CRs-Fixed: 3830439 --- fw/wmi_unified.h | 129 +++++++++++++++++++++++++++++++++++++++-------- fw/wmi_version.h | 2 +- 2 files changed, 109 insertions(+), 22 deletions(-) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 78a752ae3405..f051a3b6a711 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -3610,24 +3610,24 @@ typedef enum { #define WMI_SUPPORTED_WIFI_4_GENERATION_GET(wifi_generations) \ WMI_GET_BITS(wifi_generations, 0, 1) #define WMI_SUPPORTED_WIFI_5_GENERATION_GET(wifi_generations) \ - WMI_GET_BITS(supported_wifi_generations, 1, 1) + WMI_GET_BITS(wifi_generations, 1, 1) #define WMI_SUPPORTED_WIFI_6_GENERATION_GET(wifi_generations) \ - WMI_GET_BITS(supported_wifi_generations, 2, 1) + WMI_GET_BITS(wifi_generations, 2, 1) #define WMI_SUPPORTED_WIFI_7_GENERATION_GET(wifi_generations) \ - WMI_GET_BITS(supported_wifi_generations, 3, 1) + WMI_GET_BITS(wifi_generations, 3, 1) #define WMI_SUPPORTED_WIFI_8_GENERATION_GET(wifi_generations) \ - WMI_GET_BITS(supported_wifi_generations, 4, 1) + WMI_GET_BITS(wifi_generations, 4, 1) #define WMI_SUPPORTED_WIFI_4_GENERATION_SET(wifi_generations, value) \ - WMI_SET_BITS(supported_wifi_generations, 0, 1, value) + WMI_SET_BITS(wifi_generations, 0, 1, value) #define WMI_SUPPORTED_WIFI_5_GENERATION_SET(wifi_generations, value) \ - WMI_SET_BITS(supported_wifi_generations, 1, 1, value) + WMI_SET_BITS(wifi_generations, 1, 1, value) #define WMI_SUPPORTED_WIFI_6_GENERATION_SET(wifi_generations, value) \ - WMI_SET_BITS(supported_wifi_generations, 2, 1, value) + WMI_SET_BITS(wifi_generations, 2, 1, value) #define WMI_SUPPORTED_WIFI_7_GENERATION_SET(wifi_generations, value) \ - WMI_SET_BITS(supported_wifi_generations, 3, 1, value) + WMI_SET_BITS(wifi_generations, 3, 1, value) #define WMI_SUPPORTED_WIFI_8_GENERATION_SET(wifi_generations, value) \ - WMI_SET_BITS(supported_wifi_generations, 4, 1, value) + WMI_SET_BITS(wifi_generations, 4, 1, value) /* * supported_wifi_certified_generations GET/SET APIs @@ -3643,16 +3643,16 @@ typedef enum { #define WMI_SUPPORTED_WIFI_8_CERTIFIED_GENERATION_GET(wifi_generations) \ WMI_GET_BITS(wifi_generations, 4, 1) -#define WMI_SUPPORTED_WIFI_4_CERTIFIED_GENERATION_SET(wifi_certified_generations, value) \ - WMI_SET_BITS(wifi_certified_generations, 0, 1, value) -#define WMI_SUPPORTED_WIFI_5_CERTIFIED_GENERATION_SET(wifi_certified_generations, value) \ - WMI_SET_BITS(wifi_certified_generations, 1, 1, value) -#define WMI_SUPPORTED_WIFI_6_CERTIFIED_GENERATION_SET(wifi_certified_generations, value) \ - WMI_SET_BITS(wifi_certified_generations, 2, 1, value) -#define WMI_SUPPORTED_WIFI_7_CERTIFIED_GENERATION_SET(wifi_certified_generations, value) \ - WMI_SET_BITS(wifi_certified_generations, 3, 1, value) -#define WMI_SUPPORTED_WIFI_8_CERTIFIED_GENERATION_SET(wifi_certified_generations, value) \ - WMI_SET_BITS(wifi_certified_generations, 4, 1, value) +#define WMI_SUPPORTED_WIFI_4_CERTIFIED_GENERATION_SET(wifi_generations, value) \ + WMI_SET_BITS(wifi_generations, 0, 1, value) +#define WMI_SUPPORTED_WIFI_5_CERTIFIED_GENERATION_SET(wifi_generations, value) \ + WMI_SET_BITS(wifi_generations, 1, 1, value) +#define WMI_SUPPORTED_WIFI_6_CERTIFIED_GENERATION_SET(wifi_generations, value) \ + WMI_SET_BITS(wifi_generations, 2, 1, value) +#define WMI_SUPPORTED_WIFI_7_CERTIFIED_GENERATION_SET(wifi_generations, value) \ + WMI_SET_BITS(wifi_generations, 3, 1, value) +#define WMI_SUPPORTED_WIFI_8_CERTIFIED_GENERATION_SET(wifi_generations, value) \ + WMI_SET_BITS(wifi_generations, 4, 1, value) typedef struct { @@ -30023,14 +30023,36 @@ typedef struct { A_UINT32 offset; /* offset of the stats from partner_link_data for this vdev */ } wmi_partner_link_stats; +typedef enum WMI_STATS_EXT_EVENT_DATA_TYPE { + /* OPAQUE: + * The data[] bytestream in the WMI_STATS_EXT_EVENT message contains + * opaque contents that the host driver cannot interpret. + */ + WMI_STATS_EXT_EVENT_DATA_TYPE_OPAQUE, + /* VDEV_STATS_EXT: + * The data[] bytestream in the WMI_STATS_EXT_EVENT message contains + * wmi_stats_ext_event_vdev_ext struct(s). + */ + WMI_STATS_EXT_EVENT_DATA_TYPE_VDEV_EXT, +} WMI_STATS_EXT_EVENT_DATA_TYPE_E; + typedef struct { A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_stats1_event_fix_param */ A_UINT32 vdev_id; /** vdev ID */ A_UINT32 data_len; /** length in byte of data[]. */ + /** data_type: + * Contains a WMI_STATS_EXT_EVENT_DATA_TYPE_E value to show whether + * the host can interpret the data[] contents, and if so, how to + * interpret them. + */ + A_UINT32 data_type; /* This structure is used to send REQ binary blobs - * from firmware to application/service where Host drv is pass through . + * from firmware to application/service where Host drv is pass through. + * Alternatively, by specifying in the data_type field what kind of + * information is placed in data[], the target can allow the host to + * interpret the data[] contents. * Following this structure is the TLV: - * A_UINT8 data[]; <-- length in byte given by field data_len. + * A_UINT8 data[]; <-- length in bytes given by field data_len. */ /* This structure is used to send information of partner links. * Following this structure is the TLV: @@ -30046,6 +30068,71 @@ typedef struct { */ } wmi_stats_ext_event_fixed_param; +#define WMI_EXT_STATS_VDEV_EXT_MAX_MCS_COUNTERS 32 +#define WMI_EXT_STATS_VDEV_EXT_MAX_OPAQUE_DBG_WORDS32 1 + +typedef enum wmi_stats_ext_event_vdev_ext_bw_counters { + WMI_STATS_EXT_EVENT_VDEV_EXT_BW_COUNTERS_20MHz = 0, + WMI_STATS_EXT_EVENT_VDEV_EXT_BW_COUNTERS_40MHz, + WMI_STATS_EXT_EVENT_VDEV_EXT_BW_COUNTERS_80MHz, + WMI_STATS_EXT_EVENT_VDEV_EXT_BW_COUNTERS_160MHz, + WMI_STATS_EXT_EVENT_VDEV_EXT_BW_COUNTERS_320MHz, + /* values 5-7 reserved */ + WMI_STATS_EXT_EVENT_VDEV_EXT_BW_COUNTERS_MAX = 8 +} wmi_stats_ext_event_vdev_ext_bw_counters_t; + +#define WMI_STATS_EXT_EVENT_VDEV_EXT_FREQ_GET(word) \ + WMI_GET_BITS(word, 0, 16) +#define WMI_STATS_EXT_EVENT_VDEV_EXT_FREQ_SET(word, val) \ + WMI_SET_BITS(word, 0, 16, val) +#define WMI_STATS_EXT_EVENT_VDEV_EXT_VDEV_ID_GET(word) \ + WMI_GET_BITS(word, 16, 16) +#define WMI_STATS_EXT_EVENT_VDEV_EXT_VDEV_ID_SET(word, val) \ + WMI_SET_BITS(word, 16, 16, val) + +typedef struct wmi_stats_ext_event_vdev_ext { + /* version + * version = 1 means will use old/legacy struct + * version = 0 means will use new (wmi_stats_ext_event_vdev_ext) struct + * Some legacy target code branches use the old structure. + * Hence, control the backward compatibility through this + * version numbering. + */ + A_UINT32 version; + /* Number of MPDUs entering the queue */ + A_UINT32 mpdu_enqueue; + /* Number of MPDUs retried from SW */ + A_UINT32 mpdu_requeued; + /* Set of TX MCS counters */ + A_UINT32 tx_mcs[WMI_EXT_STATS_VDEV_EXT_MAX_MCS_COUNTERS]; + /* Set of TX BW counters */ + A_UINT32 tx_bw[WMI_EXT_STATS_VDEV_EXT_MAX_MCS_COUNTERS]; + /* Set of RX MCS counters */ + A_UINT32 rx_mcs[WMI_EXT_STATS_VDEV_EXT_MAX_MCS_COUNTERS]; + /* Set of RX BW counters */ + A_UINT32 rx_bw[WMI_STATS_EXT_EVENT_VDEV_EXT_BW_COUNTERS_MAX]; + /* Beacon RSSI (dBm units) */ + A_INT32 beacon_rssi; + /* Total number of bytes transmitted */ + A_UINT32 tx_bytes; + /* Total number of bytes received */ + A_UINT32 rx_bytes; + /* + * home channel frequency and vdev id: + * lower 16bits is frequency, upper 16bits is vdev_id + */ + union { + A_UINT32 freq__vdev_id__word32; + struct { + A_UINT32 + freq: 16, /* MHz units */ + vdev_id: 16; + }; + }; + /* opaque / unspecified contents, for debugging, etc */ + A_UINT32 opaque_dbg[WMI_EXT_STATS_VDEV_EXT_MAX_OPAQUE_DBG_WORDS32]; +} wmi_stats_ext_event_vdev_ext_t; + typedef enum { /** Default: no replay required. */ WMI_PEER_DELETE_NO_REPLAY = 0, diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 17e29b659d6c..209f387e4db2 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_ 1530 +#define __WMI_REVISION_ 1531 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From c9dde185249624a615c77a4058449c11e51b9c68 Mon Sep 17 00:00:00 2001 From: spuligil Date: Wed, 2 Oct 2024 23:02:47 -0700 Subject: [PATCH 12/54] fw-api: CL 27773686 - update fw common interface files Change-Id: I28170c59b5a109b2465726a69973ceeaaa5d0eae CRs-Fixed: 3830439 --- fw/wmi_services.h | 2 +- fw/wmi_tlv_defs.h | 16 +++++++++++ fw/wmi_unified.h | 73 +++++++++++++++++++++++++++++++++++++++++++++++ fw/wmi_version.h | 2 +- 4 files changed, 91 insertions(+), 2 deletions(-) diff --git a/fw/wmi_services.h b/fw/wmi_services.h index c5d5cb9b6ac6..02863e244017 100644 --- a/fw/wmi_services.h +++ b/fw/wmi_services.h @@ -687,7 +687,7 @@ typedef enum { WMI_SERVICE_USD_SUPPORT = 428, /* Indicates FW supports Unsynchronized Service Discovery */ WMI_SERVICE_THERM_THROT_5_LEVELS = 429, /* Indicates FW support 5 thermal throttling levels */ WMI_SERVICE_PROTECTED_TWT = 430, /* Indicates FW supports protected TWT operation */ - + WMI_SERVICE_SCAN_CACHE_REPORT_SUPPORT = 431, /* Indicates FW supports for sending scan cache report */ WMI_MAX_EXT2_SERVICE diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index 044617d1a738..9e9fecb009d5 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1454,6 +1454,9 @@ typedef enum { WMITLV_TAG_STRUC_wmi_pdev_power_boost_cmd_fixed_param, WMITLV_TAG_STRUC_wmi_pdev_power_boost_mem_addr_cmd_fixed_param, WMITLV_TAG_STRUC_wmi_c2c_detect_event_fixed_param, + WMITLV_TAG_STRUC_wmi_get_scan_cache_result_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_scan_cache_result_event_fixed_param, + WMITLV_TAG_STRUC_wmi_scan_cache_info, } WMITLV_TAG_ID; /* * IMPORTANT: Please add _ALL_ WMI Commands Here. @@ -2010,6 +2013,7 @@ typedef enum { OP(WMI_USD_SERVICE_CMDID) \ OP(WMI_PDEV_POWER_BOOST_CMDID) \ OP(WMI_PDEV_POWER_BOOST_MEM_ADDR_CMDID) \ + OP(WMI_GET_SCAN_CACHE_RESULT_CMDID) \ /* add new CMD_LIST elements above this line */ @@ -2340,6 +2344,7 @@ typedef enum { OP(WMI_USD_SERVICE_EVENTID) \ OP(WMI_PDEV_POWER_BOOST_EVENTID) \ OP(WMI_C2C_DETECT_EVENTID) \ + OP(WMI_SCAN_CACHE_RESULT_EVENTID) \ /* add new EVT_LIST elements above this line */ @@ -5684,6 +5689,11 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_POWER_BOOST_CMDID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_power_boost_mem_addr_cmd_fixed_param, wmi_pdev_power_boost_mem_addr_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_POWER_BOOST_MEM_ADDR_CMDID); +/* WMI command to send scan cache result */ +#define WMITLV_TABLE_WMI_GET_SCAN_CACHE_RESULT_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_get_scan_cache_result_cmd_fixed_param, wmi_get_scan_cache_result_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_GET_SCAN_CACHE_RESULT_CMDID); + /************************** TLV definitions of WMI events *******************************/ @@ -7762,6 +7772,12 @@ WMITLV_CREATE_PARAM_STRUC(WMI_USD_SERVICE_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_power_boost_event_fixed_param, wmi_pdev_power_boost_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_POWER_BOOST_EVENTID); +#define WMITLV_TABLE_WMI_SCAN_CACHE_RESULT_EVENTID(id, op , buf, len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_scan_cache_result_event_fixed_param, wmi_scan_cache_result_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, scan_freq_list, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_scan_cache_info, scan_cache_info, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_SCAN_CACHE_RESULT_EVENTID); + #ifdef __cplusplus } diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index f051a3b6a711..63d2bf7cd723 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -1350,6 +1350,9 @@ typedef enum { /** Unsynchronized Service Discovery */ WMI_USD_SERVICE_CMDID, + /** WMI command to get scan cached result */ + WMI_GET_SCAN_CACHE_RESULT_CMDID, + /* Offload 11k related requests */ WMI_11K_OFFLOAD_REPORT_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_11K_OFFLOAD), @@ -2386,6 +2389,9 @@ typedef enum { */ WMI_USD_SERVICE_EVENTID, + /* WMI event to send scan cached results */ + WMI_SCAN_CACHE_RESULT_EVENTID, + /* GPIO Event */ WMI_GPIO_INPUT_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_GPIO), @@ -38379,6 +38385,7 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command) WMI_RETURN_STRING(WMI_USD_SERVICE_CMDID); WMI_RETURN_STRING(WMI_PDEV_POWER_BOOST_CMDID); WMI_RETURN_STRING(WMI_PDEV_POWER_BOOST_MEM_ADDR_CMDID); + WMI_RETURN_STRING(WMI_GET_SCAN_CACHE_RESULT_CMDID); } return (A_UINT8 *) "Invalid WMI cmd"; @@ -49334,6 +49341,72 @@ typedef struct { A_UINT32 size; } wmi_pdev_power_boost_mem_addr_cmd_fixed_param; +typedef struct { + /* WMITLV_TAG_STRUC_wmi_get_scan_cache_result_cmd_fixed_param */ + A_UINT32 tlv_header; +} wmi_get_scan_cache_result_cmd_fixed_param; + +/* Element ID 61 (HT Operation) is present (see HT 7.3.2) */ +#define WIFI_CACHED_SCAN_RESULT_FLAGS_HT_OPS_PRESENT_GET(flags) WMI_GET_BITS(flags, 0, 1) +#define WIFI_CACHED_SCAN_RESULT_FLAGS_HT_OPS_PRESENT_SET(flags, value) WMI_SET_BITS(flags, 0, 1, value) + +/* Element ID 192 (VHT Operation) is present (see VHT 8.4.2) */ +#define WIFI_CACHED_SCAN_RESULT_FLAGS_VHT_OPS_PRESENT_GET(flags) WMI_GET_BITS(flags, 1, 1) +#define WIFI_CACHED_SCAN_RESULT_FLAGS_VHT_OPS_PRESENT_SET(flags, value) WMI_SET_BITS(flags, 1, 1, value) + +/* Element ID 255 + Extension 36 (HE Operation) is present (see 802.11ax 9.4.2.1) */ +#define WIFI_CACHED_SCAN_RESULT_FLAGS_HE_OPS_PRESENT_GET(flags) WMI_GET_BITS(flags, 2, 1) +#define WIFI_CACHED_SCAN_RESULT_FLAGS_HE_OPS_PRESENT_SET(flags, value) WMI_SET_BITS(flags, 2, 1, value) + +/* Element ID 255 + Extension 106 (EHT Operation) is present(see 802.11be D1.5 9.4.2.1) */ +#define WIFI_CACHED_SCAN_RESULT_FLAGS_EHT_OPS_PRESENT_GET(flags) WMI_GET_BITS(flags, 3, 1) +#define WIFI_CACHED_SCAN_RESULT_FLAGS_EHT_OPS_PRESENT_SET(flags, value) WMI_SET_BITS(flags, 3, 1, value) + +/* Element ID 127 (Extended Capabilities) is present, and bit 70 (Fine Timing Measurement Responder) is set to 1 (see IEEE Std 802.11-2016 9.4.2.27) */ +#define WIFI_CACHED_SCAN_RESULT_FLAGS_IS_FTM_RESPONDER_GET(flags) WMI_GET_BITS(flags, 4, 1) +#define WIFI_CACHED_SCAN_RESULT_FLAGS_IS_FTM_RESPONDER_SET(flags, value) WMI_SET_BITS(flags, 4, 1, value) + + +typedef struct { + wmi_channel_width width; + A_UINT32 center_frequency0; /* Frequency value in MHz */ + A_UINT32 center_frequency1; /* Frequency value in MHz */ + A_UINT32 primary_frequency; /* Frequency value in MHz */ +} wifi_channel_spec; + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_scan_cache_info */ + /* age_ms: + * Number of milliseconds prior to WMI_GET_SCAN_CACHE_RESULT_CMDID + * from when the probe response or beacon frame that was used to + * populate this info. + */ + A_UINT32 age_ms; + + /* The Capability Information field from beacon or probe response frame */ + A_UINT32 capability; + + wmi_ssid ssid; + + wmi_mac_addr bssid; + + /* A set of flags from WIFI_CACHED_SCAN_RESULT_FLAGS_* */ + A_UINT32 flags; + + A_INT32 rssi; /* units = dBm */ + + wifi_channel_spec chanspec; +} wmi_scan_cache_info; + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_scan_cache_result_event_fixed_param */ + + /* The below TLVs follow this TLV in the WMI_SCAN_CACHE_RESULT_EVENT msg: + * - A_UINT32 scan_freq_list[]; + * - struct wmi_scan_cache_info scan_cache_info[]; + */ +} wmi_scan_cache_result_fixed_param; + /* ADD NEW DEFS HERE */ diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 209f387e4db2..de1d75f13142 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_ 1531 +#define __WMI_REVISION_ 1532 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 23e596c6fd0149a1de13be9ebfe464f3796e592e Mon Sep 17 00:00:00 2001 From: spuligil Date: Fri, 4 Oct 2024 06:01:44 -0700 Subject: [PATCH 13/54] fw-api: CL 27786552 - update fw common interface files Change-Id: I48516c6da8951a165243112d117ecdde68099f88 CRs-Fixed: 3830439 --- fw/wmi_tlv_defs.h | 4 +++- fw/wmi_unified.h | 33 ++++++++++++++++++++++++++------- fw/wmi_version.h | 2 +- 3 files changed, 30 insertions(+), 9 deletions(-) diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index 9e9fecb009d5..2d39ef39164f 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1457,6 +1457,7 @@ typedef enum { WMITLV_TAG_STRUC_wmi_get_scan_cache_result_cmd_fixed_param, WMITLV_TAG_STRUC_wmi_scan_cache_result_event_fixed_param, WMITLV_TAG_STRUC_wmi_scan_cache_info, + WMITLV_TAG_STRUC_wmi_POWER_BOOST_CAPABILITIES, } WMITLV_TAG_ID; /* * IMPORTANT: Please add _ALL_ WMI Commands Here. @@ -5753,7 +5754,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_SERVICE_READY_EXT_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_aux_dev_capabilities, aux_dev_caps, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_enhanced_aoa_caps_param, aoa_caps_param, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_enhanced_aoa_per_band_caps_param, aoa_per_band_caps_param, WMITLV_SIZE_VAR) \ - WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_sar_flag_tlv_param, sar_flags, WMITLV_SIZE_VAR) + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_sar_flag_tlv_param, sar_flags, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, WMI_POWER_BOOST_CAPABILITIES, power_boost_capabilities, WMITLV_SIZE_VAR) WMITLV_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 63d2bf7cd723..f3163f4ccd8c 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -3543,11 +3543,6 @@ typedef struct { #define WMI_TARGET_CAP_MPDU_STATS_PER_TX_NSS_SUPPORT_SET(target_cap_flags, value)\ WMI_SET_BITS(target_cap_flags, 16, 1, value) -#define WMI_TARGET_CAP_POWER_BOOST_SUPPORT_GET(target_cap_flags) \ - WMI_GET_BITS(target_cap_flags, 17, 1) -#define WMI_TARGET_CAP_POWER_BOOST_SUPPORT_SET(target_cap_flags) \ - WMI_SET_BITS(target_cap_flags, 17, 1, value) - /* * wmi_htt_msdu_idx_to_htt_msdu_qtype GET/SET APIs @@ -3747,8 +3742,7 @@ typedef struct { * Bit 14 - Support for ML monitor mode * Bit 15 - Support for Qdata Tx LCE filter installation * Bit 16 - Support for MPDU stats per tx Nss capability - * Bit 17 - Support for Power Boost capability - * Bits 31:18 - Reserved + * Bits 31:17 - Reserved */ A_UINT32 target_cap_flags; @@ -3850,6 +3844,7 @@ typedef struct { * wmi_dbs_or_sbs_cap_ext dbs_or_sbs_cap_ext; * A_INT32 hw_tx_power_signed[WMI_HW_TX_POWER_CAPS_MAX]; * wmi_aux_dev_capabilities aux_dev_caps[]; + * WMI_POWER_BOOST_CAPABILITIES power_boost_capabilities[]; */ } wmi_service_ready_ext2_event_fixed_param; @@ -49407,6 +49402,30 @@ typedef struct { */ } wmi_scan_cache_result_fixed_param; +#define WMI_POWER_BOOST_CAPABILITIES_PHY_ID_GET(word32) WMI_GET_BITS(word32, 0, 4) +#define WMI_POWER_BOOST_CAPABILITIES_PHY_ID_SET(word32, value) WMI_SET_BITS(word32, 0, 4, value) +#define WMI_POWER_BOOST_CAPABILITIES_POWER_BOOST_ENABLE_GET(word32) WMI_GET_BITS(word32, 4, 1) +#define WMI_POWER_BOOST_CAPABILITIES_POWER_BOOST_ENABLE_SET(word32, value) WMI_SET_BITS(word32, 4, 1, value) + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_POWER_BOOST_CAPABILITIES */ + union { + A_UINT32 phy_id__power_boost_enable__word32; + struct { + /* + * bits 3:0 -> PHY ID + * bit 4 -> power boost enable flag + * bits 31:5 -> reserved + */ + A_UINT32 + phy_id: 4, + /* Power Boost feature is enabled or not */ + power_boost_enable: 1, + reserved: 27; + }; + }; +} WMI_POWER_BOOST_CAPABILITIES; + /* ADD NEW DEFS HERE */ diff --git a/fw/wmi_version.h b/fw/wmi_version.h index de1d75f13142..dee168392908 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_ 1532 +#define __WMI_REVISION_ 1533 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 7a0bdb4e515ee68ae16794cdc81e015b8b788e15 Mon Sep 17 00:00:00 2001 From: spuligil Date: Mon, 7 Oct 2024 06:01:36 -0700 Subject: [PATCH 14/54] fw-api: CL 27796261 - update fw common interface files Change-Id: I0cdd36c6bff451282e9d5a98f46dbbc85e5bbea0 CRs-Fixed: 3830439 --- fw/wmi_unified.h | 12 +++++++++++- fw/wmi_version.h | 2 +- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index f3163f4ccd8c..d155a28033cc 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -4799,8 +4799,13 @@ typedef struct { * 0 -> disable the feature * 1 -> enable the feature * Refer to below WMI_RSRC_CFG_FLAGS2_ENABLE_WDS_NULL_FRAME_SUPPORT + * Bit 23 - enable feature optimize power + * 0 -> disable the feature + * 1 -> enable the feature + * Refer to the below WMI_RSRC_CFG_FLAGS2_OPTIMIZE_POWER_GET/SET + * macros. * - * Bits 31:23 - Reserved + * Bits 31:24 - Reserved */ A_UINT32 flags2; /** @brief host_service_flags - can be used by Host to indicate @@ -5330,6 +5335,11 @@ typedef struct { #define WMI_RSRC_CFG_FLAGS2_ENABLE_WDS_NULL_FRAME_SUPPORT_SET(flags2, value) \ WMI_SET_BITS(flags2, 22, 1, value) +#define WMI_RSRC_CFG_FLAGS2_OPTIMIZE_POWER_GET(flags2) \ + WMI_GET_BITS(flags2, 23, 1) +#define WMI_RSRC_CFG_FLAGS2_OPTIMIZE_POWER_SET(flags2, value) \ + WMI_SET_BITS(flags2, 23, 1, value) + #define WMI_RSRC_CFG_HOST_SERVICE_FLAG_NAN_IFACE_SUPPORT_GET(host_service_flags) \ WMI_GET_BITS(host_service_flags, 0, 1) diff --git a/fw/wmi_version.h b/fw/wmi_version.h index dee168392908..f0c495038ee4 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_ 1533 +#define __WMI_REVISION_ 1534 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 03c3a9b6c2e574e69c379bffffa81a43b726324c Mon Sep 17 00:00:00 2001 From: spuligil Date: Thu, 10 Oct 2024 06:01:52 -0700 Subject: [PATCH 15/54] fw-api: CL 27814056 - update fw common interface files Change-Id: I03f4aa4257b1b9a26394c9c8a1042c18d2e86384 CRs-Fixed: 3830439 --- fw/wmi_unified.h | 1 + fw/wmi_version.h | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index d155a28033cc..5aa29c36505a 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -40195,6 +40195,7 @@ typedef enum _WMI_DEL_TWT_STATUS_T { WMI_DEL_TWT_STATUS_SCAN_IN_PROGRESS, /* Reason Scan in progress */ WMI_DEL_TWT_STATUS_CHANGE_CONGESTION_TIMEOUT, /* Congestion timeout changed */ WMI_DEL_TWT_STATUS_P2P_GO_NOA, /* P2P GO NOA */ + WMI_DEL_TWT_STATUS_UNSUPPORTED_MLMR_MODE, /* Teardown due to MLMR */ } WMI_DEL_TWT_STATUS_T; typedef struct { diff --git a/fw/wmi_version.h b/fw/wmi_version.h index f0c495038ee4..7c316809bd31 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_ 1534 +#define __WMI_REVISION_ 1535 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From c325026686a817ae99141e8eadd19b9f3ca3ad7c Mon Sep 17 00:00:00 2001 From: spuligil Date: Sat, 12 Oct 2024 06:01:44 -0700 Subject: [PATCH 16/54] fw-api: CL 27829186 - update fw common interface files Change-Id: I5ca447686210ccf176d8355cfb42ce89dda2e627 CRs-Fixed: 3830439 --- fw/wmi_unified.h | 27 +++++++++++++++++++++++++++ fw/wmi_version.h | 2 +- 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 5aa29c36505a..ce1ab68e7e2a 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -34322,6 +34322,33 @@ typedef enum { * ============================================================== */ + BIOS_PARAM_TYPE_COUNTRY_CTL_MCS_DATA, + /* + * BIOS_PARAM_TYPE_COUNTRY_CTL_MCS_DATA structure contains + * - fix length parameter: + * version, entryNum + * - variable length array - countryCtlMcsData[entryNum] + * + * A_UINT8 version; + * A_UINT8 entryNum; // 0~15 + * countryCtlMcsData countryCtlMcsData[entryNum]; // variable array, + * // 12 bytes * entryNum + * ====================struct countryCtlMcsData ====================== + * A_UINT16 countryCode; + * A_UINT8 frequencyBand; + * A_UINT8 powerMode; + * A_UINT8 ocbIndex; + * A_UINT8 mcs; + * A_UINT8 bf; + * A_UINT8 nss; + * A_UINT8 txChainNum; + * A_UINT8 compareCtl; + * A_UINT8 powerLimit; // per chain, 1/4 db + * A_UINT8 reserved; + * ============================================================== + */ + + BIOS_PARAM_TYPE_MAX, } bios_param_type_e; diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 7c316809bd31..a512d1232bff 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_ 1535 +#define __WMI_REVISION_ 1536 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 5967b57ad851f2d782b30dd6b33da2cb63330e49 Mon Sep 17 00:00:00 2001 From: spuligil Date: Sat, 12 Oct 2024 06:03:04 -0700 Subject: [PATCH 17/54] fw-api: CL 27833622 - update fw common interface files Change-Id: I10e843a011fad52d76318abb9977a5654b55b671 CRs-Fixed: 3830439 --- fw/wlan_module_ids.h | 1 + fw/wmi_services.h | 1 + 2 files changed, 2 insertions(+) diff --git a/fw/wlan_module_ids.h b/fw/wlan_module_ids.h index 8ac928cdd2a9..d1abb8186655 100644 --- a/fw/wlan_module_ids.h +++ b/fw/wlan_module_ids.h @@ -192,6 +192,7 @@ typedef enum { WLAN_MODULE_PHYLIB_SSCAN, /* 0x95 */ WLAN_MODULE_PHYLIB_RSVD, /* 0x96 */ WLAN_MODULE_USD, /* 0x97 */ + WLAN_MODULE_C2C, /* 0x98 */ WLAN_MODULE_ID_MAX, diff --git a/fw/wmi_services.h b/fw/wmi_services.h index 02863e244017..4a0fe9145877 100644 --- a/fw/wmi_services.h +++ b/fw/wmi_services.h @@ -688,6 +688,7 @@ typedef enum { WMI_SERVICE_THERM_THROT_5_LEVELS = 429, /* Indicates FW support 5 thermal throttling levels */ WMI_SERVICE_PROTECTED_TWT = 430, /* Indicates FW supports protected TWT operation */ WMI_SERVICE_SCAN_CACHE_REPORT_SUPPORT = 431, /* Indicates FW supports for sending scan cache report */ + WMI_SERVICE_SCC_TPC_POWER_SUPPORT = 432, /* Indicates FW supports setting TPC power for SCC vdevs */ WMI_MAX_EXT2_SERVICE From 7098dd8a2b16a128b05d9a4ecfe6741f35661c49 Mon Sep 17 00:00:00 2001 From: spuligil Date: Sat, 12 Oct 2024 06:04:23 -0700 Subject: [PATCH 18/54] fw-api: CL 27833624 - update fw common interface files Change-Id: Ibd74767abe73615b628d34efa09119e01397f87b CRs-Fixed: 3830439 --- fw/htt_stats.h | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/fw/htt_stats.h b/fw/htt_stats.h index 2421e4fb72b2..50e335948a16 100644 --- a/fw/htt_stats.h +++ b/fw/htt_stats.h @@ -1205,6 +1205,13 @@ typedef struct { A_UINT32 pdev_up_time_us_high; /** count of ofdma sequences flushed */ A_UINT32 ofdma_seq_flush; + /* bytes (size of MPDUs) transmitted */ + struct { + /* lower 32 bits of the tx_bytes value */ + A_UINT32 low_32; + /* upper 32 bits of the tx_bytes value */ + A_UINT32 high_32; + } bytes_sent; } htt_stats_tx_pdev_cmn_tlv; /* preserve old name alias for new name consistent with the tag name */ typedef htt_stats_tx_pdev_cmn_tlv htt_tx_pdev_stats_cmn_tlv; @@ -6902,6 +6909,16 @@ typedef struct { A_UINT32 rx_flush_cnt; /** Num rx recovery */ A_UINT32 rx_recovery_reset_cnt; + /* Num prom filter disable */ + A_UINT32 rx_lwm_prom_filter_dis; + /* Num prom filter enable */ + A_UINT32 rx_hwm_prom_filter_en; + struct { + /* lower 32 bits of the rx_bytes value */ + A_UINT32 low_32; + /* upper 32 bits of the rx_bytes value */ + A_UINT32 high_32; + } bytes_received; } htt_stats_rx_pdev_fw_stats_tlv; /* preserve old name alias for new name consistent with the tag name */ typedef htt_stats_rx_pdev_fw_stats_tlv htt_rx_pdev_fw_stats_tlv; From 61c97befb68a271c165b57d82c0a70401f045269 Mon Sep 17 00:00:00 2001 From: spuligil Date: Thu, 17 Oct 2024 06:01:31 -0700 Subject: [PATCH 19/54] fw-api: CL 27854709 - update fw common interface files Change-Id: I038834395ddb99de8645d79fd74e198ba62f51dc CRs-Fixed: 3830439 --- fw/htt_stats.h | 58 +++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 50 insertions(+), 8 deletions(-) diff --git a/fw/htt_stats.h b/fw/htt_stats.h index 50e335948a16..650b7aa7980c 100644 --- a/fw/htt_stats.h +++ b/fw/htt_stats.h @@ -9008,20 +9008,30 @@ typedef struct { * 5: reserved */ #define HTT_STATS_PDEV_RTT_DELAY_PKT_BW (6) +/* HTT_STATS_PDEV_RTT_TX_RX_INSTANCES + * idx 0 -> Tx instance + * idx 1 -> Rx instance + */ +#define HTT_STATS_PDEV_RTT_TX_RX_INSTANCES (2) typedef struct { htt_tlv_hdr_t tlv_hdr; struct { /* base_delay: picosecond units */ - A_UINT32 base_delay[HTT_STATS_PDEV_RTT_DELAY_PKT_BW]; + A_INT32 base_delay[HTT_STATS_PDEV_RTT_TX_RX_INSTANCES][HTT_STATS_PDEV_RTT_DELAY_PKT_BW]; /* final_delay: picosecond units */ - A_UINT32 final_delay[HTT_STATS_PDEV_RTT_DELAY_PKT_BW]; - A_UINT32 per_chan_bias; - A_UINT32 off_chan_bias; - A_UINT32 chan_bw_bias; - A_UINT32 digital_block_status; + A_INT32 final_delay[HTT_STATS_PDEV_RTT_TX_RX_INSTANCES][HTT_STATS_PDEV_RTT_DELAY_PKT_BW]; + A_INT32 per_chan_bias[HTT_STATS_PDEV_RTT_TX_RX_INSTANCES]; + A_INT32 off_chan_bias[HTT_STATS_PDEV_RTT_TX_RX_INSTANCES]; + A_INT32 chan_bw_bias[HTT_STATS_PDEV_RTT_TX_RX_INSTANCES]; + A_UINT32 rtt_11mc_chain_idx[HTT_STATS_PDEV_RTT_TX_RX_INSTANCES]; A_UINT32 chan_freq; /* MHz units */ A_UINT32 bandwidth; /* MHz units */ + A_UINT32 vreg_cache; + A_UINT32 rtt_11mc_vreg_set_cnt; + A_UINT32 cfr_vreg_set_cnt; + A_UINT32 cir_vreg_set_cnt; + A_UINT32 digital_block_status; } rtt_delay[HTT_STATS_PDEV_RTT_DELAY_NUM_INSTANCES]; } htt_stats_pdev_rtt_delay_tlv; @@ -9030,6 +9040,7 @@ typedef struct { * HTT_STATS_PDEV_AOA_TAG */ #define HTT_STATS_PDEV_AOA_MAX_HISTOGRAM (10) +#define HTT_STATS_PDEV_AOA_MAX_CHAINS (4) typedef struct { htt_tlv_hdr_t tlv_hdr; @@ -9040,10 +9051,41 @@ typedef struct { * 2 -> very low gain */ A_UINT32 gain_table[HTT_STATS_PDEV_AOA_MAX_HISTOGRAM]; - A_UINT32 phase_calculated[HTT_STATS_PDEV_AOA_MAX_HISTOGRAM]; - A_UINT32 phase_in_degree[HTT_STATS_PDEV_AOA_MAX_HISTOGRAM]; + A_UINT32 phase_calculated[HTT_STATS_PDEV_AOA_MAX_HISTOGRAM][HTT_STATS_PDEV_AOA_MAX_CHAINS]; + A_INT32 phase_in_degree[HTT_STATS_PDEV_AOA_MAX_HISTOGRAM][HTT_STATS_PDEV_AOA_MAX_CHAINS]; } htt_stats_pdev_aoa_tlv; +/* RTT VREG MASK */ +#define HTT_STATS_RTT_CHAN_CAPTURE_MASK 0x00000001 +#define HTT_STATS_RTT_HW_FAC_MASK 0x00000002 +#define HTT_STATS_RTT_11AZ_DELAYED_FEEDBACK_MASK 0x00000004 +#define HTT_STATS_RTT_11AZ_DROP_FIRST_LMR_MASK 0x00000008 +#define HTT_STATS_RTT_CAPTURE_CFR_MASK 0x00000010 +#define HTT_STATS_RTT_CAPTURE_CIR_MASK 0x00000020 +#define HTT_STATS_RTT_DET0_REPETITIVE_CHAN_CAPTURE_EN_MASK 0x00000040 +#define HTT_STATS_RTT_CAPTURE_SPARE_1_MASK 0x00000080 +#define HTT_STATS_RTT_CAPTURE_SPARE_2_MASK 0x00000100 + +/* RTT Digital block compensation mask */ +#define HTT_STATS_RTT_TX_IQCORR_COMP_MASK 0x00000001 +#define HTT_STATS_RTT_TX_PREEMP_FIR_COMP_MASK 0x00000002 +#define HTT_STATS_RTT_LPC_FILTER_COMP_MASK 0x00000004 +#define HTT_STATS_RTT_SM_CFR_COMP_MASK 0x00000008 +#define HTT_STATS_RTT_CAL_PDC_DIS_COMP_MASK 0x00000010 +#define HTT_STATS_RTT_CAL_PAPRD_COMP_MASK 0x00000020 +#define HTT_STATS_RTT_CAL_RXCORR_IQCORR_COMP_MASK 0x00000040 +#define HTT_STATS_RTT_CAL_RXCORR_PHASE_COMP_MASK 0x00000080 +#define HTT_STATS_RTT_PHYRF_ICI_CORR_COMP_MASK 0x00000100 +#define HTT_STATS_RTT_VSRC_PRE_FIR_SEL_COMP_MASK 0x00000200 +#define HTT_STATS_RTT_CVSRC_PRE_FIR_SEL2_COMP_MASK 0x00000400 +#define HTT_STATS_RTT_CAL_ENABLE_GAINDEPCORR_COMP_MASK 0x00000800 +#define HTT_STATS_RTT_CAL_DC_NOTCH_FILTER_COMP_MASK 0x00001000 +#define HTT_STATS_RTT_CAL_DET_PATH_COMP_MASK 0x00002000 +#define HTT_STATS_RTT_CAL_RXCORR_ADC_DC_COMP_MASK 0x00004000 +#define HTT_STATS_RTT_CAL_RXCORR_ADC_GAIN_COMP_MASK 0x00008000 +#define HTT_STATS_RTT_CAL_SPUR_FILTER_PRI_DET_COMP_MASK 0x00010000 +#define HTT_STATS_RTT_CAL_SPUR_FILTER_PRI_COMP_MASK 0x00020000 + #define HTT_DLPAGER_STATS_MAX_HIST 10 #define HTT_DLPAGER_ASYNC_LOCKED_PAGE_COUNT_M 0x000000FF #define HTT_DLPAGER_ASYNC_LOCKED_PAGE_COUNT_S 0 From 0e17de4e8d1791eee6c469a5447bcdd6850d32c0 Mon Sep 17 00:00:00 2001 From: Amit Mehta Date: Wed, 9 Oct 2024 02:56:23 -0700 Subject: [PATCH 20/54] fw-api: Add REO2SW1 ring status address to peach and kiwi Add REO2SW1 ring status address to peach and kiwi Change-Id: I54ea9c8eebbc90f5ce58bb888d4053433f043b0d CRs-Fixed: 3948871 --- hw/kiwi/v1/wcss_seq_hwioreg_umac.h | 7 ++++++- hw/kiwi/v2/wcss_seq_hwioreg_umac.h | 7 ++++++- hw/peach/v1/wcss_seq_hwioreg_umac.h | 7 ++++++- hw/peach/v2/wcss_seq_hwioreg_umac.h | 5 +++++ 4 files changed, 23 insertions(+), 3 deletions(-) diff --git a/hw/kiwi/v1/wcss_seq_hwioreg_umac.h b/hw/kiwi/v1/wcss_seq_hwioreg_umac.h index 69dac92cb19e..03a0e8f9dc2d 100644 --- a/hw/kiwi/v1/wcss_seq_hwioreg_umac.h +++ b/hw/kiwi/v1/wcss_seq_hwioreg_umac.h @@ -1,6 +1,6 @@ /* - * Copyright (c) 2021 Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) 2021,2024 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -386,6 +386,11 @@ #define HWIO_WBM_R2_WBM2SW1_RELEASE_RING_HP_ADDR(x) ((x) + 0x30d0) #define HWIO_WBM_R0_WBM2SW0_RELEASE_RING_BASE_MSB_RING_SIZE_BMSK 0xfffff00 #define HWIO_WBM_R0_WBM2SW0_RELEASE_RING_BASE_MSB_RING_SIZE_SHFT 8 +#define HWIO_REO_R0_REO2SW1_RING_STATUS_ADDR(x) ((x) + 0x3b0) +#define HWIO_REO_R0_REO2SW1_RING_STATUS_NUM_AVAIL_WORDS_BMSK 0xffff0000 +#define HWIO_REO_R0_REO2SW1_RING_STATUS_NUM_AVAIL_WORDS_SHFT 16 +#define HWIO_REO_R0_REO2SW1_RING_STATUS_NUM_VALID_WORDS_BMSK 0xffff +#define HWIO_REO_R0_REO2SW1_RING_STATUS_NUM_VALID_WORDS_SHFT 0 #define HWIO_REO_R0_REO2SW1_RING_MSI2_BASE_LSB_ADDR(x) ((x) + 0x3fc) #define HWIO_REO_R0_REO2SW1_RING_MSI2_BASE_MSB_ADDR(x) ((x) + 0x400) #define HWIO_REO_R0_REO2SW1_RING_MSI2_DATA_ADDR(x) ((x) + 0x404) diff --git a/hw/kiwi/v2/wcss_seq_hwioreg_umac.h b/hw/kiwi/v2/wcss_seq_hwioreg_umac.h index f594c525deed..11cb09569e7d 100644 --- a/hw/kiwi/v2/wcss_seq_hwioreg_umac.h +++ b/hw/kiwi/v2/wcss_seq_hwioreg_umac.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) 2022-2024 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -224,6 +224,11 @@ #define HWIO_REO_R0_REO2SW1_RING_BASE_MSB_RING_SIZE_BMSK 0xfffff00 #define HWIO_REO_R0_REO2SW1_RING_BASE_MSB_RING_SIZE_SHFT 8 #define HWIO_REO_R0_REO2SW1_RING_ID_ADDR(x) ((x) + 0x4ec) +#define HWIO_REO_R0_REO2SW1_RING_STATUS_ADDR(x) ((x) + 0x4f0) +#define HWIO_REO_R0_REO2SW1_RING_STATUS_NUM_AVAIL_WORDS_BMSK 0xffff0000 +#define HWIO_REO_R0_REO2SW1_RING_STATUS_NUM_AVAIL_WORDS_SHFT 16 +#define HWIO_REO_R0_REO2SW1_RING_STATUS_NUM_VALID_WORDS_BMSK 0xffff +#define HWIO_REO_R0_REO2SW1_RING_STATUS_NUM_VALID_WORDS_SHFT 0 #define HWIO_REO_R0_REO2SW1_RING_MISC_ADDR(x) ((x) + 0x4f4) #define HWIO_REO_R0_REO2SW1_RING_HP_ADDR_LSB_ADDR(x) ((x) + 0x4f8) #define HWIO_REO_R0_REO2SW1_RING_HP_ADDR_MSB_ADDR(x) ((x) + 0x4fc) diff --git a/hw/peach/v1/wcss_seq_hwioreg_umac.h b/hw/peach/v1/wcss_seq_hwioreg_umac.h index 70f00a564205..b56832a90289 100644 --- a/hw/peach/v1/wcss_seq_hwioreg_umac.h +++ b/hw/peach/v1/wcss_seq_hwioreg_umac.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) 2023-2024 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -794,6 +794,11 @@ #define HWIO_REO_R0_REO2SW1_RING_BASE_MSB_RING_SIZE_BMSK 0xfffff00 #define HWIO_REO_R0_REO2SW1_RING_BASE_MSB_RING_SIZE_SHFT 8 #define HWIO_REO_R0_REO2SW1_RING_ID_ADDR(x) ((x) + 0x508) +#define HWIO_REO_R0_REO2SW1_RING_STATUS_ADDR(x) ((x) + 0x50c) +#define HWIO_REO_R0_REO2SW1_RING_STATUS_NUM_AVAIL_WORDS_BMSK 0xffff0000 +#define HWIO_REO_R0_REO2SW1_RING_STATUS_NUM_AVAIL_WORDS_SHFT 16 +#define HWIO_REO_R0_REO2SW1_RING_STATUS_NUM_VALID_WORDS_BMSK 0xffff +#define HWIO_REO_R0_REO2SW1_RING_STATUS_NUM_VALID_WORDS_SHFT 0 #define HWIO_REO_R0_REO2SW1_RING_MISC_ADDR(x) ((x) + 0x510) #define HWIO_REO_R0_REO2SW1_RING_MISC_TRANSACTION_TYPE_BMSK 0x8000000 #define HWIO_REO_R0_REO2SW1_RING_MISC_TRANSACTION_TYPE_SHFT 27 diff --git a/hw/peach/v2/wcss_seq_hwioreg_umac.h b/hw/peach/v2/wcss_seq_hwioreg_umac.h index 4bfd1cc75984..a70dea57d36a 100644 --- a/hw/peach/v2/wcss_seq_hwioreg_umac.h +++ b/hw/peach/v2/wcss_seq_hwioreg_umac.h @@ -797,6 +797,11 @@ #define HWIO_REO_R0_REO2SW1_RING_MISC_ADDR(x) ((x) + 0x510) #define HWIO_REO_R0_REO2SW1_RING_MISC_TRANSACTION_TYPE_BMSK 0x8000000 #define HWIO_REO_R0_REO2SW1_RING_MISC_TRANSACTION_TYPE_SHFT 27 +#define HWIO_REO_R0_REO2SW1_RING_STATUS_ADDR(x) ((x) + 0x50c) +#define HWIO_REO_R0_REO2SW1_RING_STATUS_NUM_AVAIL_WORDS_BMSK 0xffff0000 +#define HWIO_REO_R0_REO2SW1_RING_STATUS_NUM_AVAIL_WORDS_SHFT 16 +#define HWIO_REO_R0_REO2SW1_RING_STATUS_NUM_VALID_WORDS_BMSK 0xffff +#define HWIO_REO_R0_REO2SW1_RING_STATUS_NUM_VALID_WORDS_SHFT 0 #define HWIO_REO_R0_REO2SW1_RING_HP_ADDR_LSB_ADDR(x) ((x) + 0x514) #define HWIO_REO_R0_REO2SW1_RING_HP_ADDR_MSB_ADDR(x) ((x) + 0x518) #define HWIO_REO_R0_REO2SW1_RING_PRODUCER_INT_SETUP_ADDR(x) ((x) + 0x524) From 66677cbbbe42a66d3123b73a5924b7f7916f2b29 Mon Sep 17 00:00:00 2001 From: spuligil Date: Fri, 18 Oct 2024 06:01:30 -0700 Subject: [PATCH 21/54] fw-api: CL 27869351 - update fw common interface files Change-Id: I9f3a19cddb9207cf0f7fea88145c03def614f38e CRs-Fixed: 3830439 --- 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 ce1ab68e7e2a..b348fa0ff949 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -16892,6 +16892,8 @@ typedef struct { #define WMI_MLO_FLAGS_SET_LINK_ADD_CANCEL(mlo_flags, value) WMI_SET_BITS(mlo_flags, 15, 1, value) #define WMI_MLO_FLAGS_GET_LINK_DEL_CANCEL(mlo_flags) WMI_GET_BITS(mlo_flags, 16, 1) #define WMI_MLO_FLAGS_SET_LINK_DEL_CANCEL(mlo_flags, value) WMI_SET_BITS(mlo_flags, 16, 1, value) +#define WMI_MLO_FLAGS_GET_START_AS_ACTIVE(mlo_flags) WMI_GET_BITS(mlo_flags, 17, 1) +#define WMI_MLO_FLAGS_SET_START_AS_ACTIVE(mlo_flags, value) WMI_SET_BITS(mlo_flags, 17, 1, value) /* this structure used for passing MLO flags */ typedef struct { @@ -16920,7 +16922,8 @@ typedef struct { mlo_bridge_link:1, /* indicate link is bridge link */ mlo_link_add_cancel:1, /* rollback of previous dynamic link addition */ mlo_link_del_cancel:1, /* rollback of previous dynamic link deletion */ - unused: 15; + start_as_active:1, /* indicate link should be started in active status */ + unused: 14; }; A_UINT32 mlo_flags; }; @@ -46282,6 +46285,7 @@ typedef enum { WMI_MLO_LINK_FORCE_REASON_LINK_REMOVAL = 3, /* Set force specific links because of AP-side link removal */ WMI_MLO_LINK_FORCE_REASON_TDLS = 4, /* Set force specific links because of 11BE MLO TDLS setup/teardown */ WMI_MLO_LINK_FORCE_REASON_REVERT_FAILURE = 5, /* Set force specific links for revert previous failed due to host reject */ + WMI_MLO_LINK_FORCE_REASON_LINK_DELETE = 6, /* Set force specific links because link is deleted from associated link set */ } WMI_MLO_LINK_FORCE_REASON; #define WMI_MLO_CONTROL_FLAGS_GET_OVERWRITE_FORCE_ACTIVE(mlo_flags) \ @@ -48625,6 +48629,7 @@ typedef enum _WMI_VDEV_PAUSE_TYPE WMI_VDEV_PAUSE_TYPE_UNKNOWN = 0, WMI_VDEV_PAUSE_TYPE_MLO_LINK = 1, WMI_VDEV_PAUSE_TYPE_TX = 2, + WMI_VDEV_PAUSE_TYPE_TX_DATA = 3, } WMI_VDEV_PAUSE_TYPE; typedef struct { @@ -48639,10 +48644,18 @@ typedef struct { A_UINT32 pause_dur_ms; } wmi_vdev_pause_cmd_fixed_param; +typedef enum _WMI_MLO_link_BSS_OP_CODE +{ + MLO_LINK_BSS_OP_UPDATE = 0, + MLO_LINK_BSS_OP_ADD = 1, + MLO_LINK_BSS_OP_DEL = 2, +} WMI_MLO_link_BSS_OP_CODE; + typedef struct { A_UINT32 tlv_header; A_UINT32 ieee_link_id; /* key to identify a link */ wmi_channel wmi_chan; + A_UINT32 op_code; /* see definition of WMI_MLO_link_BSS_OP_CODE */ } wmi_mlo_link_bss_param; typedef struct { diff --git a/fw/wmi_version.h b/fw/wmi_version.h index a512d1232bff..790c4a9f04b2 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_ 1536 +#define __WMI_REVISION_ 1537 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 34172f2d2afb3e7ece70428d1b379a6a7ab8d643 Mon Sep 17 00:00:00 2001 From: spuligil Date: Sat, 19 Oct 2024 06:01:20 -0700 Subject: [PATCH 22/54] fw-api: CL 27875409 - update fw common interface files Change-Id: I2a34f85b9b44b281a8a3c678108f077ca4056433 CRs-Fixed: 3830439 --- fw/wmi_tlv_defs.h | 4 +++- fw/wmi_unified.h | 25 +++++++++++++++++++++++++ fw/wmi_version.h | 2 +- 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index 2d39ef39164f..cf4ceb7a9a3a 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1458,6 +1458,7 @@ typedef enum { WMITLV_TAG_STRUC_wmi_scan_cache_result_event_fixed_param, WMITLV_TAG_STRUC_wmi_scan_cache_info, WMITLV_TAG_STRUC_wmi_POWER_BOOST_CAPABILITIES, + WMITLV_TAG_STRUC_wmi_RSSI_ACCURACY_IMPROVEMENT_CAPABILITIES, } WMITLV_TAG_ID; /* * IMPORTANT: Please add _ALL_ WMI Commands Here. @@ -5755,7 +5756,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_SERVICE_READY_EXT_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_enhanced_aoa_caps_param, aoa_caps_param, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_enhanced_aoa_per_band_caps_param, aoa_per_band_caps_param, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_sar_flag_tlv_param, sar_flags, WMITLV_SIZE_VAR) \ - WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, WMI_POWER_BOOST_CAPABILITIES, power_boost_capabilities, WMITLV_SIZE_VAR) + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, WMI_POWER_BOOST_CAPABILITIES, power_boost_capabilities, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, WMI_RSSI_ACCURACY_IMPROVEMENT_CAPABILITIES, rssi_accuracy_improvement_capabilities, WMITLV_SIZE_VAR) WMITLV_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 b348fa0ff949..59ca333b560c 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -3845,6 +3845,8 @@ typedef struct { * A_INT32 hw_tx_power_signed[WMI_HW_TX_POWER_CAPS_MAX]; * wmi_aux_dev_capabilities aux_dev_caps[]; * WMI_POWER_BOOST_CAPABILITIES power_boost_capabilities[]; + * WMI_RSSI_ACCURACY_IMPROVEMENT_CAPABILITIES + * rssi_accuracy_improvement_capabilities[]; */ } wmi_service_ready_ext2_event_fixed_param; @@ -49477,6 +49479,29 @@ typedef struct { }; } WMI_POWER_BOOST_CAPABILITIES; +#define WMI_RSSI_ACCURACY_IMPROVEMENT_CAPABILITIES_PHY_ID_GET(word32) WMI_GET_BITS(word32, 0, 4) +#define WMI_RSSI_ACCURACY_IMPROVEMENT_CAPABILITIES_PHY_ID_SET(word32, value) WMI_SET_BITS(word32, 0, 4, value) +#define WMI_RSSI_ACCURACY_IMPROVEMENT_CAPABILITIES_RSSI_ACCURACY_ENABLE_GET(word32) WMI_GET_BITS(word32, 4, 1) +#define WMI_RSSI_ACCURACY_IMPROVEMENT_CAPABILITIES_RSSI_ACCURACY_ENABLE_SET(word32, value) WMI_SET_BITS(word32, 4, 1, value) + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_RSSI_ACCURACY_CAPABILITIES */ + union { + struct { + /* + * bits 3:0 -> PHY ID + * bit 4 -> rssi accuracy enhancement using MultiGainRSSI + * offset correction enable flag + * bits 31:5 -> reserved + */ + A_UINT32 + phy_id: 4, + rssi_accuracy_enable: 1, + reserved: 27; + }; + }; +} WMI_RSSI_ACCURACY_IMPROVEMENT_CAPABILITIES; + /* ADD NEW DEFS HERE */ diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 790c4a9f04b2..31de7d7ceb97 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_ 1537 +#define __WMI_REVISION_ 1538 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From a99912c7192053583b00e9387cd2e64ae83f77cf Mon Sep 17 00:00:00 2001 From: spuligil Date: Sun, 20 Oct 2024 06:01:26 -0700 Subject: [PATCH 23/54] fw-api: CL 27885947 - update fw common interface files Change-Id: I53c519fa2ac69b2bbf7cab64e4f8a5cceae65bd7 CRs-Fixed: 3830439 --- fw/wmi_unified.h | 5 +++++ fw/wmi_version.h | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 59ca333b560c..67c54b959e33 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -49328,6 +49328,11 @@ typedef struct { * training has been done */ A_UINT32 phy_mode; + /* size_kb: + * Size of the buffer consumed to write the I/Q samples data by uCode, + * in units of KB + */ + A_UINT32 size_kb; } wmi_pdev_power_boost_event_fixed_param; typedef enum { diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 31de7d7ceb97..493a0644e416 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_ 1538 +#define __WMI_REVISION_ 1539 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 1960d8ebf22ea6fe11d8b2dd35f82223f8458f58 Mon Sep 17 00:00:00 2001 From: spuligil Date: Wed, 23 Oct 2024 06:01:43 -0700 Subject: [PATCH 24/54] fw-api: CL 27902326 - update fw common interface files Change-Id: I39a9848dea227f254166c2255a1cba75ed30a790 CRs-Fixed: 3830439 --- fw/wmi_tlv_defs.h | 27 ++++++++++++ fw/wmi_unified.h | 105 ++++++++++++++++++++++++++++++++++++++++++++-- fw/wmi_version.h | 2 +- 3 files changed, 130 insertions(+), 4 deletions(-) diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index cf4ceb7a9a3a..175b657ac57f 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1459,6 +1459,11 @@ typedef enum { WMITLV_TAG_STRUC_wmi_scan_cache_info, WMITLV_TAG_STRUC_wmi_POWER_BOOST_CAPABILITIES, WMITLV_TAG_STRUC_wmi_RSSI_ACCURACY_IMPROVEMENT_CAPABILITIES, + WMITLV_TAG_STRUC_wmi_mlo_link_reconfig_start_indication_event_fixed_param, + WMITLV_TAG_STRUC_wmi_mlo_link_reconfig_fixed_param, + WMITLV_TAG_STRUC_wmi_mlo_link_reconfig_complete_fixed_param, + WMITLV_TAG_STRUC_wmi_mlo_link_add_param, + WMITLV_TAG_STRUC_wmi_mlo_link_del_param, } WMITLV_TAG_ID; /* * IMPORTANT: Please add _ALL_ WMI Commands Here. @@ -2016,6 +2021,8 @@ typedef enum { OP(WMI_PDEV_POWER_BOOST_CMDID) \ OP(WMI_PDEV_POWER_BOOST_MEM_ADDR_CMDID) \ OP(WMI_GET_SCAN_CACHE_RESULT_CMDID) \ + OP(WMI_MLO_LINK_RECONFIG_CMDID) \ + OP(WMI_MLO_LINK_RECONFIG_COMPLETE_CMDID) \ /* add new CMD_LIST elements above this line */ @@ -2347,6 +2354,7 @@ typedef enum { OP(WMI_PDEV_POWER_BOOST_EVENTID) \ OP(WMI_C2C_DETECT_EVENTID) \ OP(WMI_SCAN_CACHE_RESULT_EVENTID) \ + OP(WMI_MLO_LINK_RECONFIG_START_INDICATION_EVENTID) \ /* add new EVT_LIST elements above this line */ @@ -5340,6 +5348,18 @@ WMITLV_CREATE_PARAM_STRUC(WMI_MLO_AP_VDEV_TID_TO_LINK_MAP_CMDID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_mlo_peer_recommended_links, mlo_peer_recommended_links, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_MLO_LINK_RECOMMENDATION_CMDID); +/** WMI cmd to start STA initialized link reconfig */ +#define WMITLV_TABLE_WMI_MLO_LINK_RECONFIG_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mlo_link_reconfig_fixed_param, wmi_mlo_link_reconfig_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_mlo_link_add_param, link_add_param, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_mlo_link_del_param, link_del_param, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_MLO_LINK_RECONFIG_CMDID); + +/** WMI cmd to notify fw completion of link reconfig */ +#define WMITLV_TABLE_WMI_MLO_LINK_RECONFIG_COMPLETE_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mlo_link_reconfig_complete_fixed_param, wmi_mlo_link_reconfig_complete_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_MLO_LINK_RECONFIG_COMPLETE_CMDID); + /* Mcast ipv4 address filter list cmd */ #define WMITLV_TABLE_WMI_VDEV_IGMP_OFFLOAD_CMDID(id,op,buf,len) \ WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_igmp_offload_fixed_param, wmi_igmp_offload_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ @@ -7766,6 +7786,13 @@ WMITLV_CREATE_PARAM_STRUC(WMI_MGMT_SRNG_REAP_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mlo_peer_tid_to_link_map_event_fixed_param, wmi_mlo_peer_tid_to_link_map_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_MLO_PEER_TID_TO_LINK_MAP_EVENTID); +/** Indicate host to start link reconfigure */ +#define WMITLV_TABLE_WMI_MLO_LINK_RECONFIG_START_INDICATION_EVENTID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mlo_link_reconfig_start_indication_event_fixed_param, wmi_mlo_link_reconfig_start_indication_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_mlo_link_add_param, link_add_param, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_mlo_link_del_param, link_del_param, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_MLO_LINK_RECONFIG_START_INDICATION_EVENTID); + /* USD Service Event */ #define WMITLV_TABLE_WMI_USD_SERVICE_EVENTID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_usd_service_event_fixed_param, wmi_usd_service_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 67c54b959e33..c4da83c42cea 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -1696,6 +1696,10 @@ typedef enum { WMI_MLO_PRIMARY_LINK_PEER_MIGRATION_CMDID, /** WMI cmd to recommand preferred link */ WMI_MLO_LINK_RECOMMENDATION_CMDID, + /** WMI cmd to start STA initialized link reconfig */ + WMI_MLO_LINK_RECONFIG_CMDID, + /** WMI cmd to notify fw completion of link reconfig */ + WMI_MLO_LINK_RECONFIG_COMPLETE_CMDID, /** WMI commands specific to Service Aware WiFi (SAWF) */ /** configure or reconfigure the parameters for a service class */ @@ -2582,6 +2586,8 @@ typedef enum { WMI_MLO_TLT_SELECTION_FOR_TID_SPRAY_EVENTID, /** WMI Event to send the status of T2LM configured */ WMI_MLO_PEER_TID_TO_LINK_MAP_EVENTID, + /** Indicate host to start link reconfigure */ + WMI_MLO_LINK_RECONFIG_START_INDICATION_EVENTID, /* WMI event specific to Quiet handling */ WMI_QUIET_HANDLING_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_QUIET_OFL), @@ -36715,12 +36721,29 @@ typedef enum wmi_hw_mode_config_type { #define WMI_SUPPORT_AAR_GET(mld_capability) WMI_GET_BITS(mld_capability, 12, 1) #define WMI_SUPPORT_AAR_SET(mld_capability, value) WMI_SET_BITS(mld_capability, 12, 1, value) +#define WMI_SUPPORT_LINK_RECONFIG_SUPPORT_GET(mld_capability) WMI_GET_BITS(mld_capability, 13, 1) +#define WMI_SUPPORT_LINK_RECONFIG_SUPPORT_SET(mld_capability, value) WMI_SET_BITS(mld_capability, 13, 1, value) + + /* * 11BE Ext MLD Capability Set and Get macros */ #define WMI_EXT_MLD_OPERATION_PARAMETER_UPDATE_SUPP_GET(ext_mld_capability) WMI_GET_BITS(ext_mld_capability, 0, 1) #define WMI_EXT_MLD_OPERATION_PARAMETER_UPDATE_SUPP_SET(ext_mld_capability, value) WMI_SET_BITS(ext_mld_capability, 0, 1, value) +#define WMI_EXT_MLD_RECOMMENDED_MAX_SIMULTANEOUS_LINKS_GET(ext_mld_capability) WMI_GET_BITS(ext_mld_capability, 1, 4) +#define WMI_EXT_MLD_RECOMMENDED_MAX_SIMULTANEOUS_LINKS_SET(ext_mld_capability, value) WMI_SET_BITS(ext_mld_capability, 1, 4, value) + +#define WMI_EXT_MLD_NSTR_STATUS_UPDATE_SUPPORT_GET(ext_mld_capability) WMI_GET_BITS(ext_mld_capability, 5, 1) +#define WMI_EXT_MLD_NSTR_STATUS_UPDATE_SUPPORT_SET(ext_mld_capability, value) WMI_SET_BITS(ext_mld_capability, 1, 5, value) + +#define WMI_EXT_MLD_EMLSR_ONE_LINK_SUPPORT_GET(ext_mld_capability) WMI_GET_BITS(ext_mld_capability, 6, 1) +#define WMI_EXT_MLD_EMLSR_ONE_LINK_SUPPORT_SET(ext_mld_capability, value) WMI_SET_BITS(ext_mld_capability, 6, 1, value) + +#define WMI_EXT_MLD_BTM_MLD_RECOMMEND_FOR_MULTI_AP_SUPPORT_GET(ext_mld_capability) WMI_GET_BITS(ext_mld_capability, 7, 1) +#define WMI_EXT_MLD_BTM_MLD_RECOMMEND_FOR_MULTI_AP_SUPPORT_SET(ext_mld_capability, value) WMI_SET_BITS(ext_mld_capability, 7, 1, value) + + /* * 11BE MSD Capability Set and Get macros */ @@ -37004,7 +37027,8 @@ typedef struct { * Value 3 is reserved */ freq_separation_str:5, aar_support:1, - reserved2: 19; + link_reconfig_support:1, + reserved2: 18; }; A_UINT32 mld_capability; }; @@ -37012,7 +37036,11 @@ typedef struct { struct { A_UINT32 op_update_para_support:1, /* Indicates support of operation parameter update negotiation */ - reserved3: 31; + recommended_max_simultaneous_links:4, + nstr_status_update_support:1, + emlsr_one_link_support:1, + btm_recommended_for_multi_ap:1, + reserved3: 24; }; A_UINT32 ext_mld_capability; }; @@ -38423,6 +38451,8 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command) WMI_RETURN_STRING(WMI_PDEV_POWER_BOOST_CMDID); WMI_RETURN_STRING(WMI_PDEV_POWER_BOOST_MEM_ADDR_CMDID); WMI_RETURN_STRING(WMI_GET_SCAN_CACHE_RESULT_CMDID); + WMI_RETURN_STRING(WMI_MLO_LINK_RECONFIG_CMDID); + WMI_RETURN_STRING(WMI_MLO_LINK_RECONFIG_COMPLETE_CMDID); } return (A_UINT8 *) "Invalid WMI cmd"; @@ -46598,6 +46628,31 @@ typedef struct { */ } wmi_mlo_link_recommendation_fixed_param; +typedef struct { + /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_mlo_link_reconfig_fixed_param */ + A_UINT32 tlv_header; + /* unique id identifying the VDEV, generated by the caller */ + A_UINT32 vdev_id; + wmi_mac_addr mld_addr; /* MLD address of AP */ + /* The TLVs follows this structure: + * wmi_mlo_link_add_param link_add_param[]; + * wmi_mlo_link_del_param link_del_param[]; + */ +} wmi_mlo_link_reconfig_fixed_param; + +typedef struct { + /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_mlo_link_reconfig_complete_fixed_param */ + A_UINT32 tlv_header; + /* unique id identifying the VDEV, generated by the caller */ + A_UINT32 vdev_id; + /* MLD address of AP */ + wmi_mac_addr mld_addr; + /* any non-zero values of status indicate link reconfig failure. */ + A_UINT32 status; + /* valid only when status is non-zero. fw will do reassociation if link reconfig failure */ + A_UINT32 reassoc_if_failure; +} wmi_mlo_link_reconfig_complete_fixed_param; + #define WMI_TID_TO_LINK_MAP_TID_NUM_GET(_var) WMI_GET_BITS(_var, 0, 5) #define WMI_TID_TO_LINK_MAP_TID_NUM_SET(_var, _val) WMI_SET_BITS(_var, 0, 5, _val) @@ -46752,7 +46807,7 @@ typedef struct { */ } wmi_peer_tid_to_link_map_fixed_param; -typedef struct{ +typedef struct { /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_mlo_ap_vdev_tid_to_link_map_cmd_fixed_param */ A_UINT32 tlv_header; /** pdev_id for identifying the MAC, See macros starting with WMI_PDEV_ID_ for values. */ @@ -49282,6 +49337,50 @@ typedef struct { A_UINT32 vdev_id; } wmi_mlo_peer_tid_to_link_map_event_fixed_param; +typedef struct { + /** TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_mlo_link_reconfig_start_indication_event_fixed_param */ + A_UINT32 tlv_header; + /* vdev_id on which link reconfig indicate event is received */ + A_UINT32 vdev_id; + /* MLD MAC address */ + wmi_mac_addr mld_mac_address; + /* trigger reason of request link reconfig to host, + * enum of WMI_ROAM_TRIGGER_REASON_ID. + * WMI_ROAM_TRIGGER_REASON_FORCED will be used for STA(User/Host) + * initiated link reconfig. + * WMI_ROAM_TRIGGER_REASON_BTM will be used for AP initiated link reconfig. + * Other will be used for STA(fw) initiated link reconfig. + */ + A_UINT32 trigger_reason; + /* trigger_result: + * This field is only valid when trigger_reason == + * WMI_ROAM_TRIGGER_REASON_FORCED. + * Any non-zero values of trigger_result indicate link reconfig failure. + */ + A_UINT32 trigger_result; + /* The TLVs follows this structure: + * wmi_mlo_link_add_param link_add_param[]; + * wmi_mlo_link_del_param link_del_param[]; + */ +} wmi_mlo_link_reconfig_start_indication_event_fixed_param; + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_mlo_link_add_param */ + A_UINT32 link_id; /* AP's link ID of add link */ + wmi_mac_addr link_addr; /* AP's link address of add link */ + /* vdev_id: + * which vdev to repurpose on with add link_id if it's not 0xff + */ + A_UINT32 vdev_id; +} wmi_mlo_link_add_param; + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_mlo_link_del_param */ + A_UINT32 link_id; /* AP's link id of delete link */ + wmi_mac_addr link_addr; /* AP's link address of delete link */ +} wmi_mlo_link_del_param; + typedef enum { WMI_EVENT_POWER_BOOST_START_TRAINING = 0, WMI_EVENT_POWER_BOOST_ABORT, diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 493a0644e416..d9ca0a52c84e 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_ 1539 +#define __WMI_REVISION_ 1540 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From e824d873730b0fd23a494046b642614f7f400ec8 Mon Sep 17 00:00:00 2001 From: spuligil Date: Fri, 25 Oct 2024 06:01:39 -0700 Subject: [PATCH 25/54] fw-api: CL 27912893 - update fw common interface files Change-Id: I17b025acecb68c3580965d1110453d5ccfdefb4b CRs-Fixed: 3830439 --- fw/wmi_unified.h | 7 +++++++ fw/wmi_version.h | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index c4da83c42cea..93b5a25efee1 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -44379,6 +44379,13 @@ typedef struct { /****** End of 11BE EHT MAC Capabilities Information field ******/ +/****** 11BE EHT OPS Information field ******/ + +/* Bit 0 is for MCS15. If bit0 is 1 then we enable mcs15 */ +#define WMI_EHT_OPS_SUPMCS15_GET(eht_ops) WMI_GET_BITS(eht_ops, 0, 1) +#define WMI_EHT_OPS_SUPMCS15_SET(eht_ops, value) WMI_SET_BITS(eht_ops, 0, 1, value) + +/****** End of 11BE EHT OPS Information field ******/ typedef struct { /** TLV tag and len; tag equals diff --git a/fw/wmi_version.h b/fw/wmi_version.h index d9ca0a52c84e..0d883a1f48fe 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_ 1540 +#define __WMI_REVISION_ 1541 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 6e7cb09538729b66d6caa99b4a9ea4d2e3d66e49 Mon Sep 17 00:00:00 2001 From: spuligil Date: Fri, 25 Oct 2024 06:03:00 -0700 Subject: [PATCH 26/54] fw-api: CL 27920732 - update fw common interface files Change-Id: I3ed2a7da0e0ace25d3776f57d39aef88b7470236 CRs-Fixed: 3830439 --- fw/wmi_tlv_defs.h | 10 ++++++++++ fw/wmi_unified.h | 48 +++++++++++++++++++++++++++++++++++++++++++++++ fw/wmi_version.h | 2 +- 3 files changed, 59 insertions(+), 1 deletion(-) diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index 175b657ac57f..91a08eac2fb4 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1464,6 +1464,9 @@ typedef enum { WMITLV_TAG_STRUC_wmi_mlo_link_reconfig_complete_fixed_param, WMITLV_TAG_STRUC_wmi_mlo_link_add_param, WMITLV_TAG_STRUC_wmi_mlo_link_del_param, + WMITLV_TAG_STRUC_wmi_pdev_wifi_radar_cap_evt_fixed_param, + WMITLV_TAG_STRUC_wmi_wifi_radar_ltf_length_capabilities, + WMITLV_TAG_STRUC_wmi_wifi_radar_chain_capabilities, } WMITLV_TAG_ID; /* * IMPORTANT: Please add _ALL_ WMI Commands Here. @@ -2355,6 +2358,7 @@ typedef enum { OP(WMI_C2C_DETECT_EVENTID) \ OP(WMI_SCAN_CACHE_RESULT_EVENTID) \ OP(WMI_MLO_LINK_RECONFIG_START_INDICATION_EVENTID) \ + OP(WMI_PDEV_WIFI_RADAR_CAPABILITIES_EVENTID) \ /* add new EVT_LIST elements above this line */ @@ -5785,6 +5789,12 @@ WMITLV_CREATE_PARAM_STRUC(WMI_SERVICE_READY_EXT2_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_spectral_fft_size_capabilities, fft_size_caps, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_SPECTRAL_CAPABILITIES_EVENTID); +#define WMITLV_TABLE_WMI_PDEV_WIFI_RADAR_CAPABILITIES_EVENTID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_wifi_radar_cap_evt_fixed_param, wmi_pdev_wifi_radar_cap_evt_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_wifi_radar_ltf_length_capabilities, wr_ltf_caps, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_wifi_radar_chain_capabilities, wr_chain_caps, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_WIFI_RADAR_CAPABILITIES_EVENTID); + #define WMITLV_TABLE_WMI_CHAN_RF_CHARACTERIZATION_INFO_EVENTID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_chan_rf_characterization_info_event_fixed_param, wmi_chan_rf_characterization_info_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, WMI_CHAN_RF_CHARACTERIZATION_INFO, wmi_chan_rf_characterization_info, WMITLV_SIZE_VAR) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 93b5a25efee1..7bb62e8d626f 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -1895,6 +1895,12 @@ typedef enum { /* Event to indicate ANN Power Boost update status from Target */ WMI_PDEV_POWER_BOOST_EVENTID, + /* + * WMI event to share Wi-Fi Radar - + * monostatic Wi-Fi sensing technique capabalites + */ + WMI_PDEV_WIFI_RADAR_CAPABILITIES_EVENTID, + /* VDEV specific events */ /** VDEV started event in response to VDEV_START request */ @@ -40719,6 +40725,48 @@ typedef struct { }; } wmi_spectral_fft_size_capabilities; +typedef struct { + /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_pdev_wifi_radar_cap_evt_fixed_param */ + A_UINT32 tlv_header; + /* ID of pdev to which capability is sent */ + A_UINT32 pdev_id; +} wmi_pdev_wifi_radar_cap_evt_fixed_param; + +typedef struct { + /** TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_wifi_radar_ltf_length_capabilities */ + A_UINT32 tlv_header; + + /* LTF at Tx configuration */ + A_UINT32 ltf_max_num_tx; + + /* LTF at Rx configuration in 2 power exponent number */ + A_UINT32 ltf_max_expo_num_rx; + + /* LTF to initially skip */ + A_UINT32 ltf_max_num_initial_skip_rx; + + /** + * This TLV contains target LTF capability for Wi-Fi Radar sensing feature. + */ +} wmi_wifi_radar_ltf_length_capabilities; + +typedef struct { + /** TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_wifi_radar_chain_capabilities */ + A_UINT32 tlv_header; + + /* Max num of Rx chain can be used to capture at a time */ + A_UINT32 max_num_rx_chain; + + /* Chain-to-Chain Isolation based chain pair support */ + A_UINT32 best_isolated_chain_pair_sel; + + /** + * This TLV contains target chain capability for Wi-Fi Radar sensing feature. + */ +} wmi_wifi_radar_chain_capabilities; + typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_pdev_ctl_failsafe_event_params */ A_UINT32 pdev_id; /* ID of pdev to which ctl failsafe status is sent */ diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 0d883a1f48fe..7042ac1bd4aa 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_ 1541 +#define __WMI_REVISION_ 1542 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 0f7fc854ab0bfd2be060c9c253a4153d86a88f21 Mon Sep 17 00:00:00 2001 From: spuligil Date: Fri, 25 Oct 2024 06:04:19 -0700 Subject: [PATCH 27/54] fw-api: CL 27929485 - update fw common interface files Change-Id: I5f93c4d23e3ef8136170b974f33071c92ce64cd0 CRs-Fixed: 3830439 --- fw/wmi_unified.h | 2 +- fw/wmi_version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 7bb62e8d626f..4b1472889dda 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -30134,7 +30134,7 @@ typedef struct wmi_stats_ext_event_vdev_ext { /* Set of TX MCS counters */ A_UINT32 tx_mcs[WMI_EXT_STATS_VDEV_EXT_MAX_MCS_COUNTERS]; /* Set of TX BW counters */ - A_UINT32 tx_bw[WMI_EXT_STATS_VDEV_EXT_MAX_MCS_COUNTERS]; + A_UINT32 tx_bw[WMI_STATS_EXT_EVENT_VDEV_EXT_BW_COUNTERS_MAX]; /* Set of RX MCS counters */ A_UINT32 rx_mcs[WMI_EXT_STATS_VDEV_EXT_MAX_MCS_COUNTERS]; /* Set of RX BW counters */ diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 7042ac1bd4aa..9a8cfd735abe 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_ 1542 +#define __WMI_REVISION_ 1543 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From a8a5bd66620d03fad25668b76e8d79a353a3f58a Mon Sep 17 00:00:00 2001 From: spuligil Date: Fri, 25 Oct 2024 06:05:41 -0700 Subject: [PATCH 28/54] fw-api: CL 27931985 - update fw common interface files Change-Id: I578a3f48ca2a9ba654e7db006abec7b231b67d4e CRs-Fixed: 3830439 --- fw/wmi_unified.h | 1 + fw/wmi_version.h | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 4b1472889dda..83b3c6a552c8 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -42338,6 +42338,7 @@ typedef enum { WMI_6GHZ_REG_PWRMODE_SP = 1, /* SP mode for AP and client products */ WMI_6GHZ_REG_PWRMODE_VLP = 2, /* VLP mode for AP and client products */ WMI_6GHZ_REG_PWRMODE_SP_STA = 3, /* SP client mode for AP products */ + WMI_6GHZ_REG_PWRMODE_C2C = 4, /*C2C client mode for AP and client products*/ WMI_6GHZ_REG_PWRMODE_MAX = 5 } WMI_6GHZ_REG_PWRMODE_TYPE; diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 9a8cfd735abe..dbb2cfdad77f 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_ 1543 +#define __WMI_REVISION_ 1544 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 37f8d725c7335b5ee711575b453ef17c5a13939d Mon Sep 17 00:00:00 2001 From: spuligil Date: Sat, 26 Oct 2024 06:01:39 -0700 Subject: [PATCH 29/54] fw-api: CL 27940458 - update fw common interface files Change-Id: I1aaf0cc8c56916a8fdb61452d81881cfe56ef536 CRs-Fixed: 3830439 --- fw/wmi_unified.h | 22 ++++++++++++++++------ fw/wmi_version.h | 2 +- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 83b3c6a552c8..072fccef2775 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -4813,13 +4813,16 @@ typedef struct { * 0 -> disable the feature * 1 -> enable the feature * Refer to below WMI_RSRC_CFG_FLAGS2_ENABLE_WDS_NULL_FRAME_SUPPORT - * Bit 23 - enable feature optimize power - * 0 -> disable the feature - * 1 -> enable the feature + * Bits 24:23 - enable feature optimize power + * 00 -> default value + * (target will auto-select whether to enable the feature) + * 01 -> disable the feature + * 10 -> enable the feature + * 11 -> reserved * Refer to the below WMI_RSRC_CFG_FLAGS2_OPTIMIZE_POWER_GET/SET * macros. * - * Bits 31:24 - Reserved + * Bits 31:25 - Reserved */ A_UINT32 flags2; /** @brief host_service_flags - can be used by Host to indicate @@ -5350,9 +5353,9 @@ typedef struct { WMI_SET_BITS(flags2, 22, 1, value) #define WMI_RSRC_CFG_FLAGS2_OPTIMIZE_POWER_GET(flags2) \ - WMI_GET_BITS(flags2, 23, 1) + WMI_GET_BITS(flags2, 23, 2) #define WMI_RSRC_CFG_FLAGS2_OPTIMIZE_POWER_SET(flags2, value) \ - WMI_SET_BITS(flags2, 23, 1, value) + WMI_SET_BITS(flags2, 23, 2, value) #define WMI_RSRC_CFG_HOST_SERVICE_FLAG_NAN_IFACE_SUPPORT_GET(host_service_flags) \ @@ -26087,6 +26090,13 @@ typedef enum WMI_VENDOR_OUI_ACTION_RESTRICT_MAX_MLO_LINKS = WMI_VENDOR_OUI_ACTION_RESTRICT_MAX_2_MLO_LINKS, + /* + * Send Auth, Assoc request, Reassoc request frame with 6Mbps rate + * if specific vendor OUI recevied in beacon on 2GHz. + */ + WMI_VENDOR_OUI_ACTION_AUTH_ASSOC_6MBPS_2GHZ = 17, + + /* Add any action before this line */ WMI_VENDOR_OUI_ACTION_MAX_ACTION_ID } wmi_vendor_oui_action_id; diff --git a/fw/wmi_version.h b/fw/wmi_version.h index dbb2cfdad77f..732799cd7ac7 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_ 1544 +#define __WMI_REVISION_ 1545 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 4c45a7924d990d9c3681a6ba00b484e1b3d78c3e Mon Sep 17 00:00:00 2001 From: spuligil Date: Mon, 28 Oct 2024 06:01:36 -0700 Subject: [PATCH 30/54] fw-api: CL 27942817 - update fw common interface files Change-Id: I9cd308b2f918cbc02261377610a299134ba7ff79 CRs-Fixed: 3830439 --- fw/wmi_unified.h | 3 +++ fw/wmi_version.h | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 072fccef2775..401a78e12c49 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -9898,6 +9898,9 @@ typedef enum { WMI_PDEV_PARAM_DSTALL_CONSECUTIVE_TX_NO_ACK_THRESHOLD, WMI_PDEV_PARAM_MGMT_SRNG_REAP_EVENT_THRESHOLD, + + /* To enable/disable DFS radar detection for scan radio */ + WMI_PDEV_PARAM_ENABLE_SCAN_RADIO_DFS, } WMI_PDEV_PARAM; #define WMI_PDEV_ONLY_BSR_TRIG_IS_ENABLED(trig_type) WMI_GET_BITS(trig_type, 0, 1) diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 732799cd7ac7..44f027f9bbea 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_ 1545 +#define __WMI_REVISION_ 1546 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 471b07cf210d3097dd6b07cee21a681c035d994d Mon Sep 17 00:00:00 2001 From: spuligil Date: Wed, 30 Oct 2024 06:01:30 -0700 Subject: [PATCH 31/54] fw-api: CL 27964384 - update fw common interface files Change-Id: I7176d063db449e9cce7985415f5ee7e4ed8b6765 CRs-Fixed: 3830439 --- fw/wmi_services.h | 1 + fw/wmi_version.h | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/fw/wmi_services.h b/fw/wmi_services.h index 4a0fe9145877..7f8e6da34d89 100644 --- a/fw/wmi_services.h +++ b/fw/wmi_services.h @@ -689,6 +689,7 @@ typedef enum { WMI_SERVICE_PROTECTED_TWT = 430, /* Indicates FW supports protected TWT operation */ WMI_SERVICE_SCAN_CACHE_REPORT_SUPPORT = 431, /* Indicates FW supports for sending scan cache report */ WMI_SERVICE_SCC_TPC_POWER_SUPPORT = 432, /* Indicates FW supports setting TPC power for SCC vdevs */ + WMI_SERVICE_DYNAMIC_TWT_MODE_SUPPORT = 433, /* Indicates FW supports Dynamic TWT mode for vdevs */ WMI_MAX_EXT2_SERVICE diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 44f027f9bbea..237bae291a2c 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_ 1546 +#define __WMI_REVISION_ 1547 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From a212895fef110ae0b1a9c13a4c15c1a70871b418 Mon Sep 17 00:00:00 2001 From: spuligil Date: Sat, 2 Nov 2024 06:01:26 -0700 Subject: [PATCH 32/54] fw-api: CL 27983080 - update fw common interface files Change-Id: Ifbcdfc70f7ac9d06249b8af06c7b99de5134b870 CRs-Fixed: 3830439 --- 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 401a78e12c49..1278c682f6e5 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -18056,6 +18056,10 @@ typedef enum { * Disassoc Imminent bit set to 1. */ #define WMI_VDEV_ROAM_11KV_CTRL_DONOT_SEND_DISASSOC_ON_BTM_DI_SET 0x4 +/* WMI_VDEV_PARAM_ROAM_11KV_BTM_REJECT: + * DUT send BTM response with reject status code if the bit set to 1. + */ +#define WMI_VDEV_PARAM_ROAM_11KV_BTM_REJECT 0x8 /** NAN vdev config Feature flags */ diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 237bae291a2c..462aaa3929c9 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_ 1547 +#define __WMI_REVISION_ 1548 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From ca0fa9ce2671658e9ceeb88646fee68e32dfcb0e Mon Sep 17 00:00:00 2001 From: spuligil Date: Tue, 5 Nov 2024 06:01:35 -0800 Subject: [PATCH 33/54] fw-api: CL 27993660 - update fw common interface files Change-Id: I24d08edf3ae53d6978a3d00ec9e2f1dc2de815af CRs-Fixed: 3830439 --- fw/wmi_unified.h | 13 +++++++------ fw/wmi_version.h | 2 +- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 1278c682f6e5..e98fb5d00758 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -6380,12 +6380,13 @@ typedef enum { /* Include MLO IE in Probe req */ #define WMI_SCAN_FLAG_EXT_INCL_MLIE_PRB_REQ 0x00004000 -#define WMI_SCAN_FLAG_EXT_LOW_LATENCY_SCAN 0x00008000 -#define WMI_SCAN_FLAG_EXT_RELIABLE_SCAN 0x00010000 -#define WMI_SCAN_FLAG_EXT_FAST_SCAN 0x00020000 -#define WMI_SCAN_FLAG_EXT_LOW_POWER_SCAN 0x00040000 -#define WMI_SCAN_FLAG_EXT_STOP_IF_BSSID_FOUND 0x00080000 -#define WMI_SCAN_FLAG_EXT_P2P_SCAN 0x00100000 +#define WMI_SCAN_FLAG_EXT_LOW_LATENCY_SCAN 0x00008000 +#define WMI_SCAN_FLAG_EXT_RELIABLE_SCAN 0x00010000 +#define WMI_SCAN_FLAG_EXT_FAST_SCAN 0x00020000 +#define WMI_SCAN_FLAG_EXT_LOW_POWER_SCAN 0x00040000 +#define WMI_SCAN_FLAG_EXT_STOP_IF_BSSID_FOUND 0x00080000 +#define WMI_SCAN_FLAG_EXT_P2P_SCAN 0x00100000 +#define WMI_SCAN_FLAG_EXT_DISABLE_SINGLE_MAC_AUX 0x00200000 /** diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 462aaa3929c9..b02a8c5c6af2 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_ 1548 +#define __WMI_REVISION_ 1549 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From d3c314f2e7ff7f678511d53d3330d7c60a0a5ddf Mon Sep 17 00:00:00 2001 From: spuligil Date: Wed, 6 Nov 2024 06:01:32 -0800 Subject: [PATCH 34/54] fw-api: CL 27995720 - update fw common interface files Change-Id: I43de0982a3dc78aae997fb833ed668ce423d547d CRs-Fixed: 3830439 --- fw/wmi_tlv_defs.h | 6 ++++++ fw/wmi_unified.h | 16 ++++++++++++++++ fw/wmi_version.h | 2 +- 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index 91a08eac2fb4..6189530fa66d 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1467,6 +1467,7 @@ typedef enum { WMITLV_TAG_STRUC_wmi_pdev_wifi_radar_cap_evt_fixed_param, WMITLV_TAG_STRUC_wmi_wifi_radar_ltf_length_capabilities, WMITLV_TAG_STRUC_wmi_wifi_radar_chain_capabilities, + WMITLV_TAG_STRUC_wmi_sawf_ezmesh_hop_count_cmd_fixed_param, } WMITLV_TAG_ID; /* * IMPORTANT: Please add _ALL_ WMI Commands Here. @@ -2026,6 +2027,7 @@ typedef enum { OP(WMI_GET_SCAN_CACHE_RESULT_CMDID) \ OP(WMI_MLO_LINK_RECONFIG_CMDID) \ OP(WMI_MLO_LINK_RECONFIG_COMPLETE_CMDID) \ + OP(WMI_SAWF_EZMESH_HOP_COUNT_CMDID) \ /* add new CMD_LIST elements above this line */ @@ -5720,6 +5722,10 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_POWER_BOOST_MEM_ADDR_CMDID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_get_scan_cache_result_cmd_fixed_param, wmi_get_scan_cache_result_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_GET_SCAN_CACHE_RESULT_CMDID); +#define WMITLV_TABLE_WMI_SAWF_EZMESH_HOP_COUNT_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_sawf_ezmesh_hop_count_cmd_fixed_param, wmi_sawf_ezmesh_hop_count_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_SAWF_EZMESH_HOP_COUNT_CMDID); + /************************** TLV definitions of WMI events *******************************/ diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index e98fb5d00758..3388e718b4aa 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -1706,6 +1706,8 @@ typedef enum { WMI_SAWF_SVC_CLASS_CFG_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_SAWF), /** disable a service class */ WMI_SAWF_SVC_CLASS_DISABLE_CMDID, + /** update hop count value for SDWF-Ezmesh scenario */ + WMI_SAWF_EZMESH_HOP_COUNT_CMDID, /* WMI commands specific to ODD */ WMI_ODD_LIVEDUMP_REQUEST_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_ODD), @@ -38477,6 +38479,7 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command) WMI_RETURN_STRING(WMI_GET_SCAN_CACHE_RESULT_CMDID); WMI_RETURN_STRING(WMI_MLO_LINK_RECONFIG_CMDID); WMI_RETURN_STRING(WMI_MLO_LINK_RECONFIG_COMPLETE_CMDID); + WMI_RETURN_STRING(WMI_SAWF_EZMESH_HOP_COUNT_CMDID); } return (A_UINT8 *) "Invalid WMI cmd"; @@ -47591,6 +47594,19 @@ typedef struct { A_UINT32 svc_class_id; /* which service class is being disabled */ } wmi_sawf_svc_class_disable_cmd_fixed_param; +/* Used to store Hop count info for SDWF-Ezmesh scenario based on topology changes */ +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_sawf_ezmesh_hop_count_cmd_fixed_param */ + A_UINT32 peer_id; + A_UINT32 hop_count; + /* delay_bound: + * Placeholder for future functionality where delay bound will be directly + * passed to FW from host. + * (units = ms) + */ + A_UINT32 delay_bound; +} wmi_sawf_ezmesh_hop_count_cmd_fixed_param; + typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_sw_cal_ver_cap */ A_UINT32 bdf_cal_ver; /* SW cal version in BDF */ diff --git a/fw/wmi_version.h b/fw/wmi_version.h index b02a8c5c6af2..e58401b34072 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_ 1549 +#define __WMI_REVISION_ 1550 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 4ec3d1cb78d18a2046d40303c745394f750ba076 Mon Sep 17 00:00:00 2001 From: spuligil Date: Wed, 6 Nov 2024 06:03:04 -0800 Subject: [PATCH 35/54] fw-api: CL 28002815 - update fw common interface files Change-Id: I45a6a4df731f98ccf108f35096887965d8a5987a CRs-Fixed: 3830439 --- fw/wmi_unified.h | 17 ++++++++++------- fw/wmi_version.h | 2 +- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 3388e718b4aa..6777b74b26e8 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -19666,14 +19666,17 @@ typedef struct { } wmi_vdev_bss_max_idle_time_cmd_fixed_param; /** VDEV start response status codes */ -#define WMI_VDEV_START_RESPONSE_STATUS_SUCCESS 0x0 /** VDEV successfully started */ -#define WMI_VDEV_START_RESPONSE_INVALID_VDEVID 0x1 /** requested VDEV not found */ -#define WMI_VDEV_START_RESPONSE_NOT_SUPPORTED 0x2 /** unsupported VDEV combination */ -#define WMI_VDEV_START_RESPONSE_DFS_VIOLATION 0x3 /** DFS_VIOLATION since channel in the NOL is selected */ -#define WMI_VDEV_START_RESPONSE_INVALID_REGDOMAIN 0x4 /** Invalid regulatory domain in VDEV start */ -#define WMI_VDEV_START_RESPONSE_INVALID_BAND 0x5 /** Band unsupported by current hw mode in VDEV start */ +#define WMI_VDEV_START_RESPONSE_STATUS_SUCCESS 0x0 /** VDEV successfully started */ +#define WMI_VDEV_START_RESPONSE_INVALID_VDEVID 0x1 /** requested VDEV not found */ +#define WMI_VDEV_START_RESPONSE_NOT_SUPPORTED 0x2 /** unsupported VDEV combination */ +#define WMI_VDEV_START_RESPONSE_DFS_VIOLATION 0x3 /** DFS_VIOLATION since channel in the NOL is selected */ +#define WMI_VDEV_START_RESPONSE_INVALID_REGDOMAIN 0x4 /** Invalid regulatory domain in VDEV start */ +#define WMI_VDEV_START_RESPONSE_INVALID_BAND 0x5 /** Band unsupported by current hw mode in VDEV start */ #define WMI_VDEV_START_RESPONSE_INVALID_PREFERRED_TX_RX_STREAMS 0x6 /** Invalid preferred tx/rx streams */ -#define WMI_VDEV_START_RESPONSE_INVALID_TX_VAP_CONFIG 0x7 /** Invalid tx_vap config in VDEV start */ +#define WMI_VDEV_START_RESPONSE_INVALID_TX_VAP_CONFIG 0x7 /** Invalid tx_vap config in VDEV start */ +#define WMI_VDEV_START_RESPONSE_BSS_PEER_NOT_FOUND 0x8 /** bss_peer is null/not found */ +#define WMI_VDEV_START_RESPONSE_INCORRECT_CHANNEL_PARAMS 0x9 /** home channel params are incorrect */ +#define WMI_VDEV_START_RESPONSE_GENERIC_VDEV_START_FAILURE 0xa /** generic reason code for vdev start request reject */ /** Beacon processing related command and event structures */ typedef struct { diff --git a/fw/wmi_version.h b/fw/wmi_version.h index e58401b34072..8eba322c7976 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_ 1550 +#define __WMI_REVISION_ 1551 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From e1480cb8af610f6350a581490bc7ea4773f1fe59 Mon Sep 17 00:00:00 2001 From: spuligil Date: Sat, 9 Nov 2024 06:01:40 -0800 Subject: [PATCH 36/54] fw-api: CL 28021676 - update fw common interface files Change-Id: If41bfab7087b8c7b681905ed4bf87b6eddd4c6f5 CRs-Fixed: 3830439 --- fw/htt.h | 1 + fw/htt_stats.h | 226 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 227 insertions(+) diff --git a/fw/htt.h b/fw/htt.h index 9a27a307d8a5..fe664eaef0e3 100644 --- a/fw/htt.h +++ b/fw/htt.h @@ -838,6 +838,7 @@ typedef enum { HTT_STATS_PDEV_SPECTRAL_TAG = 204, /* htt_stats_pdev_spectral_tlv */ HTT_STATS_PDEV_RTT_DELAY_TAG = 205, /* htt_stats_pdev_rtt_delay_tlv */ HTT_STATS_PDEV_AOA_TAG = 206, /* htt_stats_pdev_aoa_tlv */ + HTT_STATS_PDEV_FTM_TPCCAL_TAG = 207, /* htt_stats_pdev_ftm_tpccal_tlv */ HTT_STATS_MAX_TAG, } htt_stats_tlv_tag_t; diff --git a/fw/htt_stats.h b/fw/htt_stats.h index 650b7aa7980c..19a57263b844 100644 --- a/fw/htt_stats.h +++ b/fw/htt_stats.h @@ -810,6 +810,14 @@ enum htt_dbg_ext_stats_type { */ HTT_DBG_EXT_STATS_PDEV_AOA = 72, + /** HTT_DBG_EXT_STATS_PDEV_FTM_TPCCAL + * PARAMS: + * - No Params + * RESP MSG: + * - htt_stats_pdev_ftm_tpccal_tlv + */ + HTT_DBG_EXT_STATS_PDEV_FTM_TPCCAL = 73, + /* keep this last */ HTT_DBG_NUM_EXT_STATS = 256, @@ -9086,6 +9094,224 @@ typedef struct { #define HTT_STATS_RTT_CAL_SPUR_FILTER_PRI_DET_COMP_MASK 0x00010000 #define HTT_STATS_RTT_CAL_SPUR_FILTER_PRI_COMP_MASK 0x00020000 + +#define HTT_STATS_TPCCAL_LAST_IDX_M 0x000000ff +#define HTT_STATS_TPCCAL_LAST_IDX_S 0 + +#define HTT_STATS_TPCCAL_LAST_IDX_GET(_var) \ + (((_var) & HTT_STATS_TPCCAL_LAST_IDX_M) >> \ + HTT_STATS_TPCCAL_LAST_IDX_S) + +#define HTT_STATS_TPCCAL_STATS_MEASPWR_M 0x0000ffff +#define HTT_STATS_TPCCAL_STATS_MEASPWR_S 0 + +#define HTT_STATS_TPCCAL_STATS_MEASPWR_GET(_var) \ + (((_var) & HTT_STATS_TPCCAL_STATS_MEASPWR_M) >> \ + HTT_STATS_TPCCAL_STATS_MEASPWR_S) + +#define HTT_STATS_TPCCAL_STATS_PDADC_M 0x000000ff +#define HTT_STATS_TPCCAL_STATS_PDADC_S 0 + +#define HTT_STATS_TPCCAL_STATS_PDADC_GET(_var) \ + (((_var) & HTT_STATS_TPCCAL_STATS_PDADC_M) >> \ + HTT_STATS_TPCCAL_STATS_PDADC_S) + +#define HTT_STATS_TPCCAL_STATS_CHANNEL_M 0x0000ffff +#define HTT_STATS_TPCCAL_STATS_CHANNEL_S 0 + +#define HTT_STATS_TPCCAL_STATS_CHANNEL_GET(_var) \ + (((_var) & HTT_STATS_TPCCAL_STATS_CHANNEL_M) >> \ + HTT_STATS_TPCCAL_STATS_CHANNEL_S) + +#define HTT_STATS_TPCCAL_STATS_CHAIN_M 0x00ff0000 +#define HTT_STATS_TPCCAL_STATS_CHAIN_S 16 + +#define HTT_STATS_TPCCAL_STATS_CHAIN_GET(_var) \ + (((_var) & HTT_STATS_TPCCAL_STATS_CHAIN_M) >> \ + HTT_STATS_TPCCAL_STATS_CHAIN_S) + +#define HTT_STATS_TPCCAL_STATS_GAININDEX_M 0xff000000 +#define HTT_STATS_TPCCAL_STATS_GAININDEX_S 24 + +#define HTT_STATS_TPCCAL_STATS_GAININDEX_GET(_var) \ + (((_var) & HTT_STATS_TPCCAL_STATS_GAININDEX_M) >> \ + HTT_STATS_TPCCAL_STATS_GAININDEX_S) + +#define HTT_STATS_TPCCAL_POSTPROC_CHANNEL_M 0x0000ffff +#define HTT_STATS_TPCCAL_POSTPROC_CHANNEL_S 0 + +#define HTT_STATS_TPCCAL_POSTPROC_CHANNEL_GET(_var) \ + (((_var) & HTT_STATS_TPCCAL_POSTPROC_CHANNEL_M) >> \ + HTT_STATS_TPCCAL_POSTPROC_CHANNEL_S) + +#define HTT_STATS_TPCCAL_POSTPROC_CHAIN_M 0x00ff0000 +#define HTT_STATS_TPCCAL_POSTPROC_CHAIN_S 16 + +#define HTT_STATS_TPCCAL_POSTPROC_CHAIN_GET(_var) \ + (((_var) & HTT_STATS_TPCCAL_POSTPROC_CHAIN_M) >> \ + HTT_STATS_TPCCAL_POSTPROC_CHAIN_S) + +#define HTT_STATS_TPCCAL_POSTPROC_BAND_M 0xff000000 +#define HTT_STATS_TPCCAL_POSTPROC_BAND_S 24 + +#define HTT_STATS_TPCCAL_POSTPROC_BAND_GET(_var) \ + (((_var) & HTT_STATS_TPCCAL_POSTPROC_BAND_M) >> \ + HTT_STATS_TPCCAL_POSTPROC_BAND_S) + +#define HTT_STATS_TPCCAL_POSTPROC_NUMGAIN_M 0x000000ff +#define HTT_STATS_TPCCAL_POSTPROC_NUMGAIN_S 0 + +#define HTT_STATS_TPCCAL_POSTPROC_NUMGAIN_GET(_var) \ + (((_var) & HTT_STATS_TPCCAL_POSTPROC_NUMGAIN_M) >> \ + HTT_STATS_TPCCAL_POSTPROC_NUMGAIN_S) + +#define HTT_STATS_TPCCAL_POSTPROC_CALDBSTATUS_M 0x0000ff00 +#define HTT_STATS_TPCCAL_POSTPROC_CALDBSTATUS_S 8 + +#define HTT_STATS_TPCCAL_POSTPROC_CALDBSTATUS_GET(_var) \ + (((_var) & HTT_STATS_TPCCAL_POSTPROC_CALDBSTATUS_M) >> \ + HTT_STATS_TPCCAL_POSTPROC_CALDBSTATUS_S) + +/* STATS_TYPE : HTT_DBG_EXT_PDEV_STATS_FTM_TPCCAL + * TLV_TAGS: + * - HTT_STATS_PDEV_FTM_TPCCAL_TAG + */ +#define HTT_MAX_TPCCAL_STATS 25 +#define HTT_STATS_TPC_CAL_MAX_NUM_POINTS 64 + +typedef struct { + htt_tlv_hdr_t tlv_hdr; + + /* dword__tpccal_last_idx: + * Hold the last updated index for circular buffer of tpccal + * BIT [7 : 0] :- tpcccal_last_idx + * BIT [31 : 8] :- rsvd1 + */ + union { + A_UINT32 dword__tpccal_last_idx; + struct { + A_UINT32 tpccal_last_idx:8, + rsvd1:24; + }; + }; + + /* + * Below tpccal_stats struct will have latest values of tpccal data + * of array size HTT_MAX_TPCCAL_STATS. + * If there have been fewer than HTT_MAX_TPCCAL_STATS TPC calibrations, + * the unused elements will be filled with 0x0 values. + */ + struct { + /* + * dword__measPwr: + * BIT [15 : 0] :- measPwr + * BIT [31 : 16] :- rsvd2 + */ + union { + A_INT32 dword__measPwr; + struct { + A_INT32 measPwr:16, /* dBm units */ + rsvd2:16; + }; + }; + + /* + * dword__channel_chain_gainIndex: + * hold channel chain and gain index values + * BIT [15 : 0] :- channel + * BIT [23 : 16] :- chain + * BIT [24 : 31] :- gainIndex + */ + union { + A_UINT32 dword__channel_chain_gainIndex; + struct { + A_UINT32 channel:16, /* MHz units */ + chain:8, + gainIndex:8; + }; + }; + + /* + * dword__pdadc: + * BIT [7 : 0] :- pdadc + * BIT [31 : 8] :- rsvd3 + */ + union { + A_UINT32 dword__pdadc; + struct { + A_UINT32 pdadc:8, + rsvd3:24; + }; + }; + } tpccal_stats[HTT_MAX_TPCCAL_STATS]; + + /* + * Below tpccal_stats_postproc struct will have required tpccal data + * for failures during postprocessing. + */ + struct { + /* + * calStatus can be intrepreted with the below values: + * TPCCAL_CALDATA (1 << 0) + * TPCCAL_CALINFO (1 << 1) + * TPCCAL_CALERROR (1 << 2) + * bits 6:4 - reserved + * TPCCAL_DONE_MASK (1 << 7) + * bits 15:8 - reserved + * TPCCALRSP_MISCFLAGS_CALERROR_GLUTS_NOT_FILLED (1 << 16) + * TPCCALRSP_MISCFLAGS_CALERROR_PLUT_NON_LINEAR (1 << 17) + * TPCCALRSP_MISCFLAGS_CALERROR_ATTEMPTS_EXCEEDED (1 << 18) + * bits 31:19 - reserved + */ + A_UINT32 calStatus; + /* + * The numgain field specifies how many of the + * HTT_STATS_TPC_CAL_MAX_NUM_POINTS elements in the below arrays + * contain valid data. + */ + A_INT32 measPwr[HTT_STATS_TPC_CAL_MAX_NUM_POINTS]; /* dBm units */ + A_UINT32 pdadc[HTT_STATS_TPC_CAL_MAX_NUM_POINTS]; + A_UINT32 gainIndex[HTT_STATS_TPC_CAL_MAX_NUM_POINTS]; + + /* + * dword__channel_chain_band: + * channel, chain, and band values + * BIT [15 : 0] :- channel + * BIT [23 : 16] :- chain + * BIT [31 : 24] :- band + */ + union { + A_UINT32 dword__channel_chain_band; + struct { + A_UINT32 channel:16, /* MHz units */ + chain:8, + band:8; + }; + }; + + /* + * dword__numgain_caldbStatus: + * numgain and caldbstatus + * BIT [7 : 0] :- numgain + * BIT [15 : 8] :- caldbstatus + * BIT [31 : 16] :- rsvd4 + * + * caldbStatus can be interpreted as below + * CALDB_COMPLETED = 0 + * CALDB_SKIPPED = 1 + * CALDB_INPROGRESS = 2 + */ + union { + A_UINT32 dword__numgain_caldbStatus; + struct { + A_UINT32 numgain:8, + caldbStatus:8, + rsvd4:16; + }; + }; + } tpccal_stats_postproc; +} htt_stats_pdev_ftm_tpccal_tlv; + #define HTT_DLPAGER_STATS_MAX_HIST 10 #define HTT_DLPAGER_ASYNC_LOCKED_PAGE_COUNT_M 0x000000FF #define HTT_DLPAGER_ASYNC_LOCKED_PAGE_COUNT_S 0 From 237137c630c46b2ee145f7a2862beccdca38c2b3 Mon Sep 17 00:00:00 2001 From: spuligil Date: Tue, 12 Nov 2024 06:01:49 -0800 Subject: [PATCH 37/54] fw-api: CL 28034615 - update fw common interface files Change-Id: I7d4a5318357453e7b1541663c27be7a9955163e8 CRs-Fixed: 3830439 --- fw/htt_stats.h | 2 +- fw/wmi_unified.h | 7 +++++++ fw/wmi_version.h | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/fw/htt_stats.h b/fw/htt_stats.h index 19a57263b844..75440dc6f63c 100644 --- a/fw/htt_stats.h +++ b/fw/htt_stats.h @@ -9285,7 +9285,7 @@ typedef struct { struct { A_UINT32 channel:16, /* MHz units */ chain:8, - band:8; + band:8; /* 0: 2GHz, 1: 5GHz, 2: 6GHz */ }; }; diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 6777b74b26e8..99a4c58ad2b9 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -22906,6 +22906,13 @@ typedef struct { * as mlo_etp_weightage_pcnt. */ A_UINT32 mlo_etp_weightage_pcnt; + /* mcc_score_factor_pcnt: + * This score factor will be applied to roam candidate score if the + * roaming to that candidate can form MCC with any other interface. + * Example: if value is 20, then only 20% of the score will be + * considered for the candidates for which MCC will be formed. + */ + A_UINT32 mcc_score_factor_pcnt; } wmi_roam_cnd_scoring_param; typedef struct { diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 8eba322c7976..cf8ab32cbc30 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_ 1551 +#define __WMI_REVISION_ 1552 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From e93777fe91168312be8622ecd812cabf0dc0a099 Mon Sep 17 00:00:00 2001 From: spuligil Date: Wed, 13 Nov 2024 06:01:48 -0800 Subject: [PATCH 38/54] fw-api: CL 28043541 - update fw common interface files Change-Id: I47f92f84d5ddc02dad5933e90d785a828ff00cdb CRs-Fixed: 3830439 --- fw/wmi_tlv_defs.h | 4 +++- fw/wmi_unified.h | 23 +++++++++++++++++++++++ fw/wmi_version.h | 2 +- 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index 6189530fa66d..41267db6ef46 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1468,6 +1468,7 @@ typedef enum { WMITLV_TAG_STRUC_wmi_wifi_radar_ltf_length_capabilities, WMITLV_TAG_STRUC_wmi_wifi_radar_chain_capabilities, WMITLV_TAG_STRUC_wmi_sawf_ezmesh_hop_count_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_ctrl_path_pdev_conn_stats_struct, } WMITLV_TAG_ID; /* * IMPORTANT: Please add _ALL_ WMI Commands Here. @@ -7229,7 +7230,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PEER_STATS_INFO_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_ctrl_path_vdev_stats_struct, ctrl_path_vdev_stats, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_ctrl_path_sta_rrm_stats_struct, ctrl_path_sta_rrm_stats, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_ctrl_path_vdev_bcn_tx_stats_struct, ctrl_path_vdev_bcn_tx_stats, WMITLV_SIZE_VAR) \ - WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_ctrl_path_pdev_bcn_tx_stats_struct, ctrl_path_pdev_bcn_tx_stats, WMITLV_SIZE_VAR) + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_ctrl_path_pdev_bcn_tx_stats_struct, ctrl_path_pdev_bcn_tx_stats, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_ctrl_path_pdev_conn_stats_struct, ctrl_path_pdev_conn_stats, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_CTRL_PATH_STATS_EVENTID); /* diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 99a4c58ad2b9..b3e741df5086 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -124,6 +124,7 @@ extern "C" { #define WMI_MAX_CHAINS 8 #define WMI_MAX_CHAINS_FOR_AOA_RCC 2 #define WMI_MAX_ADDRESS_SPACE 10 +#define WMI_MAX_PEER_STA_KICKOUT_REASON 8 #define MAX_AOA_PHASEDELTA 31 /* 62 gain values */ @@ -16601,8 +16602,29 @@ typedef struct { A_UINT32 beacon_stuck_cnt; A_UINT32 beacon_swba_cnt; A_UINT32 beacon_enque_fail; + A_UINT32 beacon_do_not_send_bcast_t2lm_exp; + A_UINT32 beacon_do_not_send_bcast_t2lm_proc_mst; + A_UINT32 beacon_do_not_send_off_chan; + A_UINT32 beacon_do_not_send_tx_paused; + A_UINT32 beacon_do_not_send_swba_delay; + A_UINT32 beacon_do_not_send_csa; + A_UINT32 beacon_wait_prev_txdone; } wmi_ctrl_path_pdev_bcn_tx_stats_struct; +typedef struct { + A_UINT32 tlv_header; + A_UINT32 pdev_id; + A_UINT32 tx_mgmt_subtype_enq_ok[WMI_MGMT_FRAME_SUBTYPE_MAX]; + A_UINT32 tx_mgmt_subtype_tx_comp_ok[WMI_MGMT_FRAME_SUBTYPE_MAX]; + A_UINT32 tx_mgmt_subtype_tx_comp_fail[WMI_MGMT_FRAME_SUBTYPE_MAX]; + A_UINT32 tx_mgmt_subtype_enq_fail[WMI_MGMT_FRAME_SUBTYPE_MAX]; + A_UINT32 rx_mgmt_subtype[WMI_MGMT_FRAME_SUBTYPE_MAX]; + A_UINT16 peer_sta_kickout_reason_cnt[WMI_MAX_PEER_STA_KICKOUT_REASON]; + A_UINT32 wmi_scan_start_cnt; + A_UINT32 wmi_scan_start_fail_cnt; + A_UINT32 foreign_chan_entry_cnt; +} wmi_ctrl_path_pdev_conn_stats_struct; + /** * peer statistics. */ @@ -36278,6 +36300,7 @@ typedef enum { WMI_REQUEST_CTRL_STA_RRM_STAT = 18, WMI_REQUEST_CTRL_PATH_VDEV_BCN_TX_STAT = 19, WMI_REQUEST_CTRL_PATH_PDEV_BCN_TX_STAT = 20, + WMI_REQUEST_CTRL_PATH_PDEV_CONN_STAT = 21, } wmi_ctrl_path_stats_id; typedef enum { diff --git a/fw/wmi_version.h b/fw/wmi_version.h index cf8ab32cbc30..e95312ef9ae7 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_ 1552 +#define __WMI_REVISION_ 1553 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 5913a2bf78f43ca9e8b4666ac0d1b380be43b4cb Mon Sep 17 00:00:00 2001 From: spuligil Date: Thu, 14 Nov 2024 06:02:11 -0800 Subject: [PATCH 39/54] fw-api: CL 28053398 - update fw common interface files Change-Id: I2db1f0561edcfb9f0cb0f61bb3cb7fe6ddb6015e CRs-Fixed: 3830439 --- fw/wmi_services.h | 1 + fw/wmi_tlv_defs.h | 4 ++- fw/wmi_unified.h | 62 +++++++++++++++++++++++++++++++++++++---------- fw/wmi_version.h | 2 +- 4 files changed, 54 insertions(+), 15 deletions(-) diff --git a/fw/wmi_services.h b/fw/wmi_services.h index 7f8e6da34d89..ead31fb77426 100644 --- a/fw/wmi_services.h +++ b/fw/wmi_services.h @@ -690,6 +690,7 @@ typedef enum { WMI_SERVICE_SCAN_CACHE_REPORT_SUPPORT = 431, /* Indicates FW supports for sending scan cache report */ WMI_SERVICE_SCC_TPC_POWER_SUPPORT = 432, /* Indicates FW supports setting TPC power for SCC vdevs */ WMI_SERVICE_DYNAMIC_TWT_MODE_SUPPORT = 433, /* Indicates FW supports Dynamic TWT mode for vdevs */ + WMI_SERVICE_SPECTRAL_SPUR_BIN_INFO_SUPPORT = 434, /* Indicates FW supports indicating spur frequency and spectral bin that gets affected due to spur frequency */ WMI_MAX_EXT2_SERVICE diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index 41267db6ef46..856c6ba0c2f5 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1469,6 +1469,7 @@ typedef enum { WMITLV_TAG_STRUC_wmi_wifi_radar_chain_capabilities, WMITLV_TAG_STRUC_wmi_sawf_ezmesh_hop_count_cmd_fixed_param, WMITLV_TAG_STRUC_wmi_ctrl_path_pdev_conn_stats_struct, + WMITLV_TAG_STRUC_wmi_pdev_sscan_spur_chan_impacted_bin_info, } WMITLV_TAG_ID; /* * IMPORTANT: Please add _ALL_ WMI Commands Here. @@ -7494,7 +7495,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_AUDIO_AGGR_SCHED_METHOD_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_sscan_fw_cmd_fixed_param, wmi_pdev_sscan_fw_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_pdev_sscan_fft_bin_index, fft_bin_index, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_sscan_chan_info, wmi_pdev_sscan_chan_info,chan_info, WMITLV_SIZE_FIX) \ - WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_pdev_sscan_per_detector_info, det_info, WMITLV_SIZE_VAR) + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_pdev_sscan_per_detector_info, det_info, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_pdev_sscan_spur_chan_impacted_bin_info, spur_chan_impacted_bin_info, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_SSCAN_FW_PARAM_EVENTID); /* Send sscan related event start/stop trigger to host */ diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index b3e741df5086..344925a0f32b 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -124,7 +124,6 @@ extern "C" { #define WMI_MAX_CHAINS 8 #define WMI_MAX_CHAINS_FOR_AOA_RCC 2 #define WMI_MAX_ADDRESS_SPACE 10 -#define WMI_MAX_PEER_STA_KICKOUT_REASON 8 #define MAX_AOA_PHASEDELTA 31 /* 62 gain values */ @@ -8488,6 +8487,28 @@ typedef struct A_UINT32 end_freq; /* in MHz */ } wmi_pdev_sscan_per_detector_info; +typedef struct +{ + A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_pdev_sscan_spur_chan_info */ + /* spur_freqx10: + * Spur frequency in MHz multiplied by 10 to align with hardware spur + * characterized value. + * For example, a value of 24224 indicates spur frequency as 2422.4 MHz + */ + A_UINT32 spur_freqx10; + /* spur_start_bin_idx: + * Indicates the start spur bin index at which spur frequency impacts + * the spectral capture. Impact is from start to end indices, + * including both. + */ + A_UINT32 spur_start_bin_idx; + /* spur_end_bin_idx: + * Indicates the end spur bin index in which spur frequency impacts + * the spectral capture. + */ + A_UINT32 spur_end_bin_idx; +} wmi_pdev_sscan_spur_chan_impacted_bin_info; + typedef enum { /** Enum to indicate bmsk of spectral scan stop evt on scan count max out */ WMI_SSCAN_EVT_BMSK_SCAN_STOP_SCOUNT = 0X00000001, @@ -16611,6 +16632,28 @@ typedef struct { A_UINT32 beacon_wait_prev_txdone; } wmi_ctrl_path_pdev_bcn_tx_stats_struct; +typedef enum wmi_peer_sta_kickout_reason { + WMI_PEER_STA_KICKOUT_REASON_UNSPECIFIED = 0, /* default value to preserve legacy behavior */ + WMI_PEER_STA_KICKOUT_REASON_XRETRY = 1, + WMI_PEER_STA_KICKOUT_REASON_INACTIVITY = 2, + WMI_PEER_STA_KICKOUT_REASON_IBSS_DISCONNECT = 3, + WMI_PEER_STA_KICKOUT_REASON_TDLS_DISCONNECT = 4, /* TDLS peer has disappeared. All tx is failing */ + WMI_PEER_STA_KICKOUT_REASON_SA_QUERY_TIMEOUT = 5, + WMI_PEER_STA_KICKOUT_REASON_ROAMING_EVENT = 6, /* Directly connected peer has roamed to a repeater */ + WMI_PEER_STA_KICKOUT_REASON_PMF_ERROR = 7, /* PMF error threshold is hit */ + + WMI_PEER_STA_KICKOUT_REASON_RESERVED1 = 8, /* available for future use */ + WMI_PEER_STA_KICKOUT_REASON_RESERVED2 = 9, /* available for future use */ + WMI_PEER_STA_KICKOUT_REASON_RESERVED3 = 10, /* available for future use */ + WMI_PEER_STA_KICKOUT_REASON_RESERVED4 = 11, /* available for future use */ + + /* WMI_MAX_PEER_STA_KICKOUT_REASON: + * For the sake of backwards compatibility, the below value + * cannot be changed. + */ + WMI_MAX_PEER_STA_KICKOUT_REASON = 12 +} PEER_KICKOUT_REASON; + typedef struct { A_UINT32 tlv_header; A_UINT32 pdev_id; @@ -16619,7 +16662,11 @@ typedef struct { A_UINT32 tx_mgmt_subtype_tx_comp_fail[WMI_MGMT_FRAME_SUBTYPE_MAX]; A_UINT32 tx_mgmt_subtype_enq_fail[WMI_MGMT_FRAME_SUBTYPE_MAX]; A_UINT32 rx_mgmt_subtype[WMI_MGMT_FRAME_SUBTYPE_MAX]; - A_UINT16 peer_sta_kickout_reason_cnt[WMI_MAX_PEER_STA_KICKOUT_REASON]; + /* peer_sta_kickout_reason_cnt: + * Refer to wmi_peer_sta_kickout_reason for which array element + * corresponds to which STA kickout reason. + */ + A_UINT32 peer_sta_kickout_reason_cnt[WMI_MAX_PEER_STA_KICKOUT_REASON]; A_UINT32 wmi_scan_start_cnt; A_UINT32 wmi_scan_start_fail_cnt; A_UINT32 foreign_chan_entry_cnt; @@ -24170,17 +24217,6 @@ typedef struct { A_UINT32 time0; /* lower 32 bits of time stamp */ } A_TIME64; -typedef enum wmi_peer_sta_kickout_reason { - WMI_PEER_STA_KICKOUT_REASON_UNSPECIFIED = 0, /* default value to preserve legacy behavior */ - WMI_PEER_STA_KICKOUT_REASON_XRETRY = 1, - WMI_PEER_STA_KICKOUT_REASON_INACTIVITY = 2, - WMI_PEER_STA_KICKOUT_REASON_IBSS_DISCONNECT = 3, - WMI_PEER_STA_KICKOUT_REASON_TDLS_DISCONNECT = 4, /* TDLS peer has disappeared. All tx is failing */ - WMI_PEER_STA_KICKOUT_REASON_SA_QUERY_TIMEOUT = 5, - WMI_PEER_STA_KICKOUT_REASON_ROAMING_EVENT = 6, /* Directly connected peer has roamed to a repeater */ - WMI_PEER_STA_KICKOUT_REASON_PMF_ERROR = 7, /* PMF error threshold is hit */ -} PEER_KICKOUT_REASON; - typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_peer_sta_kickout_event_fixed_param */ /** peer mac address */ diff --git a/fw/wmi_version.h b/fw/wmi_version.h index e95312ef9ae7..0bef1f1c1347 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_ 1553 +#define __WMI_REVISION_ 1554 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From b74f11bc69fc700e007967ffd4ca95aa21069f47 Mon Sep 17 00:00:00 2001 From: spuligil Date: Fri, 15 Nov 2024 02:15:39 -0800 Subject: [PATCH 40/54] fw-api: CL 28063775 - update fw common interface files Change-Id: If0b91ef92286d89f3b4b242c3f9ab21e404d0f19 CRs-Fixed: 3830439 --- fw/wmi_services.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/fw/wmi_services.h b/fw/wmi_services.h index ead31fb77426..3ac9556d088a 100644 --- a/fw/wmi_services.h +++ b/fw/wmi_services.h @@ -691,6 +691,8 @@ typedef enum { WMI_SERVICE_SCC_TPC_POWER_SUPPORT = 432, /* Indicates FW supports setting TPC power for SCC vdevs */ WMI_SERVICE_DYNAMIC_TWT_MODE_SUPPORT = 433, /* Indicates FW supports Dynamic TWT mode for vdevs */ WMI_SERVICE_SPECTRAL_SPUR_BIN_INFO_SUPPORT = 434, /* Indicates FW supports indicating spur frequency and spectral bin that gets affected due to spur frequency */ + WMI_SERVICE_TWT_P2P_GO_CONCURRENCY_SUPPORT = 435, /* Indicates FW supports TWT in P2P GO concurrency mode */ + WMI_MAX_EXT2_SERVICE From 6770bc87f542b95db46583320d1cd0863fd5393a Mon Sep 17 00:00:00 2001 From: spuligil Date: Fri, 15 Nov 2024 02:14:13 -0800 Subject: [PATCH 41/54] fw-api: CL 28063488 - update fw common interface files Change-Id: Id3e73ec03c509387f86fa4944d49feba4a76dc21 CRs-Fixed: 3830439 --- fw/wmi_tlv_defs.h | 4 +- fw/wmi_unified.h | 105 +++++++++++++++++++++++++++++++++++++--------- fw/wmi_version.h | 2 +- 3 files changed, 89 insertions(+), 22 deletions(-) diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index 856c6ba0c2f5..13d7c3de3b1b 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -5789,7 +5789,9 @@ WMITLV_CREATE_PARAM_STRUC(WMI_SERVICE_READY_EXT_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_enhanced_aoa_per_band_caps_param, aoa_per_band_caps_param, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_sar_flag_tlv_param, sar_flags, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, WMI_POWER_BOOST_CAPABILITIES, power_boost_capabilities, WMITLV_SIZE_VAR) \ - WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, WMI_RSSI_ACCURACY_IMPROVEMENT_CAPABILITIES, rssi_accuracy_improvement_capabilities, WMITLV_SIZE_VAR) + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, WMI_RSSI_ACCURACY_IMPROVEMENT_CAPABILITIES, rssi_accuracy_improvement_capabilities, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_wifi_radar_ltf_length_capabilities, wr_ltf_caps, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_wifi_radar_chain_capabilities, wr_chain_caps, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_SERVICE_READY_EXT2_EVENTID); #define WMITLV_TABLE_WMI_SPECTRAL_CAPABILITIES_EVENTID(id,op,buf,len) \ diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 344925a0f32b..b74ade68c3f0 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -3861,6 +3861,10 @@ typedef struct { * WMI_POWER_BOOST_CAPABILITIES power_boost_capabilities[]; * WMI_RSSI_ACCURACY_IMPROVEMENT_CAPABILITIES * rssi_accuracy_improvement_capabilities[]; + * wmi_wifi_radar_ltf_length_capabilities + * wifi_radar_ltf_length_capabilities[]; + * wmi_wifi_radar_chain_capabilities + * wifi_radar_chain_capabilities[]; */ } wmi_service_ready_ext2_event_fixed_param; @@ -40822,36 +40826,97 @@ typedef struct { A_UINT32 pdev_id; } wmi_pdev_wifi_radar_cap_evt_fixed_param; +#define WMI_WIFI_RADAR_LTF_LENGTH_CAPABILITIES_PDEV_ID_GET(word32) \ + WMI_GET_BITS(word32, 0, 4) +#define WMI_WIFI_RADAR_LTF_LENGTH_CAPABILITIES_PDEV_ID_SET(word32, value) \ + WMI_SET_BITS(word32, 0, 4, value) + +#define WMI_WIFI_RADAR_LTF_LENGTH_CAPABILITIES_LTF_MAX_NUM_TX_GET(word32) \ + WMI_GET_BITS(word32, 4, 28) +#define WMI_WIFI_RADAR_LTF_LENGTH_CAPABILITIES_LTF_MAX_NUM_TX_SET(word32, value) \ + WMI_SET_BITS(word32, 4, 28, value) + +#define WMI_WIFI_RADAR_LTF_LENGTH_CAPABILITIES_LTF_MAX_EXPO_NUM_RX_GET(word32) \ + WMI_GET_BITS(word32, 0, 16) +#define WMI_WIFI_RADAR_LTF_LENGTH_CAPABILITIES_LTF_MAX_EXPO_NUM_RX_SET(word32, value) \ + WMI_SET_BITS(word32, 0, 16, value) + +#define WMI_WIFI_RADAR_LTF_LENGTH_CAPABILITIES_LTF_MAX_NUM_INITIAL_SKIP_RX_GET(word32) \ + WMI_GET_BITS(word32, 16, 16) +#define WMI_WIFI_RADAR_LTF_LENGTH_CAPABILITIES_LTF_MAX_NUM_INITIAL_SKIP_RX_SET(word32, value) \ + WMI_SET_BITS(word32, 16, 16, value) + typedef struct { - /** TLV tag and len; tag equals - * WMITLV_TAG_STRUC_wmi_wifi_radar_ltf_length_capabilities */ - A_UINT32 tlv_header; - - /* LTF at Tx configuration */ - A_UINT32 ltf_max_num_tx; - - /* LTF at Rx configuration in 2 power exponent number */ - A_UINT32 ltf_max_expo_num_rx; - - /* LTF to initially skip */ - A_UINT32 ltf_max_num_initial_skip_rx; - + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_wifi_radar_ltf_length_capabilities */ + union { + A_UINT32 ltf_cap1_word32; + struct { + /* + * bits 3:0 -> PDEV ID + * bits 31:4 -> LTF at Tx configuration + */ + A_UINT32 + pdev_id: 4, + /* Max number of LTF at Tx configuration */ + ltf_max_num_tx: 28; + }; + }; + union { + A_UINT32 ltf_cap2_word32; + struct { + /* + * bits 15:0 -> LTF at Rx configuration in exponential term + * bits 31:16 -> LTF to skip intially at Rx configuration + */ + A_UINT32 + ltf_max_expo_num_rx: 16, + /* Max number of LTF at Rx configuration */ + ltf_max_num_initial_skip_rx: 16; + /* Max number of LTF to skip initially at Rx configuration */ + }; + }; /** * This TLV contains target LTF capability for Wi-Fi Radar sensing feature. */ } wmi_wifi_radar_ltf_length_capabilities; +#define WMI_WIFI_RADAR_CHAIN_CAPABILITIES_PDEV_ID_GET(word32) \ + WMI_GET_BITS(word32, 0, 4) +#define WMI_WIFI_RADAR_CHAIN_CAPABILITIES_PDEV_ID_SET(word32, value) \ + WMI_SET_BITS(word32, 0, 4, value) + +#define WMI_WIFI_RADAR_CHAIN_CAPABILITIES_MAX_NUM_RX_CHAIN_GET(word32) \ + WMI_GET_BITS(word32, 4, 7) +#define WMI_WIFI_RADAR_CHAIN_CAPABILITIES_MAX_NUM_RX_CHAIN_SET(word32, value) \ + WMI_SET_BITS(word32, 4, 7, value) + +#define WMI_WIFI_RADAR_CHAIN_CAPABILITIES_BEST_ISOLATED_CHAIN_PAIR_SEL_GET(word32) \ + WMI_GET_BITS(word32, 11, 1) +#define WMI_WIFI_RADAR_CHAIN_CAPABILITIES_BEST_ISOLATED_CHAIN_PAIR_SEL_SET(word32, value) \ + WMI_SET_BITS(word32, 11, 1, value) + typedef struct { /** TLV tag and len; tag equals * WMITLV_TAG_STRUC_wmi_wifi_radar_chain_capabilities */ A_UINT32 tlv_header; - - /* Max num of Rx chain can be used to capture at a time */ - A_UINT32 max_num_rx_chain; - - /* Chain-to-Chain Isolation based chain pair support */ - A_UINT32 best_isolated_chain_pair_sel; - + union { + A_UINT32 chain_cap1_word32; + struct { + /* + * bits 3:0 -> PDEV ID + * bits 10:4 -> Max number of Rx chain capture in one shot + * bit 11 -> Best Isolated Chain pair selection enabled or not + * bits 31:12 -> reserved + */ + A_UINT32 + pdev_id: 4, + /* Max num of Rx chain can be used to capture at a time */ + max_num_rx_chain: 7, + /* Chain-to-Chain Isolation based chain pair support */ + best_isolated_chain_pair_sel: 1, + reserved:20; + }; + }; /** * This TLV contains target chain capability for Wi-Fi Radar sensing feature. */ diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 0bef1f1c1347..c579a5f5830c 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_ 1554 +#define __WMI_REVISION_ 1555 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 77d8b129a0e070da50714f6b859bf637599516d3 Mon Sep 17 00:00:00 2001 From: spuligil Date: Wed, 20 Nov 2024 06:01:31 -0800 Subject: [PATCH 42/54] fw-api: CL 28087373 - update fw common interface files Change-Id: Iafdc5a7c62cefe887c100f8edf1c88c64d33b591 CRs-Fixed: 3830439 --- fw/htt_stats.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/fw/htt_stats.h b/fw/htt_stats.h index 75440dc6f63c..c6852f91032a 100644 --- a/fw/htt_stats.h +++ b/fw/htt_stats.h @@ -11532,8 +11532,12 @@ typedef struct { * avg_chan_acc_lat_hist[6]: 1000 us <= channel access latency < 1500 us * avg_chan_acc_lat_hist[7]: 1500 us <= channel access latency < 2000 us * avg_chan_acc_lat_hist[8]: channel access latency is >= 2000 us - */ + */ A_UINT32 avg_chan_acc_lat_hist[HTT_MAX_NUM_CHAN_ACC_LAT_INTR]; + /** Num of instances where OFDMA NBinWB is selected over MU-MIMO */ + A_UINT32 dl_ofdma_nbinwb_selected_over_mu_mimo[HTT_NUM_AC_WMM]; + /** Num of instances where OFDMA NBinWB is selected in standalone */ + A_UINT32 dl_ofdma_nbinwb_selected_standalone[HTT_NUM_AC_WMM]; } htt_stats_pdev_sched_algo_ofdma_stats_tlv; /* preserve old name alias for new name consistent with the tag name */ typedef htt_stats_pdev_sched_algo_ofdma_stats_tlv From a71e61555dd4ffce104f61d849c54588782a2495 Mon Sep 17 00:00:00 2001 From: spuligil Date: Wed, 20 Nov 2024 06:02:54 -0800 Subject: [PATCH 43/54] fw-api: CL 28092531 - update fw common interface files Change-Id: Id6067c35268bbf55e986d2851f03a228c1dc0127 CRs-Fixed: 3830439 --- fw/wmi_unified.h | 10 ++++++++++ fw/wmi_version.h | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index b74ade68c3f0..1a6d5c433af4 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -13353,6 +13353,8 @@ typedef struct { A_UINT32 rx_mpdu_per_sp; /* Average pkts rx per SP */ A_UINT32 tx_bytes_per_sp; /* Average tx bytes per SP */ A_UINT32 rx_bytes_per_sp; /* Average rx bytes per SP */ + A_UINT32 avg_eosp_sp_dur_us; /* Average EOSP SP time */ + A_UINT32 eosp_sp_count; /* Number of EOSP TWT SP's */ } wmi_ctrl_path_twt_stats_struct; #define BMISS_STATS_RSSI_SAMPLE_MAX 10 @@ -40191,6 +40193,14 @@ typedef enum _WMI_TWT_COMMAND_T { #define TWT_FLAGS_GET_PM_RESPONDER_MODE(flag) WMI_GET_BITS(flag, 15, 1) #define TWT_FLAGS_SET_PM_RESPONDER_MODE(flag, val) WMI_SET_BITS(flag, 15, 1, val) +/* 1 means IMPLICIT TWT, 0 means EXPLICIT TWT */ +#define TWT_FLAGS_GET_IMPLICIT(flag) WMI_GET_BITS(flag, 16, 1) +#define TWT_FLAGS_SET_IMPLICIT(flag, val) WMI_SET_BITS(flag, 16, 1, val) + +/* 1 means RENEGOTIATE TWT supported, 0 means RENEGOTIATE TWT not supported */ +#define TWT_FLAGS_GET_RENEGOTIATE(flag) WMI_GET_BITS(flag, 17, 1) +#define TWT_FLAGS_SET_RENEGOTIATE(flag, val) WMI_SET_BITS(flag, 17, 1, val) + typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_twt_ack_event_fixed_param */ A_UINT32 vdev_id; /* VDEV identifier */ diff --git a/fw/wmi_version.h b/fw/wmi_version.h index c579a5f5830c..fafda1f5d24a 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_ 1555 +#define __WMI_REVISION_ 1556 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 03dd37fc1ddaf86215f633b71eab1fcaeab81c3a Mon Sep 17 00:00:00 2001 From: spuligil Date: Wed, 20 Nov 2024 20:56:41 -0800 Subject: [PATCH 44/54] fw-api: CL 28108516 - update fw common interface files Change-Id: Ie64d78fc7537c7b0c712c061fb886cf3099e54d6 CRs-Fixed: 3830439 --- fw/wmi_services.h | 1 + 1 file changed, 1 insertion(+) diff --git a/fw/wmi_services.h b/fw/wmi_services.h index 3ac9556d088a..b3cda7bc3445 100644 --- a/fw/wmi_services.h +++ b/fw/wmi_services.h @@ -692,6 +692,7 @@ typedef enum { WMI_SERVICE_DYNAMIC_TWT_MODE_SUPPORT = 433, /* Indicates FW supports Dynamic TWT mode for vdevs */ WMI_SERVICE_SPECTRAL_SPUR_BIN_INFO_SUPPORT = 434, /* Indicates FW supports indicating spur frequency and spectral bin that gets affected due to spur frequency */ WMI_SERVICE_TWT_P2P_GO_CONCURRENCY_SUPPORT = 435, /* Indicates FW supports TWT in P2P GO concurrency mode */ + WMI_SERVICE_UMAC_MIGRATION_SUPPORT = 436, /* Indicates that FW supports UMAC migration */ WMI_MAX_EXT2_SERVICE From 38debcd2869da3cf2edd7c30ec0dccc1ed30149d Mon Sep 17 00:00:00 2001 From: spuligil Date: Mon, 25 Nov 2024 08:25:49 -0800 Subject: [PATCH 45/54] fw-api: CL 28109039 - update fw common interface files Change-Id: Idf44fed8a79add675acb13f8e3ba99f5008e4bbc CRs-Fixed: 3830439 --- fw/wmi_unified.h | 1 + fw/wmi_version.h | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 1a6d5c433af4..fd9cda676d1b 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -49825,6 +49825,7 @@ typedef struct { typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_RSSI_ACCURACY_CAPABILITIES */ union { + A_UINT32 phy_id__multigain_rssi_accuracy_enable__word32; struct { /* * bits 3:0 -> PHY ID diff --git a/fw/wmi_version.h b/fw/wmi_version.h index fafda1f5d24a..2197a31f04b1 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_ 1556 +#define __WMI_REVISION_ 1557 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 5f8b3f8d9674dc596ec8c050318f40ae6e392cad Mon Sep 17 00:00:00 2001 From: spuligil Date: Tue, 26 Nov 2024 03:29:29 -0800 Subject: [PATCH 46/54] fw-api: CL 28111557 - update fw common interface files Change-Id: Ie64f41210d233d25ad91bb0b45e174225f655ae1 CRs-Fixed: 3830439 --- fw/wmi_unified.h | 8 ++++++++ fw/wmi_version.h | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index fd9cda676d1b..e22bc7acc0c3 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -48947,6 +48947,14 @@ typedef struct { A_UINT32 ieee_link_id; /* key to identify a link */ wmi_channel wmi_chan; A_UINT32 op_code; /* see definition of WMI_MLO_link_BSS_OP_CODE */ + /* bss_id: + * This field is only relevant for op_code MLO_LINK_BSS_OP_ADD. + */ + wmi_mac_addr bss_id; + /* self_mac: + * This field is only relevant for op_code MLO_LINK_BSS_OP_ADD. + */ + wmi_mac_addr self_mac; } wmi_mlo_link_bss_param; typedef struct { diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 2197a31f04b1..197e2dbf4237 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_ 1557 +#define __WMI_REVISION_ 1558 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 4f8c1618a0f087b15f28c0a24ef1f81c84db8d12 Mon Sep 17 00:00:00 2001 From: spuligil Date: Tue, 26 Nov 2024 03:31:07 -0800 Subject: [PATCH 47/54] fw-api: CL 28121255 - update fw common interface files Change-Id: I9516e420eece878a0179ace4737d9c5f3980a755 CRs-Fixed: 3830439 --- 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 e22bc7acc0c3..70b8c60ddfb5 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -18138,6 +18138,10 @@ typedef enum { * DUT send BTM response with reject status code if the bit set to 1. */ #define WMI_VDEV_PARAM_ROAM_11KV_BTM_REJECT 0x8 +/* WMI_VDEV_PARAM_ROAM_11KV_BTM_DISABLE_TTLM: + * Disable STA T2LM when received BTM load balance frame. + */ +#define WMI_VDEV_PARAM_ROAM_11KV_BTM_DISABLE_TTLM 0x10 /** NAN vdev config Feature flags */ diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 197e2dbf4237..5c8b83c66ab1 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_ 1558 +#define __WMI_REVISION_ 1559 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From f09319c120aff17fb177286dd32faf2ccb650e46 Mon Sep 17 00:00:00 2001 From: spuligil Date: Tue, 26 Nov 2024 03:32:58 -0800 Subject: [PATCH 48/54] fw-api: CL 28142292 - update fw common interface files Change-Id: I83d4057e028df647e56c699232b81590a3aed1c2 CRs-Fixed: 3830439 --- fw/wmi_tlv_defs.h | 4 +++- fw/wmi_unified.h | 42 ++++++++++++++++++++++++++++++++++++++++++ fw/wmi_version.h | 2 +- 3 files changed, 46 insertions(+), 2 deletions(-) diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index 13d7c3de3b1b..2cc2406654d1 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1470,6 +1470,7 @@ typedef enum { WMITLV_TAG_STRUC_wmi_sawf_ezmesh_hop_count_cmd_fixed_param, WMITLV_TAG_STRUC_wmi_ctrl_path_pdev_conn_stats_struct, WMITLV_TAG_STRUC_wmi_pdev_sscan_spur_chan_impacted_bin_info, + WMITLV_TAG_STRUC_wmi_ctrl_path_ml_rcfg_stats_struct, } WMITLV_TAG_ID; /* * IMPORTANT: Please add _ALL_ WMI Commands Here. @@ -7234,7 +7235,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PEER_STATS_INFO_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_ctrl_path_sta_rrm_stats_struct, ctrl_path_sta_rrm_stats, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_ctrl_path_vdev_bcn_tx_stats_struct, ctrl_path_vdev_bcn_tx_stats, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_ctrl_path_pdev_bcn_tx_stats_struct, ctrl_path_pdev_bcn_tx_stats, WMITLV_SIZE_VAR) \ - WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_ctrl_path_pdev_conn_stats_struct, ctrl_path_pdev_conn_stats, WMITLV_SIZE_VAR) + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_ctrl_path_pdev_conn_stats_struct, ctrl_path_pdev_conn_stats, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_ctrl_path_ml_rcfg_stats_struct, ctrl_path_ml_rcfg_stats, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_CTRL_PATH_STATS_EVENTID); /* diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 70b8c60ddfb5..57410ffdca4b 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -16678,6 +16678,47 @@ typedef struct { A_UINT32 foreign_chan_entry_cnt; } wmi_ctrl_path_pdev_conn_stats_struct; +typedef struct { + A_UINT32 tlv_header; + A_UINT32 pdev_id; + + A_UINT32 ml_rcfg_wmi; + A_UINT32 ml_rcfg_del_self; + A_UINT32 ml_rcfg_new_link; + + A_UINT32 ml_rcfg_peer_assoc_ml_peer_null; + A_UINT32 ml_rcfg_ll_idx_mismatch; + A_UINT32 ml_rcfg_mlo_ll_idx_invalid; + A_UINT32 ml_rcfg_partner_link_null; + A_UINT32 ml_rcfg_partner_ll_idx_invalid; + A_UINT32 ml_rcfg_self_in_partner_link; + A_UINT32 ml_rcfg_partner_link_add; + A_UINT32 ml_rcfg_partner_link_del; + A_UINT32 ml_rcfg_no_rcfg_op; + + A_UINT32 ml_rcfg_0_num_link; + A_UINT32 ml_rcfg_inv_num_link; + A_UINT32 ml_rcfg_non_exist_link_del; + A_UINT32 ml_rcfg_add_exist_link; + A_UINT32 ml_rcfg_recv_add_ipc; + A_UINT32 ml_rcfg_recv_peer_del_ipc; + + A_UINT32 ml_rcfg_inv_link_bmap; + A_UINT32 ml_rcfg_assoc_ipc_before_wmi; + A_UINT32 ml_rcfg_before_init; + A_UINT32 ml_rcfg_recv_link_del_ipc_pri; + A_UINT32 ml_rcfg_recv_link_del_ipc_non_pri; + + A_UINT32 ml_rcfg_inc_to_2; + A_UINT32 ml_rcfg_inc_to_3; + A_UINT32 ml_rcfg_inc_to_4; + + A_UINT32 ml_rcfg_dec_to_3; + A_UINT32 ml_rcfg_dec_to_2; + A_UINT32 ml_rcfg_dec_to_1; + A_UINT32 ml_rcfg_dec_to_0; +} wmi_ctrl_path_ml_rcfg_stats_struct; + /** * peer statistics. */ @@ -36347,6 +36388,7 @@ typedef enum { WMI_REQUEST_CTRL_PATH_VDEV_BCN_TX_STAT = 19, WMI_REQUEST_CTRL_PATH_PDEV_BCN_TX_STAT = 20, WMI_REQUEST_CTRL_PATH_PDEV_CONN_STAT = 21, + WMI_REQUEST_CTRL_PATH_ML_RECONFIG_STAT = 22, } wmi_ctrl_path_stats_id; typedef enum { diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 5c8b83c66ab1..e2aebdc1a353 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_ 1559 +#define __WMI_REVISION_ 1560 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 17f51b08d4ea060d733954a6684f1e10be76e50b Mon Sep 17 00:00:00 2001 From: spuligil Date: Fri, 6 Dec 2024 06:01:28 -0800 Subject: [PATCH 49/54] fw-api: CL 28214991 - update fw common interface files Change-Id: I3ba2d1906cc85011704eec8955b6c31422c31fec CRs-Fixed: 3830439 --- fw/wmi_unified.h | 26 ++++++++++++++++++++++++++ fw/wmi_version.h | 2 +- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 57410ffdca4b..aa12fa6e2f63 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -37432,8 +37432,34 @@ typedef struct { * the bits within the bitmap */ A_UINT32 twt_capability_bitmap; + + /* min_max_wake_dur_us + * min wake dur - refer to min TWT SP duration + * max wake dur - refer to max TWT SP duration + */ + A_UINT32 min_max_wake_dur_us; + + /* min_max_wake_intvl_us + * min wake intvl - refer to min TWT SI interval + * max wake intvl - refer to max TWT SI interval + */ + A_UINT32 min_max_wake_intvl_us; } wmi_twt_caps_params; +/* 0 - 15 bits for MAX WAKE DUR , 16 - 31 bits for MIN WAKE DUR */ +#define TWT_CAPS_SET_MAX_WAKE_DUR(var, val) WMI_SET_BITS(var, 0, 16, val) +#define TWT_CAPS_SET_MIN_WAKE_DUR(var, val) WMI_SET_BITS(var, 16, 16, val) + +#define TWT_CAPS_GET_MAX_WAKE_DUR(var, val) WMI_GET_BITS(var, 0, 16) +#define TWT_CAPS_GET_MIN_WAKE_DUR(var, val) WMI_GET_BITS(var, 16, 16) + +/* 0 - 15 bits for MAX WAKE INTVL , 16 - 31 bits for MIN WAKE INTVL */ +#define TWT_CAPS_SET_MAX_WAKE_INTVL(var, val) WMI_SET_BITS(var, 0, 16, val) +#define TWT_CAPS_SET_MIN_WAKE_INTVL(var, val) WMI_SET_BITS(var, 16, 16, val) + +#define TWT_CAPS_GET_MAX_WAKE_INTVL(var, val) WMI_GET_BITS(var, 0, 16) +#define TWT_CAPS_GET_MIN_WAKE_INTVL(var, val) WMI_GET_BITS(var, 16, 16) + /* * This TLV used for Scan Radio RDP * We have an RDP which supports Multiband-Frequency (2 GHz, 5 GHz and 6 GHz) diff --git a/fw/wmi_version.h b/fw/wmi_version.h index e2aebdc1a353..d0c2331ab1fd 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_ 1560 +#define __WMI_REVISION_ 1561 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 1fe6a1d48dd883cd8aaa7ec42bf384f43b937f04 Mon Sep 17 00:00:00 2001 From: spuligil Date: Thu, 19 Dec 2024 06:01:27 -0800 Subject: [PATCH 50/54] fw-api: CL 28298000 - update fw common interface files Change-Id: Ia506af0378375064398ec801240bc637f345f2cf CRs-Fixed: 3830439 --- fw/htt.h | 106 +++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 72 insertions(+), 34 deletions(-) diff --git a/fw/htt.h b/fw/htt.h index fe664eaef0e3..ba5b42d6e3e6 100644 --- a/fw/htt.h +++ b/fw/htt.h @@ -14171,11 +14171,11 @@ PREPACK struct htt_tx_offload_deliver_ind_hdr_t * | VALID_MASK |(4bits) | SET_NUM | HW peer ID / AST index | * | (8bits) | | (4bits) | | * |-----------------+--------+--+--+--+--------------------------------------| - * | RESERVED |E |O | | | - * | (13bits) |A |A |NH| on-Chip PMAC_RXPCU AST index | - * | |V |V | | | + * | RESERVED |C|E |O | | | + * | (12bits) |I|A |A |NH| on-Chip PMAC_RXPCU AST index | + * | |V|V |V | | | * |-----------------+--------------------+-----------------------------------| - * | HTT_MSDU_IDX_ | RESERVED | | + * | HTT_MSDU_IDX_ | CLASSIFY_INFO_IDX | | * | VALID_MASK_EXT | (8bits) | EXT AST index | * | (8bits) | | | * |-----------------+--------------------+-----------------------------------| @@ -14185,11 +14185,13 @@ PREPACK struct htt_tx_offload_deliver_ind_hdr_t * |--------------------------------------------------------------------------| * * Where: + * CIV = CLASSIFY_INFO_IDX_VALID flag, for CLASSIFY_INFO_IDX * EAV = EXT_AST_VALID flag, for "EXT AST index" * OAV = ONCHIP_AST_VALID flag, for "on-Chip PMAC_RXPCU AST index" * NH = Next Hop * The following field definitions describe the format of the rx peer map v3 * messages sent from the target to the host. + * dword 0: * - MSG_TYPE * Bits 7:0 * Purpose: identifies this as a peer map v3 message @@ -14200,10 +14202,12 @@ PREPACK struct htt_tx_offload_deliver_ind_hdr_t * - SW_PEER_ID * Bits 31:16 * Purpose: The peer ID (index) that WAL has allocated for this peer. + * dword 1: * - MAC_ADDR_L32 * Bits 31:0 * Purpose: Identifies which peer node the peer ID is for. * Value: lower 4 bytes of peer node's MAC address + * dword 2: * - MAC_ADDR_U16 * Bits 15:0 * Purpose: Identifies which peer node the peer ID is for. @@ -14212,6 +14216,7 @@ PREPACK struct htt_tx_offload_deliver_ind_hdr_t * Bits 31:16 * Purpose: The multicast peer ID (index) * Value: set to HTT_INVALID_PEER if not valid + * dword 3: * - HW_PEER_ID / AST_INDEX * Bits 15:0 * Purpose: Identifies the HW peer ID corresponding to the peer MAC @@ -14231,6 +14236,7 @@ PREPACK struct htt_tx_offload_deliver_ind_hdr_t * - HTT_MSDU_IDX_VALID_MASK * Bits 31:24 * Purpose: Shows MSDU indexes valid mask for AST_INDEX + * dword 4: * - ONCHIP_AST_IDX / RESERVED * Bits 15:0 * Purpose: This field is valid only when split AST feature is enabled. @@ -14238,28 +14244,38 @@ PREPACK struct htt_tx_offload_deliver_ind_hdr_t * If valid, identifies the HW peer ID corresponding to the peer MAC * address, this ast_idx is used for LMAC modules for RXPCU. * - NEXT_HOP - * Bits 16 + * Bit 16 * Purpose: Flag indicates next_hop AST entry used for WDS * (Wireless Distribution System). * - ONCHIP_AST_VALID - * Bits 17 + * Bit 17 * Purpose: Flag indicates valid data behind of the ONCHIP_AST_IDX field * - EXT_AST_VALID - * Bits 18 + * Bit 18 * Purpose: Flag indicates valid data behind of the EXT_AST_INDEX field + * - CLASSIFY_INFO_IDX_VALID + * Bit 19 + * Purpose: If set, indicates that the CLASSIFY_INFO_IDX field is valid; + * else, ignore CLASSIFY_INFO_IDX + * dword 5: * - EXT_AST_INDEX * Bits 15:0 * Purpose: This field describes Extended AST index * Valid if EXT_AST_VALID flag set + * - CLASSIFY_INFO_IDX + * Bits 23:16 + * Purpose: assists TCL-L Block in Boron family of chips to + * start finding the flow from the corresponding + * entry in the FLOW LOOK UP TABLE * - HTT_MSDU_IDX_VALID_MASK_EXT * Bits 31:24 * Purpose: Shows MSDU indexes valid mask for EXT_AST_INDEX */ /* dword 0 */ -#define HTT_RX_PEER_MAP_V3_SW_PEER_ID_M 0xffff0000 -#define HTT_RX_PEER_MAP_V3_SW_PEER_ID_S 16 #define HTT_RX_PEER_MAP_V3_VDEV_ID_M 0x0000ff00 #define HTT_RX_PEER_MAP_V3_VDEV_ID_S 8 +#define HTT_RX_PEER_MAP_V3_SW_PEER_ID_M 0xffff0000 +#define HTT_RX_PEER_MAP_V3_SW_PEER_ID_S 16 /* dword 1 */ #define HTT_RX_PEER_MAP_V3_MAC_ADDR_L32_M 0xffffffff #define HTT_RX_PEER_MAP_V3_MAC_ADDR_L32_S 0 @@ -14269,26 +14285,30 @@ PREPACK struct htt_tx_offload_deliver_ind_hdr_t #define HTT_RX_PEER_MAP_V3_MULTICAST_SW_PEER_ID_M 0xffff0000 #define HTT_RX_PEER_MAP_V3_MULTICAST_SW_PEER_ID_S 16 /* dword 3 */ -#define HTT_RX_PEER_MAP_V3_MSDU_IDX_VM_AST_M 0xff000000 -#define HTT_RX_PEER_MAP_V3_MSDU_IDX_VM_AST_S 24 -#define HTT_RX_PEER_MAP_V3_CACHE_SET_NUM_M 0x000f0000 -#define HTT_RX_PEER_MAP_V3_CACHE_SET_NUM_S 16 #define HTT_RX_PEER_MAP_V3_HW_PEER_ID_M 0x0000ffff #define HTT_RX_PEER_MAP_V3_HW_PEER_ID_S 0 +#define HTT_RX_PEER_MAP_V3_CACHE_SET_NUM_M 0x000f0000 +#define HTT_RX_PEER_MAP_V3_CACHE_SET_NUM_S 16 +#define HTT_RX_PEER_MAP_V3_MSDU_IDX_VM_AST_M 0xff000000 +#define HTT_RX_PEER_MAP_V3_MSDU_IDX_VM_AST_S 24 /* dword 4 */ -#define HTT_RX_PEER_MAP_V3_EXT_AST_VALID_FLAG_M 0x00040000 -#define HTT_RX_PEER_MAP_V3_EXT_AST_VALID_FLAG_S 18 -#define HTT_RX_PEER_MAP_V3_ONCHIP_AST_VALID_FLAG_M 0x00020000 -#define HTT_RX_PEER_MAP_V3_ONCHIP_AST_VALID_FLAG_S 17 -#define HTT_RX_PEER_MAP_V3_NEXT_HOP_M 0x00010000 -#define HTT_RX_PEER_MAP_V3_NEXT_HOP_S 16 -#define HTT_RX_PEER_MAP_V3_ON_CHIP_PMAC_RXPCU_AST_IDX_M 0x0000ffff -#define HTT_RX_PEER_MAP_V3_ON_CHIP_PMAC_RXPCU_AST_IDX_S 0 +#define HTT_RX_PEER_MAP_V3_ON_CHIP_PMAC_RXPCU_AST_IDX_M 0x0000ffff +#define HTT_RX_PEER_MAP_V3_ON_CHIP_PMAC_RXPCU_AST_IDX_S 0 +#define HTT_RX_PEER_MAP_V3_NEXT_HOP_M 0x00010000 +#define HTT_RX_PEER_MAP_V3_NEXT_HOP_S 16 +#define HTT_RX_PEER_MAP_V3_ONCHIP_AST_VALID_FLAG_M 0x00020000 +#define HTT_RX_PEER_MAP_V3_ONCHIP_AST_VALID_FLAG_S 17 +#define HTT_RX_PEER_MAP_V3_EXT_AST_VALID_FLAG_M 0x00040000 +#define HTT_RX_PEER_MAP_V3_EXT_AST_VALID_FLAG_S 18 +#define HTT_RX_PEER_MAP_V3_CLASSIFY_INFO_IDX_VALID_FLAG_M 0x00080000 +#define HTT_RX_PEER_MAP_V3_CLASSIFY_INFO_IDX_VALID_FLAG_S 19 /* dword 5 */ -#define HTT_RX_PEER_MAP_V3_MSDU_IDX_VM_EXT_AST_M 0xff000000 -#define HTT_RX_PEER_MAP_V3_MSDU_IDX_VM_EXT_AST_S 24 #define HTT_RX_PEER_MAP_V3_EXT_AST_IDX_M 0x0000ffff #define HTT_RX_PEER_MAP_V3_EXT_AST_IDX_S 0 +#define HTT_RX_PEER_MAP_V3_CLASSIFY_INFO_IDX_M 0x00ff0000 +#define HTT_RX_PEER_MAP_V3_CLASSIFY_INFO_IDX_S 16 +#define HTT_RX_PEER_MAP_V3_MSDU_IDX_VM_EXT_AST_M 0xff000000 +#define HTT_RX_PEER_MAP_V3_MSDU_IDX_VM_EXT_AST_S 24 #define HTT_RX_PEER_MAP_V3_VDEV_ID_SET(word, value) \ do { \ @@ -14370,6 +14390,14 @@ PREPACK struct htt_tx_offload_deliver_ind_hdr_t #define HTT_RX_PEER_MAP_V3_EXT_AST_VALID_FLAG_GET(word) \ (((word) & HTT_RX_PEER_MAP_V3_EXT_AST_VALID_FLAG_M) >> HTT_RX_PEER_MAP_V3_EXT_AST_VALID_FLAG_S) +#define HTT_RX_PEER_MAP_V3_CLASSIFY_INFO_IDX_VALID_FLAG_SET(word, value) \ + do { \ + HTT_CHECK_SET_VAL(HTT_RX_PEER_MAP_V3_CLASSIFY_INFO_IDX_VALID_FLAG, value); \ + (word) |= (value) << HTT_RX_PEER_MAP_V3_CLASSIFY_INFO_IDX_VALID_FLAG_S; \ + } while (0) +#define HTT_RX_PEER_MAP_V3_CLASSIFY_INFO_IDX_VALID_FLAG_GET(word) \ + (((word) & HTT_RX_PEER_MAP_V3_CLASSIFY_INFO_IDX_VALID_FLAG_M) >> HTT_RX_PEER_MAP_V3_CLASSIFY_INFO_IDX_VALID_FLAG_S) + #define HTT_RX_PEER_MAP_V3_EXT_AST_IDX_SET(word, value) \ do { \ HTT_CHECK_SET_VAL(HTT_RX_PEER_MAP_V3_EXT_AST_IDX, value); \ @@ -14378,6 +14406,14 @@ PREPACK struct htt_tx_offload_deliver_ind_hdr_t #define HTT_RX_PEER_MAP_V3_EXT_AST_IDX_GET(word) \ (((word) & HTT_RX_PEER_MAP_V3_EXT_AST_IDX_M) >> HTT_RX_PEER_MAP_V3_EXT_AST_IDX_S) +#define HTT_RX_PEER_MAP_V3_CLASSIFY_INFO_IDX_SET(word, value) \ + do { \ + HTT_CHECK_SET_VAL(HTT_RX_PEER_MAP_V3_CLASSIFY_INFO_IDX, value); \ + (word) |= (value) << HTT_RX_PEER_MAP_V3_CLASSIFY_INFO_IDX_S; \ + } while (0) +#define HTT_RX_PEER_MAP_V3_CLASSIFY_INFO_IDX_GET(word) \ + (((word) & HTT_RX_PEER_MAP_V3_CLASSIFY_INFO_IDX_M) >> HTT_RX_PEER_MAP_V3_CLASSIFY_INFO_IDX_S) + #define HTT_RX_PEER_MAP_V3_MSDU_IDX_VM_EXT_AST_SET(word, value) \ do { \ HTT_CHECK_SET_VAL(HTT_RX_PEER_MAP_V3_MSDU_IDX_VM_EXT_AST, value); \ @@ -14386,17 +14422,19 @@ PREPACK struct htt_tx_offload_deliver_ind_hdr_t #define HTT_RX_PEER_MAP_V3_MSDU_IDX_VM_EXT_AST_GET(word) \ (((word) & HTT_RX_PEER_MAP_V3_MSDU_IDX_VM_EXT_AST_M) >> HTT_RX_PEER_MAP_V3_MSDU_IDX_VM_EXT_AST_S) -#define HTT_RX_PEER_MAP_V3_MAC_ADDR_OFFSET 4 /* bytes */ -#define HTT_RX_PEER_MAP_V3_MULTICAST_SW_PEER_ID_OFFSET 8 /* bytes */ -#define HTT_RX_PEER_MAP_V3_HW_PEER_ID_OFFSET 12 /* bytes */ -#define HTT_RX_PEER_MAP_V3_CACHE_SET_NUM_OFFSET 12 /* bytes */ -#define HTT_RX_PEER_MAP_V3_MSDU_IDX_VM_AST_OFFSET 12 /* bytes */ -#define HTT_RX_PEER_MAP_V3_ON_CHIP_PMAC_RXPCU_AST_IDX_OFFSET 16 /* bytes */ -#define HTT_RX_PEER_MAP_V3_NEXT_HOP_OFFSET 16 /* bytes */ -#define HTT_RX_PEER_MAP_V3_ONCHIP_AST_VALID_FLAG_OFFSET 16 /* bytes */ -#define HTT_RX_PEER_MAP_V3_EXT_AST_VALID_FLAG_OFFSET 16 /* bytes */ -#define HTT_RX_PEER_MAP_V3_EXT_AST_IDX_OFFSET 20 /* bytes */ -#define HTT_RX_PEER_MAP_V3_MSDU_IDX_VM_EXT_AST_OFFSET 20 /* bytes */ +#define HTT_RX_PEER_MAP_V3_MAC_ADDR_OFFSET 4 /* bytes */ +#define HTT_RX_PEER_MAP_V3_MULTICAST_SW_PEER_ID_OFFSET 8 /* bytes */ +#define HTT_RX_PEER_MAP_V3_HW_PEER_ID_OFFSET 12 /* bytes */ +#define HTT_RX_PEER_MAP_V3_CACHE_SET_NUM_OFFSET 12 /* bytes */ +#define HTT_RX_PEER_MAP_V3_MSDU_IDX_VM_AST_OFFSET 12 /* bytes */ +#define HTT_RX_PEER_MAP_V3_ON_CHIP_PMAC_RXPCU_AST_IDX_OFFSET 16 /* bytes */ +#define HTT_RX_PEER_MAP_V3_NEXT_HOP_OFFSET 16 /* bytes */ +#define HTT_RX_PEER_MAP_V3_ONCHIP_AST_VALID_FLAG_OFFSET 16 /* bytes */ +#define HTT_RX_PEER_MAP_V3_EXT_AST_VALID_FLAG_OFFSET 16 /* bytes */ +#define HTT_RX_PEER_MAP_V3_CLASSIFY_INFO_IDX_VALID_FLAG_OFFSET 16 /* bytes */ +#define HTT_RX_PEER_MAP_V3_EXT_AST_IDX_OFFSET 20 /* bytes */ +#define HTT_RX_PEER_MAP_V3_CLASSIFY_INFO_IDX_OFFSET 20 /* bytes */ +#define HTT_RX_PEER_MAP_V3_MSDU_IDX_VM_EXT_AST_OFFSET 20 /* bytes */ #define HTT_RX_PEER_MAP_V3_BYTES 32 From a4f8f3528889ff2fedbae62dd6f025570ad466fb Mon Sep 17 00:00:00 2001 From: spuligil Date: Sat, 21 Dec 2024 06:01:28 -0800 Subject: [PATCH 51/54] fw-api: CL 28298732 - update fw common interface files Change-Id: I3f36d15f9769d4366218e3acc7752f54455ca27f CRs-Fixed: 3830439 --- fw/wmi_unified.h | 13 +++++++++++-- fw/wmi_version.h | 2 +- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index aa12fa6e2f63..3a8f83dc56ab 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -17033,6 +17033,8 @@ typedef struct { #define WMI_MLO_FLAGS_SET_LINK_DEL_CANCEL(mlo_flags, value) WMI_SET_BITS(mlo_flags, 16, 1, value) #define WMI_MLO_FLAGS_GET_START_AS_ACTIVE(mlo_flags) WMI_GET_BITS(mlo_flags, 17, 1) #define WMI_MLO_FLAGS_SET_START_AS_ACTIVE(mlo_flags, value) WMI_SET_BITS(mlo_flags, 17, 1, value) +#define WMI_MLO_FLAGS_GET_IEEE_LINK_ID_VALID(mlo_flags) WMI_GET_BITS(mlo_flags, 18, 1) +#define WMI_MLO_FLAGS_SET_IEEE_LINK_ID_VALID(mlo_flags, value) WMI_SET_BITS(mlo_flags, 18, 1, value) /* this structure used for passing MLO flags */ typedef struct { @@ -17062,7 +17064,8 @@ typedef struct { mlo_link_add_cancel:1, /* rollback of previous dynamic link addition */ mlo_link_del_cancel:1, /* rollback of previous dynamic link deletion */ start_as_active:1, /* indicate link should be started in active status */ - unused: 14; + mlo_ieee_link_id_valid:1, /* indicate if the ieee_link_id in wmi_vdev_start_mlo_params is valid */ + unused: 13; }; A_UINT32 mlo_flags; }; @@ -17108,7 +17111,13 @@ typedef enum { /* this TLV structure used for pass mlo parameters on vdev start*/ typedef struct { A_UINT32 tlv_header; /** TLV tag and len; */ - wmi_mlo_flags mlo_flags; /*only mlo enable and assoc link flag need by vdev start*/ + wmi_mlo_flags mlo_flags; /* only mlo enable, assoc link and mlo_ieee_link_id_valid flag need by vdev start */ + /** ieee_link_id: + * link id in 802.11 frame. + * This field will be invalid and ignored unless mlo_flags has + * mlo_ieee_link_id_valid bit set. + */ + A_UINT32 ieee_link_id; } wmi_vdev_start_mlo_params; /* this TLV structure used for passing mlo parameters on vdev stop */ diff --git a/fw/wmi_version.h b/fw/wmi_version.h index d0c2331ab1fd..349065d191da 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_ 1561 +#define __WMI_REVISION_ 1562 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 5b13dd347fd0e4ec9a49ece5d4df1e0fd989ef09 Mon Sep 17 00:00:00 2001 From: spuligil Date: Sat, 21 Dec 2024 06:02:58 -0800 Subject: [PATCH 52/54] fw-api: CL 28311952 - update fw common interface files Change-Id: Ied16c198701659cd276b49e29710d3690973e7aa CRs-Fixed: 3830439 --- fw/htt_stats.h | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/fw/htt_stats.h b/fw/htt_stats.h index c6852f91032a..c0eccd71a494 100644 --- a/fw/htt_stats.h +++ b/fw/htt_stats.h @@ -11538,6 +11538,31 @@ typedef struct { A_UINT32 dl_ofdma_nbinwb_selected_over_mu_mimo[HTT_NUM_AC_WMM]; /** Num of instances where OFDMA NBinWB is selected in standalone */ A_UINT32 dl_ofdma_nbinwb_selected_standalone[HTT_NUM_AC_WMM]; + /** + * Number of instances where we populated TX mode and candidate lists + * only for DL. + */ + A_UINT32 running_only_dl_scheduler_cnt[HTT_NUM_AC_WMM]; + /** + * Number of instances where we populated TX mode and candidate lists + * only for UL. + */ + A_UINT32 running_only_ul_scheduler_cnt[HTT_NUM_AC_WMM]; + /** + * Number of instances where we populated TX mode and candidate lists + * additionally for DL after UL. + */ + A_UINT32 running_additional_dl_scheduler_cnt[HTT_NUM_AC_WMM]; + /** + * Number of instances where we populated TX mode and candidate lists + * additionally for UL after DL. + */ + A_UINT32 running_additional_ul_scheduler_cnt[HTT_NUM_AC_WMM]; + /** + * Number of instances where we populated TX mode and candidate lists + * only for UL BSR TX mode. + */ + A_UINT32 running_ul_scheduler_for_bsrp_cnt[HTT_NUM_AC_WMM]; } htt_stats_pdev_sched_algo_ofdma_stats_tlv; /* preserve old name alias for new name consistent with the tag name */ typedef htt_stats_pdev_sched_algo_ofdma_stats_tlv From 0c0272b8bdeff7105daf714ef035d350d12fe76c Mon Sep 17 00:00:00 2001 From: spuligil Date: Sat, 21 Dec 2024 06:04:20 -0800 Subject: [PATCH 53/54] fw-api: CL 28312163 - update fw common interface files Change-Id: I59bf44a0eaaa2d7f00032775e6fc126c13ae7480 CRs-Fixed: 3830439 --- fw/wmi_tlv_defs.h | 20 +++++++++ fw/wmi_unified.h | 111 +++++++++++++++++++++++++++++++++++++++++++++- fw/wmi_version.h | 2 +- 3 files changed, 131 insertions(+), 2 deletions(-) diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index 2cc2406654d1..ece35c747408 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1471,6 +1471,10 @@ typedef enum { WMITLV_TAG_STRUC_wmi_ctrl_path_pdev_conn_stats_struct, WMITLV_TAG_STRUC_wmi_pdev_sscan_spur_chan_impacted_bin_info, WMITLV_TAG_STRUC_wmi_ctrl_path_ml_rcfg_stats_struct, + WMITLV_TAG_STRUC_wmi_vdev_vbss_config_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_vdev_vbss_peer_pn_info, + WMITLV_TAG_STRUC_wmi_vdev_vbss_peer_sn_info, + WMITLV_TAG_STRUC_wmi_vdev_vbss_config_event_fixed_param, } WMITLV_TAG_ID; /* * IMPORTANT: Please add _ALL_ WMI Commands Here. @@ -2031,6 +2035,7 @@ typedef enum { OP(WMI_MLO_LINK_RECONFIG_CMDID) \ OP(WMI_MLO_LINK_RECONFIG_COMPLETE_CMDID) \ OP(WMI_SAWF_EZMESH_HOP_COUNT_CMDID) \ + OP(WMI_VDEV_VBSS_CONFIG_CMDID) \ /* add new CMD_LIST elements above this line */ @@ -2364,6 +2369,7 @@ typedef enum { OP(WMI_SCAN_CACHE_RESULT_EVENTID) \ OP(WMI_MLO_LINK_RECONFIG_START_INDICATION_EVENTID) \ OP(WMI_PDEV_WIFI_RADAR_CAPABILITIES_EVENTID) \ + OP(WMI_VDEV_VBSS_CONFIG_EVENTID) \ /* add new EVT_LIST elements above this line */ @@ -3631,6 +3637,13 @@ WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_SET_PARAM_CMDID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_vdev_update_mac_addr_cmd_fixed_param, wmi_vdev_update_mac_addr_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_UPDATE_MAC_ADDR_CMDID); +/* VDEV VBSS CONFIG COMMAND */ +#define WMITLV_TABLE_WMI_VDEV_VBSS_CONFIG_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_vdev_vbss_config_cmd_fixed_param, wmi_vdev_vbss_config_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)\ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_vdev_vbss_peer_pn_info, vbss_peer_pn_info, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_vdev_vbss_peer_sn_info, vbss_peer_sn_info, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_VBSS_CONFIG_CMDID); + /* Pdev suspend Cmd */ #define WMITLV_TABLE_WMI_PDEV_SUSPEND_CMDID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_suspend_cmd_fixed_param, wmi_pdev_suspend_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) @@ -7749,6 +7762,13 @@ WMITLV_CREATE_PARAM_STRUC(WMI_VENDOR_VDEV_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, opaque_vendor_var_len_data, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_VENDOR_PEER_EVENTID); +/* VDEV VBSS CONFIG EVENT */ +#define WMITLV_TABLE_WMI_VDEV_VBSS_CONFIG_EVENTID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_vdev_vbss_config_event_fixed_param, wmi_vdev_vbss_config_event_fixed_param, fixed_param, WMITLV_SIZE_FIX)\ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_vdev_vbss_peer_pn_info, vbss_peer_pn_info, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_vdev_vbss_peer_sn_info, vbss_peer_sn_info, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_VBSS_CONFIG_EVENTID); + /* link switch event */ #define WMITLV_TABLE_WMI_MLO_LINK_SWITCH_REQUEST_EVENTID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mlo_link_switch_req_evt_fixed_param, wmi_mlo_link_switch_req_evt_fixed_param, fixed_param, WMITLV_SIZE_FIX) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 3a8f83dc56ab..67a899cf5c43 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -721,6 +721,8 @@ typedef enum { */ WMI_VDEV_REPORT_AP_OPER_BW_CMDID, + WMI_VDEV_VBSS_CONFIG_CMDID, + /* peer specific commands */ @@ -1982,6 +1984,7 @@ typedef enum { WMI_VDEV_SCHED_MODE_PROBE_RESP_EVENTID, /** Connect response */ WMI_VDEV_OOB_CONNECTION_RESP_EVENTID, + WMI_VDEV_VBSS_CONFIG_EVENTID, /* peer specific events */ /** FW reauet to kick out the station for reasons like inactivity,lack of response ..etc */ @@ -17237,7 +17240,15 @@ typedef enum { * Bridge VDEV/PEER will be required to seamlessly transmit * to diagonal links in 4 chip MLO. */ -#define WMI_UNIFIED_VDEV_SUBTYPE_BRIDGE 0x8 +#define WMI_UNIFIED_VDEV_SUBTYPE_BRIDGE 0x8 + +/* Subtype to indicate that the VDEV is in VBSS mode. + * VBSS Vdev could be active or passive state. + * VBSS ACTIVE : Peer directly connected to the vdev. + * VBSS PASSIVE : Peer connected to another VBSS node in the network + */ +#define WMI_UNIFIED_VDEV_SUBTYPE_VBSS 0x9 + /** values for vdev_start_request flags */ /** Indicates that AP VDEV uses hidden ssid. only valid for @@ -17995,6 +18006,14 @@ enum WMI_VDEV_UP_FLAGS { * EMA - Enhanced Multiple BSS Advertisemet. */ WMI_VDEV_UP_FLAG_EMA_MBSSID_AP = 0x00000001, + /** VBSS_ACTIVE + * Valid only for VBSS subtype vaps. + */ + WMI_VDEV_UP_FLAG_VBSS_ACTIVE = 0x00000002, + /** VBSS_PASSIVE + * Valid only for VBSS subtype vaps. + */ + WMI_VDEV_UP_FLAG_VBSS_PASSIVE = 0x00000004, }; typedef struct { @@ -38636,6 +38655,7 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command) WMI_RETURN_STRING(WMI_MLO_LINK_RECONFIG_CMDID); WMI_RETURN_STRING(WMI_MLO_LINK_RECONFIG_COMPLETE_CMDID); WMI_RETURN_STRING(WMI_SAWF_EZMESH_HOP_COUNT_CMDID); + WMI_RETURN_STRING(WMI_VDEV_VBSS_CONFIG_CMDID); } return (A_UINT8 *) "Invalid WMI cmd"; @@ -49930,6 +49950,95 @@ typedef struct { }; } WMI_RSSI_ACCURACY_IMPROVEMENT_CAPABILITIES; +typedef struct { + A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_vdev_vbss_config_cmd_fixed_param */ + /** unique id identifying the VDEV, generated by the caller */ + A_UINT32 vdev_id; + /** VBSS PEER MAC address */ + wmi_mac_addr peer_mac_addr; + union { + A_UINT32 action__word32; + struct { + /** 3:0 -> Action (4 bits) + * 31:4 -> reserved (28 bits) + */ + A_UINT32 + action: 4, /* refer to wmi_vbss_action */ + reserved: 28; + }; + }; + /* + * The below TLVs follow this TLV in the WMI_VDEV_VBSS_CONFIG_CMDID msg: + * - wmi_vdev_vbss_peer_sn_info[]; + * - wmi_vdev_vbss_peer_pn_info[]; + */ +} wmi_vdev_vbss_config_cmd_fixed_param; + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_vdev_vbss_peer_pn_info */ + union { + A_UINT32 pn_ctxt_id__word32; + struct { + /** 3:0 unicast/mcast/beacon + * 31:4 reserved + */ + A_UINT32 + pn_ctxt_id: 4, + reserved: 28; + }; + }; + A_UINT8 pn[16]; +} wmi_vdev_vbss_peer_pn_info; + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_vdev_vbss_peer_sn_info */ + union { + A_UINT32 tid_num__ssn__word32; + struct { + /** 15:0 tid number + * 31:16 start sequence number + */ + A_UINT32 + tid_num: 16, + ssn: 16; + }; + }; + /* The below TLVs follow this TLV in the WMI_VDEV_VBSS_CONFIG_EVENTID msg: + * - A_UINT32 scan_freq_list[]; + * - wmi_vdev_vbss_config_event_fixed_param[]; + */ +} wmi_vdev_vbss_peer_sn_info; + +typedef enum { + WMI_VBSS_GET_PEER_CONTEXT = 0x1, + WMI_VBSS_SET_PEER_CONTEXT = 0x2, +} wmi_vbss_action; + +#define WMI_VDEV_VBSS_GET_ACTION(action) WMI_GET_BITS(action, 0, 4) +#define WMI_VDEV_VBSS_SET_ACTION(action, value) WMI_SET_BITS(action, 0, 4, value) + +#define WMI_VDEV_VBSS_PN_INFO_GET_PN_CTXT_ID(pn_ctxt_id) WMI_GET_BITS(pn_ctxt_id, 0, 4) +#define WMI_VDEV_VBSS_PN_INFO_SET_PN_CTXT_ID(pn_ctxt_id, value) WMI_SET_BITS(pn_ctxt_id, 0, 4, value) + +#define WMI_VDEV_VBSS_SN_INFO_GET_tid_num(tid_num_ssn) WMI_GET_BITS(tid_num_ssn, 0, 16) +#define WMI_VDEV_VBSS_SN_INFO_SET_tid_num(action, value) WMI_SET_BITS(tid_num_ssn, 0, 16, value) + +#define WMI_VDEV_VBSS_SN_INFO_GET_SSN(tid_num_ssn) WMI_GET_BITS(tid_num_ssn, 16, 16) +#define WMI_VDEV_VBSS_SN_INFO_SET_SSN(action, value) WMI_SET_BITS(tid_num_ssn, 16, 16, value) + + +typedef struct { + A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_vdev_vbss_config_event_fixed_param */ + /** unique id identifying the VDEV, generated by the caller */ + A_UINT32 vdev_id; + /** PEER MAC address */ + wmi_mac_addr peer_mac_addr; + /* The below TLVs follow this TLV in the WMI_VDEV_VBSS_CONFIG_EVENTID msg: + * - wmi_vdev_vbss_peer_sn_info[]; + * - wmi_vdev_vbss_peer_pn_info[]; + */ +} wmi_vdev_vbss_config_event_fixed_param; + /* ADD NEW DEFS HERE */ diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 349065d191da..d9ff5984e2bd 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_ 1562 +#define __WMI_REVISION_ 1563 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 3cf1c80c937f9e292a408158a4e35dc26f71e4da Mon Sep 17 00:00:00 2001 From: spuligil Date: Sun, 22 Dec 2024 06:01:32 -0800 Subject: [PATCH 54/54] fw-api: CL 28313244 - update fw common interface files Change-Id: I3fd570e1d4f88e67c1dca995abab6960acee738d CRs-Fixed: 3830439 --- fw/wmi_services.h | 1 + fw/wmi_unified.h | 8 ++++---- fw/wmi_version.h | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/fw/wmi_services.h b/fw/wmi_services.h index b3cda7bc3445..fda83ef79812 100644 --- a/fw/wmi_services.h +++ b/fw/wmi_services.h @@ -693,6 +693,7 @@ typedef enum { WMI_SERVICE_SPECTRAL_SPUR_BIN_INFO_SUPPORT = 434, /* Indicates FW supports indicating spur frequency and spectral bin that gets affected due to spur frequency */ WMI_SERVICE_TWT_P2P_GO_CONCURRENCY_SUPPORT = 435, /* Indicates FW supports TWT in P2P GO concurrency mode */ WMI_SERVICE_UMAC_MIGRATION_SUPPORT = 436, /* Indicates that FW supports UMAC migration */ + WMI_SERVICE_STA_TWT_STATS_EXT = 437, /* FW supports additional info in TWT stats and ADD COMPLETION Event */ WMI_MAX_EXT2_SERVICE diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 67a899cf5c43..4d231e1a5fdd 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -37478,15 +37478,15 @@ typedef struct { #define TWT_CAPS_SET_MAX_WAKE_DUR(var, val) WMI_SET_BITS(var, 0, 16, val) #define TWT_CAPS_SET_MIN_WAKE_DUR(var, val) WMI_SET_BITS(var, 16, 16, val) -#define TWT_CAPS_GET_MAX_WAKE_DUR(var, val) WMI_GET_BITS(var, 0, 16) -#define TWT_CAPS_GET_MIN_WAKE_DUR(var, val) WMI_GET_BITS(var, 16, 16) +#define TWT_CAPS_GET_MAX_WAKE_DUR(var) WMI_GET_BITS(var, 0, 16) +#define TWT_CAPS_GET_MIN_WAKE_DUR(var) WMI_GET_BITS(var, 16, 16) /* 0 - 15 bits for MAX WAKE INTVL , 16 - 31 bits for MIN WAKE INTVL */ #define TWT_CAPS_SET_MAX_WAKE_INTVL(var, val) WMI_SET_BITS(var, 0, 16, val) #define TWT_CAPS_SET_MIN_WAKE_INTVL(var, val) WMI_SET_BITS(var, 16, 16, val) -#define TWT_CAPS_GET_MAX_WAKE_INTVL(var, val) WMI_GET_BITS(var, 0, 16) -#define TWT_CAPS_GET_MIN_WAKE_INTVL(var, val) WMI_GET_BITS(var, 16, 16) +#define TWT_CAPS_GET_MAX_WAKE_INTVL(var) WMI_GET_BITS(var, 0, 16) +#define TWT_CAPS_GET_MIN_WAKE_INTVL(var) WMI_GET_BITS(var, 16, 16) /* * This TLV used for Scan Radio RDP diff --git a/fw/wmi_version.h b/fw/wmi_version.h index d9ff5984e2bd..37f5972c4b92 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -37,7 +37,7 @@ #define __WMI_VER_MINOR_ 0 /** WMI revision number has to be incremented when there is a * change that may or may not break compatibility. */ -#define __WMI_REVISION_ 1563 +#define __WMI_REVISION_ 1564 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work