소스 검색

Merge d4ed5614bd994fe2f069882c26821dc8ed12079d on remote branch

Change-Id: Iaf404b96e1b4c8f63362fab0bcc51bfb7bc36da5
Linux Build Service Account 1 년 전
부모
커밋
f4c91a8979
8개의 변경된 파일382개의 추가작업 그리고 4개의 파일을 삭제
  1. 3 0
      fw/dbglog.h
  2. 3 1
      fw/htt.h
  3. 232 0
      fw/htt_stats.h
  4. 36 0
      fw/wlan_module_ids.h
  5. 4 0
      fw/wmi_services.h
  6. 14 0
      fw/wmi_tlv_defs.h
  7. 89 2
      fw/wmi_unified.h
  8. 1 1
      fw/wmi_version.h

+ 3 - 0
fw/dbglog.h

@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2012-2016 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2024 Qualcomm Innovation Center, Inc. All rights reserved.
  *
  * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
  *
@@ -32,6 +33,8 @@
 #include "athstartpack.h"
 #endif
 
+#include <a_types.h> /* A_UINT32 */
+#include <a_osapi.h> /* PREPACK */
 #include <wlan_module_ids.h>
 
 #ifdef __cplusplus

+ 3 - 1
fw/htt.h

@@ -262,9 +262,10 @@
  * 3.132 Add flow_classification_3_tuple_field_enable in H2T 3_TUPLE_HASH_CFG.
  * 3.133 Add packet_type_enable_data_flags fields in rx_ring_selection_cfg.
  * 3.134 Add qdata_refill flag in rx_peer_metadata_v1a.
+ * 3.135 Add HTT_HOST4_TO_FW_RXBUF_RING def.
  */
 #define HTT_CURRENT_VERSION_MAJOR 3
-#define HTT_CURRENT_VERSION_MINOR 134
+#define HTT_CURRENT_VERSION_MINOR 135
 
 #define HTT_NUM_TX_FRAG_DESC  1024
 
@@ -5454,6 +5455,7 @@ enum htt_srng_ring_id {
     HTT_RX_MON_MON2HOST_DEST_RING, /* Used by monitor to fill status buffers and provide to host */
     HTT_LPASS_TO_FW_RXBUF_RING,    /* new LPASS to FW refill ring to recycle rx buffers */
     HTT_HOST3_TO_FW_RXBUF_RING,    /* used by host for EasyMesh feature */
+    HTT_HOST4_TO_FW_RXBUF_RING,    /* fourth ring used by host to provide buffers for MGMT packets */
     /* Add Other SRING which can't be directly configured by host software above this line */
 };
 

+ 232 - 0
fw/htt_stats.h

