git: 51f6f533ba29 - stable/14 - if_bnxt: Update Firmware Header to Latest Version 1.10.2.136

From: Warner Losh <imp_at_FreeBSD.org>
Date: Mon, 03 Jun 2024 19:24:52 UTC
The branch stable/14 has been updated by imp:

URL: https://cgit.FreeBSD.org/src/commit/?id=51f6f533ba29435bd7d23778834f86e66b83f3d3

commit 51f6f533ba29435bd7d23778834f86e66b83f3d3
Author:     Chandrakanth Patil <chandrakanth.patil@broadcom.com>
AuthorDate: 2024-03-06 13:17:50 +0000
Commit:     Warner Losh <imp@FreeBSD.org>
CommitDate: 2024-06-03 19:23:13 +0000

    if_bnxt: Update Firmware Header to Latest Version 1.10.2.136
    
    Update Firmware Header to Latest Version 1.10.2.136.
    
    Reviewed by:            imp
    Approved by:            imp
    Differential revision:  https://reviews.freebsd.org/D42955
    
    (cherry picked from commit 25f38d09907fdfcc473fdc53c17b7c2d8c7c09a1)
---
 sys/dev/bnxt/hsi_struct_def.h | 93714 +++++++++++++++++++++++-----------------
 1 file changed, 53950 insertions(+), 39764 deletions(-)

diff --git a/sys/dev/bnxt/hsi_struct_def.h b/sys/dev/bnxt/hsi_struct_def.h
index 576e1e9a7ed8..d2097ca1ca33 100644
--- a/sys/dev/bnxt/hsi_struct_def.h
+++ b/sys/dev/bnxt/hsi_struct_def.h
@@ -28,8 +28,10 @@
  */
 
 #include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
 /*
- * Copyright(c) 2001-2021, Broadcom. All rights reserved. The
+ * Copyright(c) 2001-2023, Broadcom. All rights reserved. The
  * term Broadcom refers to Broadcom Inc. and/or its subsidiaries.
  * Proprietary and Confidential Information.
  *
@@ -40,8 +42,8 @@
  * DO NOT MODIFY!!! This file is automatically generated.
  */
 
-#ifndef _HSI_STRUCT_DEF_EXTERNAL_H_
-#define _HSI_STRUCT_DEF_EXTERNAL_H_
+#ifndef _HSI_STRUCT_DEF_H_
+#define _HSI_STRUCT_DEF_H_
 
 /* This is the HWRM command header. */
 /* hwrm_cmd_hdr (size:128b/16B) */
