From 619a8993ed87d1cd4180057a290214ce17e871c5 Mon Sep 17 00:00:00 2001 From: spuligil Date: Sat, 28 Dec 2024 06:01:35 -0800 Subject: [PATCH 01/19] fw-api: CL 28338484 - update fw common interface files Change-Id: I89f748116fc4a8557a6bb19a87744c8d3f36f4ff CRs-Fixed: 3830439 --- fw/wmi_unified.h | 22 ++++++++++++++++++---- fw/wmi_version.h | 2 +- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 4d231e1a5fdd..a6ce67bac0a3 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -41740,6 +41740,8 @@ typedef struct { #define WMI_ROAM_NEIGHBOR_REPORT_INFO_NUM_OF_NRIE_SET(detail,val) WMI_SET_BITS(detail, 16, 8, val) #define WMI_ROAM_NEIGHBOR_REPORT_INFO_MLO_BAND_INFO_GET(detail) WMI_GET_BITS(detail, 24, 3) #define WMI_ROAM_NEIGHBOR_REPORT_INFO_MLO_BAND_INFO_SET(detail,val) WMI_SET_BITS(detail, 24, 3, val) +#define WMI_ROAM_NEIGHBOR_REPORT_INFO_TX_STATUS_INFO_GET(detail) WMI_GET_BITS(detail, 27, 4) +#define WMI_ROAM_NEIGHBOR_REPORT_INFO_TX_STATUS_INFO_SET(detail,val) WMI_SET_BITS(detail, 27, 4, val) typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_neighbor_report_info_tlv_param */ @@ -41774,7 +41776,9 @@ typedef struct { * wmi_mlo_band_info enum constants * Refer to WMI_ROAM_NEIGHBOR_REPORT_INFO_MLO_BAND_INFO_GET,SET * macros. - * [31:27] : reserved + * [30:27] : neighbor report request TX STATUS, possible values listed in + * WMI_ROAM_FRAME_INFO_FRAME_TYPE_EXT_STATUS + * [31] : reserved * Refer to the above WMI_ROAM_NEIGHBOR_REPORT_INFO_*_GET,_SET macros for * reading and writing these bitfields. */ @@ -41926,9 +41930,19 @@ typedef enum { } WMI_ROAM_FRAME_INFO_FRAME_TYPE_EXT_SUBTYPE; typedef enum { - WMI_ROAM_FRAME_INFO_FRAME_TYPE_EXT_STATUS_ACK = 0, - WMI_ROAM_FRAME_INFO_FRAME_TYPE_EXT_STATUS_NO_ACK, - WMI_ROAM_FRAME_INFO_FRAME_TYPE_EXT_STATUS_TX_FAIL, + WMI_ROAM_FRAME_INFO_FRAME_TYPE_EXT_STATUS_ACK = 0, + WMI_ROAM_FRAME_INFO_FRAME_TYPE_EXT_STATUS_NO_ACK = 1, + WMI_ROAM_FRAME_INFO_FRAME_TYPE_EXT_STATUS_TX_FAIL = 2, + WMI_ROAM_FRAME_INFO_FRAME_TYPE_EXT_STATUS_TX_DROP = + WMI_ROAM_FRAME_INFO_FRAME_TYPE_EXT_STATUS_TX_FAIL, + WMI_ROAM_FRAME_INFO_FRAME_TYPE_EXT_STATUS_TX_FILTERED = 3, + WMI_ROAM_FRAME_INFO_FRAME_TYPE_EXT_STATUS_TXOP_ABORT = 4, + WMI_ROAM_FRAME_INFO_FRAME_TYPE_EXT_STATUS_TX_TID_DEL = 5, + WMI_ROAM_FRAME_INFO_FRAME_TYPE_EXT_STATUS_TX_SW_ABORT = 6, + WMI_ROAM_FRAME_INFO_FRAME_TYPE_EXT_STATUS_TX_MIG_DROP = 7, + WMI_ROAM_FRAME_INFO_FRAME_TYPE_EXT_STATUS_TX_MLO_TID_MIG = 8, + + /* max allowed value is 15, due to this enum's use in a 4-bit bitfield */ } WMI_ROAM_FRAME_INFO_FRAME_TYPE_EXT_STATUS; typedef struct { diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 37f5972c4b92..393316ceff45 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_ 1564 +#define __WMI_REVISION_ 1565 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 95c0c0878056399cd94faa985f6e7a79136646fa Mon Sep 17 00:00:00 2001 From: spuligil Date: Sat, 28 Dec 2024 06:02:59 -0800 Subject: [PATCH 02/19] fw-api: CL 28339144 - update fw common interface files Change-Id: Ib73c9599a02910ae54b8ba02d6952dac5d8b7c87 CRs-Fixed: 3830439 --- fw/wmi_tlv_defs.h | 4 +++- fw/wmi_unified.h | 17 +++++++++++++++++ fw/wmi_version.h | 2 +- 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index ece35c747408..f71d7221f215 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1475,6 +1475,7 @@ typedef enum { 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_STRUC_wmi_stats_ext_event_vdev_ext2_t, } WMITLV_TAG_ID; /* * IMPORTANT: Please add _ALL_ WMI Commands Here. @@ -6731,7 +6732,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PEER_ESTIMATED_LINKSPEED_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_stats_ext_event_fixed_param, wmi_stats_ext_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, data, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_partner_link_stats, partner_link_stats, WMITLV_SIZE_VAR) \ - WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, partner_link_data, WMITLV_SIZE_VAR) + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, partner_link_data, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_stats_ext_event_vdev_ext2_t, stats_ext2_data, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_STATS_EXT_EVENTID); #define WMITLV_TABLE_WMI_OFFLOAD_PROB_RESP_TX_STATUS_EVENTID(id,op,buf,len) \ diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index a6ce67bac0a3..e384b4fa619b 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -30265,6 +30265,7 @@ typedef struct { #define WMI_EXT_STATS_VDEV_EXT_MAX_MCS_COUNTERS 32 #define WMI_EXT_STATS_VDEV_EXT_MAX_OPAQUE_DBG_WORDS32 1 +#define WMI_STATS_EXT_EVENT_VDEV_EXT_NSS_COUNTERS_MAX 4 typedef enum wmi_stats_ext_event_vdev_ext_bw_counters { WMI_STATS_EXT_EVENT_VDEV_EXT_BW_COUNTERS_20MHz = 0, @@ -30328,6 +30329,22 @@ typedef struct wmi_stats_ext_event_vdev_ext { A_UINT32 opaque_dbg[WMI_EXT_STATS_VDEV_EXT_MAX_OPAQUE_DBG_WORDS32]; } wmi_stats_ext_event_vdev_ext_t; +typedef struct { + A_UINT32 tlv_header; /* tag = WMITLV_TAG_STRUC_wmi_stats_ext_event_vdev_ext2_t */ + /* Set of TX BW counters */ + A_UINT32 tx_mcs_mpdu[WMI_EXT_STATS_VDEV_EXT_MAX_MCS_COUNTERS]; + /* Set of TX BW counters */ + A_UINT32 tx_bw_mpdu[WMI_STATS_EXT_EVENT_VDEV_EXT_BW_COUNTERS_MAX]; + /* Set of TX NSS counters */ + A_UINT32 tx_nss_mpdu[WMI_STATS_EXT_EVENT_VDEV_EXT_NSS_COUNTERS_MAX]; + /* Set of RX BW counters */ + A_UINT32 rx_mcs_mpdu[WMI_EXT_STATS_VDEV_EXT_MAX_MCS_COUNTERS]; + /* Set of RX BW counters */ + A_UINT32 rx_bw_mpdu[WMI_STATS_EXT_EVENT_VDEV_EXT_BW_COUNTERS_MAX]; + /* Set of RX NSS counters */ + A_UINT32 rx_nss_mpdu[WMI_STATS_EXT_EVENT_VDEV_EXT_NSS_COUNTERS_MAX]; +} wmi_stats_ext_event_vdev_ext2_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 393316ceff45..b560b8515db8 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_ 1565 +#define __WMI_REVISION_ 1566 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From b285c87bedcc09e399c0926f4d25ba759423b499 Mon Sep 17 00:00:00 2001 From: spuligil Date: Tue, 31 Dec 2024 06:01:23 -0800 Subject: [PATCH 03/19] fw-api: CL 28343275 - update fw common interface files Change-Id: I31c5d4e0ad2e779dcac0780830525890008d0522 CRs-Fixed: 3830439 --- fw/wmi_unified.h | 9 ++++++++- fw/wmi_version.h | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index e384b4fa619b..e62c41e9abdd 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -17068,7 +17068,8 @@ typedef struct { mlo_link_del_cancel:1, /* rollback of previous dynamic link deletion */ start_as_active:1, /* indicate link should be started in active status */ mlo_ieee_link_id_valid:1, /* indicate if the ieee_link_id in wmi_vdev_start_mlo_params is valid */ - unused: 13; + mlo_ieee_link_id_valid_partner:1, /* indicate if the ieee_link_id in wmi_partner_link_params is valid */ + unused: 12; }; A_UINT32 mlo_flags; }; @@ -17086,6 +17087,12 @@ typedef struct { A_UINT32 hw_link_id; /** hw_link_id: Unique link id across SOCs, got as part of QMI handshake */ wmi_mac_addr vdev_macaddr; /** VDEV MAC address */ wmi_mlo_flags mlo_flags; + /** ieee_link_id: + * Link ID for partner link. + * This field must be ignored unless the mlo_ieee_link_id_valid_partner + * flag is set in mlo_flags. + */ + A_UINT32 ieee_link_id; } wmi_partner_link_params; /* this TLV structure used for pass mlo parameters on vdev create*/ diff --git a/fw/wmi_version.h b/fw/wmi_version.h index b560b8515db8..eb7b36e88938 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_ 1566 +#define __WMI_REVISION_ 1567 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From d6cea55b254ce1d500d7c44b569825b5af2ec6fe Mon Sep 17 00:00:00 2001 From: spuligil Date: Fri, 3 Jan 2025 06:01:43 -0800 Subject: [PATCH 04/19] fw-api: CL 28354118 - update fw common interface files Change-Id: I8e02cd6b56ce99feb275cd8ce82a5b976108729f CRs-Fixed: 3830439 --- fw/wmi_unified.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index e62c41e9abdd..2cc50cceb1b5 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -1,6 +1,6 @@ /* * Copyright (c) 2010-2021 The Linux Foundation. All rights reserved. - * Copyright (c) 2021-2024 Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) 2021-2025 Qualcomm Innovation Center, Inc. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * @@ -17038,6 +17038,8 @@ typedef struct { #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) +#define WMI_MLO_FLAGS_GET_IEEE_LINK_ID_VALID_PARTNER(mlo_flags) WMI_GET_BITS(mlo_flags, 19, 1) +#define WMI_MLO_FLAGS_SET_IEEE_LINK_ID_VALID_PARTNER(mlo_flags, value) WMI_SET_BITS(mlo_flags, 19, 1, value) /* this structure used for passing MLO flags */ typedef struct { From 5505ba5dcb13759c0b6911696eb0cde6ddb9ac4e Mon Sep 17 00:00:00 2001 From: spuligil Date: Tue, 14 Jan 2025 06:03:33 -0800 Subject: [PATCH 05/19] fw-api: CL 28373275 - update fw common interface files Change-Id: I85cf81d7802f7c444291915ef402121302b06fec CRs-Fixed: 3830439 --- fw/wmi_unified.h | 2 ++ fw/wmi_version.h | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 2cc50cceb1b5..86e90f30fd99 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -47694,6 +47694,8 @@ typedef struct { A_UINT32 mode; /* max num of user to decode */ A_UINT32 max_num_user; + /* UL MU sniffer enable */ + A_UINT32 ul_snif_enable; /** * TLV (tag length value) parameters follow setting MU sniffer command * structure. The TLV's are: diff --git a/fw/wmi_version.h b/fw/wmi_version.h index eb7b36e88938..90fddcf65884 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_ 1567 +#define __WMI_REVISION_ 1568 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 5ffed857e8e7eef849de60e49e9775e837d9df07 Mon Sep 17 00:00:00 2001 From: spuligil Date: Tue, 14 Jan 2025 06:06:17 -0800 Subject: [PATCH 06/19] fw-api: CL 28388903 - update fw common interface files Change-Id: I12fe4e4fcc7c7f9a10613458be245b3b1def2f6e CRs-Fixed: 3830439 --- fw/wmi_unified.h | 20 +++++++++++--------- fw/wmi_version.h | 2 +- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 86e90f30fd99..33c6542a2e7e 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -49653,15 +49653,17 @@ 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 -#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 */ +#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 +#define WMI_PEER_ACTIVE_TRAFFIC_TYPE_APERIODIC_BURST_TRAFFIC_1_M 0x00100000 +#define WMI_PEER_ACTIVE_TRAFFIC_TYPE_APERIODIC_BURST_TRAFFIC_1_S 20 +/* bits 21-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 90fddcf65884..da3b00300b4c 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_ 1568 +#define __WMI_REVISION_ 1569 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 364ba901fa9e5b9865601618f3d9c9d0bdace283 Mon Sep 17 00:00:00 2001 From: spuligil Date: Tue, 14 Jan 2025 06:04:55 -0800 Subject: [PATCH 07/19] fw-api: CL 28373291 - update fw common interface files Change-Id: Iffb3535c6da7656dd06804cdae0fecf23cd2c508 CRs-Fixed: 3830439 --- fw/htt.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fw/htt.h b/fw/htt.h index ba5b42d6e3e6..3f4182029fc6 100644 --- a/fw/htt.h +++ b/fw/htt.h @@ -1,6 +1,6 @@ /* * Copyright (c) 2011-2021 The Linux Foundation. All rights reserved. - * Copyright (c) 2021-2024 Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) 2021-2025 Qualcomm Innovation Center, Inc. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * @@ -15328,7 +15328,7 @@ typedef enum { } while (0) #define HTT_RX_ADDBA_EXTN_WIN_SIZE_GET(word) \ - (((word) & HTT_RX_ADDBA_WIN_SIZE_M) >> HTT_RX_ADDBA_WIN_SIZE_S) + (((word) & HTT_RX_ADDBA_EXTN_WIN_SIZE_M) >> HTT_RX_ADDBA_EXTN_WIN_SIZE_S) #define HTT_RX_ADDBA_EXTN_BYTES 8 From 7d60cb1b3c087ab023d5864815deaaa3f46678b5 Mon Sep 17 00:00:00 2001 From: spuligil Date: Tue, 14 Jan 2025 06:01:44 -0800 Subject: [PATCH 08/19] fw-api: CL 28361807 - update fw common interface files Change-Id: I54b02474ec45ddcc21b31e0fb530439f413db4eb CRs-Fixed: 3830439 --- fw/wlan_module_ids.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/fw/wlan_module_ids.h b/fw/wlan_module_ids.h index d1abb8186655..0ba84fea8be3 100644 --- a/fw/wlan_module_ids.h +++ b/fw/wlan_module_ids.h @@ -1,6 +1,6 @@ /* * Copyright (c) 2011-2021 The Linux Foundation. All rights reserved. - * Copyright (c) 2021-2024 Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) 2021-2025 Qualcomm Innovation Center, Inc. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * @@ -191,8 +191,10 @@ typedef enum { WLAN_MODULE_PHYLIB_RRI, /* 0x94 */ WLAN_MODULE_PHYLIB_SSCAN, /* 0x95 */ WLAN_MODULE_PHYLIB_RSVD, /* 0x96 */ + WLAN_MODULE_USD, /* 0x97 */ WLAN_MODULE_C2C, /* 0x98 */ + WLAN_MODULE_VBSS, /* 0x99 */ WLAN_MODULE_ID_MAX, From 0f92eef2ebca7bdebc1f56124b2dd524c5382d04 Mon Sep 17 00:00:00 2001 From: spuligil Date: Thu, 16 Jan 2025 06:01:32 -0800 Subject: [PATCH 09/19] fw-api: CL 28429679 - update fw common interface files Change-Id: I2f71c26784746aa8f5107c8c0d63929d9eda37d7 CRs-Fixed: 3830439 --- fw/wmi_services.h | 3 ++- fw/wmi_tlv_defs.h | 7 ++++++- fw/wmi_unified.h | 3 +++ fw/wmi_version.h | 4 ++-- 4 files changed, 13 insertions(+), 4 deletions(-) diff --git a/fw/wmi_services.h b/fw/wmi_services.h index fda83ef79812..b82c7bd1fc45 100644 --- a/fw/wmi_services.h +++ b/fw/wmi_services.h @@ -1,6 +1,6 @@ /* * Copyright (c) 2011-2021 The Linux Foundation. All rights reserved. - * Copyright (c) 2021-2024 Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) 2021-2025 Qualcomm Innovation Center, Inc. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * @@ -694,6 +694,7 @@ typedef enum { 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_SERVICE_OPT_DP_DIAG_SUPPORT = 438, /* FW supports diag QDATA feature */ WMI_MAX_EXT2_SERVICE diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index f71d7221f215..96f7d8385f12 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1,6 +1,6 @@ /* * Copyright (c) 2010-2021 The Linux Foundation. All rights reserved. - * Copyright (c) 2021-2024 Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) 2021-2025 Qualcomm Innovation Center, Inc. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * @@ -2371,6 +2371,7 @@ typedef enum { OP(WMI_MLO_LINK_RECONFIG_START_INDICATION_EVENTID) \ OP(WMI_PDEV_WIFI_RADAR_CAPABILITIES_EVENTID) \ OP(WMI_VDEV_VBSS_CONFIG_EVENTID) \ + OP(WMI_OPT_DP_DIAG_EVENTID) \ /* add new EVT_LIST elements above this line */ @@ -6246,6 +6247,10 @@ WMITLV_CREATE_PARAM_STRUC(WMI_READ_DATA_FROM_FLASH_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, bufp, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_DIAG_EVENTID); +#define WMITLV_TABLE_WMI_OPT_DP_DIAG_EVENTID(id,op,buf,len)\ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, bufp, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_OPT_DP_DIAG_EVENTID); + /* IGTK Offload Event */ #define WMITLV_TABLE_WMI_GTK_OFFLOAD_STATUS_EVENTID(id,op,buf,len)\ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_WMI_GTK_OFFLOAD_STATUS_EVENT_fixed_param, WMI_GTK_OFFLOAD_STATUS_EVENT_fixed_param, fixed_param, WMITLV_SIZE_FIX) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 33c6542a2e7e..d10608810623 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -2407,6 +2407,9 @@ typedef enum { /* WMI event to send scan cached results */ WMI_SCAN_CACHE_RESULT_EVENTID, + /** WMI event for FW diagnostic data sent to host */ + WMI_OPT_DP_DIAG_EVENTID, + /* GPIO Event */ WMI_GPIO_INPUT_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_GPIO), diff --git a/fw/wmi_version.h b/fw/wmi_version.h index da3b00300b4c..fcb6265af056 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -1,6 +1,6 @@ /* * Copyright (c) 2012-2021 The Linux Foundation. All rights reserved. - * Copyright (c) 2021-2024 Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) 2021-2025 Qualcomm Innovation Center, Inc. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * @@ -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_ 1569 +#define __WMI_REVISION_ 1570 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 185fa1292901cdfd279c40b4b721175db7a11ede Mon Sep 17 00:00:00 2001 From: spuligil Date: Sat, 18 Jan 2025 06:01:30 -0800 Subject: [PATCH 10/19] fw-api: CL 28444600 - update fw common interface files Change-Id: Ib916adc77018b385239ac1ca528eca485544f7e9 CRs-Fixed: 3830439 --- fw/wlan_module_ids.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fw/wlan_module_ids.h b/fw/wlan_module_ids.h index 0ba84fea8be3..981bbaef3451 100644 --- a/fw/wlan_module_ids.h +++ b/fw/wlan_module_ids.h @@ -195,7 +195,7 @@ typedef enum { WLAN_MODULE_USD, /* 0x97 */ WLAN_MODULE_C2C, /* 0x98 */ WLAN_MODULE_VBSS, /* 0x99 */ - + WLAN_MODULE_OPT_DATA, /* 0x9a */ WLAN_MODULE_ID_MAX, WLAN_MODULE_ID_INVALID = WLAN_MODULE_ID_MAX, From 02da7c14f258a88cb952526ed7f9393873eaa2e5 Mon Sep 17 00:00:00 2001 From: spuligil Date: Mon, 20 Jan 2025 06:01:33 -0800 Subject: [PATCH 11/19] fw-api: CL 28447311 - update fw common interface files Change-Id: Iff95b330cfcde7872fe8fc31817baa3fd218a078 CRs-Fixed: 3830439 --- fw/wmi_unified.h | 6 ++++++ fw/wmi_version.h | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index d10608810623..ad2badd010cd 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -5470,6 +5470,12 @@ typedef struct { #define WMI_RSRC_CFG_HOST_SERVICE_FLAG_OPT_DP_CTRL_REPLENISH_REFILL_RX_BUFFER_SUPPORT_SET(host_service_flags, val) \ WMI_SET_BITS(host_service_flags, 17, 1, val) +/* This bit is used to inform FW VBSS is enabled */ +#define WMI_RSRC_CFG_HOST_SERVICE_FLAG_VBSS_ENABLED_GET(host_service_flags) \ + WMI_GET_BITS(host_service_flags, 18, 1) +#define WMI_RSRC_CFG_HOST_SERVICE_FLAG_VBSS_ENABLED_SET(host_service_flags, val) \ + WMI_SET_BITS(host_service_flags, 18, 1, val) + #define WMI_RSRC_CFG_CARRIER_CFG_CHARTER_ENABLE_GET(carrier_config) \ WMI_GET_BITS(carrier_config, 0, 1) #define WMI_RSRC_CFG_CARRIER_CFG_CHARTER_ENABLE_SET(carrier_config, val) \ diff --git a/fw/wmi_version.h b/fw/wmi_version.h index fcb6265af056..796f76d3dd21 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_ 1570 +#define __WMI_REVISION_ 1571 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From f0a7890d5ab7165ee8469cbcba13e2d9f96c8769 Mon Sep 17 00:00:00 2001 From: spuligil Date: Sat, 25 Jan 2025 06:01:35 -0800 Subject: [PATCH 12/19] fw-api: CL 28481760 - update fw common interface files Change-Id: I51bc0a64b92bdce8fd14b9df8f7012dc487d8fd4 CRs-Fixed: 3830439 --- fw/htt.h | 155 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 154 insertions(+), 1 deletion(-) diff --git a/fw/htt.h b/fw/htt.h index 3f4182029fc6..3b0c0b8ef951 100644 --- a/fw/htt.h +++ b/fw/htt.h @@ -265,9 +265,10 @@ * 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. + * 3.138 Add T2H MLO_LATENCY_REQ, H2T _RESP msg defs. */ #define HTT_CURRENT_VERSION_MAJOR 3 -#define HTT_CURRENT_VERSION_MINOR 137 +#define HTT_CURRENT_VERSION_MINOR 138 #define HTT_NUM_TX_FRAG_DESC 1024 @@ -913,6 +914,7 @@ enum htt_h2t_msg_type { HTT_H2T_MSG_TYPE_TX_LATENCY_STATS_CFG = 0x25, HTT_H2T_MSG_TYPE_TX_LCE_SUPER_RULE_SETUP = 0x26, HTT_H2T_MSG_TYPE_SDWF_MSDUQ_RECFG_REQ = 0x27, + HTT_H2T_MSG_TYPE_MLO_LATENCY_STATS_RESP = 0x28, /* keep this last */ HTT_H2T_NUM_MSGS @@ -11495,6 +11497,89 @@ PREPACK struct htt_h2t_sdwf_msduq_recfg_req { ((_var) |= ((_val) << HTT_H2T_SDWF_MSDUQ_RECFG_REQUEST_COOKIE_S)); \ } while (0) +/** + * @brief host -> target report MLO latency stats to FW periodically + * + * MSG_TYPE => HTT_H2T_MSG_TYPE_MLO_LATENCY_STATS_RESP + * + * @details + * + * |31 24|23 16|15 8|7 0| + * |----------------+----------------+----------------+----------------| + * | avg latency ms | vdev id | msg type | + * |----------------+----------------+----------------+----------------| + * | num of tx MSDUs | avg latency jitter ms | + * |-------------------------------------------------------------------| + * + * @details + * struct htt_h2t_mlo_latency_stats: + * + * The message is interpreted as follows: + * dword0 - b'7:0 - msg_type: Identifies mlo latency stats to fw + * This will be set to 0x28 + * (HTT_H2T_MSG_TYPE_MLO_LATENCY_STATS_RESP) + * b'15:8 - vdev id : Indicate which vdev in the pdev is chosen + * as primary + * b'31:16 - avg latency ms: Indicate average MLO latency in a period + * dword1 - b'15:0 - min jitter ms: Indicate avg jitter of MLO latency in a + * period + * b'31:16 - num of tx packet : Indicate how many MSDUs are sent in a + * period + */ + +/* HTT_H2T_MSG_TYPE_MLO_LATENCY_STATS_RESP */ +PREPACK struct htt_h2t_mlo_latency_stats { + A_UINT32 msg_type: 8, /* bits 7:0 */ + vdev_id: 8, /* bits 15:8 */ + avg_latency_ms: 16; /* bits 31:16 */ + A_UINT32 avg_jitter_ms: 16, /* bits 15:0 */ + num_of_tx_pkt: 16; /* bits 31:16 */ +} POSTPACK; + +#define HTT_H2T_MSG_TYPE_MLO_LATENCY_STATS_VDEV_ID_M 0x0000FF00 +#define HTT_H2T_MSG_TYPE_MLO_LATENCY_STATS_VDEV_ID_S 8 +#define HTT_H2T_MSG_TYPE_MLO_LATENCY_STATS_VDEV_ID_GET(_var) \ + (((_var) & HTT_H2T_MSG_TYPE_MLO_LATENCY_STATS_VDEV_ID_M) >> \ + HTT_H2T_MSG_TYPE_MLO_LATENCY_STATS_VDEV_ID_S) +#define HTT_H2T_MSG_TYPE_MLO_LATENCY_STATS_VDEV_ID_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_H2T_MSG_TYPE_MLO_LATENCY_STATS_VDEV_ID, _val); \ + ((_var) |= ((_val) << HTT_H2T_MSG_TYPE_MLO_LATENCY_STATS_VDEV_ID_S)); \ + } while (0) + +#define HTT_H2T_MSG_TYPE_MLO_LATENCY_STATS_AVG_LATENCY_MS_M 0xFFFF0000 +#define HTT_H2T_MSG_TYPE_MLO_LATENCY_STATS_AVG_LATENCY_MS_S 16 +#define HTT_H2T_MSG_TYPE_MLO_LATENCY_STATS_AVG_LATENCY_MS_GET(_var) \ + (((_var) & HTT_H2T_MSG_TYPE_MLO_LATENCY_STATS_AVG_LATENCY_MS_M) >> \ + HTT_H2T_MSG_TYPE_MLO_LATENCY_STATS_AVG_LATENCY_MS_S) +#define HTT_H2T_MSG_TYPE_MLO_LATENCY_STATS_AVG_LATENCY_MS_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_H2T_MSG_TYPE_MLO_LATENCY_STATS_AVG_LATENCY_MS, _val); \ + ((_var) |= ((_val) << HTT_H2T_MSG_TYPE_MLO_LATENCY_STATS_AVG_LATENCY_MS_S)); \ + } while (0) + +#define HTT_H2T_MSG_TYPE_MLO_LATENCY_STATS_AVG_JITTER_MS_M 0x0000FFFF +#define HTT_H2T_MSG_TYPE_MLO_LATENCY_STATS_AVG_JITTER_MS_S 0 +#define HTT_H2T_MSG_TYPE_MLO_LATENCY_STATS_AVG_JITTER_MS_GET(_var) \ + (((_var) & HTT_H2T_MSG_TYPE_MLO_LATENCY_STATS_AVG_JITTER_MS_M) >> \ + HTT_H2T_MSG_TYPE_MLO_LATENCY_STATS_AVG_JITTER_MS_S) +#define HTT_H2T_MSG_TYPE_MLO_LATENCY_STATS_AVG_JITTER_MS_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_H2T_MSG_TYPE_MLO_LATENCY_STATS_AVG_JITTER_MS, _val); \ + ((_var) |= ((_val) << HTT_H2T_MSG_TYPE_MLO_LATENCY_STATS_AVG_JITTER_MS_S)); \ + } while (0) + +#define HTT_H2T_MSG_TYPE_MLO_LATENCY_STATS_NUM_OF_TX_PKT_M 0xFFFF0000 +#define HTT_H2T_MSG_TYPE_MLO_LATENCY_STATS_NUM_OF_TX_PKT_S 16 +#define HTT_H2T_MSG_TYPE_MLO_LATENCY_STATS_NUM_OF_TX_PKT_GET(_var) \ + (((_var) & HTT_H2T_MSG_TYPE_MLO_LATENCY_STATS_NUM_OF_TX_PKT_M) >> \ + HTT_H2T_MSG_TYPE_MLO_LATENCY_STATS_NUM_OF_TX_PKT_S) +#define HTT_H2T_MSG_TYPE_MLO_LATENCY_STATS_NUM_OF_TX_PKT_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_H2T_MSG_TYPE_MLO_LATENCY_STATS_NUM_OF_TX_PKT, _val); \ + ((_var) |= ((_val) << HTT_H2T_MSG_TYPE_MLO_LATENCY_STATS_NUM_OF_TX_PKT_S)); \ + } while (0) + /*=== target -> host messages ===============================================*/ @@ -11569,6 +11654,7 @@ enum htt_t2h_msg_type { HTT_T2H_MSG_TYPE_TX_LATENCY_STATS_PERIODIC_IND = 0x3a, HTT_T2H_MSG_TYPE_TX_LCE_SUPER_RULE_SETUP_DONE = 0x3b, HTT_T2H_MSG_TYPE_SDWF_MSDUQ_CFG_IND = 0x3c, + HTT_T2H_MSG_TYPE_MLO_LATENCY_REQ = 0x3d, HTT_T2H_MSG_TYPE_TEST, @@ -23290,6 +23376,73 @@ PREPACK struct htt_t2h_sdwf_msduq_cfg_ind { ((_var) |= ((_val) << HTT_T2H_MSG_TYPE_SDWF_MSDUQ_CFG_IND_REQUEST_COOKIE_S)); \ } while (0) +/** + * @brief target -> host request for MLO latency stats + * + * MSG_TYPE => HTT_T2H_MSG_TYPE_MLO_LATENCY_REQ + * + * @details + * + * |31 24|23 16| 15 |14 8|7 0| + * |----------------+----------------+------+---------+----------------| + * | periodic interval |enable| vdev id | msg type | + * |-------------------------------------------------------------------| + * + * @details + * struct htt_t2h_mlo_latency_req_t: + * + * The message is interpreted as follows: + * dword0 - b'7:0 - msg_type: Identifies a request for MLO latency stats + * This will be set to 0x3d + * (HTT_T2H_MSG_TYPE_MLO_LATENCY_REQ) + * b'14:8 - vdev id : Indicate which vdev in the pdev is chosen + * as primary + * b'15 - enable: Indicate if request of MLO latency stats is + * enabled + * b'31:16 - periodic interval: Indicate the interval in ms of + * reporting MLO latency stats + */ + +/* HTT_T2H_MSG_TYPE_MLO_LATENCY_REQ */ +PREPACK struct htt_t2h_mlo_latency_req_t { + A_UINT32 msg_type: 8, /* bits 7:0 */ + vdev_id: 7, /* bits 14:8 */ + enable: 1, /* bits 15 */ + periodic_intvl: 16; /* bits 31:16 */ +} POSTPACK; + +#define HTT_T2H_MSG_TYPE_MLO_LATENCY_REQ_VDEV_ID_M 0x00007F00 +#define HTT_T2H_MSG_TYPE_MLO_LATENCY_REQ_VDEV_ID_S 8 +#define HTT_T2H_MSG_TYPE_MLO_LATENCY_REQ_VDEV_ID_GET(_var) \ + (((_var) & HTT_T2H_MSG_TYPE_MLO_LATENCY_REQ_VDEV_ID_M) >> \ + HTT_T2H_MSG_TYPE_MLO_LATENCY_REQ_VDEV_ID_S) +#define HTT_T2H_MSG_TYPE_MLO_LATENCY_REQ_VDEV_ID_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_T2H_MSG_TYPE_MLO_LATENCY_REQ_VDEV_ID, _val); \ + ((_var) |= ((_val) << HTT_T2H_MSG_TYPE_MLO_LATENCY_REQ_VDEV_ID_S)); \ + } while (0) + +#define HTT_T2H_MSG_TYPE_MLO_LATENCY_REQ_ENABLE_M 0x00008000 +#define HTT_T2H_MSG_TYPE_MLO_LATENCY_REQ_ENABLE_S 15 +#define HTT_T2H_MSG_TYPE_MLO_LATENCY_REQ_ENABLE_GET(_var) \ + (((_var) & HTT_T2H_MSG_TYPE_MLO_LATENCY_REQ_ENABLE_M) >> \ + HTT_T2H_MSG_TYPE_MLO_LATENCY_REQ_ENABLE_S) +#define HTT_T2H_MSG_TYPE_MLO_LATENCY_REQ_ENABLE_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_T2H_MSG_TYPE_MLO_LATENCY_REQ_ENABLE, _val); \ + ((_var) |= ((_val) << HTT_T2H_MSG_TYPE_MLO_LATENCY_REQ_ENABLE_S)); \ + } while (0) + +#define HTT_T2H_MSG_TYPE_MLO_LATENCY_REQ_PERIODIC_INTVL_M 0xFFFF0000 +#define HTT_T2H_MSG_TYPE_MLO_LATENCY_REQ_PERIODIC_INTVL_S 16 +#define HTT_T2H_MSG_TYPE_MLO_LATENCY_REQ_PERIODIC_INTVL_GET(_var) \ + (((_var) & HTT_T2H_MSG_TYPE_MLO_LATENCY_REQ_PERIODIC_INTVL_M) >> \ + HTT_T2H_MSG_TYPE_MLO_LATENCY_REQ_PERIODIC_INTVL_S) +#define HTT_T2H_MSG_TYPE_MLO_LATENCY_REQ_PERIODIC_INTVL_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_T2H_MSG_TYPE_MLO_LATENCY_REQ_PERIODIC_INTVL, _val); \ + ((_var) |= ((_val) << HTT_T2H_MSG_TYPE_MLO_LATENCY_REQ_PERIODIC_INTVL_S)); \ + } while (0) #endif From 4255f08ff54b31f60f8bb0b3e65f17ed3116adf2 Mon Sep 17 00:00:00 2001 From: spuligil Date: Wed, 5 Feb 2025 01:43:05 -0800 Subject: [PATCH 13/19] fw-api: CL 28524940 - update fw common interface files Change-Id: Ic3cc32f729c4e20f22126bf7fd6fedced6dd6ebe CRs-Fixed: 3830439 --- fw/htt.h | 4 ++ fw/htt_stats.h | 132 ++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 135 insertions(+), 1 deletion(-) diff --git a/fw/htt.h b/fw/htt.h index 3b0c0b8ef951..e9d34066ff72 100644 --- a/fw/htt.h +++ b/fw/htt.h @@ -840,6 +840,10 @@ typedef enum { 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_PDEV_UL_MUMIMO_GRP_STATS_TAG = 208, /* htt_stats_pdev_ulmumimo_grp_stats_tlv */ + HTT_STATS_PDEV_UL_MUMIMO_DENYLIST_STATS_TAG = 209, /* htt_stats_pdev_ulmumimo_denylist_stats_tlv */ + HTT_STATS_PDEV_UL_MUMIMO_SEQ_TERM_STATS_TAG = 210, /* htt_stats_pdev_ulmumimo_seq_term_stats_tlv */ + HTT_STATS_PDEV_UL_MUMIMO_HIST_INELIGIBILITY_TAG = 211, /* htt_stats_pdev_ulmumimo_hist_ineligibility_tlv */ HTT_STATS_MAX_TAG, } htt_stats_tlv_tag_t; diff --git a/fw/htt_stats.h b/fw/htt_stats.h index c0eccd71a494..f3dc39b8dce8 100644 --- a/fw/htt_stats.h +++ b/fw/htt_stats.h @@ -1,6 +1,6 @@ /* * Copyright (c) 2017-2021 The Linux Foundation. All rights reserved. - * Copyright (c) 2021-2024 Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) 2021-2025 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 @@ -818,6 +818,17 @@ enum htt_dbg_ext_stats_type { */ HTT_DBG_EXT_STATS_PDEV_FTM_TPCCAL = 73, + /** HTT_DBG_EXT_STATS_PDEV_UL_MUMIMO_ELIGIBLE + * PARAMS: + * - No Params + * RESP MSG: + * - htt_stats_pdev_ul_mumimo_grp_stats_tlv + * - htt_stats_pdev_ul_mumimo_denylist_stats_tlv + * - htt_stats_pdev_ul_mumimo_seq_term_stats_tlv + * - htt_stats_pdev_ul_mumimo_hist_ineligibility_tlv + */ + HTT_DBG_EXT_STATS_PDEV_UL_MUMIMO_ELIGIBLE = 74, + /* keep this last */ HTT_DBG_NUM_EXT_STATS = 256, @@ -2858,6 +2869,11 @@ typedef enum { HTT_TX_MUMIMO_GRP_INVALID_GROUP_INELIGIBLE, HTT_TX_MUMIMO_GRP_INVALID, HTT_TX_MUMIMO_GRP_INVALID_GROUP_EFF_MU_TPUT_OMBPS, + HTT_TX_MUMIMO_GRP_INVALID_GRP, + HTT_TX_MUMIMO_GRP_INVALID_TOTAL_NSS_LESS_THAN_GROUP_SIZE, + HTT_TX_MUMIMO_GRP_INSUFFICIENT_CANDIDATES_UL_MU_1SS_RATE, + HTT_TX_MUMIMO_GRP_MU_GRP_NOT_NEEDED, + HTT_TX_MUMIMO_GRP_INVALID_MAX_REASON_CODE, } htt_tx_mumimo_grp_invalid_reason_code_stats; @@ -7561,6 +7577,15 @@ typedef struct { A_UINT32 cv_corr_upload_total_num_users[HTT_TX_CV_CORR_MAX_NUM_COLUMNS]; /** number of streams present in uploaded CV Correlation results buffer */ A_UINT32 cv_corr_upload_total_num_streams[HTT_TX_CV_CORR_MAX_NUM_COLUMNS]; + + /** Total number of times lookahead sounding done for DL MU */ + A_UINT32 lookahead_sounding_dl_cnt; + /** Total number of times lookahead sounding done for DL MU based on number of users */ + A_UINT32 lookahead_snd_dl_num_users[HTT_TX_PDEV_STATS_NUM_BE_MUMIMO_USER_STATS]; + /** Total number of times lookahead sounding done for UL MU */ + A_UINT32 lookahead_sounding_ul_cnt; + /** Total number of times lookahead sounding done for UL MU based on number of users */ + A_UINT32 lookahead_snd_ul_num_users[HTT_TX_PDEV_STATS_NUM_UL_MUMIMO_USER_STATS]; } htt_stats_tx_sounding_stats_tlv; /* preserve old name alias for new name consistent with the tag name */ typedef htt_stats_tx_sounding_stats_tlv htt_tx_sounding_stats_tlv; @@ -9063,6 +9088,111 @@ typedef struct { A_INT32 phase_in_degree[HTT_STATS_PDEV_AOA_MAX_HISTOGRAM][HTT_STATS_PDEV_AOA_MAX_CHAINS]; } htt_stats_pdev_aoa_tlv; +/* STATS_TYPE: HTT_DBG_EXT_STATS_PDEV_ULMUMIMO_ELIGIBLE + * TLV_TAGS: + * HTT_STATS_PDEV_UL_MUMIMO_GRP_STATS_TAG + * HTT_STATS_PDEV_UL_MUMIMO_DENYLIST_STATS_TAG + * HTT_STATS_PDEV_UL_MUMIMO_SEQ_TERM_STATS_TAG + * HTT_STATS_PDEV_UL_MUMIMO_HIST_INELIGIBILITY_TAG + */ + +typedef enum { + HTT_STATS_CANDIDATE_MU_NOT_COMPATIBLE = 1, + HTT_STATS_CANDIDATE_SKIP_NR_INDEX, + HTT_STATS_CANDIDATE_SKIP_BASIC_CHECKS_INELIGIBLE, + HTT_STATS_CANDIDATE_SKIP_ZERO_NSS, + HTT_STATS_CANDIDATE_SKIP_MCS_THRESHOLD_LIMIT, + HTT_STATS_CANDIDATE_SKIP_POWER_IMBALANCED, + HTT_STATS_CANDIDATE_SKIP_NULL_MU_RC, + HTT_STATS_CANDIDATE_SKIP_CV_CORR_SKIP_PEER, + HTT_STATS_CANDIDATE_SKIP_SEND_BAR_SET_FOR_AC_MUMIMO, + + HTT_STATS_CANDIDATE_SKIP_REASON_MAX +} htt_stats_candidate_sched_compatible_code; + +typedef struct { + htt_tlv_hdr_t tlv_hdr; + /* Current Pdev id */ + A_UINT32 pdev_id; + /* Group eligibility count */ + A_UINT32 mu_grp_eligible[HTT_STATS_MAX_MUMIMO_GRP_SZ]; + /* Group ineligibility */ + A_UINT32 mu_grp_ineligible[HTT_STATS_MAX_MUMIMO_GRP_SZ]; + /* Group Invalid reason */ + A_UINT32 mu_grp_invalid[HTT_TX_NUM_MUMIMO_GRP_INVALID_WORDS]; + /* mu_grp_candidate_skip: + * Sched_compatibility reason codes as listed by + * htt_stats_candidate_sched_compatible code + */ + A_UINT32 mu_grp_candidate_skip + [HTT_TX_PDEV_STATS_NUM_UL_MUMIMO_USER_STATS] + [HTT_STATS_CANDIDATE_SKIP_REASON_MAX]; + /* Group eligibility count for 1SS grouping */ + A_UINT32 mu_grp_eligible_1ss[HTT_STATS_MAX_MUMIMO_GRP_SZ]; + /* Group ineligibility fpr 1SS grouping */ + A_UINT32 mu_grp_ineligible_1ss[HTT_STATS_MAX_MUMIMO_GRP_SZ]; + /* Group Invalid reason for 1SS grouping */ + A_UINT32 mu_grp_invalid_1ss[HTT_TX_NUM_MUMIMO_GRP_INVALID_WORDS]; + /* Sched_compatibility reason code for 1SS grouping */ + A_UINT32 mu_grp_candidate_skip_1ss + [HTT_TX_PDEV_STATS_NUM_UL_MUMIMO_USER_STATS] + [HTT_STATS_CANDIDATE_SKIP_REASON_MAX]; +} htt_stats_pdev_ulmumimo_grp_stats_tlv; + +typedef struct { + htt_tlv_hdr_t tlv_hdr; + + /* Num of times peer denylisted for MU-MIMO transmission */ + A_UINT32 num_peer_denylist_cnt; + /* Num of times peer denylisted due to trigger bitmap failure */ + A_UINT32 trig_bitmap_fail_cnt; + /* Num of times peer denylisted due to trigger consecutive failure */ + A_UINT32 trig_consecutive_fail_cnt; +} htt_stats_pdev_ulmumimo_denylist_stats_tlv; + +#define HTT_STATS_SEQ_EFFICIENCY_HISTOGRAM 10 +typedef struct { + htt_tlv_hdr_t tlv_hdr; + + /* Num of times seq terminated for MU-MIMO transmission */ + A_UINT32 num_terminate_seq; + /* Num of sequences terminated due to low qdepth */ + A_UINT32 num_terminate_low_qdepth; + /* Number of sequences terminated due to sequence inefficient */ + A_UINT32 num_terminate_seq_inefficient; + /* Histogram of sequence inefficiency */ + A_UINT32 hist_seq_efficiency[HTT_STATS_SEQ_EFFICIENCY_HISTOGRAM]; +} htt_stats_pdev_ulmumimo_seq_term_stats_tlv; + +#define HTT_STATS_MAX_ULMUMIMO_TRIGGERS 6 +#define HTT_STATS_TXOP_HISTOGRAM_BINS 24 +#define HTT_STATS_ULMUMIMO_DUR_INTERVAL_US 500 +#define HTT_STATS_ULMUMIMO_MIN_PPDU_DUR_US 1000 +#define HTT_STATS_MAX_PPDU_DURATION_BINS 10 +typedef struct { + htt_tlv_hdr_t tlv_hdr; + + /* Number of ULMUMIMO triggers */ + A_UINT32 num_triggers[HTT_STATS_MAX_ULMUMIMO_TRIGGERS]; + /* Txop duration history from 0 to 12 ms with interval of 500us */ + A_UINT32 txop_history [HTT_STATS_TXOP_HISTOGRAM_BINS]; + /* ppdu_duration_hist: + * PPDU Duration History (histogram) + * Num PPDUs from 1 to 6 + * 0 to 6 ms with interval of 500us + */ + A_UINT32 ppdu_duration_hist + [HTT_STATS_MAX_ULMUMIMO_TRIGGERS][HTT_STATS_MAX_PPDU_DURATION_BINS]; + /* Ineligible Count for ULMUMIMO based on avg qdepth and txtime criteria */ + A_UINT32 ineligible_count; + /* history_ineligibility: + * History based ineligibility counter for ULMUMIMO. + * Checks for 8 eligible instances of ULMUMIMO in the past 32 instances. + */ + A_UINT32 history_ineligibility; +} htt_stats_pdev_ulmumimo_hist_ineligibility_tlv; + + /* RTT VREG MASK */ #define HTT_STATS_RTT_CHAN_CAPTURE_MASK 0x00000001 #define HTT_STATS_RTT_HW_FAC_MASK 0x00000002 From 067af3a8927b50da26d8be8556bb1e4714b34562 Mon Sep 17 00:00:00 2001 From: spuligil Date: Thu, 6 Feb 2025 06:01:24 -0800 Subject: [PATCH 14/19] fw-api: CL 28539558 - update fw common interface files Change-Id: I599abc46aeb9618fd7497c9b9f1adcec0c60d314 CRs-Fixed: 3830439 --- fw/htt_ppdu_stats.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/fw/htt_ppdu_stats.h b/fw/htt_ppdu_stats.h index 1fd2698551cd..d1575d7c91ba 100644 --- a/fw/htt_ppdu_stats.h +++ b/fw/htt_ppdu_stats.h @@ -1,6 +1,6 @@ /* * Copyright (c) 2017-2021 The Linux Foundation. All rights reserved. - * Copyright (c) 2021-2024 Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) 2021-2025 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 @@ -922,6 +922,8 @@ typedef struct { * part of existing DL/UL data sequence */ A_UINT32 is_combined_ul_bsrp_trigger; + /* Flag to indicate if the channel chosen is 320_1 / 320_2 */ + A_UINT32 chan_type_320mhz; } htt_ppdu_stats_common_tlv; #define HTT_PPDU_STATS_USER_COMMON_TLV_TID_NUM_M 0x000000ff From af43eef0ea7ae83727cc0e92c424d80b26d5e7c2 Mon Sep 17 00:00:00 2001 From: spuligil Date: Wed, 5 Feb 2025 01:44:51 -0800 Subject: [PATCH 15/19] fw-api: CL 28532052 - update fw common interface files Change-Id: I735df6c87afdcc6989f317f2d7b0d53c08a19608 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 ad2badd010cd..f6c9050c4c98 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -21404,6 +21404,15 @@ typedef struct { #define WMI_PEER_PARAM_UL_OFDMA_RTD 0x2B +/* + * Send unsolicited probe response to a connected STA. + * 0: Send immediately and stop. + * XX: Send every XX ms continuously. + * 0xFFFFFFFF: Stop sending immediately. + */ +#define WMI_PEER_PARAM_UNSOL_PROBE_RESP_INTVL 0x2C + + typedef struct { A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_peer_set_param_cmd_fixed_param */ /** unique id identifying the VDEV, generated by the caller */ diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 796f76d3dd21..7dedd1b1a9cd 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_ 1571 +#define __WMI_REVISION_ 1572 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From b5649d57b9823cb43d5d02f6fa9899e196c41e0a Mon Sep 17 00:00:00 2001 From: spuligil Date: Wed, 5 Feb 2025 01:46:26 -0800 Subject: [PATCH 16/19] fw-api: CL 28534399 - update fw common interface files Change-Id: I8c103cafd1d1e4b2afac79190ce3058f8b51f0ca CRs-Fixed: 3830439 --- fw/wmi_tlv_defs.h | 6 ++++-- fw/wmi_unified.h | 24 ++++++++++++++++++++++++ fw/wmi_version.h | 2 +- 3 files changed, 29 insertions(+), 3 deletions(-) diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index 96f7d8385f12..e8c306dbcb7f 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -5484,7 +5484,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_MULTIPLE_PEER_GROUP_CMDID); /* RTT 11az PASN authentication status cmd */ #define WMITLV_TABLE_WMI_RTT_PASN_AUTH_STATUS_CMD(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_rtt_pasn_auth_status_cmd_fixed_param, wmi_rtt_pasn_auth_status_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ - WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_rtt_pasn_auth_status_param, pasn_auth_status_param, WMITLV_SIZE_VAR) + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_rtt_pasn_auth_status_param, pasn_auth_status_param, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, cookie, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_RTT_PASN_AUTH_STATUS_CMD); /* RTT 11az PASN deauthentication cmd */ @@ -7635,7 +7636,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_PKTLOG_DECODE_INFO_EVENTID); #define WMITLV_TABLE_WMI_RTT_PASN_PEER_CREATE_REQ_EVENTID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_rtt_pasn_peer_create_req_event_fixed_param, \ wmi_rtt_pasn_peer_create_req_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ - WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_rtt_pasn_peer_create_req_param, rtt_pasn_peer_param, WMITLV_SIZE_VAR) + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_rtt_pasn_peer_create_req_param, rtt_pasn_peer_param, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, cookie, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_RTT_PASN_PEER_CREATE_REQ_EVENTID); /* RTT 11az PASN peer delete event */ diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index f6c9050c4c98..7fda522028f9 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -22705,6 +22705,7 @@ enum { WMI_AUTH_RSNA_8021X_SHA384, WMI_AUTH_WPA3_SAE_SHA384, WMI_AUTH_FT_RSNA_SAE_SHA384, + WMI_AUTH_FT_RSNA_PSK_SHA384, }; typedef enum { @@ -47990,6 +47991,7 @@ typedef struct { #define WMI_RTT_PASN_PEER_CREATE_SECURITY_MODE_SET(flag,val) WMI_SET_BITS(flag, 0, 2, val) #define WMI_RTT_PASN_PEER_CREATE_FORCE_SELF_MAC_USE_GET(flag) WMI_GET_BITS(flag, 2, 1) #define WMI_RTT_PASN_PEER_CREATE_FORCE_SELF_MAC_USE_SET(flag,val) WMI_SET_BITS(flag, 2, 1, val) +#define WMI_MAX_PASN_PASSPHRASE_LEN 64 typedef struct { A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_rtt_pasn_peer_create_req_event_fixed_param */ @@ -47999,6 +48001,7 @@ typedef struct { * The following TLV will follow this fixed_param TLV: * * wmi_rtt_pasn_peer_create_req_param rtt_pasn_peer_param[] + * A_UINT8 cookie[] */ } wmi_rtt_pasn_peer_create_req_event_fixed_param; @@ -48016,6 +48019,18 @@ typedef struct { * and flush old cache( if it exists) for dest_mac_addr with old self_mac_addr. * Bits 31:3: Reserved */ + /* Authentication modes */ + A_UINT32 akm; + /* pairwise cipher suite selector */ + A_UINT32 cipher_suite; + /* PMKID */ + A_UINT8 pmk_id[WMI_MAX_PMKID_LEN]; + /* passphrase length */ + A_UINT32 passphrase_len; + /* passphrase */ + A_UINT8 passphrase[WMI_MAX_PASN_PASSPHRASE_LEN]; + /* comeback cookie length */ + A_UINT32 cookie_len; } wmi_rtt_pasn_peer_create_req_param; @@ -48025,6 +48040,7 @@ typedef struct { * The following TLV will follow this fixed_param TLV: * * wmi_rtt_pasn_auth_status_param pasn_auth_status_param[] + * A_UINT8 cookie[] */ } wmi_rtt_pasn_auth_status_cmd_fixed_param; @@ -48036,6 +48052,14 @@ typedef struct { A_UINT32 status; /* Source address used for doing PASN authentication */ wmi_mac_addr source_mac_addr; + /* Authentication modes */ + A_UINT32 akm; + /* pairwise cipher suite selector */ + A_UINT32 cipher_suite; + /* PASN comeback timeout */ + A_INT32 timeout_value; + /* comeback cookie length */ + A_UINT32 cookie_len; } wmi_rtt_pasn_auth_status_param; diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 7dedd1b1a9cd..f7b88daff837 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_ 1572 +#define __WMI_REVISION_ 1573 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From cfeb72f849d06253abf8538431b236cb65f98c11 Mon Sep 17 00:00:00 2001 From: spuligil Date: Thu, 6 Feb 2025 21:42:19 -0800 Subject: [PATCH 17/19] fw-api: CL 28541501 - update fw common interface files Change-Id: I639f50977f61beee705144c4f217cf7fe8eb2bf7 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 7fda522028f9..caa0250c71e8 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -5548,6 +5548,7 @@ typedef enum { WMI_VENDOR1_REQ1_VERSION_4_00 = 5, WMI_VENDOR1_REQ1_VERSION_4_10 = 6, WMI_VENDOR1_REQ1_VERSION_4_20 = 7, + WMI_VENDOR1_REQ1_VERSION_4_40 = 8, } WMI_VENDOR1_REQ1_VERSION; typedef enum { diff --git a/fw/wmi_version.h b/fw/wmi_version.h index f7b88daff837..76817640a7ee 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_ 1573 +#define __WMI_REVISION_ 1574 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 420fc2034b3b4799ab1a2114276c7c9aaa2bfd3d Mon Sep 17 00:00:00 2001 From: spuligil Date: Thu, 6 Feb 2025 21:43:54 -0800 Subject: [PATCH 18/19] fw-api: CL 28550964 - update fw common interface files Change-Id: I93e1f01a433eb5c056fcec4c6b1211c3364a08f3 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 caa0250c71e8..70eaf1826cf7 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -37771,6 +37771,9 @@ typedef enum { WMI_THERMAL_CLIENT_APPS = 1, WMI_THERMAL_CLIENT_WPSS = 2, WMI_THERMAL_CLIENT_FW = 3, + /* WMI_THERMAL_CLIENT_DDR_BWM: client is for DDR bandwidth mitigation */ + WMI_THERMAL_CLIENT_DDR_BWM = 4, + WMI_THERMAL_CLIENT_MAX } WMI_THERMAL_MITIGATION_CLIENTS; diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 76817640a7ee..145e8fcc2aa4 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_ 1574 +#define __WMI_REVISION_ 1575 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 764e789b7bdb739aaf2b710d0aac108180cd5ccb Mon Sep 17 00:00:00 2001 From: spuligil Date: Mon, 10 Feb 2025 12:01:49 -0800 Subject: [PATCH 19/19] fw-api: CL 28563606 - update fw common interface files Change-Id: I394ad0da6b3a57d04b9b6630190d938150bee4d7 CRs-Fixed: 3830439 --- fw/htt_stats.h | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/fw/htt_stats.h b/fw/htt_stats.h index f3dc39b8dce8..5a57e7f9f171 100644 --- a/fw/htt_stats.h +++ b/fw/htt_stats.h @@ -4781,6 +4781,19 @@ typedef struct { A_UINT32 g1_compl_fail; A_UINT32 g2_success; A_UINT32 g2_compl_fail; + /* enqueue */ + A_UINT32 m1_enq_success; + A_UINT32 m1_enq_fail; + A_UINT32 m2_enq_success; + A_UINT32 m2_enq_fail; + A_UINT32 m3_enq_success; + A_UINT32 m3_enq_fail; + A_UINT32 m4_enq_success; + A_UINT32 m4_enq_fail; + A_UINT32 g1_enq_success; + A_UINT32 g1_enq_fail; + A_UINT32 g2_enq_success; + A_UINT32 g2_enq_fail; } htt_stats_tx_de_eapol_packets_tlv; /* preserve old name alias for new name consistent with the tag name */ typedef htt_stats_tx_de_eapol_packets_tlv htt_tx_de_eapol_packets_stats_tlv;