@@ -9142,6 +9142,200 @@ typedef struct {
 /* preserve old name alias for new name consistent with the tag name */
 typedef htt_stats_phy_stats_tlv htt_phy_stats_tlv;
 
+
+#define HTT_STATS_PHY_RESET_CAL_DATA_COMPRESSED_M 0x00000001
+#define HTT_STATS_PHY_RESET_CAL_DATA_COMPRESSED_S 0
+#define HTT_STATS_PHY_RESET_CAL_DATA_COMPRESSED_GET(_var) \
+    (((_var) & HTT_STATS_PHY_RESET_CAL_DATA_COMPRESSED_M) >> \
+     HTT_STATS_PHY_RESET_CAL_DATA_COMPRESSED_S)
+#define HTT_STATS_PHY_RESET_CAL_DATA_COMPRESSED_SET(_var, _val) \
+    do { \
+        HTT_CHECK_SET_VAL(HTT_STATS_PHY_RESET_CAL_DATA_COMPRESSED, _val); \
+        ((_var) |= ((_val) << STATS_PHY_RESET_CAL_DATA_COMPRESSED_S)); \
+    } while (0)
+#define HTT_STATS_PHY_RESET_CAL_DATA_SOURCE_M 0x00000006
+#define HTT_STATS_PHY_RESET_CAL_DATA_SOURCE_S 1
+#define HTT_STATS_PHY_RESET_CAL_DATA_SOURCE_GET(_var) \
+    (((_var) & HTT_STATS_PHY_RESET_CAL_DATA_SOURCE_M) >> \
+     HTT_STATS_PHY_RESET_CAL_DATA_SOURCE_S)
+#define HTT_STATS_PHY_RESET_CAL_DATA_SOURCE_SET(_var, _val) \
+    do { \
+        HTT_CHECK_SET_VAL(HTT_STATS_PHY_RESET_CAL_DATA_SOURCE, _val); \
+        ((_var) |= ((_val) << STATS_PHY_RESET_CAL_DATA_SOURCE_S)); \
+    } while (0)
+#define HTT_STATS_PHY_RESET_XTALCAL_M 0x00000008
+#define HTT_STATS_PHY_RESET_XTALCAL_S 3
+#define HTT_STATS_PHY_RESET_XTALCAL_GET(_var) \
+    (((_var) & HTT_STATS_PHY_RESET_XTALCAL_M) >> \
+     HTT_STATS_PHY_RESET_XTALCAL_S)
+#define HTT_STATS_PHY_RESET_XTALCAL_SET(_var, _val) \
+    do { \
+        HTT_CHECK_SET_VAL(HTT_STATS_PHY_RESET_XTALCAL, _val); \
+        ((_var) |= ((_val) << STATS_PHY_RESET_XTALCAL_S)); \
+    } while (0)
+#define HTT_STATS_PHY_RESET_TPCCAL2GOPC_M 0x00000010
+#define HTT_STATS_PHY_RESET_TPCCAL2GOPC_S 4
+#define HTT_STATS_PHY_RESET_TPCCAL2GOPC_GET(_var) \
+    (((_var) & HTT_STATS_PHY_RESET_TPCCAL2GOPC_M) >> \
+     HTT_STATS_PHY_RESET_TPCCAL2GOPC_S)
+#define HTT_STATS_PHY_RESET_TPCCAL2GOPC_SET(_var, _val) \
+    do { \
+        HTT_CHECK_SET_VAL(HTT_STATS_PHY_RESET_TPCCAL2GOPC, _val); \
+        ((_var) |= ((_val) << STATS_PHY_RESET_TPCCAL2GOPC_S)); \
+    } while (0)
+#define HTT_STATS_PHY_RESET_TPCCAL2GFPC_M 0x00000020
+#define HTT_STATS_PHY_RESET_TPCCAL2GFPC_S 5
+#define HTT_STATS_PHY_RESET_TPCCAL2GFPC_GET(_var) \
+    (((_var) & HTT_STATS_PHY_RESET_TPCCAL2GFPC_M) >> \
+     HTT_STATS_PHY_RESET_TPCCAL2GFPC_S)
+#define HTT_STATS_PHY_RESET_TPCCAL2GFPC_SET(_var, _val) \
+    do { \
+        HTT_CHECK_SET_VAL(HTT_STATS_PHY_RESET_TPCCAL2GFPC, _val); \
+        ((_var) |= ((_val) << STATS_PHY_RESET_TPCCAL2GFPC_S)); \
+    } while (0)
+#define HTT_STATS_PHY_RESET_TPCCAL5GOPC_M 0x00000040
+#define HTT_STATS_PHY_RESET_TPCCAL5GOPC_S 6
+#define HTT_STATS_PHY_RESET_TPCCAL5GOPC_GET(_var) \
+    (((_var) & HTT_STATS_PHY_RESET_TPCCAL5GOPC_M) >> \
+     HTT_STATS_PHY_RESET_TPCCAL5GOPC_S)
+#define HTT_STATS_PHY_RESET_TPCCAL5GOPC_SET(_var, _val) \
+    do { \
+        HTT_CHECK_SET_VAL(HTT_STATS_PHY_RESET_TPCCAL5GOPC, _val); \
+        ((_var) |= ((_val) << STATS_PHY_RESET_TPCCAL5GOPC_S)); \
+    } while (0)
+#define HTT_STATS_PHY_RESET_TPCCAL5GFPC_M 0x00000080
+#define HTT_STATS_PHY_RESET_TPCCAL5GFPC_S 7
+#define HTT_STATS_PHY_RESET_TPCCAL5GFPC_GET(_var) \
+    (((_var) & HTT_STATS_PHY_RESET_TPCCAL5GFPC_M) >> \
+     HTT_STATS_PHY_RESET_TPCCAL5GFPC_S)
+#define HTT_STATS_PHY_RESET_TPCCAL5GFPC_SET(_var, _val) \
+    do { \
+        HTT_CHECK_SET_VAL(HTT_STATS_PHY_RESET_TPCCAL5GFPC, _val); \
+        ((_var) |= ((_val) << STATS_PHY_RESET_TPCCAL5GFPC_S)); \
+    } while (0)
+#define HTT_STATS_PHY_RESET_TPCCAL6GOPC_M 0x00000100
+#define HTT_STATS_PHY_RESET_TPCCAL6GOPC_S 8
+#define HTT_STATS_PHY_RESET_TPCCAL6GOPC_GET(_var) \
+    (((_var) & HTT_STATS_PHY_RESET_TPCCAL6GOPC_M) >> \
+     HTT_STATS_PHY_RESET_TPCCAL6GOPC_S)
+#define HTT_STATS_PHY_RESET_TPCCAL6GOPC_SET(_var, _val) \
+    do { \
+        HTT_CHECK_SET_VAL(HTT_STATS_PHY_RESET_TPCCAL6GOPC, _val); \
+        ((_var) |= ((_val) << STATS_PHY_RESET_TPCCAL6GOPC_S)); \
+    } while (0)
+#define HTT_STATS_PHY_RESET_TPCCAL6GFPC_M 0x00000200
+#define HTT_STATS_PHY_RESET_TPCCAL6GFPC_S 9
+#define HTT_STATS_PHY_RESET_TPCCAL6GFPC_GET(_var) \
+    (((_var) & HTT_STATS_PHY_RESET_TPCCAL6GFPC_M) >> \
+     HTT_STATS_PHY_RESET_TPCCAL6GFPC_S)
+#define HTT_STATS_PHY_RESET_TPCCAL6GFPC_SET(_var, _val) \
+    do { \
+        HTT_CHECK_SET_VAL(HTT_STATS_PHY_RESET_TPCCAL6GFPC, _val); \
+        ((_var) |= ((_val) << STATS_PHY_RESET_TPCCAL6GFPC_S)); \
+    } while (0)
+#define HTT_STATS_PHY_RESET_RXGAINCAL2G_M 0x00000400
+#define HTT_STATS_PHY_RESET_RXGAINCAL2G_S 10
+#define HTT_STATS_PHY_RESET_RXGAINCAL2G_GET(_var) \
+    (((_var) & HTT_STATS_PHY_RESET_RXGAINCAL2G_M) >> \
+     HTT_STATS_PHY_RESET_RXGAINCAL2G_S)
+#define HTT_STATS_PHY_RESET_RXGAINCAL2G_SET(_var, _val) \
+    do { \
+        HTT_CHECK_SET_VAL(HTT_STATS_PHY_RESET_RXGAINCAL2G, _val); \
+        ((_var) |= ((_val) << STATS_PHY_RESET_RXGAINCAL2G_S)); \
+    } while (0)
+#define HTT_STATS_PHY_RESET_RXGAINCAL5G_M 0x00000800
+#define HTT_STATS_PHY_RESET_RXGAINCAL5G_S 11
+#define HTT_STATS_PHY_RESET_RXGAINCAL5G_GET(_var) \
+    (((_var) & HTT_STATS_PHY_RESET_RXGAINCAL5G_M) >> \
+     HTT_STATS_PHY_RESET_RXGAINCAL5G_S)
+#define HTT_STATS_PHY_RESET_RXGAINCAL5G_SET(_var, _val) \
+    do { \
+        HTT_CHECK_SET_VAL(HTT_STATS_PHY_RESET_RXGAINCAL5G, _val); \
+        ((_var) |= ((_val) << STATS_PHY_RESET_RXGAINCAL5G_S)); \
+    } while (0)
+#define HTT_STATS_PHY_RESET_RXGAINCAL6G_M 0x00001000
+#define HTT_STATS_PHY_RESET_RXGAINCAL6G_S 12
+#define HTT_STATS_PHY_RESET_RXGAINCAL6G_GET(_var) \
+    (((_var) & HTT_STATS_PHY_RESET_RXGAINCAL6G_M) >> \
+     HTT_STATS_PHY_RESET_RXGAINCAL6G_S)
+#define HTT_STATS_PHY_RESET_RXGAINCAL6G_SET(_var, _val) \
+    do { \
+        HTT_CHECK_SET_VAL(HTT_STATS_PHY_RESET_RXGAINCAL6G, _val); \
+        ((_var) |= ((_val) << STATS_PHY_RESET_RXGAINCAL6G_S)); \
+    } while (0)
+#define HTT_STATS_PHY_RESET_AOACAL2G_M 0x00002000
+#define HTT_STATS_PHY_RESET_AOACAL2G_S 13
+#define HTT_STATS_PHY_RESET_AOACAL2G_GET(_var) \
+    (((_var) & HTT_STATS_PHY_RESET_AOACAL2G_M) >> \
+     HTT_STATS_PHY_RESET_AOACAL2G_S)
+#define HTT_STATS_PHY_RESET_AOACAL2G_SET(_var, _val) \
+    do { \
+        HTT_CHECK_SET_VAL(HTT_STATS_PHY_RESET_AOACAL2G, _val); \
+        ((_var) |= ((_val) << STATS_PHY_RESET_AOACAL2G_S)); \
+    } while (0)
+#define HTT_STATS_PHY_RESET_AOACAL5G_M 0x00004000
+#define HTT_STATS_PHY_RESET_AOACAL5G_S 14
+#define HTT_STATS_PHY_RESET_AOACAL5G_GET(_var) \
+    (((_var) & HTT_STATS_PHY_RESET_AOACAL5G_M) >> \
+     HTT_STATS_PHY_RESET_AOACAL5G_S)
+#define HTT_STATS_PHY_RESET_AOACAL5G_SET(_var, _val) \
+    do { \
+        HTT_CHECK_SET_VAL(HTT_STATS_PHY_RESET_AOACAL5G, _val); \
+        ((_var) |= ((_val) << STATS_PHY_RESET_AOACAL5G_S)); \
+    } while (0)
+#define HTT_STATS_PHY_RESET_AOACAL6G_M 0x00008000
+#define HTT_STATS_PHY_RESET_AOACAL6G_S 15
+#define HTT_STATS_PHY_RESET_AOACAL6G_GET(_var) \
+    (((_var) & HTT_STATS_PHY_RESET_AOACAL6G_M) >> \
+     HTT_STATS_PHY_RESET_AOACAL6G_S)
+#define HTT_STATS_PHY_RESET_AOACAL6G_SET(_var, _val) \
+    do { \
+        HTT_CHECK_SET_VAL(HTT_STATS_PHY_RESET_AOACAL6G, _val); \
+        ((_var) |= ((_val) << STATS_PHY_RESET_AOACAL6G_S)); \
+    } while (0)
+#define HTT_STATS_PHY_RESET_XTAL_FROM_OTP_M 0x00010000
+#define HTT_STATS_PHY_RESET_XTAL_FROM_OTP_S 16
+#define HTT_STATS_PHY_RESET_XTAL_FROM_OTP_GET(_var) \
+    (((_var) & HTT_STATS_PHY_RESET_XTAL_FROM_OTP_M) >> \
+     HTT_STATS_PHY_RESET_XTAL_FROM_OTP_S)
+#define HTT_STATS_PHY_RESET_XTAL_FROM_OTP_SET(_var, _val) \
+    do { \
+        HTT_CHECK_SET_VAL(HTT_STATS_PHY_RESET_XTAL_FROM_OTP, _val); \
+        ((_var) |= ((_val) << STATS_PHY_RESET_XTAL_FROM_OTP_S)); \
+    } while (0)
+
+#define HTT_STATS_PHY_RESET_GLUT_LINEARITY_M 0x000000FF
+#define HTT_STATS_PHY_RESET_GLUT_LINEARITY_S 0
+#define HTT_STATS_PHY_RESET_GLUT_LINEARITY_GET(_var) \
+    (((_var) & HTT_STATS_PHY_RESET_GLUT_LINEARITY_M) >> \
+     HTT_STATS_PHY_RESET_GLUT_LINEARITY_S)
+#define HTT_STATS_PHY_RESET_GLUT_LINEARITY_SET(_var, _val) \
+    do { \
+        HTT_CHECK_SET_VAL(HTT_STATS_PHY_RESET_GLUT_LINEARITY, _val); \
+        ((_var) |= ((_val) << STATS_PHY_RESET_GLUT_LINEARITY_S)); \
+    } while (0)
+#define HTT_STATS_PHY_RESET_PLUT_LINEARITY_M 0x0000FF00
+#define HTT_STATS_PHY_RESET_PLUT_LINEARITY_S 8
+#define HTT_STATS_PHY_RESET_PLUT_LINEARITY_GET(_var) \
+    (((_var) & HTT_STATS_PHY_RESET_PLUT_LINEARITY_M) >> \
+     HTT_STATS_PHY_RESET_PLUT_LINEARITY_S)
+#define HTT_STATS_PHY_RESET_PLUT_LINEARITY_SET(_var, _val) \
+    do { \
+        HTT_CHECK_SET_VAL(HTT_STATS_PHY_RESET_PLUT_LINEARITY, _val); \
+        ((_var) |= ((_val) << STATS_PHY_RESET_PLUT_LINEARITY_S)); \
+    } while (0)
+#define HTT_STATS_PHY_RESET_WLANDRIVERMODE_M 0x00FF0000
+#define HTT_STATS_PHY_RESET_WLANDRIVERMODE_S 16
+#define HTT_STATS_PHY_RESET_WLANDRIVERMODE_GET(_var) \
+    (((_var) & HTT_STATS_PHY_RESET_WLANDRIVERMODE_M) >> \
+     HTT_STATS_PHY_RESET_WLANDRIVERMODE_S)
+#define HTT_STATS_PHY_RESET_WLANDRIVERMODE_SET(_var, _val) \
+    do { \
+        HTT_CHECK_SET_VAL(HTT_STATS_PHY_RESET_WLANDRIVERMODE, _val); \
+        ((_var) |= ((_val) << STATS_PHY_RESET_WLANDRIVERMODE_S)); \
+    } while (0)
+
+
 typedef struct {
     htt_tlv_hdr_t tlv_hdr;
     /** current pdev_id */
@@ -9260,6 +9454,44 @@ typedef struct {
      * when explicitly requested by the host.
      */
     A_UINT32 nfcal_iteration_counts[3];
+
+    /** Below union indicates the merge status for different cal */
+    union {
+        A_UINT32 calmerge_stats;
+        struct {
+            A_UINT32 CalData_Compressed:1,
+                     CalDataSource:2,
+                     xtalcal:1,
+                     tpccal2GFPC:1,
+                     tpccal2GOPC:1,
+                     tpccal5GFPC:1,
+                     tpccal5GOPC:1,
+                     tpccal6GFPC:1,
+                     tpccal6GOPC:1,
+                     rxgaincal2G:1,
+                     rxgaincal5G:1,
+                     rxgaincal6G:1,
+                     aoacal2G:1,
+                     aoacal5G:1,
+                     aoacal6G:1,
+                     XTAL_from_OTP:1,
+                     rsvd1:15;
+        };
+    };
+    /** Below union lets us know of any non-linearity in plut/glut
+     * and the mode we are in
+     */
+    union {
+        A_UINT32 misc_stats;
+        struct {
+            A_UINT32 GLUT_linearity:8,
+                     PLUT_linearity:8,
+                     WlanDriverMode:8,
+                     rsvd2:8;
+        };
+    };
+    /** BoardId fetched from OTP */
+    A_UINT32 BoardIDfromOTP;
 } htt_stats_phy_reset_stats_tlv;
 /* preserve old name alias for new name consistent with the tag name */
 typedef htt_stats_phy_reset_stats_tlv htt_phy_reset_stats_tlv;

+ 36 - 0
fw/wlan_module_ids.h

@@ -156,6 +156,42 @@ typedef enum {
   WLAN_MODULE_AUX_MAC_MGR,              /* 0x73 */
   WLAN_MODULE_TCAM,                     /* 0x74 */
   WLAN_MODULE_P2P_R2,                   /* 0x75 */
+  WLAN_MODULE_SYSSW,                    /* 0x76 */
+
+  /* HDL MODULE IDS */
+  WLAN_MODULE_PHYLIB_RXDCOCAL,          /* 0x77 */
+  WLAN_MODULE_PHYLIB_COMBCAL,           /* 0x78 */
+  WLAN_MODULE_PHYLIB_TPCCAL,            /* 0x79 */
+  WLAN_MODULE_PHYLIB_BBFILTCAL,         /* 0x7a */
+  WLAN_MODULE_PHYLIB_PKTDETCAL,         /* 0x7b */
+  WLAN_MODULE_PHYLIB_PAPRDCAL,          /* 0x7c */
+  WLAN_MODULE_PHYLIB_NFCAL,             /* 0x7d */
+  WLAN_MODULE_PHYLIB_ADCCAL,            /* 0x7e */
+  WLAN_MODULE_PHYLIB_DACCAL,            /* 0x7f */
+  WLAN_MODULE_PHYLIB_PALCAL,            /* 0x80 */
+  WLAN_MODULE_PHYLIB_RXGAINCAL,         /* 0x81 */
+  WLAN_MODULE_PHYLIB_CALUTILS,          /* 0x82 */
+  WLAN_MODULE_PHYLIB_PHYRESET,          /* 0x83 */
+  WLAN_MODULE_PHYLIB_RFACONFIG,         /* 0x84 */
+  WLAN_MODULE_PHYLIB_SETCHAINMASK,      /* 0x85 */
+  WLAN_MODULE_PHYLIB_SETXBAR,           /* 0x86 */
+  WLAN_MODULE_PHYLIB_M3,                /* 0x87 */
+  WLAN_MODULE_PHYLIB_COMMON,            /* 0x88 */
+  WLAN_MODULE_PHYLIB_SPURMITT,          /* 0x89 */
+  WLAN_MODULE_PHYLIB_RTT,               /* 0x8a */
+  WLAN_MODULE_PHYLIB_FTPG,              /* 0x8b */
+  WLAN_MODULE_PHYLIB_RSTCAL,            /* 0x8c */
+  WLAN_MODULE_PHYLIB_RXBBFCAL,          /* 0x8d */
+  WLAN_MODULE_PHYLIB_TIADCCAL,          /* 0x8e */
+  WLAN_MODULE_PHYLIB_IM2CAL,            /* 0x8f */
+  WLAN_MODULE_PHYLIB_PACCAL,            /* 0x90 */
+  WLAN_MODULE_PHYLIB_PDCCAL,            /* 0x91 */
+  WLAN_MODULE_PHYLIB_SPURCAL,           /* 0x92 */
+  WLAN_MODULE_PHYLIB_PHYDBG,            /* 0x93 */
+  WLAN_MODULE_PHYLIB_RRI,               /* 0x94 */
+  WLAN_MODULE_PHYLIB_SSCAN,             /* 0x95 */
+  WLAN_MODULE_PHYLIB_RSVD,              /* 0x96 */
+
 
   WLAN_MODULE_ID_MAX,
   WLAN_MODULE_ID_INVALID = WLAN_MODULE_ID_MAX,

+ 4 - 0
fw/wmi_services.h

@@ -670,6 +670,10 @@ typedef  enum  {
     WMI_SERVICE_USE_STA_VDEV_FOR_P2P_DEVICE = 416, /* FW supports use of sta vdev to be repurposed for p2p device */
     WMI_SERVICE_AP_ASSISTED_DFS_CHAN_P2P_SESSION = 417, /* FW supports P2P session on DFS chan enabled by DFS master AP */
     WMI_SERVICE_MLO_SAP_EMLSR_SUPPORT = 418, /* Indicates FW MLO SAP supports EMLSR Mode */
+    WMI_SERVICE_PKTLOG_ML_TSTMP_SUPPORT = 419, /* Indicates ML timestamp for pktlog */
+    WMI_SERVICE_MGMT_SRNG_SUPPORT = 420, /* FW supports MGMT frame forwarding via host provided SRNG instead of WMI */
+    WMI_SERVICE_WDS_NULL_FRAME_SUPPORT = 421,
+    WMI_SERVICE_MLO_SAP_CONCURRENCY_SUPPORT = 422, /* Indicates FW supports MLO SAP+STA Concurrency */
 
 
     WMI_MAX_EXT2_SERVICE

+ 14 - 0
fw/wmi_tlv_defs.h

@@ -1441,6 +1441,8 @@ typedef enum {
     WMITLV_TAG_STRUC_wmi_p2p_cli_dfs_ap_bmiss_fixed_param,
     WMITLV_TAG_STRUC_wmi_p2p_go_dfs_ap_config_fixed_param,
     WMITLV_TAG_STRUC_wmi_twt_vdev_config_cmd_fixed_param,
+    WMITLV_TAG_STRUC_wmi_mgmt_srng_reap_event_fixed_param,
+    WMITLV_TAG_STRUC_wmi_mlo_tlt_selection_for_tid_spray_event_fixed_param,
 } WMITLV_TAG_ID;
 /*
  * IMPORTANT: Please add _ALL_ WMI Commands Here.
@@ -2318,6 +2320,8 @@ typedef enum {
     OP(WMI_PDEV_ENABLE_XLNA_EVENTID) \
     OP(WMI_REG_CHAN_LIST_CC_EXT2_EVENTID) \
     OP(WMI_P2P_CLI_DFS_AP_BMISS_DETECTED_EVENTID) \
+    OP(WMI_MGMT_SRNG_REAP_EVENTID) \
+    OP(WMI_MLO_TLT_SELECTION_FOR_TID_SPRAY_EVENTID) \
     /* add new EVT_LIST elements above this line */
 
 
@@ -7577,6 +7581,11 @@ WMITLV_CREATE_PARAM_STRUC(WMI_MLO_LINK_REMOVAL_CMDID);
     WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mlo_link_removal_tbtt_update, wmi_mlo_link_removal_tbtt_update, tbtt_update, WMITLV_SIZE_FIX)
 WMITLV_CREATE_PARAM_STRUC(WMI_MLO_LINK_REMOVAL_EVENTID);
 
+/* WMI MLO TLT selection for 3+ link TID spray update event */
+#define WMITLV_TABLE_WMI_MLO_TLT_SELECTION_FOR_TID_SPRAY_EVENTID(id,op,buf,len) \
+    WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mlo_tlt_selection_for_tid_spray_event_fixed_param, wmi_mlo_tlt_selection_for_tid_spray_event_fixed_param, fixed_param, WMITLV_SIZE_FIX)
+WMITLV_CREATE_PARAM_STRUC(WMI_MLO_TLT_SELECTION_FOR_TID_SPRAY_EVENTID);
+
 /* WMI MLO T2LM Vdev event */
 #define WMITLV_TABLE_WMI_MLO_AP_VDEV_TID_TO_LINK_MAP_EVENTID(id,op,buf,len) \
     WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mlo_ap_vdev_tid_to_link_map_evt_fixed_param, wmi_mlo_ap_vdev_tid_to_link_map_evt_fixed_param, fixed_param, WMITLV_SIZE_FIX)
@@ -7690,6 +7699,11 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_WIFI_RADAR_CAL_COMPLETION_STATUS_EVENTID);
     WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_enable_xlna_event_fixed_param, wmi_pdev_enable_xlna_event_fixed_param, fixed_param, WMITLV_SIZE_FIX)
 WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_ENABLE_XLNA_EVENTID);
 
