The branch main has been updated by ssaxena:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=25f38d09907fdfcc473fdc53c17b7c2d8c7c09a1

commit 25f38d09907fdfcc473fdc53c17b7c2d8c7c09a1
Author:     Chandrakanth Patil <[email protected]>
AuthorDate: 2024-03-06 13:17:50 +0000
Commit:     Sumit Saxena <[email protected]>
CommitDate: 2024-03-07 19:16:39 +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
---
 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
+        * 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 3.
*** 106642 LINES SKIPPED ***

Reply via email to