From f244de36c7593eb39af2ef29346783e772cb1242 Mon Sep 17 00:00:00 2001 From: spuligil Date: Sat, 20 Jul 2024 18:01:32 -0700 Subject: [PATCH 01/76] fw-api: CL 27179058 - update fw common interface files Change-Id: Ib9a87bf61aa03c24652f8a41afe26dbf019ecc52 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 936cb5a13bd4..6e6e9219ae28 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -40704,6 +40704,11 @@ typedef enum { WMI_ROAM_TRIGGER_SUB_REASON_PERIODIC_TIMER_AFTER_INACTIVITY, WMI_ROAM_TRIGGER_SUB_REASON_PERIODIC_TIMER_AFTER_INACTIVITY_CU, WMI_ROAM_TRIGGER_SUB_REASON_INACTIVITY_TIMER_CU, + /* MLD_EXTRA_PARTIAL_SCAN: + * FW triggers extra partial scan when all ml links are not found + * during first partial scan. + */ + WMI_ROAM_TRIGGER_SUB_REASON_MLD_EXTRA_PARTIAL_SCAN, } WMI_ROAM_TRIGGER_SUB_REASON_ID; typedef enum wmi_roam_invoke_status_error { diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 656d21d73472..2c096cd6ed2f 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_ 1505 +#define __WMI_REVISION_ 1506 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 722c5c2814df929d4985daedde94ce246562b41a Mon Sep 17 00:00:00 2001 From: spuligil Date: Sat, 20 Jul 2024 18:02:53 -0700 Subject: [PATCH 02/76] fw-api: CL 27193005 - update fw common interface files Change-Id: I1bc83e1341b9ff1b2603b0c9bf1dd50068ec1d8e 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 6e6e9219ae28..70d4437d0ac3 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -25849,6 +25849,11 @@ typedef enum */ WMI_VENDOR_OUI_ACTION_FORCE_MLSR = 14, + /* + * Disable AUX learning and AUX listen if OUI matches + */ + WMI_VENDOR_OUI_ACTION_DISABLE_AUXL = 15, + /* Add any action before this line */ WMI_VENDOR_OUI_ACTION_MAX_ACTION_ID diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 2c096cd6ed2f..49c3526fec13 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_ 1506 +#define __WMI_REVISION_ 1507 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From be6329d2c60c1dc43c8f0d4e2540a18ef290c675 Mon Sep 17 00:00:00 2001 From: spuligil Date: Sat, 20 Jul 2024 18:04:18 -0700 Subject: [PATCH 03/76] fw-api: CL 27205261 - update fw common interface files Change-Id: Ibf2704bf0766ac8b9875ea4373b21936cc2769d2 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 70d4437d0ac3..7dba33d8939b 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -31534,6 +31534,8 @@ typedef struct { A_UINT32 vdev_id; /* picks values from WMI_USD_MODE_STATUS */ A_UINT32 usd_mode_status; + /* Instance ID of the service */ + A_UINT32 instance_id; } wmi_usd_service_event_fixed_param; typedef enum { diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 49c3526fec13..8f7e6b51c422 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_ 1507 +#define __WMI_REVISION_ 1508 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From e9157e2d094341c652701c05b327ae3885cb5b0a Mon Sep 17 00:00:00 2001 From: spuligil Date: Sat, 20 Jul 2024 18:05:40 -0700 Subject: [PATCH 04/76] fw-api: CL 27213127 - update fw common interface files Change-Id: Ibcebfab00140fb343642d5f8c5d75af3782ee232 CRs-Fixed: 3830439 --- fw/wmi_unified.h | 9 +++++++-- fw/wmi_version.h | 2 +- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 7dba33d8939b..98d6c4323460 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -24166,6 +24166,8 @@ typedef enum wake_reason_e { WOW_REASON_STX_WOW_HIGH_DUTY_CYCLE, /* WoW exit reason MCC lite */ WOW_REASON_MCC_LITE, + /* P2P CLI detected BMISS from DFS master AP */ + WOW_REASON_P2P_CLI_DFS_AP_BMISS_DETECTED, /* add new WOW_REASON_ defs before this line */ WOW_REASON_MAX, @@ -27496,16 +27498,19 @@ typedef struct A_UINT32 isLastResult; /*is this event a last event of the whole batch scan*/ } wmi_batch_scan_result_event_fixed_param; -typedef enum { +typedef enum { /* DEPRECATED - DO NOT USE */ /** beacons not received from P2P GO */ WMI_P2P_GO_BMISS = 0, /** beacons not received from P2 GO's STA's connected AP */ WMI_DFS_AP_BMISS = 1, -} wmi_dfs_ap_bmiss_reason; +} wmi_dfs_ap_bmiss_reason; /* DEPRECATED - DO NOT USE */ typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_p2p_cli_dfs_ap_bmiss_fixed_param*/ A_UINT32 vdev_id; + /* NOTE: + * The reason_code field is deprecated, and should be ignored. + */ A_UINT32 reason_code; /* contains a wmi_dfs_ap_bmiss_reason value */ } wmi_p2p_cli_dfs_ap_bmiss_fixed_param; diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 8f7e6b51c422..eeddf1565e15 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_ 1508 +#define __WMI_REVISION_ 1509 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From ef5af6add5d195a9acd0e97aa58e5084ae266072 Mon Sep 17 00:00:00 2001 From: spuligil Date: Thu, 25 Jul 2024 06:01:33 -0700 Subject: [PATCH 05/76] fw-api: CL 27232968 - update fw common interface files Change-Id: I400a57754dbb5d88a17a26b5a7a780ecbbcf5a52 CRs-Fixed: 3830439 --- fw/wlan_module_ids.h | 1 + 1 file changed, 1 insertion(+) diff --git a/fw/wlan_module_ids.h b/fw/wlan_module_ids.h index 4895eacf92c7..8ac928cdd2a9 100644 --- a/fw/wlan_module_ids.h +++ b/fw/wlan_module_ids.h @@ -191,6 +191,7 @@ typedef enum { WLAN_MODULE_PHYLIB_RRI, /* 0x94 */ WLAN_MODULE_PHYLIB_SSCAN, /* 0x95 */ WLAN_MODULE_PHYLIB_RSVD, /* 0x96 */ + WLAN_MODULE_USD, /* 0x97 */ WLAN_MODULE_ID_MAX, From c253c4921805b596174f255cbb904b6214e8635b Mon Sep 17 00:00:00 2001 From: spuligil Date: Fri, 2 Aug 2024 18:01:12 -0700 Subject: [PATCH 06/76] fw-api: CL 27314804 - update fw common interface files Change-Id: Ia26d8270d0a284c3ed1d5d30fd177b5116619d1e 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 758afe77a62a..7ce81176e6f1 100644 --- a/fw/wmi_services.h +++ b/fw/wmi_services.h @@ -683,6 +683,7 @@ typedef enum { */ WMI_SERVICE_IS_TARGET_IPA = 425, WMI_SERVICE_THERM_THROT_TX_CHAIN_MASK = 426, /*FW supports thermal throttling dynamic Tx ChainMask update */ + WMI_SERVICE_SPLIT_PHY_PDEV_SUSPEND_RESUME_SUPPORT = 427, /* Indicates FW support pdev suspend/resume in split-phy radio */ WMI_MAX_EXT2_SERVICE From ece2d2a7a0d311b2b8b89da6c8e3262679a0f429 Mon Sep 17 00:00:00 2001 From: spuligil Date: Wed, 7 Aug 2024 06:01:23 -0700 Subject: [PATCH 07/76] fw-api: CL 27334210 - update fw common interface files Change-Id: I435ab923ccced1b33fc45c51b9efda15f1603bb0 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 98d6c4323460..dc3cd6015cbc 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -24071,6 +24071,7 @@ typedef enum event_type_e { WOW_RTT_11AZ_EVENT, /* 32 + 13 */ WOW_P2P_NOA_EVENT, /* 32 + 14 */ WOW_XGAP_EVENT, /* 32 + 15 */ + WOW_PAGE_FAULT_EVENT, /* 32 + 16 */ } WOW_WAKE_EVENT_TYPE; typedef enum wake_reason_e { @@ -24168,6 +24169,8 @@ typedef enum wake_reason_e { WOW_REASON_MCC_LITE, /* P2P CLI detected BMISS from DFS master AP */ 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, /* add new WOW_REASON_ defs before this line */ WOW_REASON_MAX, diff --git a/fw/wmi_version.h b/fw/wmi_version.h index eeddf1565e15..e60dab44af66 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_ 1509 +#define __WMI_REVISION_ 1510 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 8442e417e564e9e50f3ce8cb515b04c59439f844 Mon Sep 17 00:00:00 2001 From: spuligil Date: Wed, 7 Aug 2024 06:03:03 -0700 Subject: [PATCH 08/76] fw-api: CL 27338232 - update fw common interface files Change-Id: I1545378f2d3814c82c9cdc975fca319d22357b05 CRs-Fixed: 3830439 --- fw/wmi_unified.h | 11 ++++++----- fw/wmi_version.h | 2 +- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index dc3cd6015cbc..cc88a5d6cc73 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -47685,6 +47685,7 @@ typedef struct { #define WMI_PDEV_SET_CUSTOM_TX_PWR_MAX_CHAIN_NUM 4 #define WMI_PDEV_SET_CUSTOM_TX_PWR_MAX_2G_RATE_NUM 18 +#define WMI_PDEV_SET_CUSTOM_TX_PWR_MAX_2G_RATE_NUM_EXT 8 #define WMI_PDEV_SET_CUSTOM_TX_PWR_MAX_5G_6G_RATE_NUM 24 @@ -47698,14 +47699,14 @@ typedef struct { */ /* currently 2GHz band has 2 chains (though space is allocated for up - * to 4 chains) and each chain has 18 rates. + * to 4 chains) and each chain has 18 rates and 8 extended rates. * bitmap_of_2GHz_band[0] -> chain 0 bitmap: - * |bit 0|bit 1|......|bit 17| - * |rate 0|rate 1|......|rate 17| + * |bit 0|bit 1|......|bit 17| bit 18 |......| bit 25 | + * |rate 0|rate 1|......|rate 17|ext rate 0|......|ext rate 7| * * bitmap_of_2GHz_band[1] -> chain 1 bitmap: - * |bit 0|bit 1|......|bit 17| - * |rate 0|rate 1|......|rate 17| + * |bit 0|bit 1|......|bit 17| bit 18 |......| bit 25 | + * |rate 0|rate 1|......|rate 17|ext rate 0|......|ext rate 7| * * bitmap_of_2GHz_band[2] -> reserved * bitmap_of_2GHz_band[3] -> reserved diff --git a/fw/wmi_version.h b/fw/wmi_version.h index e60dab44af66..393052ea022a 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_ 1510 +#define __WMI_REVISION_ 1511 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 2655e15978c6145883de17b9babb08cbb46368b5 Mon Sep 17 00:00:00 2001 From: spuligil Date: Sun, 11 Aug 2024 12:01:39 -0700 Subject: [PATCH 09/76] fw-api: CL 27360144 - update fw common interface files Change-Id: I49389ad036b484273bc49a413106dd6259d21b1e CRs-Fixed: 3830439 --- fw/htt_stats.h | 1 + 1 file changed, 1 insertion(+) diff --git a/fw/htt_stats.h b/fw/htt_stats.h index f685062a133b..a38401072609 100644 --- a/fw/htt_stats.h +++ b/fw/htt_stats.h @@ -4641,6 +4641,7 @@ typedef struct { A_UINT32 incomplete_llc; A_UINT32 eapol_duplicate_m3; A_UINT32 eapol_duplicate_m4; + A_UINT32 eapol_invalid_mac; } htt_stats_tx_de_classify_failed_tlv; /* preserve old name alias for new name consistent with the tag name */ typedef htt_stats_tx_de_classify_failed_tlv htt_tx_de_classify_failed_stats_tlv; From fccfe234c1718aa81e0f33f9b16930c7b965f04b Mon Sep 17 00:00:00 2001 From: spuligil Date: Thu, 15 Aug 2024 18:01:13 -0700 Subject: [PATCH 10/76] fw-api: CL 27407027 - update fw common interface files Change-Id: Ie96cc4822bb6c6216cfe20a1d9a9ca5d23894766 CRs-Fixed: 3830439 --- fw/htt.h | 1 + fw/htt_stats.h | 23 +++++++++++++++++++++++ fw/wmi_unified.h | 8 +++++++- fw/wmi_version.h | 2 +- 4 files changed, 32 insertions(+), 2 deletions(-) diff --git a/fw/htt.h b/fw/htt.h index b1f72a3d06ba..3273beb9e331 100644 --- a/fw/htt.h +++ b/fw/htt.h @@ -833,6 +833,7 @@ typedef enum { HTT_STATS_TX_PDEV_WIFI_RADAR_TAG = 200, /* htt_stats_tx_pdev_wifi_radar_tlv */ 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_MAX_TAG, } htt_stats_tlv_tag_t; diff --git a/fw/htt_stats.h b/fw/htt_stats.h index a38401072609..7dac64221028 100644 --- a/fw/htt_stats.h +++ b/fw/htt_stats.h @@ -676,6 +676,14 @@ enum htt_dbg_ext_stats_type { */ HTT_DBG_GTX_STATS = 68, + /** HTT_DBG_EXT_STATS_TX_VDEV_NSS + * PARAMS: + * - No Params + * RESP MSG: + * - htt_stats_tx_vdev_nss_tlv + */ + HTT_DBG_EXT_STATS_TX_VDEV_NSS = 69, + /* keep this last */ HTT_DBG_NUM_EXT_STATS = 256, @@ -5406,6 +5414,7 @@ typedef struct { #define HTT_TX_PDEV_STATS_NUM_LTF 4 #define HTT_TX_PDEV_STATS_NUM_11AX_TRIGGER_TYPES 6 #define HTT_TX_PDEV_STATS_NUM_11BE_TRIGGER_TYPES 6 +#define HTT_TX_VDEV_STATS_NUM_SPATIAL_STREAMS 4 #define HTT_TX_NUM_OF_SOUNDING_STATS_WORDS \ (HTT_TX_PDEV_STATS_NUM_BW_COUNTERS * \ HTT_TX_PDEV_STATS_NUM_AX_MUMIMO_USER_STATS) @@ -5625,6 +5634,20 @@ typedef struct { /* preserve old name alias for new name consistent with the tag name */ typedef htt_stats_tx_pdev_rate_stats_tlv htt_tx_pdev_rate_stats_tlv; +typedef struct { + htt_tlv_hdr_t tlv_hdr; + A_UINT32 vdev_id; /* which vdev produced these per-Nss tx stats */ + /* tx_nss: + * Count how many MPDUs the vdev has sent using each possible number + * of spatial streams: + * tx_nss[0] -> number of MPDUs transmitted using Nss=1 + * tx_nss[1] -> number of MPDUs transmitted using Nss=2 + * tx_nss[2] -> number of MPDUs transmitted using Nss=3 + * tx_nss[3] -> number of MPDUs transmitted using Nss=4 + */ + A_UINT32 tx_nss[HTT_TX_VDEV_STATS_NUM_SPATIAL_STREAMS]; +} htt_stats_tx_vdev_nss_tlv; + typedef struct { /* 11be mode pdev rate stats; placed in a separate TLV to adhere to size restrictions */ htt_tlv_hdr_t tlv_hdr; diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index cc88a5d6cc73..7ef291fd3b5f 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -3520,6 +3520,11 @@ typedef struct { #define WMI_TARGET_CAP_QDATA_TX_LCE_FILTER_SUPPORT_SET(target_cap_flags, value)\ WMI_SET_BITS(target_cap_flags, 15, 1, value) +#define WMI_TARGET_CAP_MPDU_STATS_PER_TX_NSS_SUPPORT_GET(target_cap_flags) \ + WMI_GET_BITS(target_cap_flags, 16, 1) +#define WMI_TARGET_CAP_MPDU_STATS_PER_TX_NSS_SUPPORT_SET(target_cap_flags, value)\ + WMI_SET_BITS(target_cap_flags, 16, 1, value) + /* * wmi_htt_msdu_idx_to_htt_msdu_qtype GET/SET APIs @@ -3666,7 +3671,8 @@ typedef struct { * Bit 13 - Support for multipass SAP * Bit 14 - Support for ML monitor mode * Bit 15 - Support for Qdata Tx LCE filter installation - * Bits 31:16 - Reserved + * Bit 16 - Support for MPDU stats per tx Nss capability + * Bits 31:17 - Reserved */ A_UINT32 target_cap_flags; diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 393052ea022a..61908ef15062 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_ 1511 +#define __WMI_REVISION_ 1512 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 39a2d7b9045d46793d03746e3a20a8eb0ca11064 Mon Sep 17 00:00:00 2001 From: spuligil Date: Thu, 15 Aug 2024 18:02:36 -0700 Subject: [PATCH 11/76] fw-api: CL 27418163 - update fw common interface files Change-Id: Ie80049a32e0c33c74e364df6038d9ce52260ea21 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 7ef291fd3b5f..d8ea0b4b9906 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -48890,6 +48890,8 @@ typedef struct { A_UINT32 tlv_header; /* status takes values from WMI_MLO_TID_TO_LINK_MAP_STATUS */ A_UINT32 status; + /* Vdev_id on which T2LM command request is received */ + A_UINT32 vdev_id; } wmi_mlo_peer_tid_to_link_map_event_fixed_param; diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 61908ef15062..cf12b0a97a78 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_ 1512 +#define __WMI_REVISION_ 1513 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 27e5d776c3c543a57769218d3bd231095a416bf2 Mon Sep 17 00:00:00 2001 From: spuligil Date: Tue, 20 Aug 2024 00:30:48 -0700 Subject: [PATCH 12/76] fw-api: CL 27444604 - update fw common interface files Change-Id: I6911bdb80988b788cf623a4a308c43f0311c5d1a CRs-Fixed: 3830439 --- fw/wmi_unified.h | 11 +++++++++++ fw/wmi_version.h | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index d8ea0b4b9906..bb80605f232e 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -40455,6 +40455,17 @@ typedef struct { * than rssi_6g_threshold. If rssi_6g_threshold is 0, it should be ignored. */ A_INT32 rssi_6g_threshold; /* units = dBm */ + /** bss_load_alpha_pct + * This parameter is used for updating the exponential average of the + * BSS load: + * new avg BSS load = + * new BSS load measurement * alpha / 100 + + * old avg BSS load * (100 - alpha) / 100 + * This parameter uses percent units. E.g. if bss_load_alpha_pct == 10, + * the new average will be the sum of 10% of the new measurement + 90% of + * the old average. + */ + A_UINT32 bss_load_alpha_pct; } wmi_roam_bss_load_config_cmd_fixed_param; /** Deauth roam trigger parameters */ diff --git a/fw/wmi_version.h b/fw/wmi_version.h index cf12b0a97a78..7df73f814166 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_ 1513 +#define __WMI_REVISION_ 1514 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 94c35e3bc19bf8a91b473cf1cd54f36691fdb471 Mon Sep 17 00:00:00 2001 From: Rahul Gusain Date: Wed, 7 Aug 2024 12:29:26 +0530 Subject: [PATCH 13/76] fw-api: Add NAN file to host driver also Target send the NAN event with TLVs to the driver and driver extracts those TLV. But some TLV information is missing like NAN MAC address in the WMI files and they are part of other NAN files. Currently, target uses these NAN files for its internal functionality. So, to enable the TLV extraction in the driver, add NAN files having TLV information in the host driver also. Change-Id: I16373ed8df411da623a2925605000d5282da9967 CRs-Fixed: 3893449 --- fw/wlan_nan_msg.h | 1834 ++++++++++++++++++++++++++++++++++++++++ fw/wlan_nan_platform.h | 15 + 2 files changed, 1849 insertions(+) create mode 100644 fw/wlan_nan_msg.h create mode 100644 fw/wlan_nan_platform.h diff --git a/fw/wlan_nan_msg.h b/fw/wlan_nan_msg.h new file mode 100644 index 000000000000..3d180ab4f564 --- /dev/null +++ b/fw/wlan_nan_msg.h @@ -0,0 +1,1834 @@ +/* + * Copyright (c) 2024, Qualcomm Innovation Center, Inc. All rights reserved. + * SPDX-License-Identifier: ISC + * + */ + +#ifndef _WLAN_NAN_MSG_H_ +#define _WLAN_NAN_MSG_H_ +#include +#include + +#ifndef WLAN_NAN_MSG_COMMON_HEADER_V2 + /* + * For backwards compatibility, use the deprecated version of + * wlan_nan_msg_common.h in systems that have not been updated + * to use the defs from the replacement wlan_nan_msg_common_v2.h + */ + #include +#else + #include + typedef nan_msg_header_t tNanMsgHeader; + typedef nan_msg_header_tp tpNanMsgHeader; +#endif + +/*--------------------------------------------------------------------------- +* WLAN NAN CONSTANTS +*--------------------------------------------------------------------------*/ +#ifndef PACKED_PRE +#define PACKED_PRE PREPACK +#endif + +#ifndef PACKED_POST +#define PACKED_POST POSTPACK +#endif + +/* ALL THE INTERFACE DEFINITIONS ARE ASSUMED TO BE IN LITTLE ENDIAN ORDER. + * BIG ENDIAN HOST IS RESPONSIBLE TO SEND/INTERPRET MESSAGES IN LITTLE + * ENDIAN FORMAT ONLY + */ + +/** 2 word representation of MAC addr */ +typedef struct { + A_UINT32 mac_addr31to0; + A_UINT32 mac_addr47to32; +} wlan_nan_mac_addr; + +/* NAN Statistics Request ID Codes */ +typedef enum +{ + NAN_STATS_ID_FIRST = 0, + NAN_STATS_ID_DE_PUBLISH = NAN_STATS_ID_FIRST, + NAN_STATS_ID_DE_SUBSCRIBE, + NAN_STATS_ID_DE_MAC, + NAN_STATS_ID_DE_TIMING_SYNC, + NAN_STATS_ID_DE_DW, + NAN_STATS_ID_DE, + NAN_STATS_ID_LAST +} tNanStatsId; + +typedef enum +{ + NAN_TLV_TYPE_FIRST = 0, + + /* Service Discovery Frame types */ + NAN_TLV_TYPE_SDF_FIRST = NAN_TLV_TYPE_FIRST, + NAN_TLV_TYPE_SERVICE_NAME = NAN_TLV_TYPE_SDF_FIRST, + NAN_TLV_TYPE_SDF_MATCH_FILTER, + NAN_TLV_TYPE_TX_MATCH_FILTER, + NAN_TLV_TYPE_RX_MATCH_FILTER, + NAN_TLV_TYPE_SERVICE_SPECIFIC_INFO, + NAN_TLV_TYPE_EXT_SERVICE_SPECIFIC_INFO = 5, + NAN_TLV_TYPE_VENDOR_SPECIFIC_ATTRIBUTE_TRANSMIT = 6, + NAN_TLV_TYPE_VENDOR_SPECIFIC_ATTRIBUTE_RECEIVE = 7, + NAN_TLV_TYPE_POST_NAN_CONNECTIVITY_CAPABILITIES_RECEIVE = 8, + NAN_TLV_TYPE_POST_NAN_DISCOVERY_ATTRIBUTE_RECEIVE = 9, + NAN_TLV_TYPE_BEACON_SDF_PAYLOAD_RECEIVE = 10, + NAN_TLV_TYPE_NAN_DATA_PATH_PARAMS = 11, + NAN_TLV_TYPE_NAN_DATA_SUPPORTED_BAND = 12, + NAN_TLV_TYPE_2G_COMMITTED_DW = 13, + NAN_TLV_TYPE_5G_COMMITTED_DW = 14, + NAN_TLV_TYPE_NAN_DATA_RSPNR_MODE = 15, + NAN_TLV_TYPE_NAN_DATA_ENABLED_IN_MATCH = 16, + NAN_TLV_TYPE_NAN20_RSPNR_ACCEPT_POLICY = 17, + NAN_TLV_TYPE_NAN_CSID = 18, + NAN_TLV_TYPE_NAN_SCID = 19, + NAN_TLV_TYPE_NAN_PMK = 20, + NAN_TLV_TYPE_SDEA_CTRL_PARAMS = 21, + NAN_TLV_TYPE_NAN20_RANGING_CONFIGURATION = 22, + NAN_TLV_TYPE_CONFIG_DISCOVERY_INDICATIONS = 23, + NAN_TLV_TYPE_NAN20_RANGING_REQUEST = 24, + NAN_TLV_TYPE_NAN20_RANGING_RESULT = 25, + NAN_TLV_TYPE_NAN20_RANGING_REQUEST_RECEIVED = 26, + NAN_TLV_TYPE_NAN_PASSPHRASE = 27, + NAN_TLV_TYPE_NAN_EXTENDED_SSI = 28, + NAN_TLV_TYPE_DEV_CAP_ATTR_CAPABILITY = 29, + NAN_TLV_TYPE_TRANSPORT_IP_PARAM = 30, + NAN_TLV_TYPE_SERVICE_ID = 31, + NAN_TLV_TYPE_PAIRING_CONFIGURATION = 32, + NAN_TLV_TYPE_PAIRING_MATCH_PARAMS = 33, + NAN_TLV_TYPE_BOOTSTRAPPING_PARAMS = 34, + NAN_TLV_TYPE_BOOTSTRAPPING_COOKIE = 35, + NAN_TLV_TYPE_NIRA_NOUNCE = 36, + NAN_TLV_TYPE_NIRA_TAG = 37, + NAN_TLV_TYPE_NAN_CSID_EXT = 38, /* replacement for NAN_TLV_TYPE_NAN_CSID */ + NAN_TLV_TYPE_CSIA_CAP = 39, + NAN_TLV_TYPE_SDF_LAST = 4095, + + /* Configuration types */ + NAN_TLV_TYPE_CONFIG_FIRST = 4096, + NAN_TLV_TYPE_24G_SUPPORT = NAN_TLV_TYPE_CONFIG_FIRST, //4096 + NAN_TLV_TYPE_24G_BEACON, //4097 + NAN_TLV_TYPE_24G_SDF, //4098 + NAN_TLV_TYPE_24G_RSSI_CLOSE, //4099 + NAN_TLV_TYPE_24G_RSSI_MIDDLE, //4100 + NAN_TLV_TYPE_24G_RSSI_CLOSE_PROXIMITY, //4101 + NAN_TLV_TYPE_5G_SUPPORT, //4102 + NAN_TLV_TYPE_5G_BEACON, //4103 + NAN_TLV_TYPE_5G_SDF, //4104 + NAN_TLV_TYPE_5G_RSSI_CLOSE, //4105 + NAN_TLV_TYPE_5G_RSSI_MIDDLE, //4106 + NAN_TLV_TYPE_5G_RSSI_CLOSE_PROXIMITY, //4107 + NAN_TLV_TYPE_SID_BEACON, //4108 + NAN_TLV_TYPE_HOP_COUNT_LIMIT, //4109 + NAN_TLV_TYPE_MASTER_PREFERENCE, //4110 + NAN_TLV_TYPE_CLUSTER_ID_LOW, //4111 + NAN_TLV_TYPE_CLUSTER_ID_HIGH, //4112 + NAN_TLV_TYPE_RSSI_AVERAGING_WINDOW_SIZE, //4113 + NAN_TLV_TYPE_CLUSTER_OUI_NETWORK_ID, //4114 + NAN_TLV_TYPE_SOURCE_MAC_ADDRESS, //4115 + NAN_TLV_TYPE_CLUSTER_ATTRIBUTE_IN_SDF, //4116 + NAN_TLV_TYPE_SOCIAL_CHANNEL_SCAN_PARAMS, //4117 + NAN_TLV_TYPE_DEBUGGING_FLAGS, //4118 + NAN_TLV_TYPE_POST_NAN_CONNECTIVITY_CAPABILITIES_TRANSMIT, //4119 + NAN_TLV_TYPE_POST_NAN_DISCOVERY_ATTRIBUTE_TRANSMIT, //4120 + NAN_TLV_TYPE_FURTHER_AVAILABILITY_MAP, //4121 + NAN_TLV_TYPE_HOP_COUNT_FORCE, //4122 + NAN_TLV_TYPE_RANDOM_FACTOR_FORCE, //4123 + NAN_TLV_TYPE_RANDOM_UPDATE_TIME, //4124 + NAN_TLV_TYPE_EARLY_WAKEUP, //4125 + NAN_TLV_TYPE_PERIODIC_SCAN_INTERVAL, //4126 + // 4127 unused + NAN_TLV_TYPE_DW_INTERVAL = 4128, //4128 + NAN_TLV_TYPE_DB_INTERVAL, //4129 + NAN_TLV_TYPE_FURTHER_AVAILABILITY, //4130 + NAN_TLV_TYPE_24G_CHANNEL, //4131 + NAN_TLV_TYPE_5G_CHANNEL, //4132 + NAN_TLV_TYPE_DISC_MAC_ADDR_RANDOM_INTERVAL, //4133 + NAN_TLV_TYPE_RANGING_AUTO_RESPONSE_CFG, // 4134 + NAN_TLV_TYPE_RANGING_AUTO_RESPONE_CFG = + NAN_TLV_TYPE_RANGING_AUTO_RESPONSE_CFG, // 4134 + NAN_TLV_TYPE_SUBSCRIBE_SID_BEACON, // 4135 + NAN_TLV_TYPE_DW_EARLY_TERMINATION, // 4136 + NAN_TLV_TYPE_TX_RX_CHAINS, // 4137 + NAN_TLV_TYPE_SYSTEM_RANGING_ENABLED, // 4138 + NAN_TLV_TYPE_UNSYNC_DISCOVERY_ENABLED, // 4139 + NAN_TLV_TYPE_FOLLOWUP_MGMT_RX_ENABLED, // 4140 + + NAN_TLV_TYPE_CONFIG_LAST = 8191, + + /* Attributes types */ + NAN_TLV_TYPE_ATTRS_FIRST = 8192, + + NAN_TLV_TYPE_AVAILABILITY_INTERVALS_MAP = NAN_TLV_TYPE_ATTRS_FIRST, + NAN_TLV_TYPE_WLAN_MESH_ID, + NAN_TLV_TYPE_MAC_ADDRESS, + NAN_TLV_TYPE_RECEIVED_RSSI_VALUE, + NAN_TLV_TYPE_CLUSTER_ATTRIBUTE, + NAN_TLV_TYPE_WLAN_INFRA_SSID, + NAN_TLV_TYPE_NAN_SHARED_KEY_DESC_ATTR, + NAN_TLV_TYPE_ATTRS_LAST = 12287, + + /* Events types */ + NAN_TLV_TYPE_EVENTS_FIRST = 12288, + NAN_TLV_TYPE_SELF_STA_MAC_ADDR = NAN_TLV_TYPE_EVENTS_FIRST, + NAN_TLV_TYPE_STARTED_CLUSTER, + NAN_TLV_TYPE_JOINED_CLUSTER, + NAN_TLV_TYPE_CLUSTER_SCAN_RESULTS, + NAN_TLV_TYPE_FAW_MEM_AVAIL, + NAN_TLV_TYPE_EVENTS_LAST = 16383, + + /* TCA types */ + NAN_TLV_TYPE_TCA_FIRST = 16384, + NAN_TLV_TYPE_CLUSTER_SIZE_REQ = NAN_TLV_TYPE_TCA_FIRST, + NAN_TLV_TYPE_CLUSTER_SIZE_RSP, + NAN_TLV_TYPE_TCA_LAST = 32767, + + /* Statistics types */ + NAN_TLV_TYPE_STATS_FIRST = 32768, + NAN_TLV_TYPE_DE_PUBLISH_STATS = NAN_TLV_TYPE_STATS_FIRST, + NAN_TLV_TYPE_DE_SUBSCRIBE_STATS, + NAN_TLV_TYPE_DE_MAC_STATS, + NAN_TLV_TYPE_DE_TIMING_SYNC_STATS, + NAN_TLV_TYPE_DE_DW_STATS, + NAN_TLV_TYPE_DE_STATS, + NAN_TLV_TYPE_STATS_LAST = 36863, + + /* Testmode types */ + NAN_TLV_TYPE_TESTMODE_FIRST = 36864, + NAN_TLV_TYPE_TESTMODE_GENERIC_CMD = NAN_TLV_TYPE_TESTMODE_FIRST, + NAN_TLV_TYPE_TESTMODE_LAST = 37000, + + /* NAN Security types */ + NAN_TLV_TYPE_SEC_FIRST = 37001, + NAN_TLV_TYPE_SEC_IGTK_KDE = NAN_TLV_TYPE_SEC_FIRST, + NAN_TLV_TYPE_SEC_BIGTK_KDE, + NAN_TLV_TYPE_SEC_NM_TK, + NAN_TLV_TYPE_GROUP_KEYS_PARAM, + NAN_TLV_TYPE_SEC_LAST = 37100, + + /* NAN OEM Configuration types */ + NAN_TLV_TYPE_OEM_DATA_FIRST = 37101, + NAN_TLV_TYPE_OEM1_DATA = NAN_TLV_TYPE_OEM_DATA_FIRST, + NAN_TLV_TYPE_OEM_DATA_LAST = 37150, + + + NAN_TLV_TYPE_LAST = 65535 +} tNanTlvType; + + +/* NAN Publish Types */ +typedef enum +{ + NAN_PUBLISH_TYPE_UNSOLICITED = 0, + NAN_PUBLISH_TYPE_SOLICITED, + NAN_PUBLISH_TYPE_UNSOLICITED_SOLICITED, + NAN_PUBLISH_TYPE_LAST, +} tNanPublishType; + +/* NAN Transmit Types */ +typedef enum +{ + NAN_TX_TYPE_BROADCAST = 0, + NAN_TX_TYPE_UNICAST, + NAN_TX_TYPE_LAST +} tNanTxType; + +/* NAN Match Algorithms */ +typedef enum +{ + NAN_MATCH_ALG_FIRST = 0, + NAN_MATCH_ALG_MATCH_ONCE = NAN_MATCH_ALG_FIRST, + NAN_MATCH_ALG_MATCH_CONTINUOUS, + NAN_MATCH_ALG_NEVER, + NAN_MATCH_ALG_LAST +} tNanMatchAlg; + +/* NAN Indication Disable Flag */ +typedef enum +{ + NAN_IND_ALWAYS = 0, + NAN_IND_NEVER, +} tNanIndDisableFlag; + +/* NAN Transmit Priorities */ +typedef enum +{ + NAN_TX_PRIORITY_LOW = 0, + NAN_TX_PRIORITY_NORMAL, + NAN_TX_PRIORITY_HIGH, + /* This is for special case if the service + * want to respond in same DW */ + NAN_TX_PRIORITY_CRITICAL, + NAN_TX_PRIORITY_LAST +} tNanTxPriority; + +/* PMK length */ +#define NAN_PMK_LEN 32 +/* Passphrase length */ +#define NAN_PASSPHRASE_MIN_LEN 8 +#define NAN_PASSPHRASE_MAX_LEN 63 +/* Supported NAN SCID buffer length */ +#define NAN_SCID_BUF_LEN 256 + +/* NAN Status Codes */ +typedef enum +{ + /* Protocol Response Codes */ + NAN_STATUS_SUCCESS = 0, + NAN_STATUS_TIMEOUT = 1, + NAN_STATUS_DE_FAILURE = 2, + NAN_STATUS_INVALID_MSG_VERSION = 3, + NAN_STATUS_INVALID_MSG_LEN = 4, + NAN_STATUS_INVALID_MSG_ID = 5, + NAN_STATUS_INVALID_HANDLE = 6, + NAN_STATUS_NO_SPACE_AVAILABLE = 7, + NAN_STATUS_INVALID_PUBLISH_TYPE = 8, + NAN_STATUS_INVALID_TX_TYPE = 9, + NAN_STATUS_INVALID_MATCH_ALGORITHM = 10, + NAN_STATUS_DISABLE_IN_PROGRESS = 11, + NAN_STATUS_INVALID_TLV_LEN = 12, + NAN_STATUS_INVALID_TLV_TYPE =13, + NAN_STATUS_MISSING_TLV_TYPE = 14, + NAN_STATUS_INVALID_TOTAL_TLVS_LEN = 15, + NAN_STATUS_INVALID_MATCH_HANDLE = 16, + NAN_STATUS_INVALID_TLV_VALUE = 17, + NAN_STATUS_INVALID_TX_PRIORITY = 18, + NAN_STATUS_INVALID_CONNECTION_MAP = 19, + NAN_STATUS_INVALID_TCA_ID = 20, + NAN_STATUS_INVALID_STATS_ID = 21, + NAN_STATUS_NAN_NOT_ALLOWED = 22, + NAN_STATUS_NO_OTA_ACK = 23, + NAN_STATUS_TX_FAIL = 24, + NAN_STATUS_MULTIPLE_ENABLE = 25, + NAN_STATUS_FOLLOWUP_QUEUE_FULL = 26, + NAN_STATUS_INVALID_5G_CHANNEL = 27, + NAN_STATUS_POLICY_MANAGER_NOT_SINGLE_MAC_MODE = 28, + NAN_STATUS_VDEV_NOT_CREATED = 29, + + /* Configuration Response Codes */ + NAN_STATUS_INVALID_RSSI_CLOSE_VALUE = 4096, + NAN_STATUS_INVALID_RSSI_MEDIUM_VALUE = 4097, + NAN_STATUS_INVALID_HOP_COUNT_LIMIT = 4098, + NAN_STATUS_INVALID_MASTER_PREFERENCE_VALUE = 4099, + NAN_STATUS_INVALID_LOW_CLUSTER_ID_VALUE = 4100, + NAN_STATUS_INVALID_HIGH_CLUSTER_ID_VALUE = 4101, + NAN_STATUS_INVALID_BACKGROUND_SCAN_PERIOD = 4102, + NAN_STATUS_INVALID_RSSI_PROXIMITY_VALUE = 4103, + NAN_STATUS_INVALID_SCAN_CHANNEL = 4104, + NAN_STATUS_INVALID_POST_NAN_CONNECTIVITY_CAPABILITIES_BITMAP = 4105, + NAN_STATUS_INVALID_FURTHER_AVAILABILITY_MAP_NUMCHAN_VALUE = 4106, + NAN_STATUS_INVALID_FURTHER_AVAILABILITY_MAP_DURATION_VALUE = 4107, + NAN_STATUS_INVALID_FURTHER_AVAILABILITY_MAP_CLASS_VALUE = 4108, + NAN_STATUS_INVALID_FURTHER_AVAILABILITY_MAP_CHANNEL_VALUE = 4109, + NAN_STATUS_INVALID_FURTHER_AVAILABILITY_MAP_AVAILABILITY_INTERVAL_BITMAP_VALUE = 4110, + NAN_STATUS_INVALID_FURTHER_AVAILABILITY_MAP_MAP_ID = 4111, + NAN_STATUS_INVALID_POST_NAN_DISCOVERY_CONN_TYPE_VALUE = 4112, + NAN_STATUS_INVALID_POST_NAN_DISCOVERY_DEVICE_ROLE_VALUE = 4113, + NAN_STATUS_INVALID_POST_NAN_DISCOVERY_DURATION_VALUE = 4114, + NAN_STATUS_INVALID_POST_NAN_DISCOVERY_BITMAP_VALUE = 4115, + NAN_STATUS_MISSING_FUTHER_AVAILABILITY_MAP = 4116, + NAN_STATUS_INVALID_BAND_CONFIG_FLAGS = 4117, + NAN_STATUS_INVALID_RANDOM_FACTOR_UPDATE_TIME_VALUE = 4118, + NAN_STATUS_INVALID_ONGOING_SCAN_PERIOD = 4119, + NAN_STATUS_INVALID_DW_INTERVAL_VALUE = 4120, + NAN_STATUS_INVALID_DB_INTERVAL_VALUE = 4121, + + /* Protocol Termination Indication Reason Codes */ + NAN_TERMINATED_REASON_INVALID = 8192, + NAN_TERMINATED_REASON_TIMEOUT = 8193, + NAN_TERMINATED_REASON_USER_REQUEST = 8194, + NAN_TERMINATED_REASON_FAILURE = 8195, + NAN_TERMINATED_REASON_COUNT_REACHED = 8196, + NAN_TERMINATED_REASON_DE_SHUTDOWN = 8197, /* Deprecated */ + NAN_TERMINATED_REASON_DISABLE_IN_PROGRESS = 8198, + NAN_TERMINATED_REASON_POST_DISC_ATTR_EXPIRED = 8199, + NAN_TERMINATED_REASON_POST_DISC_LEN_EXCEEDED = 8200, + NAN_TERMINATED_REASON_FURTHER_AVAIL_MAP_EMPTY = 8201, + + /* Status related to Key Install and PN */ + NAN_STATUS_INVALID_IGTK_PARAMS = 8501, + NAN_STATUS_INVALID_BIGTK_PARAMS = 8502, + NAN_STATUS_INVALID_TX_KEY_NOT_PRESENT = 8503, + NAN_STATUS_INVALID_NO_PEER_ENTRY = 8504, + + /* 9000-9500 NDP Status type */ + NDP_UNSUPPORTED_CONCURRENCY = 9000, + NDP_NAN_DATA_IFACE_CREATE_FAILED = 9001, + NDP_NAN_DATA_IFACE_DELETE_FAILED = 9002, + NDP_DATA_INITIATOR_REQUEST_FAILED = 9003, + NDP_DATA_RESPONDER_REQUEST_FAILED = 9004, + NDP_INVALID_SERVICE_INSTANCE_ID = 9005, + NDP_INVALID_NDP_INSTANCE_ID = 9006, + NDP_INVALID_RESPONSE_CODE = 9007, + NDP_INVALID_APP_INFO_LEN = 9008, + /* OTA failures and timeouts during negotiation */ + NDP_MGMT_FRAME_REQUEST_FAILED = 9009, + NDP_MGMT_FRAME_RESPONSE_FAILED = 9010, + NDP_MGMT_FRAME_CONFIRM_FAILED = 9011, + NDP_END_FAILED = 9012, + NDP_MGMT_FRAME_END_REQUEST_FAILED = 9013, + NDP_MGMT_FRAME_SECURITY_INSTALL_FAILED = 9014, + + /* 9500 onwards vendor specific error codes */ + NDP_VENDOR_SPECIFIC_ERROR = 9500 + +} tNanStatusType; + +/* Enumeration for Version */ +typedef enum +{ + NAN_MSG_VERSION1 = 1, +}tNanMsgVersion; + +/* NAN Error Rsp */ +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + A_UINT16 status; + A_UINT16 value; +} tNanErrorRspMsg, *tpNanErrorRspMsg; + +/* NAN Configuration Rsp */ +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + A_UINT16 status; + A_UINT16 value; +} tNanConfigurationRspMsg, *tpNanConfigurationRspMsg; + +/* NAN Publish Service Cancel Rsp */ +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + A_UINT16 status; + A_UINT16 value; +} tNanPublishServiceCancelRspMsg, *tpNanPublishServiceCancelRspMsg; + +/* NAN Publish Service Rsp */ +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + A_UINT16 status; + A_UINT16 value; +} tNanPublishServiceRspMsg, *tpNanPublishServiceRspMsg; + +/* NAN Subscribe Service Rsp */ +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + A_UINT16 status; + A_UINT16 value; +} tNanSubscribeServiceRspMsg, *tpNanSubscribeServiceRspMsg; + +/* NAN Subscribe Service Cancel Rsp */ +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + A_UINT16 status; + A_UINT16 value; +} tNanSubscribeServiceCancelRspMsg, *tpNanSubscribeServiceCancelRspMsg; + +/* NAN Transmit Followup Rsp */ +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + A_UINT16 status; + A_UINT16 value; +} tNanTransmitFollowupRspMsg, *tpNanTransmitFollowupRspMsg; + +/* NAN Self Transmit Followup Indication */ +typedef PACKED_PRE struct PACKED_POST +{ + tNanMsgHeader nanHeader; + A_UINT16 status; + A_UINT16 value; +} tNanSelfTransmitFollowupIndMsg, *tpNanSelfTransmitFollowupIndMsg; + +/* NAN Statistics Rsp */ +typedef PACKED_PRE struct PACKED_POST +{ + A_UINT16 status; + A_UINT16 value; + A_UINT8 statsId; + A_UINT8 reserved; +} tNanStatsRspParams, *tpNanStatsRspParams; + +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + tNanStatsRspParams statsRspParams; + A_UINT8 ptlv[1]; +} tNanStatsRspMsg, *tpNanStatsRspMsg; + +/* NAN Enable Rsp */ +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + A_UINT16 status; + A_UINT16 value; +} tNanEnableRspMsg, *tpNanEnableRspMsg; + +/* NAN Disable Rsp */ +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + A_UINT16 status; + A_UINT16 reserved; +} tNanDisableRspMsg, *tpNanDisableRspMsg; + +/* NAN TCA Rsp */ +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + /* status of the request */ + A_UINT16 status; + A_UINT16 value; +} tNanTcaRspMsg, *tpNanTcaRspMsg; + +/* NAN Beacon Sdf Payload Rsp */ +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + /* status of the request */ + A_UINT16 status; + A_UINT16 value; +} tNanBcnSdfPayloadRspMsg, *tpNanBcnSdfPayloadRspMsg; + +/* NAN Capabilities Rsp */ +typedef PACKED_PRE struct PACKED_POST +{ + A_UINT32 status; + A_UINT32 value; + A_UINT32 maxConcurrentNanClusters; + A_UINT32 maxNumPublishes; + A_UINT32 maxNumSubscribes; + A_UINT32 maxServiceNameLen; + A_UINT32 maxMatchFilterLen; + A_UINT32 maxTotalMatchFilterLen; + A_UINT32 maxServiceSpecificInfoLen; + A_UINT32 maxVsaDataLen; + A_UINT32 maxMeshDataLen; + A_UINT32 maxNanDataInterfaces; + A_UINT32 maxNanDataPathSessions; + A_UINT32 maxNanDataAppInfoLen; + A_UINT32 maxNanQueuedTransmitFollowupMsgs; + A_UINT32 nanDataSupportedBands; + A_UINT32 nanCSIDSupported; + /* Target capability max SCID buffer supported */ + A_UINT32 maxSCIDBufsupported; + + A_UINT32 nanSecuritySupported:1; + A_UINT32 maxExtServiceSpecificInfoLen:16; + A_UINT32 maxNanRttInitiatorSupported:5; + A_UINT32 maxNanRttResponderSupported:5; + A_UINT32 nanNDPESupported:1; + A_UINT32 nanPairingSupported:1; + A_UINT32 nanUSDPublisherSupported:1; + A_UINT32 nanUSDSubscriberSupported:1; + A_UINT32 reserved:1; + + A_UINT32 maxSubscribeAddress; + A_UINT32 maxNanPairingSessions; + A_UINT32 nanGroupMfpCap; +} tNanCapabilitiesRspParams, *tpNanCapabilitiesRspParams; + +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + tNanCapabilitiesRspParams capabilitiesRspParams; +} tNanCapabilitiesRspMsg, *tpNanCapabilitiesRspMsg; + +/* NAN Beacon Sdf Payload Ind */ +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + /* + * TLVs: + * + * Required: MAC Address (when VSA Receive is present) + * Optional: VSA Receive, Beacon SDF Payload Receive + */ + A_UINT8 ptlv[1]; +} tNanBcnSdfPayloadIndMsg, *tpNanBcnSdfPayloadIndMsg; + +/* NAN TCA Ind TLV */ +typedef PACKED_PRE struct PACKED_POST +{ + A_UINT32 rising:1; + A_UINT32 falling:1; + A_UINT32 reserved:30; + A_UINT32 value; +} tNanTcaIndTlv, *tpNanTcaIndTlv; + +/* NAN TCA Ind */ +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + /* + * TLVs: + * + * Required: TCA Ind TLV (Cluster Size Rsp). + */ + A_UINT8 ptlv[1]; +} tNanTcaIndMsg, *tpNanTcaIndMsg; + +/* NAN Disable Ind */ +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + /* reason for the termination */ + A_UINT16 reason; + A_UINT16 reserved; +} tNanDisableIndMsg, *tpNanDisableIndMsg; + +/* Event Ind */ +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + /* + * Excludes TLVs + * + * Optional: Self-Station MAC Address, Started Cluster, Joined Cluster + */ + A_UINT8 ptlv[1]; +} tNanEventIndMsg, *tpNanEventIndMsg; + +/* NAN Publish Followup Ind */ +typedef PACKED_PRE struct PACKED_POST +{ + A_UINT32 matchHandle; + A_UINT32 window:1; + A_UINT32 reserved:31; + /* + * Excludes TLVs + * + * Required: Service Specific Info or Extended Service Specific Info + */ +} tNanFollowupIndParams; + +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + tNanFollowupIndParams followupIndParams; + /* + * Excludes TLVs + * + * Required: MAC Address, Service Specific Info (D bit is 0) + * Optional: Service Specific Info (D bit is 1) + */ + A_UINT8 ptlv[1]; +} tNanFollowupIndMsg, *tpNanFollowupIndMsg; + +/* NAN Subscribe Terminated Ind */ +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + /* reason for the termination */ + A_UINT16 reason; + A_UINT16 reserved; +} tNanSubscribeTerminatedIndMsg, *tpNanSubscribeTerminatedIndMsg; + +/* NAN Unmatch Ind */ +typedef PACKED_PRE struct PACKED_POST +{ + A_UINT32 matchHandle; +} tNanUnmatchIndParams; + +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + tNanUnmatchIndParams unmatchIndParams; +} tNanUnmatchIndMsg, *tpNanUnmatchIndMsg; + +/* NAN Match Ind */ +typedef PACKED_PRE struct PACKED_POST +{ + A_UINT32 matchHandle; + A_UINT32 beaconFrameFlag:1; + A_UINT32 cacheExhaustedFlag:1; + A_UINT32 reserved:30; +} tNanMatchIndParams; + +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + tNanMatchIndParams matchIndParams; + /* + * Excludes TLVs + * + * Required: MAC Address + * Optional: Service Specific Info, SDF Match Filter + * Received RSSI Value, Post NAN Connectivity Capabilities Rx, + * Post NAN Discovery Attribute Rx, Further Availability Map, + * Cluster Attribute, Sdea ctrl params, NAN CSID, NAN SCID + */ + A_UINT8 ptlv[1]; +} tNanMatchIndMsg, *tpNanMatchIndMsg; + +/* NAN Publish Terminated Ind */ +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + A_UINT16 reason; + A_UINT16 reserved; +} tNanPublishTerminatedIndMsg, *tpNanPublishTerminatedIndMsg; + +/* NAN Publish Replied Ind */ +typedef PACKED_PRE struct PACKED_POST +{ + A_UINT32 matchHandle; +} tNanPublishRepliedIndParams; + +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + tNanPublishRepliedIndParams publishRepliedIndParams; + /* + * Excludes TLVs + * + * Required: MAC Address + * Optional: Received RSSI Value, Post NAN Connectivity Capabilities Rx, + * Post NAN Discovery Attribute Rx, Further Availability Map, + * Cluster Attribute, Sdea ctrl params, NAN CSID, NAN SCID buffer + */ + A_UINT8 ptlv[1]; +} tNanPublishRepliedIndMsg, *tpNanPublishRepliedIndMsg; + +/* NAN Enable Req */ +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + /* + * TLVs: + * + * Required: Master Preference, Cluster Low, Cluster High + * Optional: 2.4G Support, 2.4G Beacons, 2.4G Discovery, 2.4G RSSI Close, + * 2.4G RSSI Middle, 2.4G RSSI Close Proximity, 5G Support, + * 5G Beacons, 5G Discovery, 5G RSSI Close, 5G RSSI Middle, + * 5G RSSI Close Proximity, SID Beacon, Hop Count Limit, + * Random Factor Force, Hop Count Force, Master Preference, + * Cluster Low, Cluster High, RSSI Averaging Window Size, + * Cluster OUI Network ID, Source MAC Address, + * Cluster Attribute in SDF, Social Channel Scan Parameters, + * Debugging Flags, Post NAN Connectivity Capabilities Tx, + * Post NAN Discovery Attribute Tx, Further Availability Map + */ + A_UINT8 ptlv[1]; +} tNanEnableReqMsg, *tpNanEnableReqMsg; + +/* NAN Disable Req */ +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; +} tNanDisableReqMsg, *tpNanDisableReqMsg; + +/* NAN Configuration Req */ +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + /* + * TLVs: + * + * Required: None. + * Optional: 2.4G RSSI Close Proximity, 5G RSSI Close Proximity, + * SID Beacon, Random Factor Force, Hop Count Force, + * Master Preference, RSSI Averaging Window Size, + * Cluster Attribute, Social Channel Scan Parameters, + * Debugging Flags, Post NAN Connectivity Capabilities Tx, + * Post NAN Discovery Attribute Tx, Further Availability Map + */ + A_UINT8 ptlv[1]; +} tNanConfigurationReqMsg, *tpNanConfigurationReqMsg; + +/* NAN Publish Service Req */ +typedef PACKED_PRE struct PACKED_POST +{ + A_UINT16 ttl; + A_UINT16 period; + A_UINT32 replyIndFlag:1; + A_UINT32 publishType:2; + A_UINT32 txType:1; + A_UINT32 useRssi:1; + A_UINT32 otaFlag:1; + A_UINT32 matchAlg:2; + A_UINT32 count:8; + A_UINT32 connMap:8; + A_UINT32 pubTerminatedIndDisableFlag:1; + A_UINT32 pubUnmatchIndDisableFlag:1; + A_UINT32 followupRxIndDisableFlag:1; + A_UINT32 reserved2:5; +} tNanPublishServiceReqParams, *tpNanPublishServiceReqParams; + +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + tNanPublishServiceReqParams publishServiceReqParams; + /* + * Excludes TLVs + * + * Required: Service Name + * Optional: Service Specific Info, Tx Match Filter, Rx Match Filter + * Sdea ctrl params, NAN CSID, PMK, PASSPHRASE + */ + A_UINT8 ptlv[1]; +} tNanPublishServiceReqMsg, *tpNanPublishServiceReqMsg; + +/* NAN Publish Service Cancel Req */ +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; +} tNanPublishServiceCancelReqMsg, *tpNanPublishServiceCancelReqMsg; + +/* NAN Subscribe Service Req */ +typedef PACKED_PRE struct PACKED_POST +{ + A_UINT16 ttl; + A_UINT16 period; + A_UINT32 subscribeType:1; + A_UINT32 srfAttr:1; + A_UINT32 srfInclude:1; + A_UINT32 srfSend:1; + A_UINT32 ssiRequired:1; + A_UINT32 matchAlg:2; + A_UINT32 reserved1:1; + A_UINT32 count:8; + A_UINT32 useRssi:1; + A_UINT32 otaFlag:1; + A_UINT32 subTerminatedIndDisableFlag:1; + A_UINT32 subUnmatchIndDisableFlag:1; + A_UINT32 followupRxIndDisableFlag:1; + A_UINT32 reserved2:3; + A_UINT32 connMap:8; + /* + * Excludes TLVs + * + * Required: Service Name + * Optional: Rx Match Filter, Tx Match Filter, Service Specific Info, + * Group Key + */ +} tNanSubscribeServiceReqParams, *tpNanSubscribeServiceReqParams; + +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + tNanSubscribeServiceReqParams subscribeServiceReqParams; + /* + * Excludes TLVs + * + * Required: Service Name + * Optional: Rx Match Filter, Tx Match Filter, Service Specific Info, + * Sdea ctrl params, NAN CSID, PMK, PASSPHRASE + */ + A_UINT8 ptlv[1]; +} tNanSubscribeServiceReqMsg, *tpNanSubscribeServiceReqMsg; + +/* NAN Subscribe Service Cancel Req */ +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; +} tNanSubscribeServiceCancelReqMsg, *tpNanSubscribeServiceCancelReqMsg; + +/* NAN Transmit Followup Req */ +typedef PACKED_PRE struct PACKED_POST +{ + A_UINT32 matchHandle; + A_UINT32 priority:4; + A_UINT32 window:1; + A_UINT32 followupTxRspDisableFlag:1; + A_UINT32 reserved:26; + /* + * Excludes TLVs + * + * Required: Service Specific Info or Extended Service Specific Info + */ +} tNanTransmitFollowupReqParams; + +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + tNanTransmitFollowupReqParams transmitFollowupReqParams; + /* + * Excludes TLVs + * + * Required: MAC Address, Service Specific Info (D bit is 0) + * Optional: Service Specific Info (D bit is 1) + */ + A_UINT8 ptlv[1]; +} tNanTransmitFollowupReqMsg, *tpNanTransmitFollowupReqMsg; + +/* NAN Statistics Req */ +typedef PACKED_PRE struct PACKED_POST +{ + A_UINT32 statsId:8; + A_UINT32 clear:1; + A_UINT32 reserved:23; +} tNanStatsReqParams, *tpNanStatsReqParams; + +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + tNanStatsReqParams statsReqParams; +} tNanStatsReqMsg, *tpNanStatsReqMsg; + +/* NAN TCA Req TLV */ +typedef PACKED_PRE struct PACKED_POST +{ + A_UINT32 rising:1; + A_UINT32 falling:1; + A_UINT32 clear:1; + A_UINT32 reserved:29; + A_UINT32 threshold; +} tNanTcaReqParams, *tpNanTcaReqParams; + +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + /* + * TLVs: + * + * Required: TCA Req TLV (Cluster Size Req). + */ + A_UINT8 ptlv[1]; +} tNanTcaReqMsg, *tpNanTcaReqMsg; + +/* Publish statistics. */ +typedef struct +{ + A_UINT32 validPublishServiceReqMsgs; + A_UINT32 validPublishServiceRspMsgs; + A_UINT32 validPublishServiceCancelReqMsgs; + A_UINT32 validPublishServiceCancelRspMsgs; + A_UINT32 validPublishRepliedIndMsgs; + A_UINT32 validPublishTerminatedIndMsgs; + A_UINT32 validActiveSubscribes; + A_UINT32 validMatches; + A_UINT32 validFollowups; + A_UINT32 invalidPublishServiceReqMsgs; + A_UINT32 invalidPublishServiceCancelReqMsgs; + A_UINT32 invalidActiveSubscribes; + A_UINT32 invalidMatches; + A_UINT32 invalidFollowups; + A_UINT32 publishCount; + A_UINT32 publishNewMatchCount; + A_UINT32 pubsubGlobalNewMatchCount; +} tNanPublishStats, *tpNanPublishStats; + +/* Subscribe statistics. */ +typedef struct +{ + A_UINT32 validSubscribeServiceReqMsgs; + A_UINT32 validSubscribeServiceRspMsgs; + A_UINT32 validSubscribeServiceCancelReqMsgs; + A_UINT32 validSubscribeServiceCancelRspMsgs; + A_UINT32 validSubscribeTerminatedIndMsgs; + A_UINT32 validSubscribeMatchIndMsgs; + A_UINT32 validSubscribeUnmatchIndMsgs; + A_UINT32 validSolicitedPublishes; + A_UINT32 validMatches; + A_UINT32 validFollowups; + A_UINT32 invalidSubscribeServiceReqMsgs; + A_UINT32 invalidSubscribeServiceCancelReqMsgs; + A_UINT32 invalidSubscribeFollowupReqMsgs; + A_UINT32 invalidSolicitedPublishes; + A_UINT32 invalidMatches; + A_UINT32 invalidFollowups; + A_UINT32 subscribeCount; + A_UINT32 bloomFilterIndex; + A_UINT32 subscribeNewMatchCount; + A_UINT32 pubsubGlobalNewMatchCount; +} tNanSubscribeStats, *tpNanSubscribeStats; + +/* NAN MAC Statistics. Used for MAC and DW statistics. */ +typedef struct +{ + /* RX stats */ + A_UINT32 validFrames; + A_UINT32 validActionFrames; + A_UINT32 validBeaconFrames; + A_UINT32 ignoredActionFrames; + A_UINT32 ignoredBeaconFrames; + A_UINT32 invalidFrames; + A_UINT32 invalidActionFrames; + A_UINT32 invalidBeaconFrames; + A_UINT32 invalidMacHeaders; + A_UINT32 invalidPafHeaders; + A_UINT32 nonNanBeaconFrames; + + A_UINT32 earlyActionFrames; + A_UINT32 inDwActionFrames; + A_UINT32 lateActionFrames; + + /* TX stats */ + A_UINT32 framesQueued; + A_UINT32 totalTRSpUpdates; + A_UINT32 completeByTRSp; + A_UINT32 completeByTp75DW; + A_UINT32 completeByTendDW; + A_UINT32 lateActionFramesTx; + + /* Misc stats - ignored for DW. */ + A_UINT32 twIncreases; + A_UINT32 twDecreases; + A_UINT32 twChanges; + A_UINT32 twHighwater; + A_UINT32 bloomFilterIndex; + +} tNanMacStats, *tpNanMacStats; + +/* NAN Sync Statistics: TBD */ +typedef struct +{ + A_UINT64 currTsf; + A_UINT64 myRank; + A_UINT64 currAmRank; + A_UINT64 lastAmRank; + A_UINT32 currAmBTT; + A_UINT32 lastAmBTT; + A_UINT8 currAmHopCount; + A_UINT8 currRole; + A_UINT16 currClusterId; + + A_UINT32 reserved1; /* NOTE: Needed for padding for uint64 alignment of following 4 fields */ + + A_UINT64 timeSpentInCurrRole; + A_UINT64 totalTimeSpentAsMaster; + A_UINT64 totalTimeSpentAsNonMasterSync; + A_UINT64 totalTimeSpentAsNonMasterNonSync; + A_UINT32 transitionsToAnchorMaster; + A_UINT32 transitionsToMaster; + A_UINT32 transitionsToNonMasterSync; + A_UINT32 transitionsToNonMasterNonSync; + A_UINT32 amrUpdateCount; + A_UINT32 amrUpdateRankChangedCount; + A_UINT32 amrUpdateBTTChangedCount; + A_UINT32 amrUpdateHcChangedCount; + A_UINT32 amrUpdateNewDeviceCount; + A_UINT32 amrExpireCount; + A_UINT32 mergeCount; + A_UINT32 beaconsAboveHcLimit; + A_UINT32 beaconsBelowRssiThresh; + A_UINT32 beaconsIgnoredNoSpace; + A_UINT32 beaconsForOurCluster; + A_UINT32 beaconsForOtherCluster; + A_UINT32 beaconCancelRequests; + A_UINT32 beaconCancelFailures; + A_UINT32 beaconUpdateRequests; + A_UINT32 beaconUpdateFailures; + A_UINT32 syncBeaconTxAttempts; + A_UINT32 syncBeaconTxFailures; + A_UINT32 discBeaconTxAttempts; + A_UINT32 discBeaconTxFailures; + A_UINT32 amHopCountExpireCount; + A_UINT32 ndpChannelFreq; + A_UINT32 ndpChannelFreq2; + A_UINT32 schedUpdateChannelFreq; + +} tNanSyncStats, *tpNanSyncStats; + +/* NAN Misc DE Statistics */ +typedef struct +{ + A_UINT32 validErrorRspMsgs; + A_UINT32 validTransmitFollowupReqMsgs; + A_UINT32 validTransmitFollowupRspMsgs; + A_UINT32 validFollowupIndMsgs; + A_UINT32 validConfigurationReqMsgs; + A_UINT32 validConfigurationRspMsgs; + A_UINT32 validStatsReqMsgs; + A_UINT32 validStatsRspMsgs; + A_UINT32 validEnableReqMsgs; + A_UINT32 validEnableRspMsgs; + A_UINT32 validDisableReqMsgs; + A_UINT32 validDisableRspMsgs; + A_UINT32 validDisableIndMsgs; + A_UINT32 validEventIndMsgs; + A_UINT32 validTcaReqMsgs; + A_UINT32 validTcaRspMsgs; + A_UINT32 validTcaIndMsgs; + A_UINT32 invalidTransmitFollowupReqMsgs; + A_UINT32 invalidConfigurationReqMsgs; + A_UINT32 invalidStatsReqMsgs; + A_UINT32 invalidEnableReqMsgs; + A_UINT32 invalidDisableReqMsgs; + A_UINT32 invalidTcaReqMsgs; + A_UINT32 validBcnSdfPayloadReqMsgs; + A_UINT32 validBcnSdfPayloadRspMsgs; + A_UINT32 validBcnSdfPayloadIndMsgs; + A_UINT32 invalidBcnSdfPayloadReqMsgs; + A_UINT32 validCapabilitiesReqMsgs; + A_UINT32 invalidCapabilitiesReqMsgs; + A_UINT32 validCapabilitiesRspMsgs; +} tNanDeStats, *tpNanDeStats; + +typedef PACKED_PRE struct PACKED_POST +{ + A_UINT8 s:1; + A_UINT8 count:7; +} tNanSidAttr, *tpSidAttr; + +/* NAN BcnSdfPayload Req */ +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + /* + * TLVs: + * + * Required: VSA Transmit + * Optional: None + */ + A_UINT8 ptlv[1]; +} tNanBcnSdfPayloadReqMsg, *tpNanBcnSdfPayloadReqMsg; + +/* Get NAN Capabilities Req */ +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; +} tNanCapabilitiesReqMsg, *tpNanCapabilitiesReqMsg; + +/* These are in the same order as the Conn Types below. */ +#define NAN_CONN_MAP_NONE 0x00 +#define NAN_CONN_MAP_WLAN_INFRA 0x01 +#define NAN_CONN_MAP_P2P_OPERATION 0x02 +#define NAN_CONN_MAP_WLAN_IBSS 0x04 +#define NAN_CONN_MAP_WLAN_MESH 0x08 +#define NAN_CONN_MAP_FURTHER_SVC_AVAIL 0x10 +#define NAN_CONN_MAP_WLAN_RANGING 0x20 +#define NAN_CONN_MAP_RESERVED 0x40 +#define NAN_CONN_MAP_WILDCARD 0x80 + +typedef PACKED_PRE struct PACKED_POST +{ + A_UINT8 channel; + A_UINT8 dwellTime; + A_UINT16 scanPeriod; +} tNanSocialChannelScanParams, *tpSocialChannelScanParams; + +#define NAN_POST_NAN_CONN_CAP_WFD 0x0001 +#define NAN_POST_NAN_CONN_CAP_WFDS 0x0002 +#define NAN_POST_NAN_CONN_CAP_TDLS 0x0004 +#define NAN_POST_NAN_CONN_CAP_WLAN_INFRA 0x0008 +#define NAN_POST_NAN_CONN_CAP_IBSS 0x0010 +#define NAN_POST_NAN_CONN_CAP_MESH 0x0020 +#define NAN_POST_NAN_CONN_CAP_RESERVED 0xFFC0 + +/* Post-NAN Connectivity Capabilities Transmit TLV */ +typedef PACKED_PRE struct PACKED_POST +{ + A_UINT16 connCap; + A_UINT16 repeat:1; + A_UINT16 reserved:15; +} tNanPostNanConnCapsTxTlv, *tpNanPostNanConnCapsTxTlv; + +/* Post-NAN Connectivity Capabilities Receive TLV */ +typedef PACKED_PRE struct PACKED_POST +{ + A_UINT16 connCap; + A_UINT16 reserved; +} tNanPostNanConnCapsRxTlv, *tpNanPostNanConnCapsRxTlv; + +typedef PACKED_PRE struct PACKED_POST +{ + A_UINT8 availIntDuration:2; + + A_UINT8 mapId:4; + A_UINT8 reserved:2; +} tNanApiEntryCtrl; + +typedef enum +{ + NAN_FAM_AID_FIRST = 0, + NAN_FAM_AID_16TU = NAN_FAM_AID_FIRST, + NAN_FAM_AID_32TU, + NAN_FAM_AID_64TU, + NAN_FAM_AID_RESERVED, + NAN_FAM_AID_LAST = NAN_FAM_AID_RESERVED, + NAN_NUM_FAM_AID = NAN_FAM_AID_LAST +} tNanFamAid; + +/* + * Convenience types for the Availability Intervals Bitmap. Could do + * these as arrays of U8s too. They may or may not be useful... + */ +typedef A_UINT8 tNanAiBitmap64tu; +typedef A_UINT16 tNanAiBitmap32tu; +typedef A_UINT32 tNanAiBitmap16tu; + +/* + * Valid Operating Classes were derived from IEEE Std. 802.11-2012 Annex E + * Table E-4 Global Operating Classes and, filtered by channel, are: 81, 83, + * 84, 103, 114, 115, 116, 124, 125. (I think). + */ +typedef PACKED_PRE struct PACKED_POST +{ + A_UINT8 opClass; + A_UINT8 channel; + A_UINT8 availIntBitmap[4]; +} tNanFurtherAvailabilityChan, *tpNanFurtherAvailabilityChan; + +typedef PACKED_PRE struct PACKED_POST +{ + A_UINT8 numChan; + tNanApiEntryCtrl entryCtrl; + A_UINT8 pFaChan[1]; +} tNanFurtherAvailabilityMapAttrTlv, *tpNanFurtherAvailabilityMapAttrTlv; + +typedef enum +{ + NAN_CONN_TYPE_FIRST = 0, + NAN_CONN_TYPE_WLAN_INFRA = NAN_CONN_TYPE_FIRST, + NAN_CONN_TYPE_P2P_OPERATION, + NAN_CONN_TYPE_WLAN_IBSS, + NAN_CONN_TYPE_WLAN_MESH, + NAN_CONN_TYPE_FURTHER_SVC_AVAIL, + NAN_CONN_TYPE_WLAN_RANGING, + NAN_CONN_TYPE_LAST, + NAN_CONN_TYPE_RESERVED = NAN_CONN_TYPE_LAST, + NAN_CONN_TYPE_WILDCARD +} tNanConnType; + +/* Device Roles */ +typedef enum +{ + NAN_DEVICE_ROLE_FIRST = 0, + NAN_DEVICE_ROLE_WLAN_INFRA_FIRST = NAN_DEVICE_ROLE_FIRST, + NAN_DEVICE_ROLE_WLAN_AP = NAN_DEVICE_ROLE_WLAN_INFRA_FIRST, + NAN_DEVICE_ROLE_WLAN_STA, + NAN_DEVICE_ROLE_WLAN_INFRA_LAST, + NAN_DEVICE_ROLE_P2P_OPERATION_FIRST = NAN_DEVICE_ROLE_WLAN_INFRA_LAST, + NAN_DEVICE_ROLE_P2P_GROUP_OWNER = NAN_DEVICE_ROLE_P2P_OPERATION_FIRST, + NAN_DEVICE_ROLE_P2P_DEVICE, + NAN_DEVICE_ROLE_P2P_CLIENT, + NAN_DEVICE_ROLE_P2P_OPERATION_LAST, + NAN_DEVICE_ROLE_LAST = NAN_DEVICE_ROLE_P2P_OPERATION_LAST +} tNanDeviceRole; + +/* + * Post-NAN Discovery Attribute MAC Address Usage: + * + * Connection Type | Device Role | MAC Address Usage + * --------------------+-----------------+------------------------- + * WLAN Infrastructure | N/A | MSSID of the AP + * P2P Operation | P2P_Group Owner | P2P Group Owner's address + * P2P Operation | P2P Device | P2P Client's address + * WLAN IBSS | N/A | BSSID + * WLAN Mesh | N/A | BSSID + * Other | ??? | ??? + * + */ + +/* Post-NAN Discovery Attribute Transmit TLV. */ +typedef PACKED_PRE struct PACKED_POST +{ + A_UINT8 connType; + A_UINT8 deviceRole; + A_UINT16 repeat:1; + A_UINT16 duration:2; + A_UINT16 reserved:13; + A_UINT8 availIntBitmap[4]; + /* + * TLVs: + * + * Required: WLAN Mesh ID (if connType is WLAN_MESH), + * MAC Address (if connType is WLAN Infra, P2P, IBSS, or Mesh) + */ + A_UINT8 ptlv[1]; +} tNanPostNanDiscoveryAttrTxTlv, tpNanPostNanDiscoveryAttrTxTlv; + +/* Post-NAN Discovery Attribute Receive TLV. */ +typedef PACKED_PRE struct PACKED_POST +{ + A_UINT8 connType; + A_UINT8 deviceRole; + A_UINT16 duration:2; + A_UINT16 mapId:4; + A_UINT16 reserved:10; + A_UINT8 availIntBitmap[4]; + /* + * TLVs: + * + * Required: WLAN Mesh ID (if connType is WLAN_MESH), + * MAC Address (if connType is WLAN Infra, P2P, IBSS, or Mesh) + */ + A_UINT8 ptlv[1]; +} tNanPostNanDiscoveryAttrRxTlv, tpNanPostNanDiscoveryAttrRxTlv; + +/* NAN Vendor Specific Attribute Transmit/Receive TLV */ +typedef PACKED_PRE struct PACKED_POST +{ + A_UINT8 rflag:1; /* Ignored for receive case. */ + A_UINT8 pbits:3; + A_UINT8 reserved:4; + A_UINT8 oui[3]; + + A_UINT8 vsaData[1]; +} tNanVsaTlv, *tpNanVsaTlv; + +/*NAN 2.0 - SDEA*/ +typedef struct +{ + A_UINT32 data_path_type:1; + A_UINT32 reserved:31; +} tNanDataPathParamsTlv, *tpNanDataPathParamsTlv; + +/* NAN 2.0 - SDEA CTRL */ +typedef struct +{ + A_UINT32 fsd_required:1; + A_UINT32 fsd_with_gas:1; + A_UINT32 data_path_required:1; + A_UINT32 data_path_type:1; + A_UINT32 multicast_type:1; + A_UINT32 qos_required:1; + A_UINT32 security_required:1; + A_UINT32 ranging_required:1; + A_UINT32 range_limit_present:1; + A_UINT32 service_update_ind_present:1; + A_UINT32 reserved1:6; + // Above 16 bits are used to send Over The Air as part of SDEA control + // Below 16 bits are used for internal purposes + A_UINT32 range_report_needed:1; + A_UINT32 reserved2:15; +} tNanSdeaCtrlParamsTlv, *tpNanSdeaCtrlParamsTlv; + +typedef struct +{ + A_UINT32 data_path_enabled_in_match:1; + A_UINT32 reserved:31; +} tNanDataPathParmsEnabledMatchTlv, *tpNanDataPathParmsEnabledMatchTlv; + +/* NAN Data responder mode */ +typedef enum +{ + NAN_DATA_RSPNR_MODE_AUTO = 0, + NAN_DATA_RSPNR_MODE_ACCEPT = 1, + NAN_DATA_RSPNR_MODE_REJECT = 2, + NAN_DATA_RSPNR_MODE_COUNTER = 3, + NAN_DATA_RSPNR_MODE_COUNTER_NO_CHANNEL_CHANGE = 4, +} tNanDataRspnrMode; + +/** + * NDC respond mode + */ +typedef enum +{ + NAN_NDC_MODE_AUTO = 0, + NAN_NDC_MODE_COUNTER = 1, +} tNanNdcRspMode; + +/** + * Nan20 accept policy + */ +typedef enum { + NAN20_ACCEPT_POLICY_NONE = 0, + NAN20_ACCEPT_POLICY_ALL = 1, +} tNan20AcceptPolicy; + +/* NAN Cipher Suites Shared Key - to be deprecated */ +typedef enum { + NCS_SK_128 = 1, + NCS_SK_256 = 2, + NCS_SK_ALL = 3, +} NanCSID; + +/* New Host to use below to send CSID entries as a bitmap */ +typedef enum { + NAN_NCS_F_SK_128 = 0x00001, + NAN_NCS_F_SK_256 = 0x00002, + NAN_NCS_F_PK_2WDH_128 = 0x00004, + NAN_NCS_F_PK_2WDH_256 = 0x00008, + NAN_NCS_F_GTK_CCMP_128 = 0x00010, + NAN_NCS_F_GTK_GCMP_256 = 0x00020, + NAN_NCS_F_PK_PASN_128 = 0x00040, + NAN_NCS_F_PK_PASN_256 = 0x00080, +} NanCSIDBits; + +/** + * Security configuration rules between Upper layer and NAN target + * CSID and PMK are optional parameters + * Target usese the device capability CSID if Service layer provide. + * + * For these security parameter host will act as pass through + * Here are the rules for security parametrs between upper layer and target + * + * NDP Request + * 1. 4 byte CSID + * 2. 32 byte PMK + * 3. PASSPHRASE >=8 and <= 63 byte + * 4. Service Name (<=255) + * + * NDP Responder Request + * 1. 4 byte CSID + * 2. 32 byte PMK + * 3. PASSPHRASE >=8 and <= 63 byte + * 4. Service Name (<=255) + * + * NDP Indication + * 1. 4 byte CSID + * 2. 256 byte SCID buffer + */ + +/* NAN Cipher Version */ +typedef enum { + NAN_CIPHER_128 = 0, /* 0: 128-bit NIK, 64-bit Nonce, 64-bit Tag, HMAC-SHA-256 */ + /* 1 -7 reserved */ +} NanCipherVersion; + +/* NAN Group MFP support */ +#define NAN_GTKSA_IGTKSA_BIGTKSA_NOT_SUPPORTED 0x00 +#define NAN_GTKSA_IGTKSA_SUPPORTED_BIGTKSA_NOT_SUPPORTED 0x01 +#define NAN_GTKSA_IGTKSA_BIGTKSA_SUPPORTED 0x02 + +typedef PACKED_PRE struct PACKED_POST +{ + A_UINT32 inner_threshold; + A_UINT32 outer_threshold; +} t_nan_geo_fence_descriptor, *tp_nan_geo_fence_descriptor; + +typedef PACKED_PRE struct PACKED_POST +{ + A_UINT32 range_resolution; + A_UINT32 range_interval; + A_UINT32 ranging_indication_event; + t_nan_geo_fence_descriptor geo_gence_threshold; + +} t_nan_range_config_params, *tp_nan_range_config_params; + +typedef PACKED_PRE struct PACKED_POST +{ + A_UINT32 range_measurement; + A_UINT32 event_type; + A_UINT32 range_id; +} t_nan_range_result_params, *tp_nan_range_result_params; + +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + /* TLV Required: + MANDATORY + 1. MAC_ADDRESS + 2. t_nan_range_result_params + */ + A_UINT8 ptlv[1]; +} t_nan_range_result_ind, *tp_nan_range_result_ind; + +/* This is the TLV used to trigger ranging requests*/ +typedef PACKED_PRE struct PACKED_POST +{ + wlan_nan_mac_addr range_mac_addr; + A_UINT32 range_id; // Match handle in match_ind, publish_id in result ind + A_UINT32 ranging_accept:1; + A_UINT32 ranging_reject:1; + A_UINT32 ranging_cancel:1; + A_UINT32 reserved:29; +} t_nan_range_req_msg, *tp_nan_range_req_msg; + +typedef PACKED_PRE struct PACKED_POST +{ + wlan_nan_mac_addr range_mac_addr; + A_UINT32 range_id; // This will publish_id in case of receiving publish. +} t_nan_range_req_recvd_msg,*tp_nan_range_req_recvd_msg; + +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + /*TLV Required + 1. t_nan_range_req_recvd_msg + */ + A_UINT8 ptlv[1]; +}t_nan_range_req_ind, *tp_nan_range_req_ind; + +/************************** Test Mode ***************************/ + +typedef PACKED_PRE struct PACKED_POST +{ + tNanMsgHeader nanHeader; + /* + * Excludes TLVs + * + * Optional: Nan Availability + * + */ + A_UINT8 ptlv[1]; +} tNanTestModeReqMsg, *tpNanTestModeReqMsg; + +typedef enum { + NAN_DATA_PATH_M4_RESPONSE_ACCEPT = 1, + NAN_DATA_PATH_M4_RESPONSE_REJECT = 2, + NAN_DATA_PATH_M4_RESPONSE_BAD_MIC = 3 +} tNdpM4ResponseType; + +typedef enum { + NAN_SCHED_VALID = 0, + NAN_SCHED_INVALID_BAD_FA = 1, + NAN_SCHED_INVALID_BAD_NDC = 2, + NAN_SCHED_INVALID_BAD_IMMU = 3, +} NanSchedType; + +typedef enum { + NMF_CLEAR_DISABLE = 0, + NMF_CLEAR_ENABLE = 1, +} NMFClearEnable; + +typedef enum +{ + NAN_TEST_MODE_CMD_NAN_AVAILABILITY = 1, + NAN_TEST_MODE_CMD_NDP_INCLUDE_IMMUTABLE = 2, + NAN_TEST_MODE_CMD_NDP_AVOID_CHANNEL = 3, + NAN_TEST_MODE_CMD_NAN_SUPPORTED_BANDS = 4, + NAN_TEST_MODE_CMD_AUTO_RESPONDER_MODE = 5, + NAN_TEST_MODE_CMD_M4_RESPONSE_TYPE = 6, + NAN_TEST_MODE_CMD_NAN_SCHED_TYPE =7, + NAN_TEST_MODE_CMD_NMF_CLEAR_CONFIG =8, + NAN_TEST_MODE_CMD_NAN_SCHED_UPDATE_ULW_NOTIFY = 9, + NAN_TEST_MODE_CMD_NAN_SCHED_UPDATE_NDL_NEGOTIATE = 10, + NAN_TEST_MODE_CMD_NAN_SCHED_UPDATE_NDL_NOTIFY = 11, + NAN_TEST_MODE_CMD_NAN_AVAILABILITY_MAP_ORDER = 12, + NAN_TEST_MODE_CMD_NDL_QOS_TEST = 13, //CONFIG_QoS + NAN_TEST_MODE_CMD_DEVICE_TYPE = 14, + NAN_TEST_MODE_CMD_DISABLE_NDPE = 15, + NAN_TEST_MODE_CMD_ENABLE_NDP = 16, + NAN_TEST_MODE_CMD_DISABLE_IPV6_LINK_LOCAL = 17, + NAN_TEST_MODE_CMD_TRANSPORT_IP_PARAM = 18, + NAN_TEST_MODE_CMD_S3_ATTR_PARAMS = 19, + NAN_TEST_MODE_CMD_SCHED_UPDATE_S3_NOTIFY = 20, + NAN_TEST_MODE_CMD_PMK = 21, +} tNanTestModeCmd; + +typedef PACKED_PRE struct PACKED_POST +{ + A_UINT32 cmd; + /* Followed by command data content (Aligned to A_UINT32 size) + * + * command: NAN_TEST_MODE_CMD_NAN_AVAILABILITY + * content: NAN Avaiability attribute blob + * + * command: NAN_TEST_MODE_CMD_NDP_INCLUDE_IMMUTABLE + * content: A_UINT32 value (0 - Ignore 1 - Include immuatable, 2 - Don't include immutable) + * + * command: NAN_TEST_MODE_CMD_NDP_AVOID_CHANNEL + * content: A_UINT32 channel_frequency; (0 - Ignore) + * + * command: NAN_TEST_MODE_CMD_NAN_SCHED_TYPE + * content: A_UINT32 value; (0 - valid schedule(default) 1 - Bad FA, 2 send bad NDC, 3 - Bad immuatable) + * + * command: NAN_TEST_MODE_CMD_NMF_CLEAR_CONFIG + * content: A_UINT32 value; (0 - Send NMF Encrypted(default), 1 - Send Clear NMF) + * + * command: NAN_TEST_MODE_CMD_NAN_SCHED_UPDATE_ULW_NOTIFY + * content: A_UINT32 channelAvailabilityPresent; (0 - channel availability not present, 1 - channel availability present) + * content: A_UINT32 channelAvailabilityValue; (0 - channel not available, 1 - channel available) + * + * command: NAN_TEST_MODE_CMD_DEVICE_TYPE + * content: A_UINT32 deviceType; (0 - ignore, 1 - TestBed, 2 - DUT) + * + * command: NAN_TEST_MODE_CMD_DISABLE_NDPE + * content: A_UINT32 disableNDPE; (0 - Send NDPE based on NDPE parameters present, 1 - TestBed(Dont include the NDPE attribute)) + * + * command: NAN_TEST_MODE_CMD_ENABLE_NDP + * content: A_UINT32 enableNDP; (0 - Dont send the NDP attribute if we send the NDPE attribute, + * (1 - TestBed(Include the NDP attribute irrespective of the NDP attribute present or not)) + * + * command: NAN_TEST_MODE_CMD_DISABLE_IPV6_LINK_LOCAL + * content: A_UINT32 disableIPv6_linklocal; (0 - Send IPv6 link local based on IPv6 support, 1 - TestBed(Dont include the IPv6 TLV list)) + * + * command: NAN_TEST_MODE_CMD_TRANSPORT_IP_PARAM + * content: struct tNdpTransIpParams + * + * command: NAN_TEST_MODE_CMD_S3_ATTR_PARAMS + * content: struct tNanS3Params + * + * command: NAN_TEST_MODE_CMD_SCHED_UPDATE_S3_NOTIFY + * content: struct tNanS3Params + */ + A_UINT8 data[1]; +} t_nan_test_mode_cmd_params; + +typedef PACKED_PRE struct PACKED_POST +{ + A_UINT32 dfs_master:1; + A_UINT32 ext_key_id:1; + A_UINT32 simu_ndp_data_recept:1; + A_UINT32 ndpe_attr_supp:1; + A_UINT32 reserved:28; +} tNanDevCapAttrCap, *tpNanDevCapAttrCap; + +/***************************************************************/ + +#define NAN_MSG_IPV6_INTF_ADDR_LEN 16 + +typedef struct { + /* Presence of ipv6_intf_addr */ + A_UINT32 ipv6_addr_present; + /* Presence of transport Port */ + A_UINT32 trans_port_present; + /* Presence of transport Protocol */ + A_UINT32 trans_proto_present; + /* ipv6 Interface address */ + A_UINT8 ipv6_intf_addr[NAN_MSG_IPV6_INTF_ADDR_LEN]; + /* Transport Port */ + A_UINT32 transport_port; + /* Transport Protocol */ + A_UINT32 transport_protocol; +} tNdpTransIpParams; + +typedef enum { + NAN_BOOTSTRAPPING_METHOD_PIN_CODE_DISPLAY = 1, + NAN_BOOTSTRAPPING_METHOD_PASSPHRASE_DISPLAY = 2, + NAN_BOOTSTRAPPING_METHOD_QR_CODE_DISPLAY = 3, + NAN_BOOTSTRAPPING_METHOD_NFC_TAG = 4, + NAN_BOOTSTRAPPING_METHOD_KEYPAD_PIN_CODE = 5, + NAN_BOOTSTRAPPING_METHOD_KEYPAD_PASSPHRASE = 6, + NAN_BOOTSTRAPPING_METHOD_QR_CODE_SCAN = 7, + NAN_BOOTSTRAPPING_METHOD_NFC_READER = 8, + /* Bit 9 to 13 reserved */ + NAN_BOOTSTRAPPING_METHOD_SERVICE_MANAGED_BOOTSTRAPPING = 14, + NAN_BOOTSTRAPPING_METHOD_BOOTSTRAPPING_HANDSHAKE_SKIPPED = 15, +} tNaNBootstrappingMethod; + +typedef PACKED_PRE struct PACKED_POST +{ + A_UINT32 pairing_setup_required:1; + A_UINT32 npk_nik_caching_required:1; + A_UINT32 bootstapping_method_bitmap:16; + A_UINT32 reserved:14; +} tNanPairingConfigurationParams, *tpNanPairingConfigurationParams; + +typedef PACKED_PRE struct PACKED_POST +{ + A_UINT32 pairing_setup_required:1; + A_UINT32 npk_nik_caching_required:1; + A_UINT32 bootstapping_method_bitmap:16; + A_UINT32 reserved:14; +} tNanPairingParamsMatchTlv, *tpNanPairingParamsMatchTlv; + +typedef PACKED_PRE struct PACKED_POST +{ + A_UINT8 type; + A_UINT8 status; + A_UINT8 dialog_token; + A_UINT8 reason_code; + A_UINT16 bootstapping_method_bitmap; + A_UINT16 comeback_after; +} tNanBootstrappingParams, *tpNanBootstrappingParams; + +/* NAN Identity Resolution Params */ +typedef PACKED_PRE struct PACKED_POST +{ + A_UINT32 cipher_version:8; + A_UINT32 reserved:24; +} tNanIdentityResolutionParams; + +/* NAN Identity Resolution Indication : HAL -> Target */ +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + tNanIdentityResolutionParams identityresolutionParams; + /* + * Excludes TLVs + * + * Required: Nounce, Tag + */ + A_UINT8 ptlv[1]; +} tNanIdentityResolutionIndMsg, *tpNanIdentityResolutionIndMsg; + +/* NAN pairing roles */ +#define NAN_PAIRING_ROLE_INITIATOR 0 +#define NAN_PAIRING_ROLE_RESPONDER 1 + +/* NAN Pairing Request Params */ +typedef PACKED_PRE struct PACKED_POST +{ + A_UINT32 pairing_handle; + A_UINT32 pairing_role:1; + A_UINT32 pairing_verification:1; + A_UINT32 cipher_suite:8; + A_UINT32 reserved:22; + A_UINT32 reserved2; + /* NOTE: + * This struct cannot be expanded, due to backwards-compatibility + * requirements. + */ +} tNanPairingIndParams; + +/* NAN Pairing Indication : HAL -> Target */ +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + tNanPairingIndParams pairingIndParams; + A_UINT32 reserved[2]; + /* TLVs Required: + * MANDATORY + * 1. MAC_ADDRESS (Peer NMI) + * 2. NM_TK (The TK derived from pairing) + */ + A_UINT8 ptlv[1]; + /* NOTE: + * This struct cannot be expanded, due to the above variable-length array. + */ +} tNanPairingIndMsg, *tpNanPairingIndMsg; + +/* NAN UnPairing Indication : HAL -> Target */ +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + A_UINT32 pairing_handle; +} tNanUnPairingIndMsg, *tpNanUnPairingIndMsg; + +/* NAN OEM REQ */ +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + /* + * TLVs: + * + * Required: OEM request in the form of opaque data blob. + */ + A_UINT8 ptlv[1]; + /* NOTE: + * This struct cannot be expanded, due to the above variable-length array. + */ +} tNanOemReqMsg, *tpNanOemReqMsg; + +/* NAN OEM RSP */ +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + A_UINT16 status; + A_UINT16 value; + /* + * TLVs: + * + * Required: OEM response in the form of opaque data blob. + */ + A_UINT8 ptlv[1]; + /* NOTE: + * This struct cannot be expanded, due to the above variable-length array. + */ +} tNanOemRspMsg, *tpNanOemRspMsg; + +/* NAN OEM IND */ +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + A_UINT16 reserved[2]; + /* + * TLVs: + * + * Required: OEM indication in the form of opaque data blob. + */ + A_UINT8 ptlv[1]; + /* NOTE: + * This struct cannot be expanded, due to the above variable-length array. + */ +} tNanOemIndMsg, *tpNanOemIndMsg; + +typedef struct { + A_UINT32 entry_control:8; + A_UINT32 time_bitmap_control:16; + A_UINT32 reserved:8; + A_UINT32 time_bitmap; +} tNanS3Params, *tpNanS3Params; + +#define NAN_MAX_GROUP_KEY_LEN 32 +#define NAN_MAX_GROUP_KEY_RSC_LEN 6 + +/* NAN Group Key params */ +typedef PACKED_PRE struct PACKED_POST +{ + A_UINT32 key_cipher:16; + A_UINT32 key_idx:8; + A_UINT32 key_len:8; + A_UINT8 key_data[NAN_MAX_GROUP_KEY_LEN]; + A_UINT8 key_rsc[NAN_MAX_GROUP_KEY_RSC_LEN]; +} tNanGroupKeyParamsTlv, *tpNanGroupKeyParamsTlv; + +/* NAN Group Key Install Req Msg */ +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + + /* + * TLVs + * + * Required: MAC address, one or more tNanGroupKeyParamsTlv. + */ + A_UINT8 ptlv[1]; + /* NOTE: + * This struct cannot be expanded, due to the above variable-length array. + */ +} tNanGroupKeyInstallReqMsg, *tpNanGroupKeyInstallReqMsg; + +/* NAN Group Key Install Rsp Msg */ +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + A_UINT16 status; /* tNanStatusType */ + A_UINT16 value; +} tNanGroupKeyInstallRspMsg, *tpNanGroupKeyInstallRspMsg; + +/* NAN Group Key TX PN fetch Req Msg */ +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + A_UINT32 key_idx; +} tNanTxPnReqMsg, *tpNanTxPnReqMsg; + +/* NAN Group Key TX PN fetch Rsp Msg */ +typedef PACKED_PRE struct PACKED_POST +{ + NAN_PLATFORM_MSG_HEADER halHeader; + tNanMsgHeader nanHeader; + A_UINT16 status; /* tNanStatusType */ + A_UINT16 value; + A_UINT8 key_rsc[NAN_MAX_GROUP_KEY_RSC_LEN]; +} tNanTxPnRspMsg, *tpNanTxPnRspMsg; + + +#endif /* WLAN_NAN_MSG_H */ diff --git a/fw/wlan_nan_platform.h b/fw/wlan_nan_platform.h new file mode 100644 index 000000000000..9a201f53aed3 --- /dev/null +++ b/fw/wlan_nan_platform.h @@ -0,0 +1,15 @@ +/* + * Copyright (c) 2024 Qualcomm Innovation Center, Inc. All rights reserved. + * SPDX-License-Identifier: ISC + */ + +#ifndef _WLAN_NAN_PLATFORM_H_ +#define _WLAN_NAN_PLATFORM_H_ + +typedef struct +{ +}NAN_PLATFORM_MSG_HEADER; + +#define WLAN_NAN_MSG_COMMON_HEADER_V2 + +#endif /* _WLAN_NAN_PLATFORM_H_ */ From 5c14792884110e51c39cb584ef3ef942d8c0609d Mon Sep 17 00:00:00 2001 From: spuligil Date: Sat, 24 Aug 2024 12:01:43 -0700 Subject: [PATCH 14/76] fw-api: CL 27465688 - update fw common interface files Change-Id: I5f96310351cc52bd962eec2761d0d324df2ec101 CRs-Fixed: 3830439 --- fw/wmi_unified.h | 12 ++++++++++++ fw/wmi_version.h | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index bb80605f232e..b2a8a421cade 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -5392,6 +5392,12 @@ typedef enum { WMI_HOST_BAND_CAP_6GHZ = 0x04, } WMI_HOST_BAND_CAP; +typedef enum { + WLAN_CONNECT_EXT_FEATURE_RSNO = 0, + + NUM_WLAN_CONNECT_EXT_FEATURES /* keep last */ +} wlan_connect_ext_features; + /* HW features supported info */ /* enum WMI_WIFI_STANDARD are possible values for WiFi standard bitfield */ #define WMI_GET_WIFI_STANDARD(var, feature_bitmap) \ @@ -18936,6 +18942,12 @@ typedef enum { /* Update TWT_UNAVAIL_MODE */ WMI_VDEV_PARAM_TWT_UNAVAIL_MODE, /* 0xC6 */ + /* + * Additional features supported for connection. + * Value is from enum wlan_connect_ext_features + */ + WMI_VDEV_PARAM_CONNECT_EXT_FEATURES, /* 0xC7 */ + /*=== ADD NEW VDEV PARAM TYPES ABOVE THIS LINE === * The below vdev param types are used for prototyping, and are diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 7df73f814166..22ab383bbab7 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_ 1514 +#define __WMI_REVISION_ 1515 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 31e205a87e76b5f25a1732b55e51c5bc9be246dc Mon Sep 17 00:00:00 2001 From: spuligil Date: Wed, 28 Aug 2024 18:01:40 -0700 Subject: [PATCH 15/76] fw-api: CL 27497193 - update fw common interface files Change-Id: I37c824b34e71b50fa8e711e2f4f48813d5596a6a CRs-Fixed: 3830439 --- fw/wmi_unified.h | 22 ++++++++++++++++++++++ fw/wmi_version.h | 2 +- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index b2a8a421cade..1e31a66f1773 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -34020,6 +34020,28 @@ typedef enum { * A_INT8 6G 320M Channel Center Freq 6265 CTL Limit Power OFDMA */ + BIOS_PARAM_TYPE_PPAG_DATA, + /* + * BIOS_PARAM_TYPE_PPAG_DATA Structure has 12 bytes as below, + * antennaGain value unit is 0.25 dBm. + * If Enable flag is 0, FW will not use PPAG antennaGain value of bios. + * + * A_UINT8 version + * A_UINT8 enableFlag + * A_INT8 antennaGain[GAIN_BANDS]; // 9bytes + * A_UINT8 reserved + * ==================== A_INT8 antennaGain[GAIN_BANDS]; ================= + * A_INT8 atennaGain for [2400, 2483) + * A_INT8 atennaGain for [5150, 5250) + * A_INT8 atennaGain for [5250, 5350) + * A_INT8 atennaGain for [5470, 5725) + * A_INT8 atennaGain for [5725, 5895) + * A_INT8 atennaGain for [5925, 6425) + * A_INT8 atennaGain for [6425, 6525) + * A_INT8 atennaGain for [6525, 6875) + * A_INT8 atennaGain for [6875, 7125) + * ============================================================== + */ BIOS_PARAM_TYPE_MAX, } bios_param_type_e; diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 22ab383bbab7..f09f63716521 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_ 1515 +#define __WMI_REVISION_ 1516 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From ba522f048c0aeec49be301e37dc8fe72ff6e78c2 Mon Sep 17 00:00:00 2001 From: spuligil Date: Wed, 28 Aug 2024 18:03:07 -0700 Subject: [PATCH 16/76] fw-api: CL 27510301 - update fw common interface files Change-Id: I69bbd0ba16b4fa7c5cf01728fed4e496646d1775 CRs-Fixed: 3830439 --- fw/wmi_tlv_defs.h | 4 +++- fw/wmi_unified.h | 19 +++++++++++++++++++ fw/wmi_version.h | 2 +- 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index 024814e85140..335352c4feb6 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1449,6 +1449,7 @@ typedef enum { WMITLV_TAG_STRUC_wmi_mlo_peer_tid_to_link_map_event_fixed_param, WMITLV_TAG_STRUC_wmi_usd_service_cmd_fixed_param, WMITLV_TAG_STRUC_wmi_usd_service_event_fixed_param, + WMITLV_TAG_STRUC_wmi_vdev_create_wfdr2_mode_params, } WMITLV_TAG_ID; /* * IMPORTANT: Please add _ALL_ WMI Commands Here. @@ -3557,7 +3558,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_SET_CUSTOM_AGGR_SIZE_CMDID); #define WMITLV_TABLE_WMI_VDEV_CREATE_CMDID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_vdev_create_cmd_fixed_param, wmi_vdev_create_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_vdev_txrx_streams, cfg_txrx_streams, WMITLV_SIZE_VAR) \ - WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_vdev_create_mlo_params, mlo_params, WMITLV_SIZE_VAR) + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_vdev_create_mlo_params, mlo_params, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_vdev_create_wfdr2_mode_params, wfdr2_mode, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_CREATE_CMDID); diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 1e31a66f1773..77adbbc82f67 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -16687,6 +16687,9 @@ typedef struct { * wmi_vdev_create_mlo_params mlo_params[0,1]; * optional TLV, only present for MLO vdev; * if the vdev is not MLO the array length should be 0. + * wmi_vdev_create_wfdr2_mode_params wfdr2_mode[0,1]; + * picked as per WMI_VDEV_CREATE_WFDR2_MODES + * to enable/disable NOA */ } wmi_vdev_create_cmd_fixed_param; @@ -16800,6 +16803,22 @@ typedef struct { wmi_mac_addr mld_macaddr; } wmi_vdev_create_mlo_params; +/* + * this TLV structure is used to pass WFD R2 parameters on vdev create + * to enable/disable NOA + */ +typedef struct { + A_UINT32 tlv_header; /** TLV tag and len; */ + A_UINT32 wfdr2_mode; /** WFD R2 modes as per WMI_VDEV_CREATE_WFDR2_MODES */ +} wmi_vdev_create_wfdr2_mode_params; + +/** VDEV create WFD R2 modes */ +typedef enum { + WMI_VDEV_CREATE_WFDR2_MODE = 0, + WMI_VDEV_CREATE_WFDR2_PCC_MODE = 1, +} WMI_VDEV_CREATE_WFDR2_MODES; + + /* this TLV structure used for pass mlo parameters on vdev start*/ typedef struct { A_UINT32 tlv_header; /** TLV tag and len; */ diff --git a/fw/wmi_version.h b/fw/wmi_version.h index f09f63716521..498e5032fb16 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_ 1516 +#define __WMI_REVISION_ 1517 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 0da0a509649efa1c5436e60d3c44023e1508866b Mon Sep 17 00:00:00 2001 From: spuligil Date: Wed, 28 Aug 2024 18:04:34 -0700 Subject: [PATCH 17/76] fw-api: CL 27518685 - update fw common interface files Change-Id: I0256504a9b399403d9a9b7a5a8c2a30547b046a0 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 77adbbc82f67..d16032ddaa70 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -5377,6 +5377,7 @@ typedef enum { WMI_VENDOR1_REQ1_VERSION_3_40 = 4, WMI_VENDOR1_REQ1_VERSION_4_00 = 5, WMI_VENDOR1_REQ1_VERSION_4_10 = 6, + WMI_VENDOR1_REQ1_VERSION_4_20 = 7, } WMI_VENDOR1_REQ1_VERSION; typedef enum { diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 498e5032fb16..f5be0fb023bc 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_ 1517 +#define __WMI_REVISION_ 1518 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 594f4438ce0738aa8c2faa1c3ea5f1b411157d26 Mon Sep 17 00:00:00 2001 From: spuligil Date: Mon, 2 Sep 2024 06:01:48 -0700 Subject: [PATCH 18/76] fw-api: CL 27552754 - update fw common interface files Change-Id: If65c3c73f72d7228e9b513dd4d290fdc75f99e12 CRs-Fixed: 3830439 --- fw/wmi_services.h | 1 + fw/wmi_unified.h | 1 + fw/wmi_version.h | 2 +- 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/fw/wmi_services.h b/fw/wmi_services.h index 7ce81176e6f1..48121326a076 100644 --- a/fw/wmi_services.h +++ b/fw/wmi_services.h @@ -684,6 +684,7 @@ typedef enum { WMI_SERVICE_IS_TARGET_IPA = 425, WMI_SERVICE_THERM_THROT_TX_CHAIN_MASK = 426, /*FW supports thermal throttling dynamic Tx ChainMask update */ WMI_SERVICE_SPLIT_PHY_PDEV_SUSPEND_RESUME_SUPPORT = 427, /* Indicates FW support pdev suspend/resume in split-phy radio */ + WMI_SERVICE_USD_SUPPORT = 428, /* Indicates FW supports Unsynchronized Service Discovery */ WMI_MAX_EXT2_SERVICE diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index d16032ddaa70..85ca462006cd 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -38126,6 +38126,7 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command) WMI_RETURN_STRING(WMI_SOC_TX_PACKET_CUSTOM_CLASSIFY_CMDID); 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); } return (A_UINT8 *) "Invalid WMI cmd"; diff --git a/fw/wmi_version.h b/fw/wmi_version.h index f5be0fb023bc..b9dc5eae1c6a 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_ 1518 +#define __WMI_REVISION_ 1519 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 646ce46276f622d53353386466c233c858cac236 Mon Sep 17 00:00:00 2001 From: spuligil Date: Fri, 6 Sep 2024 07:46:24 -0700 Subject: [PATCH 19/76] fw-api: CL 27577821 - update fw common interface files Change-Id: I5882e46bad5823fbb2f495e198a4cf8a856c0af7 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 85ca462006cd..ad108db2b5c0 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -25897,6 +25897,15 @@ typedef enum */ WMI_VENDOR_OUI_ACTION_DISABLE_AUXL = 15, + /* + * Used to downgrade to 2 link ML connection for specific AP matchs OUI. + * This is the preferred name, since it specifies that the downgraded + * number of links is 2. + */ + WMI_VENDOR_OUI_ACTION_RESTRICT_MAX_2_MLO_LINKS = 16, + /* alias for the above (less suitable, since it is less precise) */ + WMI_VENDOR_OUI_ACTION_RESTRICT_MAX_MLO_LINKS = + WMI_VENDOR_OUI_ACTION_RESTRICT_MAX_2_MLO_LINKS, /* Add any action before this line */ WMI_VENDOR_OUI_ACTION_MAX_ACTION_ID diff --git a/fw/wmi_version.h b/fw/wmi_version.h index b9dc5eae1c6a..4a0553fa8530 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_ 1519 +#define __WMI_REVISION_ 1520 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 916af9ba1f1f6517f323aabbf2e737f79e91882b Mon Sep 17 00:00:00 2001 From: spuligil Date: Fri, 6 Sep 2024 07:47:58 -0700 Subject: [PATCH 20/76] fw-api: CL 27586781 - update fw common interface files Change-Id: I3c80f4314e19ea6f3dfe970883b7866bf94e604a CRs-Fixed: 3830439 --- fw/wmi_tlv_defs.h | 7 +++++++ fw/wmi_unified.h | 53 ++++++++++++++++++++++++++++++++++++++++++++++- fw/wmi_version.h | 2 +- 3 files changed, 60 insertions(+), 2 deletions(-) diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index 335352c4feb6..161bb7c6f756 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1450,6 +1450,7 @@ typedef enum { WMITLV_TAG_STRUC_wmi_usd_service_cmd_fixed_param, 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_ID; /* * IMPORTANT: Please add _ALL_ WMI Commands Here. @@ -2332,6 +2333,7 @@ typedef enum { OP(WMI_MLO_TLT_SELECTION_FOR_TID_SPRAY_EVENTID) \ OP(WMI_MLO_PEER_TID_TO_LINK_MAP_EVENTID) \ OP(WMI_USD_SERVICE_EVENTID) \ + OP(WMI_PDEV_POWER_BOOST_EVENTID) \ /* add new EVT_LIST elements above this line */ @@ -7734,6 +7736,11 @@ WMITLV_CREATE_PARAM_STRUC(WMI_MLO_PEER_TID_TO_LINK_MAP_EVENTID); 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) WMITLV_CREATE_PARAM_STRUC(WMI_USD_SERVICE_EVENTID); +/* WMI Event used to send Power Boost status update */ +#define WMITLV_TABLE_WMI_PDEV_POWER_BOOST_EVENTID(id,op,buf,len) \ + 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); + #ifdef __cplusplus } diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index ad108db2b5c0..b3d6e22887ac 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -1878,6 +1878,10 @@ typedef enum { /* Event to indicate xLNA is enabled */ WMI_PDEV_ENABLE_XLNA_EVENTID, + /* Event to indicate ANN Power Boost update status from Target */ + WMI_PDEV_POWER_BOOST_EVENTID, + + /* VDEV specific events */ /** VDEV started event in response to VDEV_START request */ WMI_VDEV_START_RESP_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_VDEV), @@ -3525,6 +3529,11 @@ 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 @@ -3672,7 +3681,8 @@ 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 - * Bits 31:17 - Reserved + * Bit 17 - Support for Power Boost capability + * Bits 31:18 - Reserved */ A_UINT32 target_cap_flags; @@ -48969,6 +48979,47 @@ typedef struct { A_UINT32 vdev_id; } wmi_mlo_peer_tid_to_link_map_event_fixed_param; +typedef enum { + WMI_EVENT_POWER_BOOST_START_TRAINING = 0, + WMI_EVENT_POWER_BOOST_ABORT, + WMI_EVENT_POWER_BOOST_COMPLETE, + + WMI_EVENT_POWER_BOOST_MAX +} wmi_pdev_power_boost_event_type; + +typedef struct { + /* WMITLV_TAG_STRUC_wmi_pdev_power_boost_event_fixed_param */ + A_UINT32 tlv_header; + /* to identify for which pdev the event is sent */ + A_UINT32 pdev_id; + /* 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. + */ + A_UINT32 training_stage; + /* MCS value for which the current DPD training has been done */ + A_UINT32 mcs; + /* bandwidth: + * Bandwidth value in Mhz for which the current DPD training has been done + */ + A_UINT32 bandwidth; + /* current target temperature while training the DPD packet in degree C */ + A_INT32 temperature_degreeC; + /* primary channel frequency in MHz for which DPD training is done */ + A_UINT32 primary_chan_mhz; + /** Center frequency 1 in MHz */ + A_UINT32 band_center_freq1; + /** Center frequency 2 in MHz - valid only for 11ac/VHT 80+80 mode */ + A_UINT32 band_center_freq2; + /* phy_mode: + * PHY mode as listed by enum WLAN_PHY_MODE, for which the current DPD + * training has been done + */ + A_UINT32 phy_mode; +} wmi_pdev_power_boost_event_fixed_param; + /* ADD NEW DEFS HERE */ diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 4a0553fa8530..201e4f2fa8a8 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_ 1520 +#define __WMI_REVISION_ 1521 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From f3ad952f359a6feb23100e2573c97b7705707cb9 Mon Sep 17 00:00:00 2001 From: spuligil Date: Sat, 7 Sep 2024 18:01:52 -0700 Subject: [PATCH 21/76] fw-api: CL 27594770 - update fw common interface files Change-Id: Iaa8f2582baa0464b62e4ef78aaa2a38b84d6e9d8 CRs-Fixed: 3830439 --- fw/wmi_services.h | 1 + fw/wmi_unified.h | 2 ++ fw/wmi_version.h | 2 +- 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/fw/wmi_services.h b/fw/wmi_services.h index 48121326a076..75988a3d05a8 100644 --- a/fw/wmi_services.h +++ b/fw/wmi_services.h @@ -685,6 +685,7 @@ typedef enum { WMI_SERVICE_THERM_THROT_TX_CHAIN_MASK = 426, /*FW supports thermal throttling dynamic Tx ChainMask update */ WMI_SERVICE_SPLIT_PHY_PDEV_SUSPEND_RESUME_SUPPORT = 427, /* Indicates FW support pdev suspend/resume in split-phy radio */ 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_MAX_EXT2_SERVICE diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index b3d6e22887ac..16f7b5d56549 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -37188,6 +37188,8 @@ typedef struct { A_UINT32 pout_reduction_25db; /* tx chain mask: Chain mask to apply based on the temp level */ A_UINT32 tx_chain_mask; + /* duty cycle in ms for this level */ + A_UINT32 duty_cycle; } wmi_therm_throt_level_config_info; typedef enum { diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 201e4f2fa8a8..929ac5fa6ce6 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_ 1521 +#define __WMI_REVISION_ 1522 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 220284b6fdde4296024ea323be23bcc87c78c715 Mon Sep 17 00:00:00 2001 From: spuligil Date: Wed, 11 Sep 2024 18:01:36 -0700 Subject: [PATCH 22/76] fw-api: CL 27618422 - update fw common interface files Change-Id: If17803ee2bb947a45850ae8eb7a9843ab680add3 CRs-Fixed: 3830439 --- fw/wmi_services.h | 1 + fw/wmi_unified.h | 1 + fw/wmi_version.h | 2 +- 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/fw/wmi_services.h b/fw/wmi_services.h index 75988a3d05a8..c5d5cb9b6ac6 100644 --- a/fw/wmi_services.h +++ b/fw/wmi_services.h @@ -686,6 +686,7 @@ typedef enum { WMI_SERVICE_SPLIT_PHY_PDEV_SUSPEND_RESUME_SUPPORT = 427, /* Indicates FW support pdev suspend/resume in split-phy radio */ 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_MAX_EXT2_SERVICE diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 16f7b5d56549..e1e2d982ecd3 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -21285,6 +21285,7 @@ typedef struct { #define WMI_PEER_EXT_HE_CAPS_6GHZ_VALID 0x00000008 /* param he_caps_6ghz is valid or not */ #define WMI_PEER_EXT_IS_QUALCOMM_NODE 0x00000010 /* Indicates if the peer connecting is a qualcomm node */ #define WMI_PEER_EXT_IS_MESH_NODE 0x00000020 /* Indicates if the peer connecting is a mesh node */ +#define WMI_PEER_EXT_PROTECTED_TWT 0x00000040 /* Protected TWT operation Support field in Extended RSN Capabilities element */ #define WMI_PEER_EXT_F_CRIT_PROTO_HINT_ENABLED 0x40000000 /** diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 929ac5fa6ce6..7d27c70b84a0 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_ 1522 +#define __WMI_REVISION_ 1523 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 7b0af5dc8d3d372ee13f82378f24afe4d752a34c Mon Sep 17 00:00:00 2001 From: spuligil Date: Wed, 18 Sep 2024 12:01:23 -0700 Subject: [PATCH 23/76] 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 24/76] 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 25/76] 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 26/76] 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 27/76] 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 28/76] 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 29/76] 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 30/76] 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 31/76] 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 32/76] 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 33/76] 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 34/76] 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 35/76] 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 36/76] 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 37/76] 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 38/76] 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 39/76] 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 40/76] 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 41/76] 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 42/76] 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 43/76] 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 44/76] 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 45/76] 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 46/76] 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 47/76] 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 48/76] 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 49/76] 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 50/76] 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 51/76] 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 52/76] 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 53/76] 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 54/76] 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 55/76] 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 56/76] 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 57/76] 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 58/76] 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 59/76] 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 60/76] 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 61/76] 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 62/76] 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 63/76] 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 64/76] 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 65/76] 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 66/76] 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 67/76] 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 68/76] 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 69/76] 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 70/76] 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 71/76] 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 72/76] 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 73/76] 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 74/76] 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 75/76] 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 76/76] 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