+/* Bcn and Prb over new SRNG */
+#define WMITLV_TABLE_WMI_MGMT_SRNG_REAP_EVENTID(id,op,buf,len) \
+    WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mgmt_srng_reap_event_fixed_param, wmi_mgmt_srng_reap_event_fixed_param, fixed_param, WMITLV_SIZE_FIX)
+WMITLV_CREATE_PARAM_STRUC(WMI_MGMT_SRNG_REAP_EVENTID);
+
 
 #ifdef __cplusplus
 }

+ 89 - 2
fw/wmi_unified.h

@@ -2041,6 +2041,9 @@ typedef enum {
     /** WMI event for Firmware Consumed/Dropped Rx management frames indication */
     WMI_MGMT_RX_FW_CONSUMED_EVENTID,
 
+    /** WMI event for indication to Host to reap the MGMT SRNG */
+    WMI_MGMT_SRNG_REAP_EVENTID,
+
 
     /* ADDBA Related WMI Events*/
     /** Indication the completion of the prior
@@ -2522,6 +2525,8 @@ typedef enum {
     WMI_MLO_LINK_STATE_SWITCH_EVENTID,
     /** WMI Event to sync link info to host */
     WMI_MLO_LINK_INFO_SYNC_EVENTID,
+    /** WMI Event to announce host about the TLT update for TID */
+    WMI_MLO_TLT_SELECTION_FOR_TID_SPRAY_EVENTID,
 
     /* WMI event specific to Quiet handling */
     WMI_QUIET_HANDLING_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_QUIET_OFL),