@@ -433,6 +435,10 @@ typedef struct hwrm_short_input {
 	((x) == 0xd7 ? "HWRM_PORT_SFP_SIDEBAND_QCFG": \
 	((x) == 0xd8 ? "HWRM_FW_STATE_UNQUIESCE": \
 	((x) == 0xd9 ? "HWRM_PORT_DSC_DUMP": \
+	((x) == 0xda ? "HWRM_PORT_EP_TX_QCFG": \
+	((x) == 0xdb ? "HWRM_PORT_EP_TX_CFG": \
+	((x) == 0xdc ? "HWRM_PORT_CFG": \
+	((x) == 0xdd ? "HWRM_PORT_QCFG": \
 	((x) == 0xe0 ? "HWRM_TEMP_MONITOR_QUERY": \
 	((x) == 0xe1 ? "HWRM_REG_POWER_QUERY": \
 	((x) == 0xe2 ? "HWRM_CORE_FREQUENCY_QUERY": \
@@ -450,7 +456,7 @@ typedef struct hwrm_short_input {
 	((x) == 0xfa ? "HWRM_CFA_METER_INSTANCE_CFG": \
 	((x) == 0xfd ? "HWRM_CFA_VFR_ALLOC": \
 	((x) == 0xfe ? "HWRM_CFA_VFR_FREE": \
-	"Unknown decode" )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) : \
+	"Unknown decode" )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) : \
 	(((x) < 0x180) ? \
 	((x) == 0x100 ? "HWRM_CFA_VF_PAIR_ALLOC": \
 	((x) == 0x101 ? "HWRM_CFA_VF_PAIR_FREE": \
@@ -492,6 +498,8 @@ typedef struct hwrm_short_input {
 	((x) == 0x125 ? "HWRM_CFA_TFLIB": \
 	((x) == 0x126 ? "HWRM_CFA_LAG_GROUP_MEMBER_RGTR": \
 	((x) == 0x127 ? "HWRM_CFA_LAG_GROUP_MEMBER_UNRGTR": \
+	((x) == 0x128 ? "HWRM_CFA_TLS_FILTER_ALLOC": \
+	((x) == 0x129 ? "HWRM_CFA_TLS_FILTER_FREE": \
 	((x) == 0x12e ? "HWRM_ENGINE_CKV_STATUS": \
 	((x) == 0x12f ? "HWRM_ENGINE_CKV_CKEK_ADD": \
 	((x) == 0x130 ? "HWRM_ENGINE_CKV_CKEK_DELETE": \
@@ -531,7 +539,7 @@ typedef struct hwrm_short_input {
 	((x) == 0x163 ? "HWRM_ENGINE_NQ_FREE": \
 	((x) == 0x164 ? "HWRM_ENGINE_ON_DIE_RQE_CREDITS": \
 	((x) == 0x165 ? "HWRM_ENGINE_FUNC_QCFG": \
-	"Unknown decode" ))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) : \
+	"Unknown decode" ))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) : \
 	(((x) < 0x200) ? \
 	((x) == 0x190 ? "HWRM_FUNC_RESOURCE_QCAPS": \
 	((x) == 0x191 ? "HWRM_FUNC_VF_RESOURCE_CFG": \
@@ -549,7 +557,20 @@ typedef struct hwrm_short_input {
 	((x) == 0x19d ? "HWRM_FUNC_PTP_PIN_CFG": \
 	((x) == 0x19e ? "HWRM_FUNC_PTP_CFG": \
 	((x) == 0x19f ? "HWRM_FUNC_PTP_TS_QUERY": \
-	"Unknown decode" )))))))))))))))) : \
+	((x) == 0x1a0 ? "HWRM_FUNC_PTP_EXT_CFG": \
+	((x) == 0x1a1 ? "HWRM_FUNC_PTP_EXT_QCFG": \
+	((x) == 0x1a2 ? "HWRM_FUNC_KEY_CTX_ALLOC": \
+	((x) == 0x1a3 ? "HWRM_FUNC_BACKING_STORE_CFG_V2": \
+	((x) == 0x1a4 ? "HWRM_FUNC_BACKING_STORE_QCFG_V2": \
+	((x) == 0x1a5 ? "HWRM_FUNC_DBR_PACING_CFG": \
+	((x) == 0x1a6 ? "HWRM_FUNC_DBR_PACING_QCFG": \
+	((x) == 0x1a7 ? "HWRM_FUNC_DBR_PACING_BROADCAST_EVENT": \
+	((x) == 0x1a8 ? "HWRM_FUNC_BACKING_STORE_QCAPS_V2": \
+	((x) == 0x1a9 ? "HWRM_FUNC_DBR_PACING_NQLIST_QUERY": \
+	((x) == 0x1aa ? "HWRM_FUNC_DBR_RECOVERY_COMPLETED": \
+	((x) == 0x1ab ? "HWRM_FUNC_SYNCE_CFG": \
+	((x) == 0x1ac ? "HWRM_FUNC_SYNCE_QCFG": \
+	"Unknown decode" ))))))))))))))))))))))))))))) : \
 	(((x) < 0x280) ? \
 	((x) == 0x200 ? "HWRM_SELFTEST_QLIST": \
 	((x) == 0x201 ? "HWRM_SELFTEST_EXEC": \
@@ -568,7 +589,15 @@ typedef struct hwrm_short_input {
 	((x) == 0x20e ? "HWRM_MFG_PARAM_SEEPROM_SYNC": \
 	((x) == 0x20f ? "HWRM_MFG_PARAM_SEEPROM_READ": \
 	((x) == 0x210 ? "HWRM_MFG_PARAM_SEEPROM_HEALTH": \
-	"Unknown decode" ))))))))))))))))) : \
+	((x) == 0x211 ? "HWRM_MFG_PRVSN_EXPORT_CSR": \
+	((x) == 0x212 ? "HWRM_MFG_PRVSN_IMPORT_CERT": \
+	((x) == 0x213 ? "HWRM_MFG_PRVSN_GET_STATE": \
+	((x) == 0x214 ? "HWRM_MFG_GET_NVM_MEASUREMENT": \
+	((x) == 0x215 ? "HWRM_MFG_PSOC_QSTATUS": \
+	((x) == 0x216 ? "HWRM_MFG_SELFTEST_QLIST": \
+	((x) == 0x217 ? "HWRM_MFG_SELFTEST_EXEC": \
+	((x) == 0x218 ? "HWRM_STAT_GENERIC_QSTATS": \
+	"Unknown decode" ))))))))))))))))))))))))) : \
 	(((x) < 0x300) ? \
 	((x) == 0x2bc ? "HWRM_TF": \
 	((x) == 0x2bd ? "HWRM_TF_VERSION_GET": \
@@ -583,6 +612,8 @@ typedef struct hwrm_short_input {
 	((x) == 0x2ce ? "HWRM_TF_SESSION_RESC_FREE": \
 	((x) == 0x2cf ? "HWRM_TF_SESSION_RESC_FLUSH": \
 	((x) == 0x2d0 ? "HWRM_TF_SESSION_RESC_INFO": \
+	((x) == 0x2d1 ? "HWRM_TF_SESSION_HOTUP_STATE_SET": \
+	((x) == 0x2d2 ? "HWRM_TF_SESSION_HOTUP_STATE_GET": \
 	((x) == 0x2da ? "HWRM_TF_TBL_TYPE_GET": \
 	((x) == 0x2db ? "HWRM_TF_TBL_TYPE_SET": \
 	((x) == 0x2dc ? "HWRM_TF_TBL_TYPE_BULK_GET": \
@@ -606,7 +637,33 @@ typedef struct hwrm_short_input {
 	((x) == 0x2fd ? "HWRM_TF_GLOBAL_CFG_GET": \
 	((x) == 0x2fe ? "HWRM_TF_IF_TBL_SET": \
 	((x) == 0x2ff ? "HWRM_TF_IF_TBL_GET": \
-	"Unknown decode" )))))))))))))))))))))))))))))))))))) : \
+	"Unknown decode" )))))))))))))))))))))))))))))))))))))) : \
+	(((x) < 0x400) ? \
+	((x) == 0x380 ? "HWRM_TFC_TBL_SCOPE_QCAPS": \
+	((x) == 0x381 ? "HWRM_TFC_TBL_SCOPE_ID_ALLOC": \
+	((x) == 0x382 ? "HWRM_TFC_TBL_SCOPE_CONFIG": \
+	((x) == 0x383 ? "HWRM_TFC_TBL_SCOPE_DECONFIG": \
+	((x) == 0x384 ? "HWRM_TFC_TBL_SCOPE_FID_ADD": \
+	((x) == 0x385 ? "HWRM_TFC_TBL_SCOPE_FID_REM": \
+	((x) == 0x386 ? "HWRM_TFC_TBL_SCOPE_POOL_ALLOC": \
+	((x) == 0x387 ? "HWRM_TFC_TBL_SCOPE_POOL_FREE": \
+	((x) == 0x388 ? "HWRM_TFC_SESSION_ID_ALLOC": \
+	((x) == 0x389 ? "HWRM_TFC_SESSION_FID_ADD": \
+	((x) == 0x38a ? "HWRM_TFC_SESSION_FID_REM": \
+	((x) == 0x38b ? "HWRM_TFC_IDENT_ALLOC": \
+	((x) == 0x38c ? "HWRM_TFC_IDENT_FREE": \
+	((x) == 0x38d ? "HWRM_TFC_IDX_TBL_ALLOC": \
+	((x) == 0x38e ? "HWRM_TFC_IDX_TBL_ALLOC_SET": \
+	((x) == 0x38f ? "HWRM_TFC_IDX_TBL_SET": \
+	((x) == 0x390 ? "HWRM_TFC_IDX_TBL_GET": \
+	((x) == 0x391 ? "HWRM_TFC_IDX_TBL_FREE": \
+	((x) == 0x392 ? "HWRM_TFC_GLOBAL_ID_ALLOC": \
+	((x) == 0x393 ? "HWRM_TFC_TCAM_SET": \
+	((x) == 0x394 ? "HWRM_TFC_TCAM_GET": \
+	((x) == 0x395 ? "HWRM_TFC_TCAM_ALLOC": \
+	((x) == 0x396 ? "HWRM_TFC_TCAM_ALLOC_SET": \
+	((x) == 0x397 ? "HWRM_TFC_TCAM_FREE": \
+	"Unknown decode" )))))))))))))))))))))))) : \
 	(((x) < 0x480) ? \
 	((x) == 0x400 ? "HWRM_SV": \
 	"Unknown decode" ) : \
@@ -641,6 +698,7 @@ typedef struct hwrm_short_input {
 	((x) == 0xff2b ? "HWRM_DBG_USEQ_RESP_HDR": \
 	"Unknown decode" )))))))))))))))))))))))))))) : \
 	(((x) <= 0xffff) ? \
+	((x) == 0xffec ? "HWRM_NVM_DEFRAG": \
 	((x) == 0xffed ? "HWRM_NVM_REQ_ARBITRATION": \
 	((x) == 0xffee ? "HWRM_NVM_FACTORY_DEFAULTS": \
 	((x) == 0xffef ? "HWRM_NVM_VALIDATE_OPTION": \
@@ -660,8 +718,8 @@ typedef struct hwrm_short_input {
 	((x) == 0xfffd ? "HWRM_NVM_READ": \
 	((x) == 0xfffe ? "HWRM_NVM_WRITE": \
 	((x) == 0xffff ? "HWRM_NVM_RAW_WRITE_BLK": \
-	"Unknown decode" ))))))))))))))))))) : \
-	"Unknown decode" )))))))))
+	"Unknown decode" )))))))))))))))))))) : \
+	"Unknown decode" ))))))))))
 
 
 /*
@@ -864,6 +922,10 @@ typedef struct cmd_nums {
 	#define HWRM_FW_STATE_UNQUIESCE		UINT32_C(0xd8)
 	/* Tells the fw to collect dsc dump on a given port and lane. */
 	#define HWRM_PORT_DSC_DUMP			UINT32_C(0xd9)
+	#define HWRM_PORT_EP_TX_QCFG			UINT32_C(0xda)
+	#define HWRM_PORT_EP_TX_CFG			UINT32_C(0xdb)
+	#define HWRM_PORT_CFG				UINT32_C(0xdc)
+	#define HWRM_PORT_QCFG				UINT32_C(0xdd)
 	#define HWRM_TEMP_MONITOR_QUERY		UINT32_C(0xe0)
 	#define HWRM_REG_POWER_QUERY			UINT32_C(0xe1)
 	#define HWRM_CORE_FREQUENCY_QUERY		UINT32_C(0xe2)
