From 2b22979de83e516a50de95e93312c7da9de31906 Mon Sep 17 00:00:00 2001 From: spuligil Date: Wed, 18 Mar 2026 18:06:31 -0700 Subject: [PATCH] fw-api: CL 31990638 - update fw common interface files Change-Id: I82d9244c43afbdf1eadfaf0e77ae622e4d975de6 CRs-Fixed: 3830439 --- fw/htt.h | 55 +++++++++++++++++++++++++++++++++++++++++++++++- fw/htt_stats.h | 38 ++++++++++++++++----------------- fw/wmi_unified.h | 21 +++++++++++++----- fw/wmi_version.h | 2 +- 4 files changed, 90 insertions(+), 26 deletions(-) diff --git a/fw/htt.h b/fw/htt.h index 344b93e2665a..030a62cf081d 100644 --- a/fw/htt.h +++ b/fw/htt.h @@ -281,9 +281,10 @@ * 3.151 Add HTT_H2T DAL_MODE_INFO def. * 3.152 Add decap_type in htt_rx_peer_metadata_v1b. * 3.153 Add passthru_pkt flag in rx_peer_metadata structs. + * 3.154 Add T2H PEER_DEL_ALL_GLOBAL_VDEV_ID_UNMAP msg def. */ #define HTT_CURRENT_VERSION_MAJOR 3 -#define HTT_CURRENT_VERSION_MINOR 153 +#define HTT_CURRENT_VERSION_MINOR 154 #define HTT_NUM_TX_FRAG_DESC 1024 @@ -12577,6 +12578,7 @@ enum htt_t2h_msg_type { HTT_T2H_MSG_TYPE_MLO_LATENCY_REQ = 0x3d, HTT_T2H_MSG_TYPE_GLOBAL_PEER_ID_UNMAP = 0x3e, HTT_T2H_MSG_TYPE_HAPS = 0x3f, + HTT_T2H_MSG_TYPE_PEER_DEL_ALL_GLOBAL_VDEV_ID_UNMAP = 0x40, HTT_T2H_MSG_TYPE_TEST, @@ -24730,5 +24732,56 @@ PREPACK struct htt_t2h_power_state_info { } while (0) +/* MSG_TYPE => HTT_T2H_MSG_TYPE_PEER_DEL_ALL_GLOBAL_VDEV_ID_UNMAP + * + * The following diagram shows the format of the peer delete all global vdev + * unmap message sent from the target to the host. This message is used to + * send unmap event to host after tid and msduq/mpduq cleanup of all peers + * associated to a vdev, in FW, host cleans up msduq/mpduq based on message. + * + * |31 20|19 16|15 8|7 0| + * |------------------------+----------+-----------------+-----------------| + * | reserved |hw_link_id| global_vdev_id | msg type | + * |-----------------------------------------------------------------------| + * @details + * struct htt_t2h_peer_del_all_global_vdev_id_unmap_t: + * + * The message is interpreted as follows: + * dword0 - b'7:0 - msg_type: This will be set to 0x40 + * (HTT_T2H_MSG_TYPE_PEER_DEL_ALL_GLOBAL_VDEV_ID_UNMAP) + * b'15:8 - global_vdev_id : global vdev id assigned by host + * b'19:16 - hw_link_id : hw link id for which unmap is being sent + * b'31:20 - reserved + */ +/* HTT_T2H_MSG_TYPE_PEER_DEL_ALL_GLOBAL_VDEV_ID_UNMAP */ +PREPACK struct htt_t2h_peer_del_all_global_vdev_id_unmap_t { + A_UINT32 msg_type: 8, /* bits 7:0 */ + global_vdev_id: 8, /* bits 15:8 */ + hw_link_id: 4, /* bits 19:16 */ + reserved: 12; /* bits 31:20 */ +} POSTPACK; + +#define HTT_T2H_MSG_TYPE_PEER_DEL_ALL_GLOBAL_VDEV_ID_UNMAP_GLOBAL_VDEV_ID_M 0x0000FF00 +#define HTT_T2H_MSG_TYPE_PEER_DEL_ALL_GLOBAL_VDEV_ID_UNMAP_GLOBAL_VDEV_ID_S 8 +#define HTT_T2H_MSG_TYPE_PEER_DEL_ALL_GLOBAL_VDEV_ID_UNMAP_GLOBAL_VDEV_ID_GET(_var) \ + (((_var) & HTT_T2H_MSG_TYPE_PEER_DEL_ALL_GLOBAL_VDEV_ID_UNMAP_GLOBAL_VDEV_ID_M) >> \ + HTT_T2H_MSG_TYPE_PEER_DEL_ALL_GLOBAL_VDEV_ID_UNMAP_GLOBAL_VDEV_ID_S) +#define HTT_T2H_MSG_TYPE_PEER_DEL_ALL_GLOBAL_VDEV_ID_UNMAP_GLOBAL_VDEV_ID_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_T2H_MSG_TYPE_PEER_DEL_ALL_GLOBAL_VDEV_ID_UNMAP_GLOBAL_VDEV_ID, _val); \ + ((_var) |= ((_val) << HTT_T2H_MSG_TYPE_PEER_DEL_ALL_GLOBAL_VDEV_ID_UNMAP_GLOBAL_VDEV_ID_S)); \ + } while (0) + +#define HTT_T2H_MSG_TYPE_PEER_DEL_ALL_GLOBAL_VDEV_ID_UNMAP_HW_LINK_ID_M 0x000F0000 +#define HTT_T2H_MSG_TYPE_PEER_DEL_ALL_GLOBAL_VDEV_ID_UNMAP_HW_LINK_ID_S 16 +#define HTT_T2H_MSG_TYPE_PEER_DEL_ALL_GLOBAL_VDEV_ID_UNMAP_HW_LINK_ID_GET(_var) \ + (((_var) & HTT_T2H_MSG_TYPE_PEER_DEL_ALL_GLOBAL_VDEV_ID_UNMAP_HW_LINK_ID_M) >> \ + HTT_T2H_MSG_TYPE_PEER_DEL_ALL_GLOBAL_VDEV_ID_UNMAP_HW_LINK_ID_S) +#define HTT_T2H_MSG_TYPE_PEER_DEL_ALL_GLOBAL_VDEV_ID_UNMAP_HW_LINK_ID_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_T2H_MSG_TYPE_PEER_DEL_ALL_GLOBAL_VDEV_ID_UNMAP_HW_LINK_ID, _val); \ + ((_var) |= ((_val) << HTT_T2H_MSG_TYPE_PEER_DEL_ALL_GLOBAL_VDEV_ID_UNMAP_HW_LINK_ID_S)); \ + } while (0) + #endif diff --git a/fw/htt_stats.h b/fw/htt_stats.h index a20cd8759a36..55af6f6757ce 100644 --- a/fw/htt_stats.h +++ b/fw/htt_stats.h @@ -11956,7 +11956,7 @@ typedef htt_stats_phy_stats_tlv htt_phy_stats_tlv; #define HTT_STATS_PHY_RESET_CAL_DATA_COMPRESSED_SET(_var, _val) \ do { \ HTT_CHECK_SET_VAL(HTT_STATS_PHY_RESET_CAL_DATA_COMPRESSED, _val); \ - ((_var) |= ((_val) << STATS_PHY_RESET_CAL_DATA_COMPRESSED_S)); \ + ((_var) |= ((_val) << HTT_STATS_PHY_RESET_CAL_DATA_COMPRESSED_S)); \ } while (0) #define HTT_STATS_PHY_RESET_CAL_DATA_SOURCE_M 0x00000006 #define HTT_STATS_PHY_RESET_CAL_DATA_SOURCE_S 1 @@ -11966,7 +11966,7 @@ typedef htt_stats_phy_stats_tlv htt_phy_stats_tlv; #define HTT_STATS_PHY_RESET_CAL_DATA_SOURCE_SET(_var, _val) \ do { \ HTT_CHECK_SET_VAL(HTT_STATS_PHY_RESET_CAL_DATA_SOURCE, _val); \ - ((_var) |= ((_val) << STATS_PHY_RESET_CAL_DATA_SOURCE_S)); \ + ((_var) |= ((_val) << HTT_STATS_PHY_RESET_CAL_DATA_SOURCE_S)); \ } while (0) #define HTT_STATS_PHY_RESET_XTALCAL_M 0x00000008 #define HTT_STATS_PHY_RESET_XTALCAL_S 3 @@ -11976,7 +11976,7 @@ typedef htt_stats_phy_stats_tlv htt_phy_stats_tlv; #define HTT_STATS_PHY_RESET_XTALCAL_SET(_var, _val) \ do { \ HTT_CHECK_SET_VAL(HTT_STATS_PHY_RESET_XTALCAL, _val); \ - ((_var) |= ((_val) << STATS_PHY_RESET_XTALCAL_S)); \ + ((_var) |= ((_val) << HTT_STATS_PHY_RESET_XTALCAL_S)); \ } while (0) #define HTT_STATS_PHY_RESET_TPCCAL2GOPC_M 0x00000010 #define HTT_STATS_PHY_RESET_TPCCAL2GOPC_S 4 @@ -11986,7 +11986,7 @@ typedef htt_stats_phy_stats_tlv htt_phy_stats_tlv; #define HTT_STATS_PHY_RESET_TPCCAL2GOPC_SET(_var, _val) \ do { \ HTT_CHECK_SET_VAL(HTT_STATS_PHY_RESET_TPCCAL2GOPC, _val); \ - ((_var) |= ((_val) << STATS_PHY_RESET_TPCCAL2GOPC_S)); \ + ((_var) |= ((_val) << HTT_STATS_PHY_RESET_TPCCAL2GOPC_S)); \ } while (0) #define HTT_STATS_PHY_RESET_TPCCAL2GFPC_M 0x00000020 #define HTT_STATS_PHY_RESET_TPCCAL2GFPC_S 5 @@ -11996,7 +11996,7 @@ typedef htt_stats_phy_stats_tlv htt_phy_stats_tlv; #define HTT_STATS_PHY_RESET_TPCCAL2GFPC_SET(_var, _val) \ do { \ HTT_CHECK_SET_VAL(HTT_STATS_PHY_RESET_TPCCAL2GFPC, _val); \ - ((_var) |= ((_val) << STATS_PHY_RESET_TPCCAL2GFPC_S)); \ + ((_var) |= ((_val) << HTT_STATS_PHY_RESET_TPCCAL2GFPC_S)); \ } while (0) #define HTT_STATS_PHY_RESET_TPCCAL5GOPC_M 0x00000040 #define HTT_STATS_PHY_RESET_TPCCAL5GOPC_S 6 @@ -12006,7 +12006,7 @@ typedef htt_stats_phy_stats_tlv htt_phy_stats_tlv; #define HTT_STATS_PHY_RESET_TPCCAL5GOPC_SET(_var, _val) \ do { \ HTT_CHECK_SET_VAL(HTT_STATS_PHY_RESET_TPCCAL5GOPC, _val); \ - ((_var) |= ((_val) << STATS_PHY_RESET_TPCCAL5GOPC_S)); \ + ((_var) |= ((_val) << HTT_STATS_PHY_RESET_TPCCAL5GOPC_S)); \ } while (0) #define HTT_STATS_PHY_RESET_TPCCAL5GFPC_M 0x00000080 #define HTT_STATS_PHY_RESET_TPCCAL5GFPC_S 7 @@ -12016,7 +12016,7 @@ typedef htt_stats_phy_stats_tlv htt_phy_stats_tlv; #define HTT_STATS_PHY_RESET_TPCCAL5GFPC_SET(_var, _val) \ do { \ HTT_CHECK_SET_VAL(HTT_STATS_PHY_RESET_TPCCAL5GFPC, _val); \ - ((_var) |= ((_val) << STATS_PHY_RESET_TPCCAL5GFPC_S)); \ + ((_var) |= ((_val) << HTT_STATS_PHY_RESET_TPCCAL5GFPC_S)); \ } while (0) #define HTT_STATS_PHY_RESET_TPCCAL6GOPC_M 0x00000100 #define HTT_STATS_PHY_RESET_TPCCAL6GOPC_S 8 @@ -12026,7 +12026,7 @@ typedef htt_stats_phy_stats_tlv htt_phy_stats_tlv; #define HTT_STATS_PHY_RESET_TPCCAL6GOPC_SET(_var, _val) \ do { \ HTT_CHECK_SET_VAL(HTT_STATS_PHY_RESET_TPCCAL6GOPC, _val); \ - ((_var) |= ((_val) << STATS_PHY_RESET_TPCCAL6GOPC_S)); \ + ((_var) |= ((_val) << HTT_STATS_PHY_RESET_TPCCAL6GOPC_S)); \ } while (0) #define HTT_STATS_PHY_RESET_TPCCAL6GFPC_M 0x00000200 #define HTT_STATS_PHY_RESET_TPCCAL6GFPC_S 9 @@ -12036,7 +12036,7 @@ typedef htt_stats_phy_stats_tlv htt_phy_stats_tlv; #define HTT_STATS_PHY_RESET_TPCCAL6GFPC_SET(_var, _val) \ do { \ HTT_CHECK_SET_VAL(HTT_STATS_PHY_RESET_TPCCAL6GFPC, _val); \ - ((_var) |= ((_val) << STATS_PHY_RESET_TPCCAL6GFPC_S)); \ + ((_var) |= ((_val) << HTT_STATS_PHY_RESET_TPCCAL6GFPC_S)); \ } while (0) #define HTT_STATS_PHY_RESET_RXGAINCAL2G_M 0x00000400 #define HTT_STATS_PHY_RESET_RXGAINCAL2G_S 10 @@ -12046,7 +12046,7 @@ typedef htt_stats_phy_stats_tlv htt_phy_stats_tlv; #define HTT_STATS_PHY_RESET_RXGAINCAL2G_SET(_var, _val) \ do { \ HTT_CHECK_SET_VAL(HTT_STATS_PHY_RESET_RXGAINCAL2G, _val); \ - ((_var) |= ((_val) << STATS_PHY_RESET_RXGAINCAL2G_S)); \ + ((_var) |= ((_val) << HTT_STATS_PHY_RESET_RXGAINCAL2G_S)); \ } while (0) #define HTT_STATS_PHY_RESET_RXGAINCAL5G_M 0x00000800 #define HTT_STATS_PHY_RESET_RXGAINCAL5G_S 11 @@ -12056,7 +12056,7 @@ typedef htt_stats_phy_stats_tlv htt_phy_stats_tlv; #define HTT_STATS_PHY_RESET_RXGAINCAL5G_SET(_var, _val) \ do { \ HTT_CHECK_SET_VAL(HTT_STATS_PHY_RESET_RXGAINCAL5G, _val); \ - ((_var) |= ((_val) << STATS_PHY_RESET_RXGAINCAL5G_S)); \ + ((_var) |= ((_val) << HTT_STATS_PHY_RESET_RXGAINCAL5G_S)); \ } while (0) #define HTT_STATS_PHY_RESET_RXGAINCAL6G_M 0x00001000 #define HTT_STATS_PHY_RESET_RXGAINCAL6G_S 12 @@ -12066,7 +12066,7 @@ typedef htt_stats_phy_stats_tlv htt_phy_stats_tlv; #define HTT_STATS_PHY_RESET_RXGAINCAL6G_SET(_var, _val) \ do { \ HTT_CHECK_SET_VAL(HTT_STATS_PHY_RESET_RXGAINCAL6G, _val); \ - ((_var) |= ((_val) << STATS_PHY_RESET_RXGAINCAL6G_S)); \ + ((_var) |= ((_val) << HTT_STATS_PHY_RESET_RXGAINCAL6G_S)); \ } while (0) #define HTT_STATS_PHY_RESET_AOACAL2G_M 0x00002000 #define HTT_STATS_PHY_RESET_AOACAL2G_S 13 @@ -12076,7 +12076,7 @@ typedef htt_stats_phy_stats_tlv htt_phy_stats_tlv; #define HTT_STATS_PHY_RESET_AOACAL2G_SET(_var, _val) \ do { \ HTT_CHECK_SET_VAL(HTT_STATS_PHY_RESET_AOACAL2G, _val); \ - ((_var) |= ((_val) << STATS_PHY_RESET_AOACAL2G_S)); \ + ((_var) |= ((_val) << HTT_STATS_PHY_RESET_AOACAL2G_S)); \ } while (0) #define HTT_STATS_PHY_RESET_AOACAL5G_M 0x00004000 #define HTT_STATS_PHY_RESET_AOACAL5G_S 14 @@ -12086,7 +12086,7 @@ typedef htt_stats_phy_stats_tlv htt_phy_stats_tlv; #define HTT_STATS_PHY_RESET_AOACAL5G_SET(_var, _val) \ do { \ HTT_CHECK_SET_VAL(HTT_STATS_PHY_RESET_AOACAL5G, _val); \ - ((_var) |= ((_val) << STATS_PHY_RESET_AOACAL5G_S)); \ + ((_var) |= ((_val) << HTT_STATS_PHY_RESET_AOACAL5G_S)); \ } while (0) #define HTT_STATS_PHY_RESET_AOACAL6G_M 0x00008000 #define HTT_STATS_PHY_RESET_AOACAL6G_S 15 @@ -12096,7 +12096,7 @@ typedef htt_stats_phy_stats_tlv htt_phy_stats_tlv; #define HTT_STATS_PHY_RESET_AOACAL6G_SET(_var, _val) \ do { \ HTT_CHECK_SET_VAL(HTT_STATS_PHY_RESET_AOACAL6G, _val); \ - ((_var) |= ((_val) << STATS_PHY_RESET_AOACAL6G_S)); \ + ((_var) |= ((_val) << HTT_STATS_PHY_RESET_AOACAL6G_S)); \ } while (0) #define HTT_STATS_PHY_RESET_XTAL_FROM_OTP_M 0x00010000 #define HTT_STATS_PHY_RESET_XTAL_FROM_OTP_S 16 @@ -12106,7 +12106,7 @@ typedef htt_stats_phy_stats_tlv htt_phy_stats_tlv; #define HTT_STATS_PHY_RESET_XTAL_FROM_OTP_SET(_var, _val) \ do { \ HTT_CHECK_SET_VAL(HTT_STATS_PHY_RESET_XTAL_FROM_OTP, _val); \ - ((_var) |= ((_val) << STATS_PHY_RESET_XTAL_FROM_OTP_S)); \ + ((_var) |= ((_val) << HTT_STATS_PHY_RESET_XTAL_FROM_OTP_S)); \ } while (0) #define HTT_STATS_PHY_RESET_GLUT_LINEARITY_M 0x000000FF @@ -12117,7 +12117,7 @@ typedef htt_stats_phy_stats_tlv htt_phy_stats_tlv; #define HTT_STATS_PHY_RESET_GLUT_LINEARITY_SET(_var, _val) \ do { \ HTT_CHECK_SET_VAL(HTT_STATS_PHY_RESET_GLUT_LINEARITY, _val); \ - ((_var) |= ((_val) << STATS_PHY_RESET_GLUT_LINEARITY_S)); \ + ((_var) |= ((_val) << HTT_STATS_PHY_RESET_GLUT_LINEARITY_S)); \ } while (0) #define HTT_STATS_PHY_RESET_PLUT_LINEARITY_M 0x0000FF00 #define HTT_STATS_PHY_RESET_PLUT_LINEARITY_S 8 @@ -12127,7 +12127,7 @@ typedef htt_stats_phy_stats_tlv htt_phy_stats_tlv; #define HTT_STATS_PHY_RESET_PLUT_LINEARITY_SET(_var, _val) \ do { \ HTT_CHECK_SET_VAL(HTT_STATS_PHY_RESET_PLUT_LINEARITY, _val); \ - ((_var) |= ((_val) << STATS_PHY_RESET_PLUT_LINEARITY_S)); \ + ((_var) |= ((_val) << HTT_STATS_PHY_RESET_PLUT_LINEARITY_S)); \ } while (0) #define HTT_STATS_PHY_RESET_WLANDRIVERMODE_M 0x00FF0000 #define HTT_STATS_PHY_RESET_WLANDRIVERMODE_S 16 @@ -12137,7 +12137,7 @@ typedef htt_stats_phy_stats_tlv htt_phy_stats_tlv; #define HTT_STATS_PHY_RESET_WLANDRIVERMODE_SET(_var, _val) \ do { \ HTT_CHECK_SET_VAL(HTT_STATS_PHY_RESET_WLANDRIVERMODE, _val); \ - ((_var) |= ((_val) << STATS_PHY_RESET_WLANDRIVERMODE_S)); \ + ((_var) |= ((_val) << HTT_STATS_PHY_RESET_WLANDRIVERMODE_S)); \ } while (0) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 6f79ecbf54f4..0e2bc5235011 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -6526,6 +6526,10 @@ typedef struct { typedef struct { A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_tlv_buf_len_param */ A_UINT32 buf_len; /** Length of buf */ +/* NOTE: + * This struct cannot be expanded, due to being used as + * WMITLV_TAG_ARRAY_FIXED_STRUC in WMI_ROAM_INVOKE_CMDID. + */ /** * Following this structure is the TLV byte stream of buf of length buf_len: * A_UINT8 buf[]; @@ -12519,7 +12523,7 @@ typedef struct { #define WMI_IPI_STATS_SNR_NUM_BINS_SET(snr_config, value) \ WMI_SET_BITS(snr_config, 24, 8, value) -/* +/* * Signal to Noise Ration(SNR) is measured during idle periods and reported * as a distribution across multiple bins */ @@ -18335,7 +18339,7 @@ typedef struct { * mlo_ieee_link_id_valid bit set. */ A_UINT32 ieee_link_id; - A_UINT32 mlo_vdev_id; + A_UINT32 mlo_vdev_id; /* deprecated */ } wmi_vdev_start_mlo_params; /* this TLV structure used for passing mlo parameters on vdev stop */ @@ -19181,6 +19185,13 @@ typedef struct { A_UINT32 vdev_op_ul_nss; /* vdev operating uplink nss. 1 ~ n: 1ss ~ nss */ A_UINT32 vdev_op_dl_nss; /* vdev operating downlink nss. 1 ~ n: 1ss ~ nss */ A_UINT32 uhr_ops; /* refer to WMI_UHR_OPS_XXX macros */ + /* + * VDEV ID that will be assigned for both legacy and MLD VAPs. + * This will be configured to rx_meta_data in the AST entry. + * This information will then be used by host to achieve intra-bss + * forwarding for the Rx packets. + */ + A_UINT32 global_vdev_id; /* The TLVs follows this structure: * wmi_channel chan; <-- WMI channel @@ -23727,15 +23738,15 @@ typedef struct { * FW will update the Noise Floor in dBr and send it to host * if this field is set then host will display NF value in dBr */ - A_UINT32 nf_db_is_valid; + A_UINT32 nf_dbr_is_valid; /** * Noise Floor (NF) value in dBr. If the NF is not converged then * NF value is returned as 0 to host. Theoretical minimum NF value * is -101 dB for 20 MHz bandwidth and the max value can be 0. * PHY reports 0 incase of very high NF values. - * This field should be ignored unless the nf_db_is_valid flag is set. + * This field should be ignored unless the nf_dbr_is_valid flag is set. */ - A_UINT32 noise_floor_in_db; + A_UINT32 noise_floor_in_dbr; /** * Following this structure is the optional TLV: diff --git a/fw/wmi_version.h b/fw/wmi_version.h index b5767ce360dd..8d65648274f2 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_ 1733 +#define __WMI_REVISION_ 1734 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work