@@ -4631,8 +4636,17 @@ typedef struct {
      *      0 -> disable the feature
      *      1 -> enable the feature
      *      Refer to the below WMI_RSRC_CFG_FLAGS2_EPM_GET/SET macros.
+     *  Bit 21 - enable new MGMT SRNG for beacons and probe responses.
+     *      0 -> disable the feature
+     *      1 -> enable the feature
+     *      Refer to the below WMI_RSRC_CFG_FLAGS2_IS_MGMT_SRNG_ENABLED_GET/SET
+     *      macros.
+     *  Bit 22 - enable 4address WDS support
+     *      0 -> disable the feature
+     *      1 -> enable the feature
+     *     Refer to below WMI_RSRC_CFG_FLAGS2_ENABLE_WDS_NULL_FRAME_SUPPORT
      *
-     *  Bits 31:21 - Reserved
+     *  Bits 31:23 - Reserved
      */
     A_UINT32 flags2;
     /** @brief host_service_flags - can be used by Host to indicate
@@ -4750,7 +4764,13 @@ typedef struct {
      *      Refer to the below definitions of the
      *      WMI_RSRC_CFG_HOST_SERVICE_FLAG_ML_FULL_MONITOR_MODE_SUPPORT_GET
      *      and _SET macros
-     *  Bits 31:17 - Reserved
+     *  Bit 17
+     *      This bit will set by host to inform FW that rx buffer refilling
+     *      is supported by the host in Qdata feature (tx LCE consent pkt),
+     *      So FW will start refilling the buffers.
+     *      Refer to the below definitions of WMI_RSRC_CFG_HOST_SERVICE_FLAG
+     *      OPT_DP_CTRL_REPLENISH_REFILL_RX_BUFFER_SUPPORT_GET and _SET macros.
+     *  Bits 31:18 - Reserved
      */
     A_UINT32 host_service_flags;
 
@@ -5132,6 +5152,17 @@ typedef struct {
 #define WMI_RSRC_CFG_FLAGS2_EPM_SET(flags2, value) \
     WMI_SET_BITS(flags2, 20, 1, value)
 
+#define WMI_RSRC_CFG_FLAGS2_IS_MGMT_SRNG_ENABLED_GET(flags2) \
+    WMI_GET_BITS(flags2, 21, 1)
+#define WMI_RSRC_CFG_FLAGS2_IS_MGMT_SRNG_ENABLED_SET(flags2, value) \
+    WMI_SET_BITS(flags2, 21, 1, value)
+
+#define WMI_RSRC_CFG_FLAGS2_ENABLE_WDS_NULL_FRAME_SUPPORT_GET(flags2) \
+    WMI_GET_BITS(flags2, 22, 1)
+#define WMI_RSRC_CFG_FLAGS2_ENABLE_WDS_NULL_FRAME_SUPPORT_SET(flags2, value) \
+    WMI_SET_BITS(flags2, 22, 1, value)
+
+
 #define WMI_RSRC_CFG_HOST_SERVICE_FLAG_NAN_IFACE_SUPPORT_GET(host_service_flags) \
     WMI_GET_BITS(host_service_flags, 0, 1)
 #define WMI_RSRC_CFG_HOST_SERVICE_FLAG_NAN_IFACE_SUPPORT_SET(host_service_flags, val) \
@@ -5226,6 +5257,11 @@ typedef struct {
 #define WMI_RSRC_CFG_HOST_SERVICE_FLAG_ML_FULL_MONITOR_MODE_SUPPORT_SET(host_service_flags, val) \
         WMI_SET_BITS(host_service_flags, 16, 1, val)
 
+/* This bit is used to inform FW to provide refill buffers in Qdata feature */
+#define WMI_RSRC_CFG_HOST_SERVICE_FLAG_OPT_DP_CTRL_REPLENISH_REFILL_RX_BUFFER_SUPPORT_GET(host_service_flags) \
+        WMI_GET_BITS(host_service_flags, 17, 1)
+#define WMI_RSRC_CFG_HOST_SERVICE_FLAG_OPT_DP_CTRL_REPLENISH_REFILL_RX_BUFFER_SUPPORT_SET(host_service_flags, val) \
+        WMI_SET_BITS(host_service_flags, 17, 1, val)
 
 #define WMI_RSRC_CFG_CARRIER_CFG_CHARTER_ENABLE_GET(carrier_config) \
     WMI_GET_BITS(carrier_config, 0, 1)
@@ -9657,6 +9693,7 @@ typedef enum {
     /** configure datastall consecutive no ack threshold */
     WMI_PDEV_PARAM_DSTALL_CONSECUTIVE_TX_NO_ACK_THRESHOLD,
 
+    WMI_PDEV_PARAM_MGMT_SRNG_REAP_EVENT_THRESHOLD,
 } WMI_PDEV_PARAM;
 
 #define WMI_PDEV_ONLY_BSR_TRIG_IS_ENABLED(trig_type) WMI_GET_BITS(trig_type, 0, 1)
@@ -36925,6 +36962,8 @@ typedef struct {
      * For example, a value of 5 causes a power reduction of 1.25 dB.
      */
     A_UINT32 pout_reduction_25db;
+    /* tx chain mask: Chain mask to apply based on the temp level */
+    A_UINT32 tx_chain_mask;
 } wmi_therm_throt_level_config_info;
 
 typedef enum {
@@ -41020,6 +41059,7 @@ typedef struct {
 
 typedef enum {
     WMI_ROAM_MSG_RSSI_RECOVERED = 1, /* Connected AP RSSI is recovered to good region */
+    WMI_ROAM_MSG_CONNECTED_IN_POOR_RSSI = 2, /* DUT connected to AP whose RSSI is below low RSSI threshold */
 } WMI_ROAM_MSG_ID;
 
 typedef struct {
@@ -46524,6 +46564,39 @@ typedef struct {
     A_UINT32 disabled_link_bitmap;
 } wmi_mlo_ap_vdev_tid_to_link_map_ie_info;
 
+#define WMI_NUM_TID_PER_AC 2
+typedef struct {
+    /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_mlo_link_removal_evt_fixed_param */
+    A_UINT32 tlv_header;
+    wmi_mac_addr mld_mac;
+    /* hwlink_priority:
+     * Based on capacity, hw chip is ordered here.
+     * hwlink_priority[0] holds the HW chip ID which is the top priority,
+     * hwlink_priority[1] holds the HW chip ID which is the 2nd priority,
+     * etc.
+     */
+    A_UINT32 hwlink_priority[WMI_MAX_NUM_MLO_LINKS];
+    /* link_bmap:
+     * Bitmap segments for the primary TIDs (0/1/4/6)
+     * are provided in link_bmap[0].
+     * Bitmap segments for the secondary TIDs (3/2/5/7)
+     * are provided in link_bmap[1].
+     * link_bmap[0]:
+     *     bits  4:0  are used to indicate which links are used for TID 0
+     *     bits  9:5  are used to indicate which links are used for TID 1
+     *     bits 14:10 are used to indicate which links are used for TID 4
+     *     bits 19:15 are used to indicate which links are used for TID 6
+     *     bits 31:20 are unused
+     * link_bmap[0]:
+     *     bits  4:0  are used to indicate which links are used for TID 3
+     *     bits  9:5  are used to indicate which links are used for TID 2
+     *     bits 14:10 are used to indicate which links are used for TID 5
+     *     bits 19:15 are used to indicate which links are used for TID 7
+     *     bits 31:20 are unused
+     */
+    A_UINT32 link_bmap[WMI_NUM_TID_PER_AC];
+} wmi_mlo_tlt_selection_for_tid_spray_event_fixed_param;
+
 #define WMI_IGMP_OFFLOAD_SUPPORT_DISABLE_BITMASK    0x0
 #define WMI_IGMP_V1_OFFLOAD_SUPPORT_BITMASK         0x1
 #define WMI_IGMP_V2_OFFLOAD_SUPPORT_BITMASK         0x2
@@ -48614,6 +48687,20 @@ typedef struct {
     A_UINT32 is_ap_suspend; /* 1 = suspend, 0 = resume */
 } wmi_set_ap_suspend_resume_fixed_param;
 
+typedef struct {
+    /** TLV tag and len; tag equals
+     * WMITLV_TAG_STRUC_wmi_mgmt_srng_reap_event_fixed_param */
+    A_UINT32 tlv_header;
+    /** timestamp_tp_update_ms:
+     * This indicates the last time the tail pointer was updated by FW
+     * after filling MGMT SRNG entry.
+     * The timestamp is from the FW CPU's internal clock, in milliseconds units.
+     */
+    A_UINT32 timestamp_tp_update_ms;
+    /** This indicates the position of the tail pointer as last updated by FW */
+    A_UINT32 tail_pointer;
+} wmi_mgmt_srng_reap_event_fixed_param;
+
 
 
 /* ADD NEW DEFS HERE */

+ 1 - 1
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_ 1490
+#define __WMI_REVISION_ 1497
 
 /** The Version Namespace should not be normally changed. Only
  *  host and firmware of the same WMI namespace will work