@@ -902,9 +964,7 @@ typedef struct cmd_nums {
 	#define HWRM_CFA_FLOW_FREE			UINT32_C(0x104)
 	/* Experimental */
 	#define HWRM_CFA_FLOW_FLUSH			UINT32_C(0x105)
-	/* Experimental */
 	#define HWRM_CFA_FLOW_STATS			UINT32_C(0x106)
-	/* Experimental */
 	#define HWRM_CFA_FLOW_INFO			UINT32_C(0x107)
 	/* Experimental */
 	#define HWRM_CFA_DECAP_FILTER_ALLOC		UINT32_C(0x108)
@@ -965,6 +1025,10 @@ typedef struct cmd_nums {
 	#define HWRM_CFA_LAG_GROUP_MEMBER_RGTR		UINT32_C(0x126)
 	/* Experimental */
 	#define HWRM_CFA_LAG_GROUP_MEMBER_UNRGTR	UINT32_C(0x127)
+	/* Experimental */
+	#define HWRM_CFA_TLS_FILTER_ALLOC		UINT32_C(0x128)
+	/* Experimental */
+	#define HWRM_CFA_TLS_FILTER_FREE		UINT32_C(0x129)
 	/* Engine CKV - Get the current allocation status of keys provisioned in the key vault. */
 	#define HWRM_ENGINE_CKV_STATUS			UINT32_C(0x12e)
 	/* Engine CKV - Add a new CKEK used to encrypt keys. */
@@ -1075,6 +1139,38 @@ typedef struct cmd_nums {
 	#define HWRM_FUNC_PTP_CFG			UINT32_C(0x19e)
 	/* PTP - Queries for PHC timestamps. */
 	#define HWRM_FUNC_PTP_TS_QUERY			UINT32_C(0x19f)
+	/* PTP - Extended PTP configuration. */
+	#define HWRM_FUNC_PTP_EXT_CFG			UINT32_C(0x1a0)
+	/* PTP - Query extended PTP configuration. */
+	#define HWRM_FUNC_PTP_EXT_QCFG			UINT32_C(0x1a1)
+	/* The command is used to allocate KTLS or QUIC key contexts. */
+	#define HWRM_FUNC_KEY_CTX_ALLOC		UINT32_C(0x1a2)
+	/* The is the new API to configure backing stores. */
+	#define HWRM_FUNC_BACKING_STORE_CFG_V2		UINT32_C(0x1a3)
+	/* The is the new API to query backing store configurations. */
+	#define HWRM_FUNC_BACKING_STORE_QCFG_V2	UINT32_C(0x1a4)
+	/* To support doorbell pacing configuration. */
+	#define HWRM_FUNC_DBR_PACING_CFG		UINT32_C(0x1a5)
+	/* To query doorbell pacing configuration. */
+	#define HWRM_FUNC_DBR_PACING_QCFG		UINT32_C(0x1a6)
+	/*
+	 * To broadcast the doorbell event to the drivers to
+	 * initiate pacing of doorbells.
+	 */
+	#define HWRM_FUNC_DBR_PACING_BROADCAST_EVENT	UINT32_C(0x1a7)
+	/* The is the new API to query backing store capabilities. */
+	#define HWRM_FUNC_BACKING_STORE_QCAPS_V2	UINT32_C(0x1a8)
+	/* To query doorbell pacing NQ id list configuration. */
+	#define HWRM_FUNC_DBR_PACING_NQLIST_QUERY	UINT32_C(0x1a9)
+	/*
+	 * To notify the firmware that recovery cycle has been
+	 * completed by host function drivers.
+	 */
+	#define HWRM_FUNC_DBR_RECOVERY_COMPLETED	UINT32_C(0x1aa)
+	/* Configures SyncE configurations. */
+	#define HWRM_FUNC_SYNCE_CFG			UINT32_C(0x1ab)
+	/* Queries SyncE configurations. */
+	#define HWRM_FUNC_SYNCE_QCFG			UINT32_C(0x1ac)
 	/* Experimental */
 	#define HWRM_SELFTEST_QLIST			UINT32_C(0x200)
 	/* Experimental */
@@ -1112,6 +1208,40 @@ typedef struct cmd_nums {
 	#define HWRM_MFG_PARAM_SEEPROM_READ		UINT32_C(0x20f)
 	/* Tells the fw to get the health of seeprom data */
 	#define HWRM_MFG_PARAM_SEEPROM_HEALTH		UINT32_C(0x210)
+	/*
+	 * The command is used for certificate provisioning to export a
+	 * Certificate Signing Request (CSR) from the device.
+	 */
+	#define HWRM_MFG_PRVSN_EXPORT_CSR		UINT32_C(0x211)
+	/*
+	 * The command is used for certificate provisioning to import a
+	 * CA-signed certificate chain to the device.
+	 */
+	#define HWRM_MFG_PRVSN_IMPORT_CERT		UINT32_C(0x212)
+	/*
+	 * The command is used for certificate provisioning to query the
+	 * provisioned state.
+	 */
+	#define HWRM_MFG_PRVSN_GET_STATE		UINT32_C(0x213)
+	/*
+	 * The command is used to get the hash of the NVM configuration that is
+	 * calculated during firmware boot.
+	 */
+	#define HWRM_MFG_GET_NVM_MEASUREMENT		UINT32_C(0x214)
+	/* Retrieves the PSOC status and provisioning information. */
+	#define HWRM_MFG_PSOC_QSTATUS			UINT32_C(0x215)
+	/*
+	 * This command allows manufacturing tool to determine which selftests
+	 * are available to be run.
+	 */
+	#define HWRM_MFG_SELFTEST_QLIST		UINT32_C(0x216)
+	/*
+	 * This command allows manufacturing tool to request which selftests
+	 * to run.
+	 */
+	#define HWRM_MFG_SELFTEST_EXEC			UINT32_C(0x217)
+	/* Queries the generic stats */
+	#define HWRM_STAT_GENERIC_QSTATS		UINT32_C(0x218)
 	/* Experimental */
 	#define HWRM_TF				UINT32_C(0x2bc)
 	/* Experimental */
@@ -1139,6 +1269,10 @@ typedef struct cmd_nums {
 	/* Experimental */
 	#define HWRM_TF_SESSION_RESC_INFO		UINT32_C(0x2d0)
 	/* Experimental */
+	#define HWRM_TF_SESSION_HOTUP_STATE_SET	UINT32_C(0x2d1)
+	/* Experimental */
+	#define HWRM_TF_SESSION_HOTUP_STATE_GET	UINT32_C(0x2d2)
+	/* Experimental */
 	#define HWRM_TF_TBL_TYPE_GET			UINT32_C(0x2da)
 	/* Experimental */
 	#define HWRM_TF_TBL_TYPE_SET			UINT32_C(0x2db)
@@ -1184,6 +1318,54 @@ typedef struct cmd_nums {
 	#define HWRM_TF_IF_TBL_SET			UINT32_C(0x2fe)
 	/* Experimental */
 	#define HWRM_TF_IF_TBL_GET			UINT32_C(0x2ff)
+	/* TruFlow command to check firmware table scope capabilities. */
+	#define HWRM_TFC_TBL_SCOPE_QCAPS		UINT32_C(0x380)
+	/* TruFlow command to allocate a table scope ID and create the pools. */
+	#define HWRM_TFC_TBL_SCOPE_ID_ALLOC		UINT32_C(0x381)
+	/* TruFlow command to configure the table scope memory. */
+	#define HWRM_TFC_TBL_SCOPE_CONFIG		UINT32_C(0x382)
+	/* TruFlow command to deconfigure a table scope memory. */
+	#define HWRM_TFC_TBL_SCOPE_DECONFIG		UINT32_C(0x383)
+	/* TruFlow command to add a FID to a table scope. */
+	#define HWRM_TFC_TBL_SCOPE_FID_ADD		UINT32_C(0x384)
+	/* TruFlow command to remove a FID from a table scope. */
+	#define HWRM_TFC_TBL_SCOPE_FID_REM		UINT32_C(0x385)
+	/* TruFlow command to allocate a table scope pool. */
+	#define HWRM_TFC_TBL_SCOPE_POOL_ALLOC		UINT32_C(0x386)
+	/* TruFlow command to free a table scope pool. */
+	#define HWRM_TFC_TBL_SCOPE_POOL_FREE		UINT32_C(0x387)
+	/* Experimental */
+	#define HWRM_TFC_SESSION_ID_ALLOC		UINT32_C(0x388)
+	/* Experimental */
+	#define HWRM_TFC_SESSION_FID_ADD		UINT32_C(0x389)
+	/* Experimental */
+	#define HWRM_TFC_SESSION_FID_REM		UINT32_C(0x38a)
+	/* Experimental */
+	#define HWRM_TFC_IDENT_ALLOC			UINT32_C(0x38b)
+	/* Experimental */
+	#define HWRM_TFC_IDENT_FREE			UINT32_C(0x38c)
+	/* TruFlow command to allocate an index table entry */
+	#define HWRM_TFC_IDX_TBL_ALLOC			UINT32_C(0x38d)
+	/* TruFlow command to allocate and set an index table entry */
+	#define HWRM_TFC_IDX_TBL_ALLOC_SET		UINT32_C(0x38e)
+	/* TruFlow command to set an index table entry */
+	#define HWRM_TFC_IDX_TBL_SET			UINT32_C(0x38f)
+	/* TruFlow command to get an index table entry */
+	#define HWRM_TFC_IDX_TBL_GET			UINT32_C(0x390)
+	/* TruFlow command to free an index table entry */
+	#define HWRM_TFC_IDX_TBL_FREE			UINT32_C(0x391)
+	/* TruFlow command to allocate resources for a global id. */
+	#define HWRM_TFC_GLOBAL_ID_ALLOC		UINT32_C(0x392)
+	/* TruFlow command to set TCAM entry. */
+	#define HWRM_TFC_TCAM_SET			UINT32_C(0x393)
+	/* TruFlow command to get TCAM entry. */
+	#define HWRM_TFC_TCAM_GET			UINT32_C(0x394)
+	/* TruFlow command to allocate a TCAM entry. */
+	#define HWRM_TFC_TCAM_ALLOC			UINT32_C(0x395)
+	/* TruFlow command allocate and set TCAM entry. */
+	#define HWRM_TFC_TCAM_ALLOC_SET		UINT32_C(0x396)
+	/* TruFlow command to free a TCAM entry. */
+	#define HWRM_TFC_TCAM_FREE			UINT32_C(0x397)
 	/* Experimental */
 	#define HWRM_SV				UINT32_C(0x400)
 	/* Experimental */
@@ -1241,6 +1423,7 @@ typedef struct cmd_nums {
 	#define HWRM_DBG_USEQ_DELIVERY_REQ		UINT32_C(0xff2a)
 	/* Experimental */
 	#define HWRM_DBG_USEQ_RESP_HDR			UINT32_C(0xff2b)
+	#define HWRM_NVM_DEFRAG			UINT32_C(0xffec)
 	#define HWRM_NVM_REQ_ARBITRATION		UINT32_C(0xffed)
 	/* Experimental */
 	#define HWRM_NVM_FACTORY_DEFAULTS		UINT32_C(0xffee)
@@ -1360,6 +1543,13 @@ typedef struct ret_codes {
 	 * by the host is not allowed due to a secure lock violation.
 	 */
 	#define HWRM_ERR_CODE_RESOURCE_LOCKED		UINT32_C(0x11)
+	/*
+	 * This error code is reported by Firmware when an operation requested
+	 * by a VF cannot be forwarded to the parent PF as required, either
+	 * because the PF is down or otherwise doesn't have an appropriate
+	 * async completion ring or associated forwarding buffers configured.
+	 */
+	#define HWRM_ERR_CODE_PF_UNAVAILABLE		UINT32_C(0x12)
 	/*
 	 * This value indicates that the HWRM response is in TLV format and
 	 * should be interpreted as one or more TLVs starting with the
@@ -1396,7 +1586,8 @@ typedef struct ret_codes {
 	((x) == 0xf ? "HWRM_ERROR": \
 	((x) == 0x10 ? "BUSY": \
 	((x) == 0x11 ? "RESOURCE_LOCKED": \
-	"Unknown decode" )))))))))))))))))) : \
+	((x) == 0x12 ? "PF_UNAVAILABLE": \
+	"Unknown decode" ))))))))))))))))))) : \
 	(((x) < 0x8080) ? \
 	((x) == 0x8000 ? "TLV_ENCAPSULATED_RESPONSE": \
 	"Unknown decode" ) : \
@@ -1479,8 +1670,8 @@ typedef struct hwrm_err_output {
 #define HWRM_VERSION_MINOR 10
 #define HWRM_VERSION_UPDATE 2
 /* non-zero means beta version */
-#define HWRM_VERSION_RSVD 34
-#define HWRM_VERSION_STR "1.10.2.34"
+#define HWRM_VERSION_RSVD 136
+#define HWRM_VERSION_STR "1.10.2.136"
 
 /****************
  * hwrm_ver_get *
@@ -1728,6 +1919,7 @@ typedef struct hwrm_ver_get_output {
 	 * If set to 1, firmware is capable to support flow aging.
 	 * If set to 0, firmware is not capable to support flow aging.
 	 * By default, this flag should be 0 for older version of core firmware.
+	 * (deprecated)
 	 */
 	#define HWRM_VER_GET_OUTPUT_DEV_CAPS_CFG_FLOW_AGING_SUPPORTED			UINT32_C(0x200)
 	/*
@@ -1735,6 +1927,7 @@ typedef struct hwrm_ver_get_output {
 	 * Meter drop counters and EEM counters.
 	 * If set to 0, firmware is not capable to support advanced flow counters.
 	 * By default, this flag should be 0 for older version of core firmware.
+	 * (deprecated)
 	 */
 	#define HWRM_VER_GET_OUTPUT_DEV_CAPS_CFG_ADV_FLOW_COUNTERS_SUPPORTED		UINT32_C(0x400)
 	/*
@@ -1743,6 +1936,7 @@ typedef struct hwrm_ver_get_output {
 	 * If set to 0, firmware is not capable to support the use of the
 	 * CFA EEM feature.
 	 * By default, this flag should be 0 for older version of core firmware.
+	 * (deprecated)
 	 */
 	#define HWRM_VER_GET_OUTPUT_DEV_CAPS_CFG_CFA_EEM_SUPPORTED			UINT32_C(0x800)
 	/*
@@ -1767,6 +1961,11 @@ typedef struct hwrm_ver_get_output {
 	 * core firmware.
 	 */
 	#define HWRM_VER_GET_OUTPUT_DEV_CAPS_CFG_CFA_TRUFLOW_SUPPORTED			UINT32_C(0x4000)
+	/*
+	 * If set to 1, then firmware supports secure boot.
+	 * If set to 0, then firmware doesn't support secure boot.
+	 */
+	#define HWRM_VER_GET_OUTPUT_DEV_CAPS_CFG_SECURE_BOOT_CAPABLE			UINT32_C(0x8000)
 	/*
 	 * This field represents the major version of RoCE firmware.
 	 * A change in major version represents a major release.
@@ -1858,7 +2057,7 @@ typedef struct hwrm_ver_get_output {
 	 * backing store not been available.
 	 * For Example, PCIe hot-plug:
 	 *	Hot plug timing is system dependent. It generally takes up to
-	 *	600 miliseconds for firmware to clear DEV_NOT_RDY flag.
+	 *	600 milliseconds for firmware to clear DEV_NOT_RDY flag.
 	 * If set to 0, device is ready to accept all HWRM commands.
 	 */
 	#define HWRM_VER_GET_OUTPUT_FLAGS_DEV_NOT_RDY		UINT32_C(0x1)
@@ -2019,7 +2218,18 @@ typedef struct hwrm_ver_get_output {
 	 * used with the short cmd request format.
 	 */
 	uint16_t	max_ext_req_len;
-	uint8_t	unused_1[5];
+	/*
+	 * This field returns the maximum request timeout value in seconds.
+	 * For backward compatibility, a value of zero should be interpreted
+	 * as the default value of 40 seconds. Drivers should always honor the
+	 * maximum timeout, but are permitted to warn if a longer duration than
+	 * this default is advertised. Values larger than 40 seconds should
+	 * only be used as a stopgap measure to address a device limitation or
+	 * for the purposes of test and debugging. The long term goal is for
+	 * firmware to significantly reduce this value in the passage of time.
+	 */
+	uint16_t	max_req_timeout;
+	uint8_t	unused_1[3];
 	/*
 	 * This field is used in Output records to indicate that the output
 	 * is completely written to RAM.  This field should be read as '1'
@@ -2341,7 +2551,7 @@ typedef struct cfa_bds_event_collect_cmd_data_msg {
 	uint64_t	host_address;
 } cfa_bds_event_collect_cmd_data_msg_t, *pcfa_bds_event_collect_cmd_data_msg_t;
 
-/* ce_bds_add_data_msg (size:512b/64B) */
+/* ce_bds_add_data_msg (size:576b/72B) */
 
 typedef struct ce_bds_add_data_msg {
 	uint32_t	version_algorithm_kid_opcode;
@@ -2377,9 +2587,8 @@ typedef struct ce_bds_add_data_msg {
 	/*
 	 * Version number of TLS connection. HW will provide registers that
 	 * converts the 4b encoded version number to 16b of actual version
-	 * number in the TLS Header. * Initialized --> By mid-path command *
-	 * Updated --> Never though another mid-path command will result in an
-	 * update.
+	 * number in the TLS Header. This field is initialized/updated by
+	 * this "KTLS crypto add" mid-path command.
 	 */
 	#define CE_BDS_ADD_DATA_MSG_VERSION_MASK		UINT32_C(0xf0000000)
 	#define CE_BDS_ADD_DATA_MSG_VERSION_SFT		28
@@ -2388,18 +2597,15 @@ typedef struct ce_bds_add_data_msg {
 	/* TLS1.3 Version */
 		#define CE_BDS_ADD_DATA_MSG__TLS1_3			(UINT32_C(0x1) << 28)
 		#define CE_BDS_ADD_DATA_MSG__LAST			CE_BDS_ADD_DATA_MSG__TLS1_3
-	/*
-	 * Command Type in the TLS header. HW will provide registers that
-	 * converts the 3b encoded command type to 8b of actual command type in
-	 * the TLS Header. * Initialized --> By mid-path command * Updated -->
-	 * Never though another mid-path command will result in an update
-	 */
-	uint8_t	cmd_type;
-	#define CE_BDS_ADD_DATA_MSG_CMD_TYPE_MASK UINT32_C(0x7)
-	#define CE_BDS_ADD_DATA_MSG_CMD_TYPE_SFT 0
-	/* Application */
-		#define CE_BDS_ADD_DATA_MSG_CMD_TYPE_APP   UINT32_C(0x0)
-		#define CE_BDS_ADD_DATA_MSG_CMD_TYPE_LAST CE_BDS_ADD_DATA_MSG_CMD_TYPE_APP
+	uint8_t	ctx_kind;
+	/* This field selects the context kind for the request. */
+	#define CE_BDS_ADD_DATA_MSG_CTX_KIND_MASK UINT32_C(0x1f)
+	#define CE_BDS_ADD_DATA_MSG_CTX_KIND_SFT  0
+	/* Crypto key transmit context */
+		#define CE_BDS_ADD_DATA_MSG_CTX_KIND_CK_TX  UINT32_C(0x11)
+	/* Crypto key receive context */
+		#define CE_BDS_ADD_DATA_MSG_CTX_KIND_CK_RX  UINT32_C(0x12)
+		#define CE_BDS_ADD_DATA_MSG_CTX_KIND_LAST  CE_BDS_ADD_DATA_MSG_CTX_KIND_CK_RX
 	uint8_t	unused0[3];
 	/*
 	 * Salt is part of the nonce that is used as the Initial Vector (IV) in
@@ -2411,8 +2617,8 @@ typedef struct ce_bds_add_data_msg {
 	 * is zero padded to 12B and then xor'ed with the 4B of salt to generate
 	 * the 12B of IV. This value is initialized by this mid-path command.
 	 */
-	uint32_t	salt;
-	uint32_t	unused1;
+	uint8_t	salt[4];
+	uint8_t	unused1[4];
 	/*
 	 * This field keeps track of the TCP sequence number that is expected as
 	 * the first byte in the next TCP packet. This field is calculated by HW
@@ -2445,19 +2651,24 @@ typedef struct ce_bds_add_data_msg {
 	 * exchanged during the hand-shake protocol by the client-server and
 	 * provided to HW through this mid-path BD.
 	 */
-	uint32_t	session_key[8];
+	uint8_t	session_key[32];
+	/*
+	 * Additional IV that is exchanged as part of sessions setup between
+	 * the two end points. This field is used for TLS1.3 only.
+	 */
+	uint8_t	addl_iv[8];
 } ce_bds_add_data_msg_t, *pce_bds_add_data_msg_t;
 
-/* ce_bds_delete_data_msg (size:64b/8B) */
+/* ce_bds_delete_data_msg (size:32b/4B) */
 
 typedef struct ce_bds_delete_data_msg {
-	uint32_t	kid_opcode;
+	uint32_t	kid_opcode_ctx_kind;
 	/*
 	 * This value selects the operation for the mid-path command for the
 	 * crypto blocks.
 	 */
-	#define CE_BDS_DELETE_DATA_MSG_OPCODE_MASK  UINT32_C(0xf)
-	#define CE_BDS_DELETE_DATA_MSG_OPCODE_SFT   0
+	#define CE_BDS_DELETE_DATA_MSG_OPCODE_MASK	UINT32_C(0xf)
+	#define CE_BDS_DELETE_DATA_MSG_OPCODE_SFT	0
 	/*
 	 * This is the delete command. Using this opcode, the host Driver
 	 * can remove a key context from the CFCK. If context is deleted
@@ -2467,15 +2678,26 @@ typedef struct ce_bds_delete_data_msg {
 	 * receive packets, no crypto operation will be performed,
 	 * payload will be unmodified.
 	 */
-		#define CE_BDS_DELETE_DATA_MSG_OPCODE_DELETE  UINT32_C(0x2)
-		#define CE_BDS_DELETE_DATA_MSG_OPCODE_LAST   CE_BDS_DELETE_DATA_MSG_OPCODE_DELETE
+		#define CE_BDS_DELETE_DATA_MSG_OPCODE_DELETE	UINT32_C(0x2)
+		#define CE_BDS_DELETE_DATA_MSG_OPCODE_LAST	CE_BDS_DELETE_DATA_MSG_OPCODE_DELETE
 	/*
 	 * This field is the Crypto Context ID. The KID is used to store
 	 * information used by the associated kTLS offloaded connection.
 	 */
 	#define CE_BDS_DELETE_DATA_MSG_KID_MASK	UINT32_C(0xfffff0)
 	#define CE_BDS_DELETE_DATA_MSG_KID_SFT	4
-	uint32_t	unused0;
+	/* This field selects the context kind for the request. */
+	#define CE_BDS_DELETE_DATA_MSG_CTX_KIND_MASK   UINT32_C(0x1f000000)
+	#define CE_BDS_DELETE_DATA_MSG_CTX_KIND_SFT	24
+	/* Crypto Key Transmit Context. */
+		#define CE_BDS_DELETE_DATA_MSG_CTX_KIND_CK_TX	(UINT32_C(0x11) << 24)
+	/* Crypto Key Receive Context. */
+		#define CE_BDS_DELETE_DATA_MSG_CTX_KIND_CK_RX	(UINT32_C(0x12) << 24)
+	/* QUIC Key Transmit Context. */
+		#define CE_BDS_DELETE_DATA_MSG_CTX_KIND_QUIC_TX  (UINT32_C(0x14) << 24)
+	/* QUIC Key Receive Context. */
+		#define CE_BDS_DELETE_DATA_MSG_CTX_KIND_QUIC_RX  (UINT32_C(0x15) << 24)
+		#define CE_BDS_DELETE_DATA_MSG_CTX_KIND_LAST	CE_BDS_DELETE_DATA_MSG_CTX_KIND_QUIC_RX
 } ce_bds_delete_data_msg_t, *pce_bds_delete_data_msg_t;
 
 /* ce_bds_resync_resp_ack_msg (size:128b/16B) */
@@ -2596,6 +2818,18 @@ typedef struct crypto_presync_bd_cmd {
 	 * associated with the presync BD.
 	 */
 	#define CRYPTO_PRESYNC_BD_CMD_FLAGS_UPDATE_IN_ORDER_VAR	UINT32_C(0x1)
+	/*
+	 * When packet with an authentication TAG is lost in the network,
+	 * During retransmission Device driver will post the entire record for
+	 * the hardware to recalculate the TAG. Hardware is set to retransmit
+	 * only portions of the record, it does so by looking at the Header
+	 * TCP Sequence Number and Start TCP Sequence Number. However, there
+	 * is a case where the header packet gets dropped in the stack for ex
+	 * BPF packet filter and it is impossible for the Hardware to
+	 * determine if this is a case of full replay for only the TAG
+	 * generation.
+	 */
+	#define CRYPTO_PRESYNC_BD_CMD_FLAGS_FULL_REPLAY_RETRAN	UINT32_C(0x2)
 	uint8_t	unused0;
 	uint16_t	unused1;
 	/*
@@ -2631,7 +2865,7 @@ typedef struct crypto_presync_bd_cmd {
 	uint32_t	end_tcp_seq_num;
 	/*
 	 * For TLS1.2, an explicit nonce is used as part of the IV (concatenated
-	 * with the SALT). For retans packets, this field is extracted from the
+	 * with the SALT). For retrans packets, this field is extracted from the
 	 * TLS record, field right after the TLS Header and stored in the
 	 * context. This field needs to be stored in context as TCP segmentation
 	 * could have split the field into multiple TCP packets. This value is
@@ -2639,7 +2873,7 @@ typedef struct crypto_presync_bd_cmd {
 	 * the first TLS header. When subsequent TLS Headers are detected, the
 	 * value is extracted from packet.
 	 */
-	uint64_t	explicit_nonce;
+	uint8_t	explicit_nonce[8];
 	/*
 	 * This is sequence number for the TLS record in a particular session. In
 	 * TLS1.2, record sequence number is part of the Associated Data (AD) in
@@ -2654,6 +2888,93 @@ typedef struct crypto_presync_bd_cmd {
 	uint64_t	record_seq_num;
 } crypto_presync_bd_cmd_t, *pcrypto_presync_bd_cmd_t;
 
+/* ce_bds_quic_add_data_msg (size:832b/104B) */
+
+typedef struct ce_bds_quic_add_data_msg {
+	uint32_t	ver_algo_kid_opcode;
+	/*
+	 * This value selects the operation for the mid-path command for the
+	 * crypto blocks.
+	 */
+	#define CE_BDS_QUIC_ADD_DATA_MSG_OPCODE_MASK	UINT32_C(0xf)
+	#define CE_BDS_QUIC_ADD_DATA_MSG_OPCODE_SFT	0
+	/*
+	 * This is the add command. Using this opcode, Host Driver can add
+	 * information required for QUIC processing. The information is
+	 * updated in the CFCK context.
+	 */
+		#define CE_BDS_QUIC_ADD_DATA_MSG_OPCODE_ADD		UINT32_C(0x1)
+		#define CE_BDS_QUIC_ADD_DATA_MSG_OPCODE_LAST	CE_BDS_QUIC_ADD_DATA_MSG_OPCODE_ADD
+	/*
+	 * This field is the Crypto Context ID. The KID is used to store
+	 * information used by the associated QUIC offloaded connection.
+	 */
+	#define CE_BDS_QUIC_ADD_DATA_MSG_KID_MASK		UINT32_C(0xfffff0)
+	#define CE_BDS_QUIC_ADD_DATA_MSG_KID_SFT		4
+	/* Algorithm used for encryption and decryption. */
+	#define CE_BDS_QUIC_ADD_DATA_MSG_ALGORITHM_MASK	UINT32_C(0xf000000)
+	#define CE_BDS_QUIC_ADD_DATA_MSG_ALGORITHM_SFT	24
+	/* AES_GCM_128 Algorithm. */
+		#define CE_BDS_QUIC_ADD_DATA_MSG_ALGORITHM_AES_GCM_128  (UINT32_C(0x1) << 24)
+	/* AES_GCM_256 Algorithm. */
+		#define CE_BDS_QUIC_ADD_DATA_MSG_ALGORITHM_AES_GCM_256  (UINT32_C(0x2) << 24)
+	/* Chacha20 Algorithm. */
+		#define CE_BDS_QUIC_ADD_DATA_MSG_ALGORITHM_CHACHA20	(UINT32_C(0x3) << 24)
+		#define CE_BDS_QUIC_ADD_DATA_MSG_ALGORITHM_LAST	CE_BDS_QUIC_ADD_DATA_MSG_ALGORITHM_CHACHA20
+	/* Version number of QUIC connection. */
+	#define CE_BDS_QUIC_ADD_DATA_MSG_VERSION_MASK	UINT32_C(0xf0000000)
+	#define CE_BDS_QUIC_ADD_DATA_MSG_VERSION_SFT	28
+	/* TLS1.2 Version */
+		#define CE_BDS_QUIC_ADD_DATA_MSG__TLS1_2		(UINT32_C(0x0) << 28)
+	/* TLS1.3 Version */
+		#define CE_BDS_QUIC_ADD_DATA_MSG__TLS1_3		(UINT32_C(0x1) << 28)
+	/* DTLS1.2 Version */
+		#define CE_BDS_QUIC_ADD_DATA_MSG__DTLS1_2		(UINT32_C(0x2) << 28)
+	/* DTLS1.2 for RoCE Version */
+		#define CE_BDS_QUIC_ADD_DATA_MSG__DTLS1_2_ROCE	(UINT32_C(0x3) << 28)
+	/* QUIC Version */
+		#define CE_BDS_QUIC_ADD_DATA_MSG__QUIC		(UINT32_C(0x4) << 28)
+		#define CE_BDS_QUIC_ADD_DATA_MSG__LAST		CE_BDS_QUIC_ADD_DATA_MSG__QUIC
+	uint32_t	ctx_kind_dcid_width_key_phase;
+	/* Key phase. */
+	#define CE_BDS_QUIC_ADD_DATA_MSG_KEY_PHASE	UINT32_C(0x1)
+	/* Destination connection ID width. */
+	#define CE_BDS_QUIC_ADD_DATA_MSG_DCID_WIDTH_MASK UINT32_C(0x3e)
+	#define CE_BDS_QUIC_ADD_DATA_MSG_DCID_WIDTH_SFT  1
+	/* This field selects the context kind for the request. */
+	#define CE_BDS_QUIC_ADD_DATA_MSG_CTX_KIND_MASK   UINT32_C(0x7c0)
+	#define CE_BDS_QUIC_ADD_DATA_MSG_CTX_KIND_SFT	6
+	/* QUIC key transmit context */
+		#define CE_BDS_QUIC_ADD_DATA_MSG_CTX_KIND_QUIC_TX  (UINT32_C(0x14) << 6)
+	/* QUIC key receive context */
+		#define CE_BDS_QUIC_ADD_DATA_MSG_CTX_KIND_QUIC_RX  (UINT32_C(0x15) << 6)
+		#define CE_BDS_QUIC_ADD_DATA_MSG_CTX_KIND_LAST	CE_BDS_QUIC_ADD_DATA_MSG_CTX_KIND_QUIC_RX
+	uint64_t	unused_0;
+	/*
+	 * Least-significant 64 bits (of 96) of additional IV that is
+	 * exchanged as part of sessions setup between the two end
+	 * points for QUIC operations.
+	 */
+	uint64_t	quic_iv_lo;
+	/*
+	 * Most-significant 32 bits (of 96) of additional IV that is
+	 * exchanged as part of sessions setup between the two end
+	 * points for QUIC operations.
+	 */
+	uint32_t	quic_iv_hi;
+	uint32_t	unused_1;
+	/*
+	 * Key used for encrypting or decrypting records. The Key is exchanged
+	 * as part of sessions setup between the two end points through this
+	 * mid-path BD.
+	 */
+	uint32_t	session_key[8];
+	/* Header protection key. */
+	uint32_t	hp_key[8];
+	/* Packet number associated with the QUIC connection. */
+	uint64_t	pkt_number;
+} ce_bds_quic_add_data_msg_t, *pce_bds_quic_add_data_msg_t;
+
 /* bd_base (size:64b/8B) */
 
 typedef struct bd_base {
@@ -2696,6 +3017,12 @@ typedef struct bd_base {
 	 * sync command through the fast path and destined for TCE.
 	 */
 		#define BD_BASE_TYPE_TX_BD_PRESYNC_CMD  UINT32_C(0x9)
+	/*
+	 * Indicates a timed transmit BD. This is a 16b BD that is inserted
+	 * into a packet BD chain immediately after the first BD. It is used
+	 * to control the flow in a timed transmit operation.
+	 */
+		#define BD_BASE_TYPE_TX_BD_TIMEDTX	UINT32_C(0xa)
 	/*
 	 * Indicates that this BD is 32B long and is used for
 	 * normal L2 packet transmission.
@@ -2979,10 +3306,22 @@ typedef struct tx_bd_long_hi {
 	 */
 	#define TX_BD_LONG_LFLAGS_NOCRC		UINT32_C(0x4)
 	/*
-	 * If set to 1, the device will record the time at which the packet
-	 * was actually transmitted at the TX MAC for 2-step time sync.
+	 * This bit, in conjunction with the stamp_1step bit, controls whether
+	 * a TX packet timestamp is collected and the type of timestamp that
+	 * is collected.
 	 *
 	 * This bit must be valid on the first BD of a packet.
+	 *
+	 * Enumerations of the concatenation { stamp, stamp_1step } are
+	 * as follows:
+	 *
+	 * - 2'b00: ts_none - no timestamp
+	 * - 2'b01: ts_ptp_1step - 1-step PTP
+	 * - 2'b10: ts_2cmpl - 2-step PTP timestamp or PA timestamp
+	 * - 2'b11: ts_rsvd - reserved, same behavior as ts_none
+	 * For the ts_2cmpl enumeration, an additional completion is returned.
+	 * This additional completion may carry a 2-step PTP timestamp or a PA
+	 * timestamp, depending on parsing of the transmitted packet.
 	 */
 	#define TX_BD_LONG_LFLAGS_STAMP		UINT32_C(0x8)
 	/*
@@ -2991,15 +3330,15 @@ typedef struct tx_bd_long_hi {
 	 * of the packet associated with this descriptor.
 	 *
 	 * For outer UDP checksum, global outer UDP checksum TE_NIC register
-	 * needs to be enabled. If the global outer UDP checksum TE_NIC register
-	 * bit is set, outer UDP checksum will be calculated for the following
-	 * cases:
-	 * 1. Packets with tcp_udp_chksum flag set to offload checksum for inner
-	 * packet AND the inner packet is TCP/UDP. If the inner packet is ICMP for
-	 * example (non-TCP/UDP), even if the tcp_udp_chksum is set, the outer UDP
-	 * checksum will not be calculated.
-	 * 2. Packets with lso flag set which implies inner TCP checksum calculation
-	 * as part of LSO operation.
+	 * needs to be enabled. If the global outer UDP checksum TE_NIC
+	 * register bit is set, outer UDP checksum will be calculated for
+	 * the following cases:
+	 * 1. Packets with tcp_udp_chksum flag set to offload checksum for
+	 * inner packet AND the inner packet is TCP/UDP. If the inner packet
+	 * is ICMP for example (non-TCP/UDP), even if the tcp_udp_chksum is
+	 * set, the outer UDP checksum will not be calculated.
+	 * 2. Packets with lso flag set which implies inner TCP checksum
+	 * calculation as part of LSO operation.
 	 */
 	#define TX_BD_LONG_LFLAGS_T_IP_CHKSUM	UINT32_C(0x10)
 	/*
@@ -3050,6 +3389,11 @@ typedef struct tx_bd_long_hi {
 	 * If set to '1', then the timestamp from the BD is used. If cleared
 	 * to 0, then TWE provides the timestamp.
 	 */
+	/*
+	 * The BD timestamp feature cannot be enabled concurrently with
+	 * cryptography (KTLS), thus lflags.bd_ts_en and lflags.crypto_en
+	 * shall never both be set in a BD.
+	 */
 	#define TX_BD_LONG_LFLAGS_BD_TS_EN	UINT32_C(0x400)
 	/*
 	 * If set to '1', this operation will cause a trace capture in each
@@ -3057,26 +3401,32 @@ typedef struct tx_bd_long_hi {
 	 */
 	#define TX_BD_LONG_LFLAGS_DEBUG_TRACE	UINT32_C(0x800)
 	/*
-	 * If set to '1', the device will record the time at which the packet
-	 * was actually transmitted at the TX MAC for 1-step time sync. This
-	 * bit must be valid on the first BD of a packet.
+	 * This bit, in conjunction with the stamp bit, controls whether a
+	 * TX packet timestamp is collected and the type of timestamp that
+	 * is collected.
+	 *
+	 * See the stamp field for a description of the valid combinations of
+	 * stamp and stamp_1step.
+	 *
+	 * This bit must be valid on the first BD of a packet.
 	 */
 	#define TX_BD_LONG_LFLAGS_STAMP_1STEP	UINT32_C(0x1000)
 	/*
 	 * If set to '1', the controller replaces the Outer-tunnel IP checksum
 	 * field with hardware calculated IP checksum for the IP header of the
 	 * packet associated with this descriptor. For outer UDP checksum, it
-	 * will be the following behavior for all cases independent of settings
-	 * of inner LSO and checksum offload BD flags. If outer UDP checksum
-	 * is 0, then do not update it. If outer UDP checksum is non zero, then
-	 * the hardware should compute and update it.
+	 * will be the following behavior for all cases independent of
+	 * settings of inner LSO and checksum offload BD flags.
+	 * If outer UDP checksum is 0, then do not update it.
+	 * If outer UDP checksum is non zero, then  the hardware should
+	 * compute and update it.
 	 */
 	#define TX_BD_LONG_LFLAGS_OT_IP_CHKSUM	UINT32_C(0x2000)
 	/*
-	 * If set to zero when LSO is '1', then the IPID of the Outer-tunnel IP
-	 * header will not be modified during LSO operations. If set to one
-	 * when LSO is '1', then the IPID of the Outer-tunnel IP header will be
-	 * incremented for each subsequent segment of an LSO operation. The
+	 * If set to zero when LSO is '1', then the IPID of the Outer-tunnel
+	 * IP header will not be modified during LSO operations. If set to one
+	 * when LSO is '1', then the IPID of the Outer-tunnel IP header will
+	 * be incremented for each subsequent segment of an LSO operation. The
 	 * flag is ignored if the LSO packet is a normal (non-tunneled) TCP
 	 * packet.
 	 */
@@ -3085,6 +3435,11 @@ typedef struct tx_bd_long_hi {
 	 * If set to '1', When set to 1, KTLS encryption will be enabled for
 	 * the packet.
 	 */
+	/*
+	 * The BD timestamp feature cannot be enabled concurrently with
+	 * cryptography (KTLS), thus lflags.bd_ts_en and lflags.crypto_en
+	 * shall never both be set in a BD.
+	 */
 	#define TX_BD_LONG_LFLAGS_CRYPTO_EN	UINT32_C(0x8000)
 	uint16_t	kid_or_ts_low_hdr_size;
 	/*
@@ -3100,8 +3455,13 @@ typedef struct tx_bd_long_hi {
 	#define TX_BD_LONG_HDR_SIZE_SFT	0
 	/*
 	 * If lflags.bd_ts_en is 1, this is the lower 7 bits of the 24-bit
-	 * timestamp. If lflags.crypto_en is 1, this is the lower 7 bits of the
-	 * 20-bit KID.
+	 * timestamp. If lflags.crypto_en is 1, this is the lower 7 bits of
+	 * the 20-bit KID.
+	 */
+	/*
+	 * The KID value of all-ones is reserved for non-KTLS packets, which
+	 * only implies that this value must not be used when filling this
+	 * field for crypto packets.
 	 */
 	#define TX_BD_LONG_KID_OR_TS_LOW_MASK UINT32_C(0xfe00)
 	#define TX_BD_LONG_KID_OR_TS_LOW_SFT 9
@@ -3120,6 +3480,11 @@ typedef struct tx_bd_long_hi {
 	 * timestamp. If lflags.crypto_en is 1, the least significant 13 bits
 	 * of this field contain the upper 13 bits of the 20-bit KID.
 	 */
+	/*
+	 * The KID value of all-ones is reserved for non-KTLS packets, which
+	 * only implies that this value must not be used when filling this
+	 * field for crypto packets.
+	 */
 	#define TX_BD_LONG_KID_OR_TS_HIGH_MASK UINT32_C(0xffff8000)
 	#define TX_BD_LONG_KID_OR_TS_HIGH_SFT 15
 	/*
@@ -3197,11 +3562,11 @@ typedef struct tx_bd_long_hi {
 } tx_bd_long_hi_t, *ptx_bd_long_hi_t;
 
 /*
- * This structure is used to inform the NIC of packet data that needs to be
- * transmitted with additional processing that requires extra data such as
- * VLAN insertion plus attached inline data. This BD type may be used to
- * improve latency for small packets needing the additional extended features
- * supported by long BDs.
+ * This structure is used to inform the NIC of packet data that needs to
+ * be transmitted with additional processing that requires extra data
+ * such as VLAN insertion plus attached inline data.
+ * This BD type may be used to improve latency for small packets needing
+ * the additional extended features supported by long BDs.
  */
 /* tx_bd_long_inline (size:256b/32B) */
 
@@ -3266,16 +3631,21 @@ typedef struct tx_bd_long_inline {
 	 *
 	 * This field must be valid on all BDs of a packet.
 	 */
+	/*
+	 * A fatal error will be generated if the value of this field
+	 * does not correspond with the value of flags.bd_cnt. For example, if
+	 * this field carries a value of 20, then bd_cnt must equal 4.
+	 */
 	uint16_t	len;
 	/*
 	 * The opaque data field is passed through to the completion and can be
-	 * used for any data that the driver wants to associate with the transmit
-	 * BD. This field must be valid on the first BD of a packet. If
-	 * completion coalescing is enabled on the TX ring, it is suggested that
-	 * the driver populate the opaque field to indicate the specific TX ring
-	 * with which the completion is associated, then utilize the opaque and
-	 * sq_cons_idx fields in the coalesced completion record to determine
-	 * the specific packets that are to be completed on that ring.
+	 * used for any data that the driver wants to associate with the
+	 * transmit BD. This field must be valid on the first BD of a packet.
+	 * If completion coalescing is enabled on the TX ring, it is suggested
+	 * that the driver populate the opaque field to indicate the specific
+	 * TX ring with which the completion is associated, then utilize the
+	 * opaque and sq_cons_idx fields in the coalesced completion record to
+	 * determine the specific packets that are to be completed on that ring.
 	 *
 	 * This field must be valid on the first BD of a packet.
 	 */
@@ -3347,6 +3717,11 @@ typedef struct tx_bd_long_inline {
 	 * If set to '1', then the timestamp from the BD is used. If cleared
 	 * to 0, then TWE provides the timestamp.
 	 */
+	/*
+	 * The BD timestamp feature cannot be enabled concurrently with
+	 * cryptography (KTLS), thus lflags.bd_ts_en and lflags.crypto_en
+	 * shall never both be set in a BD.
+	 */
 	#define TX_BD_LONG_INLINE_LFLAGS_BD_TS_EN	UINT32_C(0x400)
 	/*
 	 * If set to '1', this operation will cause a trace capture in each
@@ -3382,6 +3757,11 @@ typedef struct tx_bd_long_inline {
 	 * If set to '1', When set to 1, KTLS encryption will be enabled for
 	 * the packet.
 	 */
+	/*
+	 * The BD timestamp feature cannot be enabled concurrently with
+	 * cryptography (KTLS), thus lflags.bd_ts_en and lflags.crypto_en
+	 * shall never both be set in a BD.
+	 */
 	#define TX_BD_LONG_INLINE_LFLAGS_CRYPTO_EN	UINT32_C(0x8000)
 	uint8_t	unused2;
 	uint8_t	kid_or_ts_low;
@@ -3391,6 +3771,11 @@ typedef struct tx_bd_long_inline {
 	 * timestamp. If lflags.crypto_en is 1, this is the lower 7 bits of
 	 * the 20-bit KID.
 	 */
+	/*
+	 * The KID value of all-ones is reserved for non-KTLS packets, which
+	 * only implies that this value must not be used when filling this
+	 * field for crypto packets.
+	 */
 	#define TX_BD_LONG_INLINE_KID_OR_TS_LOW_MASK UINT32_C(0xfe)
 	#define TX_BD_LONG_INLINE_KID_OR_TS_LOW_SFT 1
 	uint32_t	kid_or_ts_high;
@@ -3401,6 +3786,11 @@ typedef struct tx_bd_long_inline {
 	 * timestamp. If lflags.crypto_en is 1, the least significant 13 bits
 	 * of this field contain the upper 13 bits of the 20-bit KID.
 	 */
+	/*
+	 * The KID value of all-ones is reserved for non-KTLS packets, which
+	 * only implies that this value must not be used when filling this
+	 * field for crypto packets.
+	 */
 	#define TX_BD_LONG_INLINE_KID_OR_TS_HIGH_MASK UINT32_C(0xffff8000)
 	#define TX_BD_LONG_INLINE_KID_OR_TS_HIGH_SFT 15
 	/*
@@ -3525,6 +3915,11 @@ typedef struct tx_bd_mp_cmd {
 	 * This value defines the length of command field in bytes. The maximum
 	 * value shall be 496.
 	 */
+	/*
+	 * Note that a fatal error will be generated if the value of this field
*** 106644 LINES SKIPPED ***