]> git.ipfire.org Git - thirdparty/ipxe.git/commitdiff
[bnxt] Add driver support for Broadcom NetXtreme-E Adapters
authorJoseph Wong <joseph.wong@broadcom.com>
Tue, 30 Apr 2019 21:17:04 +0000 (14:17 -0700)
committerMichael Brown <mcb30@ipxe.org>
Wed, 6 May 2020 14:41:45 +0000 (15:41 +0100)
Signed-off-by: Joseph Wong <joseph.wong@broadcom.com>
src/Makefile
src/drivers/net/bnxt/bnxt.c [new file with mode: 0644]
src/drivers/net/bnxt/bnxt.h [new file with mode: 0644]
src/drivers/net/bnxt/bnxt_dbg.h [new file with mode: 0644]
src/drivers/net/bnxt/bnxt_hsi.h [new file with mode: 0644]

index a84efd6d66a31006abb725111f228c8cc2b8d9a3..758db7e1fc8415b4ec02308054ffc8ba51553ea3 100644 (file)
@@ -74,6 +74,7 @@ SRCDIRS               += drivers/net/phantom
 SRCDIRS                += drivers/net/vxge
 SRCDIRS                += drivers/net/efi
 SRCDIRS                += drivers/net/tg3
+SRCDIRS                += drivers/net/bnxt
 SRCDIRS                += drivers/net/sfc
 SRCDIRS                += drivers/block
 SRCDIRS                += drivers/nvs
diff --git a/src/drivers/net/bnxt/bnxt.c b/src/drivers/net/bnxt/bnxt.c
new file mode 100644 (file)
index 0000000..e6bceb9
--- /dev/null
@@ -0,0 +1,2170 @@
+
+FILE_LICENCE ( GPL2_ONLY );
+
+#include <mii.h>
+#include <stdio.h>
+#include <errno.h>
+#include <unistd.h>
+#include <byteswap.h>
+#include <ipxe/pci.h>
+#include <ipxe/iobuf.h>
+#include <ipxe/timer.h>
+#include <ipxe/malloc.h>
+#include <ipxe/if_ether.h>
+#include <ipxe/ethernet.h>
+#include <ipxe/netdevice.h>
+#include "bnxt.h"
+#include "bnxt_dbg.h"
+
+static void bnxt_service_cq ( struct net_device *dev );
+static void bnxt_tx_complete ( struct net_device *dev, u16 hw_idx );
+static void bnxt_adv_cq_index ( struct bnxt *bp, u16 cnt );
+static void bnxt_adv_cq_index ( struct bnxt *bp, u16 cnt );
+static int bnxt_rx_complete ( struct net_device *dev, struct rx_pkt_cmpl *rx );
+void bnxt_link_evt ( struct bnxt *bp, struct hwrm_async_event_cmpl *evt );
+
+/**
+ * Check if Virtual Function
+ */
+u8 bnxt_is_pci_vf ( struct pci_device *pdev )
+{
+       u16 i;
+
+       for ( i = 0; i < ARRAY_SIZE ( bnxt_vf_nics ); i++ ) {
+               if ( pdev->device == bnxt_vf_nics[i] )
+                       return 1;
+       }
+       return 0;
+}
+
+static void bnxt_down_pci ( struct bnxt *bp )
+{
+       DBGP ( "%s\n", __func__ );
+       if ( bp->bar2 ) {
+               iounmap ( bp->bar2 );
+               bp->bar2 = NULL;
+       }
+       if ( bp->bar1 ) {
+               iounmap ( bp->bar1 );
+               bp->bar1 = NULL;
+       }
+       if ( bp->bar0 ) {
+               iounmap ( bp->bar0 );
+               bp->bar0 = NULL;
+       }
+}
+
+static void *bnxt_pci_base ( struct pci_device *pdev, unsigned int reg )
+{
+       unsigned long reg_base, reg_size;
+
+       reg_base = pci_bar_start ( pdev, reg );
+       reg_size = pci_bar_size ( pdev, reg );
+       return ioremap ( reg_base, reg_size );
+}
+
+static int bnxt_get_pci_info ( struct bnxt *bp )
+{
+       u16 cmd_reg = 0;
+
+       DBGP ( "%s\n", __func__ );
+       /* Disable Interrupt */
+       pci_read_word16 ( bp->pdev, PCI_COMMAND, &bp->cmd_reg );
+       cmd_reg = bp->cmd_reg | PCI_COMMAND_INTX_DISABLE;
+       pci_write_word ( bp->pdev, PCI_COMMAND, cmd_reg );
+       pci_read_word16 ( bp->pdev, PCI_COMMAND, &cmd_reg );
+
+       /* SSVID */
+       pci_read_word16 ( bp->pdev,
+                       PCI_SUBSYSTEM_VENDOR_ID,
+                       &bp->subsystem_vendor );
+
+       /* SSDID */
+       pci_read_word16 ( bp->pdev,
+                       PCI_SUBSYSTEM_ID,
+                       &bp->subsystem_device );
+
+       /* Function Number */
+       pci_read_byte ( bp->pdev,
+                       PCICFG_ME_REGISTER,
+                       &bp->pf_num );
+
+       /* Get Bar Address */
+       bp->bar0 = bnxt_pci_base ( bp->pdev, PCI_BASE_ADDRESS_0 );
+       bp->bar1 = bnxt_pci_base ( bp->pdev, PCI_BASE_ADDRESS_2 );
+       bp->bar2 = bnxt_pci_base ( bp->pdev, PCI_BASE_ADDRESS_4 );
+
+       /* Virtual function */
+       bp->vf = bnxt_is_pci_vf ( bp->pdev );
+
+       dbg_pci ( bp, __func__, cmd_reg );
+       return STATUS_SUCCESS;
+}
+
+static int bnxt_get_device_address ( struct bnxt *bp )
+{
+       struct net_device *dev = bp->dev;
+
+       DBGP ( "%s\n", __func__ );
+       memcpy ( &dev->hw_addr[0], ( char * )&bp->mac_addr[0], ETH_ALEN );
+       if ( !is_valid_ether_addr ( &dev->hw_addr[0] ) ) {
+               DBGP ( "- %s (  ): Failed\n", __func__ );
+               return -EINVAL;
+       }
+
+       return STATUS_SUCCESS;
+}
+
+static void bnxt_set_link ( struct bnxt *bp )
+{
+       if ( bp->link_status == STATUS_LINK_ACTIVE )
+               netdev_link_up ( bp->dev );
+       else
+               netdev_link_down ( bp->dev );
+}
+
+static void thor_db ( struct bnxt *bp, u32 idx, u32 xid, u32 flag )
+{
+       void *off;
+       u64  val;
+
+       if ( bp->vf )
+               off = ( void * ) ( bp->bar1 + DB_OFFSET_VF );
+       else
+               off = ( void * ) ( bp->bar1 + DB_OFFSET_PF );
+
+       val = ( ( u64 )DBC_MSG_XID ( xid, flag ) << 32 ) |
+               ( u64 )DBC_MSG_IDX ( idx );
+       write64 ( val, off );
+}
+
+static void bnxt_db_nq ( struct bnxt *bp )
+{
+       if ( bp->thor )
+               thor_db ( bp, ( u32 )bp->nq.cons_id,
+                        ( u32 )bp->nq_ring_id, DBC_DBC_TYPE_NQ_ARM );
+       else
+               write32 ( CMPL_DOORBELL_KEY_CMPL, ( bp->bar1 + 0 ) );
+}
+
+static void bnxt_db_cq ( struct bnxt *bp )
+{
+       if ( bp->thor )
+               thor_db ( bp, ( u32 )bp->cq.cons_id,
+                        ( u32 )bp->cq_ring_id, DBC_DBC_TYPE_CQ_ARMALL );
+       else
+               write32 ( CQ_DOORBELL_KEY_IDX ( bp->cq.cons_id ),
+                       ( bp->bar1 + 0 ) );
+}
+
+static void bnxt_db_rx ( struct bnxt *bp, u32 idx )
+{
+       if ( bp->thor )
+               thor_db ( bp, idx, ( u32 )bp->rx_ring_id, DBC_DBC_TYPE_SRQ );
+       else
+               write32 ( RX_DOORBELL_KEY_RX | idx, ( bp->bar1 + 0 ) );
+}
+
+static void bnxt_db_tx ( struct bnxt *bp, u32 idx )
+{
+       if ( bp->thor )
+               thor_db ( bp, idx, ( u32 )bp->tx_ring_id, DBC_DBC_TYPE_SQ );
+       else
+               write32 ( ( u32 ) ( TX_DOORBELL_KEY_TX | idx ),
+                       ( bp->bar1 + 0 ) );
+}
+
+void bnxt_add_vlan ( struct io_buffer *iob, u16 vlan )
+{
+       char *src = ( char * )iob->data;
+       u16 len = iob_len ( iob );
+
+       memmove ( ( char * )&src[MAC_HDR_SIZE + VLAN_HDR_SIZE],
+                        ( char * )&src[MAC_HDR_SIZE],
+                        ( len - MAC_HDR_SIZE ) );
+
+       * ( u16 * ) ( &src[MAC_HDR_SIZE] ) = BYTE_SWAP_S ( ETHERTYPE_VLAN );
+       * ( u16 * ) ( &src[MAC_HDR_SIZE + 2] ) = BYTE_SWAP_S ( vlan );
+       iob_put ( iob, VLAN_HDR_SIZE );
+}
+
+static u16 bnxt_get_pkt_vlan ( char *src )
+{
+       if ( * ( ( u16 * )&src[MAC_HDR_SIZE] ) == BYTE_SWAP_S ( ETHERTYPE_VLAN ) )
+               return BYTE_SWAP_S ( * ( ( u16 * )&src[MAC_HDR_SIZE + 2] ) );
+       return 0;
+}
+
+int bnxt_vlan_drop ( struct bnxt *bp, u16 rx_vlan )
+{
+       if ( rx_vlan ) {
+               if ( bp->vlan_tx ) {
+                       if ( rx_vlan == bp->vlan_tx )
+                               return 0;
+               } else {
+                       if ( rx_vlan == bp->vlan_id )
+                               return 0;
+                       if ( rx_vlan && !bp->vlan_id )
+                               return 0;
+               }
+       } else {
+               if ( !bp->vlan_tx && !bp->vlan_id )
+                       return 0;
+       }
+
+       return 1;
+}
+
+static inline u32 bnxt_tx_avail ( struct bnxt *bp )
+{
+       u32 avail;
+       u32 use;
+
+       barrier (  );
+       avail = TX_AVAIL ( bp->tx.ring_cnt );
+       use = TX_IN_USE ( bp->tx.prod_id, bp->tx.cons_id, bp->tx.ring_cnt );
+       dbg_tx_avail ( bp, avail, use );
+       return ( avail-use );
+}
+
+void bnxt_set_txq ( struct bnxt *bp, int entry, dma_addr_t mapping, int len )
+{
+       struct tx_bd_short *prod_bd;
+
+       prod_bd = ( struct tx_bd_short * )BD_NOW ( bp->tx.bd_virt,
+                       entry, sizeof ( struct tx_bd_short ) );
+       if ( len < 512 )
+               prod_bd->flags_type = TX_BD_SHORT_FLAGS_LHINT_LT512;
+       else if ( len < 1024 )
+               prod_bd->flags_type = TX_BD_SHORT_FLAGS_LHINT_LT1K;
+       else if ( len < 2048 )
+               prod_bd->flags_type = TX_BD_SHORT_FLAGS_LHINT_LT2K;
+       else
+               prod_bd->flags_type = TX_BD_SHORT_FLAGS_LHINT_GTE2K;
+       prod_bd->flags_type |= TX_BD_FLAGS;
+       prod_bd->dma.addr = mapping;
+       prod_bd->len      = len;
+       prod_bd->opaque   = ( u32 )entry;
+}
+
+static void bnxt_tx_complete ( struct net_device *dev, u16 hw_idx )
+{
+       struct bnxt *bp = netdev_priv ( dev );
+       struct io_buffer *iob;
+
+       iob = bp->tx.iob[hw_idx];
+       dbg_tx_done ( iob->data, iob_len ( iob ), hw_idx );
+       netdev_tx_complete ( dev, iob );
+       bp->tx.cons_id = NEXT_IDX ( hw_idx, bp->tx.ring_cnt );
+       bp->tx.cnt++;
+       dump_tx_stat ( bp );
+}
+
+int bnxt_free_rx_iob ( struct bnxt *bp )
+{
+       unsigned int i;
+
+       DBGP ( "%s\n", __func__ );
+       if ( ! ( FLAG_TEST ( bp->flag_hwrm, VALID_RX_IOB ) ) )
+               return STATUS_SUCCESS;
+
+       for ( i = 0; i < bp->rx.buf_cnt; i++ ) {
+               if ( bp->rx.iob[i] ) {
+                       free_iob ( bp->rx.iob[i] );
+                       bp->rx.iob[i] = NULL;
+               }
+       }
+       bp->rx.iob_cnt = 0;
+
+       FLAG_RESET ( bp->flag_hwrm, VALID_RX_IOB );
+       return STATUS_SUCCESS;
+}
+
+static void bnxt_set_rx_desc ( u8 *buf, struct io_buffer *iob,
+                               u16 cid, u32 idx )
+{
+       struct rx_prod_pkt_bd *desc;
+       u16 off = cid * sizeof ( struct rx_prod_pkt_bd );
+
+       desc = ( struct rx_prod_pkt_bd * )&buf[off];
+       desc->flags_type = RX_PROD_PKT_BD_TYPE_RX_PROD_PKT;
+       desc->len        = MAX_ETHERNET_PACKET_BUFFER_SIZE;
+       desc->opaque     = idx;
+       desc->dma.addr   = virt_to_bus ( iob->data );
+}
+
+static int bnxt_alloc_rx_iob ( struct bnxt *bp, u16 cons_id, u16 iob_idx )
+{
+       struct io_buffer *iob;
+
+       iob = alloc_iob ( BNXT_RX_STD_DMA_SZ );
+       if ( !iob ) {
+               DBGP ( "- %s (  ): alloc_iob Failed\n", __func__ );
+               return -ENOMEM;
+       }
+
+       dbg_alloc_rx_iob ( iob, iob_idx, cons_id );
+       bnxt_set_rx_desc ( ( u8 * )bp->rx.bd_virt, iob, cons_id,
+                       ( u32 ) iob_idx );
+       bp->rx.iob[iob_idx] = iob;
+       return 0;
+}
+
+int bnxt_post_rx_buffers ( struct bnxt *bp )
+{
+       u16 cons_id = ( bp->rx.cons_id % bp->rx.ring_cnt );
+       u16 iob_idx;
+
+       while ( bp->rx.iob_cnt < bp->rx.buf_cnt ) {
+               iob_idx = ( cons_id % bp->rx.buf_cnt );
+               if ( !bp->rx.iob[iob_idx] ) {
+                       if ( bnxt_alloc_rx_iob ( bp, cons_id, iob_idx ) < 0 ) {
+                               dbg_alloc_rx_iob_fail ( iob_idx, cons_id );
+                               break;
+                       }
+               }
+               cons_id = NEXT_IDX ( cons_id, bp->rx.ring_cnt );
+               bp->rx.iob_cnt++;
+       }
+
+       if ( cons_id != bp->rx.cons_id ) {
+               dbg_rx_cid ( bp->rx.cons_id, cons_id );
+               bp->rx.cons_id = cons_id;
+               bnxt_db_rx ( bp, ( u32 )cons_id );
+       }
+
+       FLAG_SET ( bp->flag_hwrm, VALID_RX_IOB );
+       return STATUS_SUCCESS;
+}
+
+u8 bnxt_rx_drop ( struct bnxt *bp, struct io_buffer *iob,
+       struct rx_pkt_cmpl_hi *rx_cmp_hi, u16 rx_len )
+{
+       u8  *rx_buf = ( u8 * )iob->data;
+       u16 err_flags, rx_vlan;
+       u8  ignore_chksum_err = 0;
+       int i;
+
+       err_flags = rx_cmp_hi->errors_v2 >> RX_PKT_CMPL_ERRORS_BUFFER_ERROR_SFT;
+       if ( rx_cmp_hi->errors_v2 == 0x20 || rx_cmp_hi->errors_v2 == 0x21 )
+               ignore_chksum_err = 1;
+
+       if ( err_flags && !ignore_chksum_err ) {
+               bp->rx.drop_err++;
+               return 1;
+       }
+
+       for ( i = 0; i < 6; i++ ) {
+               if ( rx_buf[6 + i] != bp->mac_addr[i] )
+                       break;
+       }
+
+       /* Drop the loopback packets */
+       if ( i == 6 ) {
+               bp->rx.drop_lb++;
+               return 2;
+       }
+
+       /* Get VLAN ID from RX completion ring */
+       if ( rx_cmp_hi->flags2 & RX_PKT_CMPL_FLAGS2_META_FORMAT_VLAN )
+               rx_vlan = ( rx_cmp_hi->metadata &
+                               RX_PKT_CMPL_METADATA_VID_MASK );
+       else
+               rx_vlan = 0;
+
+       dbg_rx_vlan ( bp, rx_cmp_hi->metadata, rx_cmp_hi->flags2, rx_vlan );
+       if ( bnxt_vlan_drop ( bp, rx_vlan ) ) {
+               bp->rx.drop_vlan++;
+               return 3;
+       }
+       iob_put ( iob, rx_len );
+
+       if ( rx_vlan )
+               bnxt_add_vlan ( iob, rx_vlan );
+
+       bp->rx.good++;
+       return 0;
+}
+
+static void bnxt_adv_cq_index ( struct bnxt *bp, u16 cnt )
+{
+       u16 cons_id;
+
+       cons_id = bp->cq.cons_id + cnt;
+       if ( cons_id >= MAX_CQ_DESC_CNT ) {
+               /* Toggle completion bit when the ring wraps. */
+               bp->cq.completion_bit ^= 1;
+               cons_id = cons_id - MAX_CQ_DESC_CNT;
+       }
+       bp->cq.cons_id = cons_id;
+}
+
+void bnxt_rx_process ( struct net_device *dev, struct bnxt *bp,
+       struct rx_pkt_cmpl *rx_cmp, struct rx_pkt_cmpl_hi *rx_cmp_hi )
+{
+       u32 desc_idx = rx_cmp->opaque;
+       struct io_buffer *iob = bp->rx.iob[desc_idx];
+       u8 drop;
+
+       dump_rx_bd ( rx_cmp, rx_cmp_hi, desc_idx );
+       assert ( !iob );
+       drop = bnxt_rx_drop ( bp, iob, rx_cmp_hi, rx_cmp->len );
+       dbg_rxp ( iob->data, rx_cmp->len, drop );
+       if ( drop )
+               netdev_rx_err ( dev, iob, -EINVAL );
+       else
+               netdev_rx ( dev, iob );
+
+       bp->rx.cnt++;
+       bp->rx.iob[desc_idx] = NULL;
+       bp->rx.iob_cnt--;
+       bnxt_post_rx_buffers ( bp );
+       bnxt_adv_cq_index ( bp, 2 ); /* Rx completion is 2 entries. */
+       dbg_rx_stat ( bp );
+}
+
+static int bnxt_rx_complete ( struct net_device *dev,
+               struct rx_pkt_cmpl *rx_cmp )
+{
+       struct bnxt *bp = netdev_priv ( dev );
+       struct rx_pkt_cmpl_hi *rx_cmp_hi;
+       u8  cmpl_bit = bp->cq.completion_bit;
+
+       if ( bp->cq.cons_id == ( bp->cq.ring_cnt - 1 ) ) {
+               rx_cmp_hi = ( struct rx_pkt_cmpl_hi * )bp->cq.bd_virt;
+               cmpl_bit ^= 0x1; /* Ring has wrapped. */
+       } else
+               rx_cmp_hi = ( struct rx_pkt_cmpl_hi * ) ( rx_cmp+1 );
+
+       if ( ! ( ( rx_cmp_hi->errors_v2 & RX_PKT_CMPL_V2 ) ^ cmpl_bit ) ) {
+               bnxt_rx_process ( dev, bp, rx_cmp, rx_cmp_hi );
+               return SERVICE_NEXT_CQ_BD;
+       } else
+               return NO_MORE_CQ_BD_TO_SERVICE;
+}
+
+void bnxt_mm_init ( struct bnxt *bp, const char *func )
+{
+       DBGP ( "%s\n", __func__ );
+       memset ( bp->hwrm_addr_req,  0, REQ_BUFFER_SIZE );
+       memset ( bp->hwrm_addr_resp, 0, RESP_BUFFER_SIZE );
+       memset ( bp->hwrm_addr_dma,  0, DMA_BUFFER_SIZE );
+       bp->req_addr_mapping  = virt_to_bus ( bp->hwrm_addr_req );
+       bp->resp_addr_mapping = virt_to_bus ( bp->hwrm_addr_resp );
+       bp->dma_addr_mapping  = virt_to_bus ( bp->hwrm_addr_dma );
+       bp->link_status = STATUS_LINK_DOWN;
+       bp->wait_link_timeout = LINK_DEFAULT_TIMEOUT;
+       bp->mtu = MAX_ETHERNET_PACKET_BUFFER_SIZE;
+       bp->hwrm_max_req_len  = HWRM_MAX_REQ_LEN;
+       bp->nq.ring_cnt           = MAX_NQ_DESC_CNT;
+       bp->cq.ring_cnt           = MAX_CQ_DESC_CNT;
+       bp->tx.ring_cnt           = MAX_TX_DESC_CNT;
+       bp->rx.ring_cnt           = MAX_RX_DESC_CNT;
+       bp->rx.buf_cnt            = NUM_RX_BUFFERS;
+       dbg_mem ( bp, func );
+}
+
+void bnxt_mm_nic ( struct bnxt *bp )
+{
+       DBGP ( "%s\n", __func__ );
+       memset ( bp->cq.bd_virt, 0, CQ_RING_BUFFER_SIZE );
+       memset ( bp->tx.bd_virt, 0, TX_RING_BUFFER_SIZE );
+       memset ( bp->rx.bd_virt, 0, RX_RING_BUFFER_SIZE );
+       memset ( bp->nq.bd_virt, 0, NQ_RING_BUFFER_SIZE );
+       bp->nq.cons_id          = 0;
+       bp->nq.completion_bit   = 0x1;
+       bp->cq.cons_id          = 0;
+       bp->cq.completion_bit   = 0x1;
+       bp->tx.prod_id          = 0;
+       bp->tx.cons_id          = 0;
+       bp->rx.cons_id          = 0;
+       bp->rx.iob_cnt          = 0;
+
+       bp->link_status         = STATUS_LINK_DOWN;
+       bp->wait_link_timeout   = LINK_DEFAULT_TIMEOUT;
+       bp->mtu                 = MAX_ETHERNET_PACKET_BUFFER_SIZE;
+       bp->hwrm_max_req_len    = HWRM_MAX_REQ_LEN;
+       bp->nq.ring_cnt         = MAX_NQ_DESC_CNT;
+       bp->cq.ring_cnt         = MAX_CQ_DESC_CNT;
+       bp->tx.ring_cnt         = MAX_TX_DESC_CNT;
+       bp->rx.ring_cnt         = MAX_RX_DESC_CNT;
+       bp->rx.buf_cnt          = NUM_RX_BUFFERS;
+}
+
+void bnxt_free_mem ( struct bnxt *bp )
+{
+       DBGP ( "%s\n", __func__ );
+       if ( bp->nq.bd_virt ) {
+               free_dma ( bp->nq.bd_virt, NQ_RING_BUFFER_SIZE );
+               bp->nq.bd_virt = NULL;
+       }
+
+       if ( bp->cq.bd_virt ) {
+               free_dma ( bp->cq.bd_virt, CQ_RING_BUFFER_SIZE );
+               bp->cq.bd_virt = NULL;
+       }
+
+       if ( bp->rx.bd_virt ) {
+               free_dma ( bp->rx.bd_virt, RX_RING_BUFFER_SIZE );
+               bp->rx.bd_virt = NULL;
+       }
+
+       if ( bp->tx.bd_virt ) {
+               free_dma ( bp->tx.bd_virt, TX_RING_BUFFER_SIZE );
+               bp->tx.bd_virt = NULL;
+       }
+
+       if ( bp->hwrm_addr_dma ) {
+               free_dma ( bp->hwrm_addr_dma, DMA_BUFFER_SIZE );
+               bp->dma_addr_mapping = 0;
+               bp->hwrm_addr_dma = NULL;
+       }
+
+       if ( bp->hwrm_addr_resp ) {
+               free_dma ( bp->hwrm_addr_resp, RESP_BUFFER_SIZE );
+               bp->resp_addr_mapping = 0;
+               bp->hwrm_addr_resp = NULL;
+       }
+
+       if ( bp->hwrm_addr_req ) {
+               free_dma ( bp->hwrm_addr_req, REQ_BUFFER_SIZE );
+               bp->req_addr_mapping = 0;
+               bp->hwrm_addr_req = NULL;
+       }
+       DBGP ( "- %s (  ): - Done\n", __func__ );
+}
+
+int bnxt_alloc_mem ( struct bnxt *bp )
+{
+       DBGP ( "%s\n", __func__ );
+       bp->hwrm_addr_req  = malloc_dma ( REQ_BUFFER_SIZE, BNXT_DMA_ALIGNMENT );
+       bp->hwrm_addr_resp = malloc_dma ( RESP_BUFFER_SIZE,
+                                       BNXT_DMA_ALIGNMENT );
+       bp->hwrm_addr_dma  = malloc_dma ( DMA_BUFFER_SIZE, BNXT_DMA_ALIGNMENT );
+       bp->tx.bd_virt = malloc_dma ( TX_RING_BUFFER_SIZE, DMA_ALIGN_4K );
+       bp->rx.bd_virt = malloc_dma ( RX_RING_BUFFER_SIZE, DMA_ALIGN_4K );
+       bp->cq.bd_virt = malloc_dma ( CQ_RING_BUFFER_SIZE, BNXT_DMA_ALIGNMENT );
+       bp->nq.bd_virt = malloc_dma ( NQ_RING_BUFFER_SIZE, BNXT_DMA_ALIGNMENT );
+       test_if ( bp->hwrm_addr_req &&
+               bp->hwrm_addr_resp &&
+               bp->hwrm_addr_dma &&
+               bp->tx.bd_virt &&
+               bp->rx.bd_virt &&
+               bp->nq.bd_virt &&
+               bp->cq.bd_virt ) {
+               bnxt_mm_init ( bp, __func__ );
+               return STATUS_SUCCESS;
+       }
+
+       DBGP ( "- %s (  ): Failed\n", __func__ );
+       bnxt_free_mem ( bp );
+       return -ENOMEM;
+}
+
+static void hwrm_init ( struct bnxt *bp, struct input *req, u16 cmd, u16 len )
+{
+       memset ( req, 0, len );
+       req->req_type  = cmd;
+       req->cmpl_ring = ( u16 )HWRM_NA_SIGNATURE;
+       req->target_id = ( u16 )HWRM_NA_SIGNATURE;
+       req->resp_addr = bp->resp_addr_mapping;
+       req->seq_id    = bp->seq_id++;
+}
+
+static void hwrm_write_req ( struct bnxt *bp, void *req, u32 cnt )
+{
+       u32 i = 0;
+
+       for ( i = 0; i < cnt; i++ ) {
+               write32 ( ( ( u32 * )req )[i],
+                        ( bp->bar0 + GRC_COM_CHAN_BASE + ( i * 4 ) ) );
+       }
+       write32 ( 0x1, ( bp->bar0 + GRC_COM_CHAN_BASE + GRC_COM_CHAN_TRIG ) );
+}
+
+static void short_hwrm_cmd_req ( struct bnxt *bp, u16 len )
+{
+       struct hwrm_short_input sreq;
+
+       memset ( &sreq, 0, sizeof ( struct hwrm_short_input ) );
+       sreq.req_type  = ( u16 ) ( ( struct input * )bp->hwrm_addr_req )->req_type;
+       sreq.signature = SHORT_REQ_SIGNATURE_SHORT_CMD;
+       sreq.size      = len;
+       sreq.req_addr  = bp->req_addr_mapping;
+       mdelay ( 100 );
+       dbg_short_cmd ( ( u8 * )&sreq, __func__,
+                       sizeof ( struct hwrm_short_input ) );
+       hwrm_write_req ( bp, &sreq, sizeof ( struct hwrm_short_input ) / 4 );
+}
+
+static int wait_resp ( struct bnxt *bp, u32 tmo, u16 len, const char *func )
+{
+       struct input *req = ( struct input * )bp->hwrm_addr_req;
+       struct output *resp = ( struct output * )bp->hwrm_addr_resp;
+       u8  *ptr = ( u8 * )resp;
+       u32 idx;
+       u32 wait_cnt = HWRM_CMD_DEFAULT_MULTIPLAYER ( ( u32 )tmo );
+       u16 resp_len = 0;
+       u16 ret = STATUS_TIMEOUT;
+
+       if ( len > bp->hwrm_max_req_len )
+               short_hwrm_cmd_req ( bp, len );
+       else
+               hwrm_write_req ( bp, req, ( u32 ) ( len / 4 ) );
+
+       for ( idx = 0; idx < wait_cnt; idx++ ) {
+               resp_len = resp->resp_len;
+               test_if ( resp->seq_id == req->seq_id &&
+                       resp->req_type == req->req_type &&
+                       ptr[resp_len - 1] == 1 ) {
+                       bp->last_resp_code = resp->error_code;
+                       ret = resp->error_code;
+                       break;
+               }
+               udelay ( HWRM_CMD_POLL_WAIT_TIME );
+       }
+       dbg_hw_cmd ( bp, func, len, resp_len, tmo, ret );
+       return ( int )ret;
+}
+
+static int bnxt_hwrm_ver_get ( struct bnxt *bp )
+{
+       u16 cmd_len = ( u16 )sizeof ( struct hwrm_ver_get_input );
+       struct hwrm_ver_get_input *req;
+       struct hwrm_ver_get_output *resp;
+       int rc;
+
+       DBGP ( "%s\n", __func__ );
+       req = ( struct hwrm_ver_get_input * )bp->hwrm_addr_req;
+       resp = ( struct hwrm_ver_get_output * )bp->hwrm_addr_resp;
+       hwrm_init ( bp, ( void * )req, ( u16 )HWRM_VER_GET, cmd_len );
+       req->hwrm_intf_maj = HWRM_VERSION_MAJOR;
+       req->hwrm_intf_min = HWRM_VERSION_MINOR;
+       req->hwrm_intf_upd = HWRM_VERSION_UPDATE;
+       rc = wait_resp ( bp, HWRM_CMD_DEFAULT_TIMEOUT, cmd_len, __func__ );
+       if ( rc )
+               return STATUS_FAILURE;
+
+       bp->hwrm_spec_code =
+               resp->hwrm_intf_maj_8b << 16 |
+               resp->hwrm_intf_min_8b << 8 |
+               resp->hwrm_intf_upd_8b;
+       bp->hwrm_cmd_timeout = ( u32 )resp->def_req_timeout;
+       if ( !bp->hwrm_cmd_timeout )
+               bp->hwrm_cmd_timeout = ( u32 )HWRM_CMD_DEFAULT_TIMEOUT;
+       if ( resp->hwrm_intf_maj_8b >= 1 )
+               bp->hwrm_max_req_len = resp->max_req_win_len;
+       bp->chip_id =
+               resp->chip_rev << 24 |
+               resp->chip_metal << 16 |
+               resp->chip_bond_id << 8 |
+               resp->chip_platform_type;
+       bp->chip_num = resp->chip_num;
+       test_if ( ( resp->dev_caps_cfg & SHORT_CMD_SUPPORTED ) &&
+                ( resp->dev_caps_cfg & SHORT_CMD_REQUIRED ) )
+               FLAG_SET ( bp->flags, BNXT_FLAG_HWRM_SHORT_CMD_SUPP );
+       bp->hwrm_max_ext_req_len = resp->max_ext_req_len;
+       if ( bp->chip_num == CHIP_NUM_57500 )
+               bp->thor = 1;
+       dbg_fw_ver ( resp, bp->hwrm_cmd_timeout );
+       return STATUS_SUCCESS;
+}
+
+static int bnxt_hwrm_func_resource_qcaps ( struct bnxt *bp )
+{
+       u16 cmd_len = ( u16 )sizeof ( struct hwrm_func_resource_qcaps_input );
+       struct hwrm_func_resource_qcaps_input *req;
+       struct hwrm_func_resource_qcaps_output *resp;
+       int rc;
+
+       DBGP ( "%s\n", __func__ );
+       req = ( struct hwrm_func_resource_qcaps_input * )bp->hwrm_addr_req;
+       resp = ( struct hwrm_func_resource_qcaps_output * )bp->hwrm_addr_resp;
+       hwrm_init ( bp, ( void * )req, ( u16 )HWRM_FUNC_RESOURCE_QCAPS,
+               cmd_len );
+       req->fid = ( u16 )HWRM_NA_SIGNATURE;
+       rc = wait_resp ( bp, bp->hwrm_cmd_timeout, cmd_len, __func__ );
+       if ( rc != STATUS_SUCCESS )
+               return STATUS_SUCCESS;
+
+       FLAG_SET ( bp->flags, BNXT_FLAG_RESOURCE_QCAPS_SUPPORT );
+
+       // VFs
+       if ( !bp->vf ) {
+               bp->max_vfs = resp->max_vfs;
+               bp->vf_res_strategy = resp->vf_reservation_strategy;
+       }
+
+       // vNICs
+       bp->min_vnics = resp->min_vnics;
+       bp->max_vnics = resp->max_vnics;
+
+       // MSI-X
+       bp->max_msix = resp->max_msix;
+
+       // Ring Groups
+       bp->min_hw_ring_grps = resp->min_hw_ring_grps;
+       bp->max_hw_ring_grps = resp->max_hw_ring_grps;
+
+       // TX Rings
+       bp->min_tx_rings = resp->min_tx_rings;
+       bp->max_tx_rings = resp->max_tx_rings;
+
+       // RX Rings
+       bp->min_rx_rings = resp->min_rx_rings;
+       bp->max_rx_rings = resp->max_rx_rings;
+
+       // Completion Rings
+       bp->min_cp_rings = resp->min_cmpl_rings;
+       bp->max_cp_rings = resp->max_cmpl_rings;
+
+       // RSS Contexts
+       bp->min_rsscos_ctxs = resp->min_rsscos_ctx;
+       bp->max_rsscos_ctxs = resp->max_rsscos_ctx;
+
+       // L2 Contexts
+       bp->min_l2_ctxs = resp->min_l2_ctxs;
+       bp->max_l2_ctxs = resp->max_l2_ctxs;
+
+       // Statistic Contexts
+       bp->min_stat_ctxs = resp->min_stat_ctx;
+       bp->max_stat_ctxs = resp->max_stat_ctx;
+       dbg_func_resource_qcaps ( bp );
+       return STATUS_SUCCESS;
+}
+
+static u32 bnxt_set_ring_info ( struct bnxt *bp )
+{
+       u32 enables = 0;
+
+       DBGP ( "%s\n", __func__ );
+       bp->num_cmpl_rings   = DEFAULT_NUMBER_OF_CMPL_RINGS;
+       bp->num_tx_rings         = DEFAULT_NUMBER_OF_TX_RINGS;
+       bp->num_rx_rings         = DEFAULT_NUMBER_OF_RX_RINGS;
+       bp->num_hw_ring_grps = DEFAULT_NUMBER_OF_RING_GRPS;
+       bp->num_stat_ctxs    = DEFAULT_NUMBER_OF_STAT_CTXS;
+
+       if ( bp->min_cp_rings <= DEFAULT_NUMBER_OF_CMPL_RINGS )
+               bp->num_cmpl_rings = bp->min_cp_rings;
+
+       if ( bp->min_tx_rings <= DEFAULT_NUMBER_OF_TX_RINGS )
+               bp->num_tx_rings = bp->min_tx_rings;
+
+       if ( bp->min_rx_rings <= DEFAULT_NUMBER_OF_RX_RINGS )
+               bp->num_rx_rings = bp->min_rx_rings;
+
+       if ( bp->min_hw_ring_grps <= DEFAULT_NUMBER_OF_RING_GRPS )
+               bp->num_hw_ring_grps = bp->min_hw_ring_grps;
+
+       if ( bp->min_stat_ctxs <= DEFAULT_NUMBER_OF_STAT_CTXS )
+               bp->num_stat_ctxs = bp->min_stat_ctxs;
+
+       dbg_num_rings ( bp );
+       enables = ( FUNC_CFG_REQ_ENABLES_NUM_CMPL_RINGS |
+                          FUNC_CFG_REQ_ENABLES_NUM_TX_RINGS |
+                          FUNC_CFG_REQ_ENABLES_NUM_RX_RINGS |
+                          FUNC_CFG_REQ_ENABLES_NUM_STAT_CTXS |
+                          FUNC_CFG_REQ_ENABLES_NUM_HW_RING_GRPS );
+       return enables;
+}
+
+static void bnxt_hwrm_assign_resources ( struct bnxt *bp )
+{
+       struct hwrm_func_cfg_input *req;
+       u32 enables = 0;
+
+       DBGP ( "%s\n", __func__ );
+       if ( FLAG_TEST ( bp->flags, BNXT_FLAG_RESOURCE_QCAPS_SUPPORT ) )
+               enables = bnxt_set_ring_info ( bp );
+
+       req = ( struct hwrm_func_cfg_input * )bp->hwrm_addr_req;
+       req->num_cmpl_rings   = bp->num_cmpl_rings;
+       req->num_tx_rings     = bp->num_tx_rings;
+       req->num_rx_rings     = bp->num_rx_rings;
+       req->num_stat_ctxs    = bp->num_stat_ctxs;
+       req->num_hw_ring_grps = bp->num_hw_ring_grps;
+       req->enables = enables;
+}
+
+static int bnxt_hwrm_func_qcaps_req ( struct bnxt *bp )
+{
+       u16 cmd_len = ( u16 )sizeof ( struct hwrm_func_qcaps_input );
+       struct hwrm_func_qcaps_input *req;
+       struct hwrm_func_qcaps_output *resp;
+       int rc;
+
+       DBGP ( "%s\n", __func__ );
+       if ( bp->vf )
+               return STATUS_SUCCESS;
+
+       req = ( struct hwrm_func_qcaps_input * )bp->hwrm_addr_req;
+       resp = ( struct hwrm_func_qcaps_output * )bp->hwrm_addr_resp;
+       hwrm_init ( bp, ( void * )req, ( u16 )HWRM_FUNC_QCAPS, cmd_len );
+       req->fid = ( u16 )HWRM_NA_SIGNATURE;
+       rc = wait_resp ( bp, bp->hwrm_cmd_timeout, cmd_len, __func__ );
+       if ( rc ) {
+               DBGP ( "- %s (  ): Failed\n", __func__ );
+               return STATUS_FAILURE;
+       }
+
+       bp->fid = resp->fid;
+       bp->port_idx = ( u8 )resp->port_id;
+
+       /* Get MAC address for this PF */
+       memcpy ( &bp->mac_addr[0], &resp->mac_address[0], ETH_ALEN );
+       dbg_func_qcaps ( bp );
+       return STATUS_SUCCESS;
+}
+
+static int bnxt_hwrm_func_qcfg_req ( struct bnxt *bp )
+{
+       u16 cmd_len = ( u16 )sizeof ( struct hwrm_func_qcfg_input );
+       struct hwrm_func_qcfg_input *req;
+       struct hwrm_func_qcfg_output *resp;
+       int rc;
+
+       DBGP ( "%s\n", __func__ );
+       req = ( struct hwrm_func_qcfg_input * )bp->hwrm_addr_req;
+       resp = ( struct hwrm_func_qcfg_output * )bp->hwrm_addr_resp;
+       hwrm_init ( bp, ( void * )req, ( u16 )HWRM_FUNC_QCFG, cmd_len );
+       req->fid = ( u16 )HWRM_NA_SIGNATURE;
+       rc = wait_resp ( bp, bp->hwrm_cmd_timeout, cmd_len, __func__ );
+       if ( rc ) {
+               DBGP ( "- %s (  ): Failed\n", __func__ );
+               return STATUS_FAILURE;
+       }
+
+       if ( resp->flags & FUNC_QCFG_RESP_FLAGS_MULTI_HOST )
+               FLAG_SET ( bp->flags, BNXT_FLAG_MULTI_HOST );
+
+       if ( resp->port_partition_type &
+               FUNC_QCFG_RESP_PORT_PARTITION_TYPE_NPAR1_0 )
+               FLAG_SET ( bp->flags, BNXT_FLAG_NPAR_MODE );
+
+       bp->ordinal_value = ( u8 )resp->pci_id & 0x0F;
+       bp->stat_ctx_id   = resp->stat_ctx_id;
+
+       /* If VF is set to TRUE, then use some data from func_qcfg (  ). */
+       if ( bp->vf ) {
+               bp->fid = resp->fid;
+               bp->port_idx = ( u8 )resp->port_id;
+               bp->vlan_id  = resp->vlan;
+
+               /* Get MAC address for this VF */
+               memcpy ( bp->mac_addr, resp->mac_address, ETH_ALEN );
+       }
+       dbg_func_qcfg ( bp );
+       return STATUS_SUCCESS;
+}
+
+static int bnxt_hwrm_func_reset_req ( struct bnxt *bp )
+{
+       u16 cmd_len = ( u16 )sizeof ( struct hwrm_func_reset_input );
+       struct hwrm_func_reset_input *req;
+
+       DBGP ( "%s\n", __func__ );
+       req = ( struct hwrm_func_reset_input * )bp->hwrm_addr_req;
+       hwrm_init ( bp, ( void * )req, ( u16 )HWRM_FUNC_RESET, cmd_len );
+       if ( !bp->vf )
+               req->func_reset_level = FUNC_RESET_REQ_FUNC_RESET_LEVEL_RESETME;
+
+       return wait_resp ( bp, HWRM_CMD_WAIT ( 6 ), cmd_len, __func__ );
+}
+
+static int bnxt_hwrm_func_cfg_req ( struct bnxt *bp )
+{
+       u16 cmd_len = ( u16 )sizeof ( struct hwrm_func_cfg_input );
+       struct hwrm_func_cfg_input *req;
+
+       DBGP ( "%s\n", __func__ );
+       if ( bp->vf )
+               return STATUS_SUCCESS;
+
+       req = ( struct hwrm_func_cfg_input * )bp->hwrm_addr_req;
+       hwrm_init ( bp, ( void * )req, ( u16 )HWRM_FUNC_CFG, cmd_len );
+       req->fid = ( u16 )HWRM_NA_SIGNATURE;
+       bnxt_hwrm_assign_resources ( bp );
+       if ( bp->thor ) {
+               req->enables |= ( FUNC_CFG_REQ_ENABLES_NUM_MSIX |
+                                 FUNC_CFG_REQ_ENABLES_NUM_VNICS |
+                                 FUNC_CFG_REQ_ENABLES_EVB_MODE );
+               req->num_msix  = 1;
+               req->num_vnics = 1;
+               req->evb_mode  = FUNC_CFG_REQ_EVB_MODE_NO_EVB;
+       }
+       return wait_resp ( bp, bp->hwrm_cmd_timeout, cmd_len, __func__ );
+}
+
+static int bnxt_hwrm_func_drv_rgtr ( struct bnxt *bp )
+{
+       u16 cmd_len = ( u16 )sizeof ( struct hwrm_func_drv_rgtr_input );
+       struct hwrm_func_drv_rgtr_input *req;
+       int rc;
+
+       DBGP ( "%s\n", __func__ );
+       req = ( struct hwrm_func_drv_rgtr_input * )bp->hwrm_addr_req;
+       hwrm_init ( bp, ( void * )req, ( u16 )HWRM_FUNC_DRV_RGTR, cmd_len );
+
+       /* Register with HWRM */
+       req->enables = FUNC_DRV_RGTR_REQ_ENABLES_OS_TYPE |
+                       FUNC_DRV_RGTR_REQ_ENABLES_ASYNC_EVENT_FWD |
+                       FUNC_DRV_RGTR_REQ_ENABLES_VER;
+       req->async_event_fwd[0] |= 0x01;
+       req->os_type = FUNC_DRV_RGTR_REQ_OS_TYPE_OTHER;
+       req->ver_maj = IPXE_VERSION_MAJOR;
+       req->ver_min = IPXE_VERSION_MINOR;
+       req->ver_upd = IPXE_VERSION_UPDATE;
+       rc = wait_resp ( bp, bp->hwrm_cmd_timeout, cmd_len, __func__ );
+       if ( rc ) {
+               DBGP ( "- %s (  ): Failed\n", __func__ );
+               return STATUS_FAILURE;
+       }
+
+       FLAG_SET ( bp->flag_hwrm, VALID_DRIVER_REG );
+       return STATUS_SUCCESS;
+}
+
+static int bnxt_hwrm_func_drv_unrgtr ( struct bnxt *bp )
+{
+       u16 cmd_len = ( u16 )sizeof ( struct hwrm_func_drv_unrgtr_input );
+       struct hwrm_func_drv_unrgtr_input *req;
+       int rc;
+
+       DBGP ( "%s\n", __func__ );
+       if ( ! ( FLAG_TEST ( bp->flag_hwrm, VALID_DRIVER_REG ) ) )
+               return STATUS_SUCCESS;
+
+       req = ( struct hwrm_func_drv_unrgtr_input * )bp->hwrm_addr_req;
+       hwrm_init ( bp, ( void * )req, ( u16 )HWRM_FUNC_DRV_UNRGTR, cmd_len );
+       req->flags = FUNC_DRV_UNRGTR_REQ_FLAGS_PREPARE_FOR_SHUTDOWN;
+       rc = wait_resp ( bp, bp->hwrm_cmd_timeout, cmd_len, __func__ );
+       if ( rc )
+               return STATUS_FAILURE;
+
+       FLAG_RESET ( bp->flag_hwrm, VALID_DRIVER_REG );
+       return STATUS_SUCCESS;
+}
+
+static int bnxt_hwrm_set_async_event ( struct bnxt *bp )
+{
+       int rc;
+       u16 idx;
+
+       DBGP ( "%s\n", __func__ );
+       if ( bp->thor )
+               idx = bp->nq_ring_id;
+       else
+               idx = bp->cq_ring_id;
+       if ( bp->vf ) {
+               u16 cmd_len = ( u16 )sizeof ( struct hwrm_func_vf_cfg_input );
+               struct hwrm_func_vf_cfg_input *req;
+
+               req = ( struct hwrm_func_vf_cfg_input * )bp->hwrm_addr_req;
+               hwrm_init ( bp, ( void * )req, ( u16 )HWRM_FUNC_VF_CFG,
+                       cmd_len );
+               req->enables = VF_CFG_ENABLE_FLAGS;
+               req->async_event_cr = idx;
+               req->mtu = bp->mtu;
+               req->guest_vlan = bp->vlan_id;
+               memcpy ( ( char * )&req->dflt_mac_addr[0], bp->mac_addr,
+                       ETH_ALEN );
+               rc = wait_resp ( bp, bp->hwrm_cmd_timeout, cmd_len, __func__ );
+       } else {
+               u16 cmd_len = ( u16 )sizeof ( struct hwrm_func_cfg_input );
+               struct hwrm_func_cfg_input *req;
+
+               req = ( struct hwrm_func_cfg_input * )bp->hwrm_addr_req;
+               hwrm_init ( bp, ( void * )req, ( u16 )HWRM_FUNC_CFG, cmd_len );
+               req->fid = ( u16 )HWRM_NA_SIGNATURE;
+               req->enables = FUNC_CFG_REQ_ENABLES_ASYNC_EVENT_CR;
+               req->async_event_cr = idx;
+               rc = wait_resp ( bp, bp->hwrm_cmd_timeout, cmd_len, __func__ );
+       }
+       return rc;
+}
+
+static int bnxt_hwrm_cfa_l2_filter_alloc ( struct bnxt *bp )
+{
+       u16 cmd_len = ( u16 )sizeof ( struct hwrm_cfa_l2_filter_alloc_input );
+       struct hwrm_cfa_l2_filter_alloc_input *req;
+       struct hwrm_cfa_l2_filter_alloc_output *resp;
+       int rc;
+       u32 flags = CFA_L2_FILTER_ALLOC_REQ_FLAGS_PATH_RX;
+       u32 enables;
+
+       DBGP ( "%s\n", __func__ );
+       req = ( struct hwrm_cfa_l2_filter_alloc_input * )bp->hwrm_addr_req;
+       resp = ( struct hwrm_cfa_l2_filter_alloc_output * )bp->hwrm_addr_resp;
+       if ( bp->vf )
+               flags |= CFA_L2_FILTER_ALLOC_REQ_FLAGS_OUTERMOST;
+       enables = CFA_L2_FILTER_ALLOC_REQ_ENABLES_DST_ID |
+               CFA_L2_FILTER_ALLOC_REQ_ENABLES_L2_ADDR |
+               CFA_L2_FILTER_ALLOC_REQ_ENABLES_L2_ADDR_MASK;
+
+       hwrm_init ( bp, ( void * )req, ( u16 )HWRM_CFA_L2_FILTER_ALLOC,
+               cmd_len );
+       req->flags = flags;
+       req->enables = enables;
+       memcpy ( ( char * )&req->l2_addr[0], ( char * )&bp->mac_addr[0],
+               ETH_ALEN );
+       memset ( ( char * )&req->l2_addr_mask[0], 0xff, ETH_ALEN );
+       if ( !bp->vf ) {
+               memcpy ( ( char * )&req->t_l2_addr[0], bp->mac_addr, ETH_ALEN );
+               memset ( ( char * )&req->t_l2_addr_mask[0], 0xff, ETH_ALEN );
+       }
+       req->src_type = CFA_L2_FILTER_ALLOC_REQ_SRC_TYPE_NPORT;
+       req->src_id   = ( u32 )bp->port_idx;
+       req->dst_id   = bp->vnic_id;
+       rc = wait_resp ( bp, bp->hwrm_cmd_timeout, cmd_len, __func__ );
+       if ( rc )
+               return STATUS_FAILURE;
+
+       FLAG_SET ( bp->flag_hwrm, VALID_L2_FILTER );
+       bp->l2_filter_id = resp->l2_filter_id;
+       return STATUS_SUCCESS;
+}
+
+static int bnxt_hwrm_cfa_l2_filter_free ( struct bnxt *bp )
+{
+       u16 cmd_len = ( u16 )sizeof ( struct hwrm_cfa_l2_filter_free_input );
+       struct hwrm_cfa_l2_filter_free_input *req;
+       int rc;
+
+       DBGP ( "%s\n", __func__ );
+       if ( ! ( FLAG_TEST ( bp->flag_hwrm, VALID_L2_FILTER ) ) )
+               return STATUS_SUCCESS;
+
+       req = ( struct hwrm_cfa_l2_filter_free_input * )bp->hwrm_addr_req;
+       hwrm_init ( bp, ( void * )req, ( u16 )HWRM_CFA_L2_FILTER_FREE,
+               cmd_len );
+       req->l2_filter_id = bp->l2_filter_id;
+       rc = wait_resp ( bp, bp->hwrm_cmd_timeout, cmd_len, __func__ );
+       if ( rc ) {
+               DBGP ( "- %s (  ): Failed\n", __func__ );
+               return STATUS_FAILURE;
+       }
+
+       FLAG_RESET ( bp->flag_hwrm, VALID_L2_FILTER );
+       return STATUS_SUCCESS;
+}
+
+u32 set_rx_mask ( u32 rx_mask )
+{
+       u32 mask = 0;
+
+       if ( !rx_mask )
+               return mask;
+
+       mask = CFA_L2_SET_RX_MASK_REQ_MASK_BCAST;
+       if ( rx_mask != RX_MASK_ACCEPT_NONE ) {
+               if ( rx_mask & RX_MASK_ACCEPT_MULTICAST )
+                       mask |= CFA_L2_SET_RX_MASK_REQ_MASK_MCAST;
+               if ( rx_mask & RX_MASK_ACCEPT_ALL_MULTICAST )
+                       mask |= CFA_L2_SET_RX_MASK_REQ_MASK_ALL_MCAST;
+               if ( rx_mask & RX_MASK_PROMISCUOUS_MODE )
+                       mask |= CFA_L2_SET_RX_MASK_REQ_MASK_PROMISCUOUS;
+       }
+       return mask;
+}
+
+static int bnxt_hwrm_set_rx_mask ( struct bnxt *bp, u32 rx_mask )
+{
+       u16 cmd_len = ( u16 )sizeof ( struct hwrm_cfa_l2_set_rx_mask_input );
+       struct hwrm_cfa_l2_set_rx_mask_input *req;
+       u32 mask = set_rx_mask ( rx_mask );
+
+       req = ( struct hwrm_cfa_l2_set_rx_mask_input * )bp->hwrm_addr_req;
+       hwrm_init ( bp, ( void * )req, ( u16 )HWRM_CFA_L2_SET_RX_MASK,
+               cmd_len );
+       req->vnic_id = bp->vnic_id;
+       req->mask    = mask;
+
+       return wait_resp ( bp, bp->hwrm_cmd_timeout, cmd_len, __func__ );
+}
+
+static int bnxt_hwrm_port_phy_qcfg ( struct bnxt *bp, u16 idx )
+{
+       u16 cmd_len = ( u16 )sizeof ( struct hwrm_port_phy_qcfg_input );
+       struct hwrm_port_phy_qcfg_input *req;
+       struct hwrm_port_phy_qcfg_output *resp;
+       int rc;
+
+       DBGP ( "%s\n", __func__ );
+       req = ( struct hwrm_port_phy_qcfg_input * )bp->hwrm_addr_req;
+       resp = ( struct hwrm_port_phy_qcfg_output * )bp->hwrm_addr_resp;
+       hwrm_init ( bp, ( void * )req, ( u16 )HWRM_PORT_PHY_QCFG, cmd_len );
+       rc = wait_resp ( bp, bp->hwrm_cmd_timeout, cmd_len, __func__ );
+       if ( rc ) {
+               DBGP ( "- %s (  ): Failed\n", __func__ );
+               return STATUS_FAILURE;
+       }
+
+       if ( idx & SUPPORT_SPEEDS )
+               bp->support_speeds = resp->support_speeds;
+
+       if ( idx & DETECT_MEDIA )
+               bp->media_detect = resp->module_status;
+
+       if ( idx & PHY_SPEED )
+               bp->current_link_speed = resp->link_speed;
+
+       if ( idx & PHY_STATUS ) {
+               if ( resp->link == PORT_PHY_QCFG_RESP_LINK_LINK )
+                       bp->link_status = STATUS_LINK_ACTIVE;
+               else
+                       bp->link_status = STATUS_LINK_DOWN;
+       }
+       return STATUS_SUCCESS;
+}
+
+static int bnxt_hwrm_nvm_get_variable_req ( struct bnxt *bp,
+       u16 data_len, u16 option_num, u16 dimensions, u16 index_0 )
+{
+       u16 cmd_len = ( u16 )sizeof ( struct hwrm_nvm_get_variable_input );
+       struct hwrm_nvm_get_variable_input *req;
+
+       DBGP ( "%s\n", __func__ );
+       req = ( struct hwrm_nvm_get_variable_input * )bp->hwrm_addr_req;
+       hwrm_init ( bp, ( void * )req, ( u16 )HWRM_NVM_GET_VARIABLE, cmd_len );
+       req->dest_data_addr = bp->dma_addr_mapping;
+       req->data_len           = data_len;
+       req->option_num         = option_num;
+       req->dimensions         = dimensions;
+       req->index_0            = index_0;
+       return wait_resp ( bp,
+               HWRM_CMD_FLASH_MULTIPLAYER ( bp->hwrm_cmd_timeout ),
+               cmd_len, __func__ );
+}
+
+static int bnxt_get_link_speed ( struct bnxt *bp )
+{
+       u32 *ptr32 = ( u32 * )bp->hwrm_addr_dma;
+
+       DBGP ( "%s\n", __func__ );
+       test_if ( bnxt_hwrm_nvm_get_variable_req ( bp, 4,
+               ( u16 )LINK_SPEED_DRV_NUM,
+               1, ( u16 )bp->port_idx ) != STATUS_SUCCESS )
+               return STATUS_FAILURE;
+       bp->link_set = SET_LINK ( *ptr32, SPEED_DRV_MASK, SPEED_DRV_SHIFT );
+       test_if ( bnxt_hwrm_nvm_get_variable_req ( bp, 4,
+               ( u16 )LINK_SPEED_FW_NUM,
+               1, ( u16 )bp->port_idx ) != STATUS_SUCCESS )
+               return STATUS_FAILURE;
+       bp->link_set |= SET_LINK ( *ptr32, SPEED_FW_MASK, SPEED_FW_SHIFT );
+       test_if ( bnxt_hwrm_nvm_get_variable_req ( bp, 4,
+                ( u16 )D3_LINK_SPEED_FW_NUM, 1,
+                ( u16 )bp->port_idx ) != STATUS_SUCCESS )
+               return STATUS_FAILURE;
+       bp->link_set |= SET_LINK ( *ptr32, D3_SPEED_FW_MASK,
+                       D3_SPEED_FW_SHIFT );
+       test_if ( bnxt_hwrm_nvm_get_variable_req ( bp, 1,
+                ( u16 )PORT_CFG_LINK_SETTINGS_MEDIA_AUTO_DETECT_NUM,
+               1, ( u16 )bp->port_idx ) != STATUS_SUCCESS )
+               return STATUS_FAILURE;
+       bp->link_set |= SET_LINK ( *ptr32,
+               MEDIA_AUTO_DETECT_MASK, MEDIA_AUTO_DETECT_SHIFT );
+
+       switch ( bp->link_set & LINK_SPEED_DRV_MASK ) {
+       case LINK_SPEED_DRV_1G:
+               bp->medium = SET_MEDIUM_SPEED ( bp, MEDIUM_SPEED_1000MBPS );
+               break;
+       case LINK_SPEED_DRV_2_5G:
+               bp->medium = SET_MEDIUM_SPEED ( bp, MEDIUM_SPEED_2500MBPS );
+               break;
+       case LINK_SPEED_DRV_10G:
+               bp->medium = SET_MEDIUM_SPEED ( bp, MEDIUM_SPEED_10GBPS );
+               break;
+       case LINK_SPEED_DRV_25G:
+               bp->medium = SET_MEDIUM_SPEED ( bp, MEDIUM_SPEED_25GBPS );
+               break;
+       case LINK_SPEED_DRV_40G:
+               bp->medium = SET_MEDIUM_SPEED ( bp, MEDIUM_SPEED_40GBPS );
+               break;
+       case LINK_SPEED_DRV_50G:
+               bp->medium = SET_MEDIUM_SPEED ( bp, MEDIUM_SPEED_50GBPS );
+               break;
+       case LINK_SPEED_DRV_100G:
+               bp->medium = SET_MEDIUM_SPEED ( bp, MEDIUM_SPEED_100GBPS );
+               break;
+       case LINK_SPEED_DRV_200G:
+               bp->medium = SET_MEDIUM_SPEED ( bp, MEDIUM_SPEED_200GBPS );
+               break;
+       case LINK_SPEED_DRV_AUTONEG:
+               bp->medium = SET_MEDIUM_SPEED ( bp, MEDIUM_SPEED_AUTONEG );
+               break;
+       default:
+               bp->medium = SET_MEDIUM_DUPLEX ( bp, MEDIUM_FULL_DUPLEX );
+               break;
+       }
+       prn_set_speed ( bp->link_set );
+       return STATUS_SUCCESS;
+}
+
+static int bnxt_get_vlan ( struct bnxt *bp )
+{
+       u32 *ptr32 = ( u32 * )bp->hwrm_addr_dma;
+
+       /* If VF is set to TRUE, Do not issue this command */
+       if ( bp->vf )
+               return STATUS_SUCCESS;
+
+       test_if ( bnxt_hwrm_nvm_get_variable_req ( bp, 1,
+                ( u16 )FUNC_CFG_PRE_BOOT_MBA_VLAN_NUM, 1,
+                ( u16 )bp->ordinal_value ) != STATUS_SUCCESS )
+               return STATUS_FAILURE;
+
+       bp->mba_cfg2 = SET_MBA ( *ptr32, VLAN_MASK, VLAN_SHIFT );
+       test_if ( bnxt_hwrm_nvm_get_variable_req ( bp, 16,
+                ( u16 )FUNC_CFG_PRE_BOOT_MBA_VLAN_VALUE_NUM, 1,
+                ( u16 )bp->ordinal_value ) != STATUS_SUCCESS )
+               return STATUS_FAILURE;
+
+       bp->mba_cfg2 |= SET_MBA ( *ptr32, VLAN_VALUE_MASK, VLAN_VALUE_SHIFT );
+       if ( bp->mba_cfg2 & FUNC_CFG_PRE_BOOT_MBA_VLAN_ENABLED )
+               bp->vlan_id = bp->mba_cfg2 & VLAN_VALUE_MASK;
+       else
+               bp->vlan_id = 0;
+
+       if ( bp->mba_cfg2 & FUNC_CFG_PRE_BOOT_MBA_VLAN_ENABLED )
+               DBGP ( "VLAN MBA Enabled ( %d )\n",
+                       ( bp->mba_cfg2 & VLAN_VALUE_MASK ) );
+
+       return STATUS_SUCCESS;
+}
+
+static int bnxt_hwrm_backing_store_qcfg ( struct bnxt *bp )
+{
+       u16 cmd_len = ( u16 )sizeof ( struct hwrm_func_backing_store_qcfg_input );
+       struct hwrm_func_backing_store_qcfg_input *req;
+
+       DBGP ( "%s\n", __func__ );
+       if ( !bp->thor )
+               return STATUS_SUCCESS;
+
+       req = ( struct hwrm_func_backing_store_qcfg_input * )bp->hwrm_addr_req;
+       hwrm_init ( bp, ( void * )req, ( u16 )HWRM_FUNC_BACKING_STORE_QCFG,
+               cmd_len );
+       return wait_resp ( bp, bp->hwrm_cmd_timeout, cmd_len, __func__ );
+}
+
+static int bnxt_hwrm_backing_store_cfg ( struct bnxt *bp )
+{
+       u16 cmd_len = ( u16 )sizeof ( struct hwrm_func_backing_store_cfg_input );
+       struct hwrm_func_backing_store_cfg_input *req;
+
+       DBGP ( "%s\n", __func__ );
+       if ( !bp->thor )
+               return STATUS_SUCCESS;
+
+       req = ( struct hwrm_func_backing_store_cfg_input * )bp->hwrm_addr_req;
+       hwrm_init ( bp, ( void * )req, ( u16 )HWRM_FUNC_BACKING_STORE_CFG,
+               cmd_len );
+       req->flags   = FUNC_BACKING_STORE_CFG_REQ_FLAGS_PREBOOT_MODE;
+       req->enables = 0;
+       return wait_resp ( bp, HWRM_CMD_WAIT ( 6 ), cmd_len, __func__ );
+}
+
+static int bnxt_hwrm_queue_qportcfg ( struct bnxt *bp )
+{
+       u16 cmd_len = ( u16 )sizeof ( struct hwrm_queue_qportcfg_input );
+       struct hwrm_queue_qportcfg_input *req;
+       struct hwrm_queue_qportcfg_output *resp;
+       int rc;
+
+       DBGP ( "%s\n", __func__ );
+       if ( !bp->thor )
+               return STATUS_SUCCESS;
+
+       req = ( struct hwrm_queue_qportcfg_input * )bp->hwrm_addr_req;
+       resp = ( struct hwrm_queue_qportcfg_output * )bp->hwrm_addr_resp;
+       hwrm_init ( bp, ( void * )req, ( u16 )HWRM_QUEUE_QPORTCFG, cmd_len );
+       req->flags   = 0;
+       req->port_id = 0;
+       rc = wait_resp ( bp, bp->hwrm_cmd_timeout, cmd_len, __func__ );
+       if ( rc ) {
+               DBGP ( "- %s (  ): Failed\n", __func__ );
+               return STATUS_FAILURE;
+       }
+
+       bp->queue_id = resp->queue_id0;
+       return STATUS_SUCCESS;
+}
+
+static int bnxt_hwrm_port_mac_cfg ( struct bnxt *bp )
+{
+       u16 cmd_len = ( u16 )sizeof ( struct hwrm_port_mac_cfg_input );
+       struct hwrm_port_mac_cfg_input *req;
+
+       DBGP ( "%s\n", __func__ );
+       if ( bp->vf )
+               return STATUS_SUCCESS;
+
+       req = ( struct hwrm_port_mac_cfg_input * )bp->hwrm_addr_req;
+       hwrm_init ( bp, ( void * )req, ( u16 )HWRM_PORT_MAC_CFG, cmd_len );
+       req->lpbk = PORT_MAC_CFG_REQ_LPBK_NONE;
+       return wait_resp ( bp, bp->hwrm_cmd_timeout, cmd_len, __func__ );
+}
+
+static int bnxt_hwrm_port_phy_cfg ( struct bnxt *bp )
+{
+       u16 cmd_len = ( u16 )sizeof ( struct hwrm_port_phy_cfg_input );
+       struct hwrm_port_phy_cfg_input *req;
+       u32 flags;
+       u32 enables = 0;
+       u16 force_link_speed = 0;
+       u16 auto_link_speed_mask = 0;
+       u8  auto_mode = 0;
+       u8  auto_pause = 0;
+       u8  auto_duplex = 0;
+
+       DBGP ( "%s\n", __func__ );
+       req = ( struct hwrm_port_phy_cfg_input * )bp->hwrm_addr_req;
+       flags = PORT_PHY_CFG_REQ_FLAGS_FORCE |
+               PORT_PHY_CFG_REQ_FLAGS_RESET_PHY;
+
+       switch ( GET_MEDIUM_SPEED ( bp->medium ) ) {
+       case MEDIUM_SPEED_1000MBPS:
+               force_link_speed = PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_1GB;
+               break;
+       case MEDIUM_SPEED_10GBPS:
+               force_link_speed = PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_10GB;
+               break;
+       case MEDIUM_SPEED_25GBPS:
+               force_link_speed = PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_25GB;
+               break;
+       case MEDIUM_SPEED_40GBPS:
+               force_link_speed = PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_40GB;
+               break;
+       case MEDIUM_SPEED_50GBPS:
+               force_link_speed = PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_50GB;
+               break;
+       case MEDIUM_SPEED_100GBPS:
+               force_link_speed = PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_100GB;
+               break;
+       case MEDIUM_SPEED_200GBPS:
+               force_link_speed = PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_200GB;
+               break;
+       default:
+               auto_mode = PORT_PHY_CFG_REQ_AUTO_MODE_SPEED_MASK;
+               flags &= ~PORT_PHY_CFG_REQ_FLAGS_FORCE;
+               enables |= PORT_PHY_CFG_REQ_ENABLES_AUTO_MODE |
+                       PORT_PHY_CFG_REQ_ENABLES_AUTO_LINK_SPEED_MASK |
+                       PORT_PHY_CFG_REQ_ENABLES_AUTO_DUPLEX |
+                       PORT_PHY_CFG_REQ_ENABLES_AUTO_PAUSE;
+               auto_pause = PORT_PHY_CFG_REQ_AUTO_PAUSE_TX |
+                               PORT_PHY_CFG_REQ_AUTO_PAUSE_RX;
+               auto_duplex = PORT_PHY_CFG_REQ_AUTO_DUPLEX_BOTH;
+               auto_link_speed_mask = bp->support_speeds;
+               break;
+       }
+
+       hwrm_init ( bp, ( void * )req, ( u16 )HWRM_PORT_PHY_CFG, cmd_len );
+       req->flags = flags;
+       req->enables = enables;
+       req->port_id = bp->port_idx;
+       req->force_link_speed = force_link_speed;
+       req->auto_mode = auto_mode;
+       req->auto_duplex = auto_duplex;
+       req->auto_pause = auto_pause;
+       req->auto_link_speed_mask = auto_link_speed_mask;
+
+       return wait_resp ( bp, bp->hwrm_cmd_timeout, cmd_len, __func__ );
+}
+
+static int bnxt_query_phy_link ( struct bnxt *bp )
+{
+       u16 flag = PHY_STATUS | PHY_SPEED | DETECT_MEDIA;
+
+       DBGP ( "%s\n", __func__ );
+       /* Query Link Status */
+       if ( bnxt_hwrm_port_phy_qcfg ( bp, QCFG_PHY_ALL ) != STATUS_SUCCESS ) {
+                       return STATUS_FAILURE;
+       }
+
+       if ( bp->link_status == STATUS_LINK_ACTIVE )
+               return STATUS_SUCCESS;
+
+       /* If VF is set to TRUE, Do not issue the following commands */
+       if ( bp->vf )
+               return STATUS_SUCCESS;
+
+       /* If multi_host or NPAR, Do not issue bnxt_get_link_speed */
+       if ( FLAG_TEST ( bp->flags, PORT_PHY_FLAGS ) ) {
+               dbg_flags ( __func__, bp->flags );
+               return STATUS_SUCCESS;
+       }
+
+       /* HWRM_NVM_GET_VARIABLE - speed */
+       if ( bnxt_get_link_speed ( bp ) != STATUS_SUCCESS ) {
+                       return STATUS_FAILURE;
+       }
+
+       /* Configure link if it is not up */
+       bnxt_hwrm_port_phy_cfg ( bp );
+
+       /* refresh link speed values after bringing link up */
+       return bnxt_hwrm_port_phy_qcfg ( bp, flag );
+}
+
+static int bnxt_get_phy_link ( struct bnxt *bp )
+{
+       u16 i;
+       u16 flag = PHY_STATUS | PHY_SPEED | DETECT_MEDIA;
+
+       DBGP ( "%s\n", __func__ );
+       dbg_chip_info ( bp );
+       for ( i = 0; i < ( bp->wait_link_timeout / 100 ); i++ ) {
+               if ( bnxt_hwrm_port_phy_qcfg ( bp, flag ) != STATUS_SUCCESS )
+                       break;
+
+               if ( bp->link_status == STATUS_LINK_ACTIVE )
+                       break;
+
+//             if ( bp->media_detect )
+//                     break;
+               mdelay ( LINK_POLL_WAIT_TIME );
+       }
+       dbg_link_state ( bp, ( u32 ) ( ( i + 1 ) * 100 ) );
+       bnxt_set_link ( bp );
+       return STATUS_SUCCESS;
+}
+
+static int bnxt_hwrm_stat_ctx_alloc ( struct bnxt *bp )
+{
+       u16 cmd_len = ( u16 )sizeof ( struct hwrm_stat_ctx_alloc_input );
+       struct hwrm_stat_ctx_alloc_input *req;
+       struct hwrm_stat_ctx_alloc_output *resp;
+       int rc;
+
+       DBGP ( "%s\n", __func__ );
+       req = ( struct hwrm_stat_ctx_alloc_input * )bp->hwrm_addr_req;
+       resp = ( struct hwrm_stat_ctx_alloc_output * )bp->hwrm_addr_resp;
+       hwrm_init ( bp, ( void * )req, ( u16 )HWRM_STAT_CTX_ALLOC, cmd_len );
+       rc = wait_resp ( bp, bp->hwrm_cmd_timeout, cmd_len, __func__ );
+       if ( rc ) {
+               DBGP ( "- %s (  ): Failed\n", __func__ );
+               return STATUS_FAILURE;
+       }
+
+       FLAG_SET ( bp->flag_hwrm, VALID_STAT_CTX );
+       bp->stat_ctx_id = ( u16 )resp->stat_ctx_id;
+       return STATUS_SUCCESS;
+}
+
+static int bnxt_hwrm_stat_ctx_free ( struct bnxt *bp )
+{
+       u16 cmd_len = ( u16 )sizeof ( struct hwrm_stat_ctx_free_input );
+       struct hwrm_stat_ctx_free_input *req;
+       int rc;
+
+       DBGP ( "%s\n", __func__ );
+       if ( ! ( FLAG_TEST ( bp->flag_hwrm, VALID_STAT_CTX ) ) )
+               return STATUS_SUCCESS;
+
+       req = ( struct hwrm_stat_ctx_free_input * )bp->hwrm_addr_req;
+       hwrm_init ( bp, ( void * )req, ( u16 )HWRM_STAT_CTX_FREE, cmd_len );
+       req->stat_ctx_id = ( u32 )bp->stat_ctx_id;
+       rc = wait_resp ( bp, bp->hwrm_cmd_timeout, cmd_len, __func__ );
+       if ( rc ) {
+               DBGP ( "- %s (  ): Failed\n", __func__ );
+               return STATUS_FAILURE;
+       }
+
+       FLAG_RESET ( bp->flag_hwrm, VALID_STAT_CTX );
+       return STATUS_SUCCESS;
+}
+
+static int bnxt_hwrm_ring_free_grp ( struct bnxt *bp )
+{
+       u16 cmd_len = ( u16 )sizeof ( struct hwrm_ring_grp_free_input );
+       struct hwrm_ring_grp_free_input *req;
+       int rc;
+
+       DBGP ( "%s\n", __func__ );
+       if ( ! ( FLAG_TEST ( bp->flag_hwrm, VALID_RING_GRP ) ) )
+               return STATUS_SUCCESS;
+
+       req = ( struct hwrm_ring_grp_free_input * )bp->hwrm_addr_req;
+       hwrm_init ( bp, ( void * )req, ( u16 )HWRM_RING_GRP_FREE, cmd_len );
+       req->ring_group_id = ( u32 )bp->ring_grp_id;
+       rc = wait_resp ( bp, bp->hwrm_cmd_timeout, cmd_len, __func__ );
+       if ( rc ) {
+               DBGP ( "- %s (  ): Failed\n", __func__ );
+               return STATUS_FAILURE;
+       }
+
+       FLAG_RESET ( bp->flag_hwrm, VALID_RING_GRP );
+       return STATUS_SUCCESS;
+}
+
+static int bnxt_hwrm_ring_alloc_grp ( struct bnxt *bp )
+{
+       u16 cmd_len = ( u16 )sizeof ( struct hwrm_ring_grp_alloc_input );
+       struct hwrm_ring_grp_alloc_input *req;
+       struct hwrm_ring_grp_alloc_output *resp;
+       int rc;
+
+       DBGP ( "%s\n", __func__ );
+       if ( bp->thor )
+               return STATUS_SUCCESS;
+
+       req = ( struct hwrm_ring_grp_alloc_input * )bp->hwrm_addr_req;
+       resp = ( struct hwrm_ring_grp_alloc_output * )bp->hwrm_addr_resp;
+       hwrm_init ( bp, ( void * )req, ( u16 )HWRM_RING_GRP_ALLOC, cmd_len );
+       req->cr = bp->cq_ring_id;
+       req->rr = bp->rx_ring_id;
+       req->ar = ( u16 )HWRM_NA_SIGNATURE;
+       if ( bp->vf )
+               req->sc = bp->stat_ctx_id;
+
+       rc = wait_resp ( bp, bp->hwrm_cmd_timeout, cmd_len, __func__ );
+       if ( rc ) {
+               DBGP ( "- %s (  ): Failed\n", __func__ );
+               return STATUS_FAILURE;
+       }
+
+       FLAG_SET ( bp->flag_hwrm, VALID_RING_GRP );
+       bp->ring_grp_id = ( u16 )resp->ring_group_id;
+       return STATUS_SUCCESS;
+}
+
+int bnxt_hwrm_ring_free ( struct bnxt *bp, u16 ring_id, u8 ring_type )
+{
+       u16 cmd_len = ( u16 )sizeof ( struct hwrm_ring_free_input );
+       struct hwrm_ring_free_input *req;
+
+       DBGP ( "%s\n", __func__ );
+       req = ( struct hwrm_ring_free_input * )bp->hwrm_addr_req;
+       hwrm_init ( bp, ( void * )req, ( u16 )HWRM_RING_FREE, cmd_len );
+       req->ring_type = ring_type;
+       req->ring_id   = ring_id;
+       return wait_resp ( bp, bp->hwrm_cmd_timeout, cmd_len, __func__ );
+}
+
+static int bnxt_hwrm_ring_alloc ( struct bnxt *bp, u8 type )
+{
+       u16 cmd_len = ( u16 )sizeof ( struct hwrm_ring_alloc_input );
+       struct hwrm_ring_alloc_input *req;
+       struct hwrm_ring_alloc_output *resp;
+       int rc;
+
+       DBGP ( "%s\n", __func__ );
+       req = ( struct hwrm_ring_alloc_input * )bp->hwrm_addr_req;
+       resp = ( struct hwrm_ring_alloc_output * )bp->hwrm_addr_resp;
+       hwrm_init ( bp, ( void * )req, ( u16 )HWRM_RING_ALLOC, cmd_len );
+       req->ring_type = type;
+       switch ( type ) {
+       case RING_ALLOC_REQ_RING_TYPE_NQ:
+               req->page_size  = LM_PAGE_BITS ( 12 );
+               req->int_mode   = BNXT_CQ_INTR_MODE ( bp->vf );
+               req->length     = ( u32 )bp->nq.ring_cnt;
+               req->logical_id = 0xFFFF; // Required value for Thor FW?
+               req->page_tbl_addr = virt_to_bus ( bp->nq.bd_virt );
+               break;
+       case RING_ALLOC_REQ_RING_TYPE_L2_CMPL:
+               req->page_size = LM_PAGE_BITS ( 8 );
+               req->int_mode  = BNXT_CQ_INTR_MODE ( bp->vf );
+               req->length    = ( u32 )bp->cq.ring_cnt;
+               req->page_tbl_addr = virt_to_bus ( bp->cq.bd_virt );
+               if ( !bp->thor )
+                       break;
+               req->enables = RING_ALLOC_REQ_ENABLES_NQ_RING_ID_VALID;
+               req->nq_ring_id = bp->nq_ring_id;
+               req->cq_handle = ( u64 )bp->nq_ring_id;
+               break;
+       case RING_ALLOC_REQ_RING_TYPE_TX:
+               req->page_size   = LM_PAGE_BITS ( 8 );
+               req->int_mode    = RING_ALLOC_REQ_INT_MODE_POLL;
+               req->length      = ( u32 )bp->tx.ring_cnt;
+               req->queue_id    = TX_RING_QID;
+               req->stat_ctx_id = ( u32 )bp->stat_ctx_id;
+               req->cmpl_ring_id  = bp->cq_ring_id;
+               req->page_tbl_addr = virt_to_bus ( bp->tx.bd_virt );
+               break;
+       case RING_ALLOC_REQ_RING_TYPE_RX:
+               req->page_size   = LM_PAGE_BITS ( 8 );
+               req->int_mode    = RING_ALLOC_REQ_INT_MODE_POLL;
+               req->length      = ( u32 )bp->rx.ring_cnt;
+               req->stat_ctx_id = ( u32 )STAT_CTX_ID;
+               req->cmpl_ring_id  = bp->cq_ring_id;
+               req->page_tbl_addr = virt_to_bus ( bp->rx.bd_virt );
+               if ( !bp->thor )
+                       break;
+               req->queue_id    = ( u16 )RX_RING_QID;
+               req->rx_buf_size = MAX_ETHERNET_PACKET_BUFFER_SIZE;
+               req->enables     = RING_ALLOC_REQ_ENABLES_RX_BUF_SIZE_VALID;
+               break;
+       default:
+               return STATUS_SUCCESS;
+       }
+       rc = wait_resp ( bp, bp->hwrm_cmd_timeout, cmd_len, __func__ );
+       if ( rc ) {
+               DBGP ( "- %s (  ): Failed, type = %x\n", __func__, type );
+               return STATUS_FAILURE;
+       }
+
+       if ( type == RING_ALLOC_REQ_RING_TYPE_L2_CMPL ) {
+               FLAG_SET ( bp->flag_hwrm, VALID_RING_CQ );
+               bp->cq_ring_id = resp->ring_id;
+       } else if ( type == RING_ALLOC_REQ_RING_TYPE_TX ) {
+               FLAG_SET ( bp->flag_hwrm, VALID_RING_TX );
+               bp->tx_ring_id = resp->ring_id;
+       } else if ( type == RING_ALLOC_REQ_RING_TYPE_RX ) {
+               FLAG_SET ( bp->flag_hwrm, VALID_RING_RX );
+               bp->rx_ring_id = resp->ring_id;
+       } else if ( type == RING_ALLOC_REQ_RING_TYPE_NQ ) {
+               FLAG_SET ( bp->flag_hwrm, VALID_RING_NQ );
+               bp->nq_ring_id = resp->ring_id;
+       }
+       return STATUS_SUCCESS;
+}
+
+static int bnxt_hwrm_ring_alloc_cq ( struct bnxt *bp )
+{
+       DBGP ( "%s\n", __func__ );
+       return bnxt_hwrm_ring_alloc ( bp, RING_ALLOC_REQ_RING_TYPE_L2_CMPL );
+}
+
+static int bnxt_hwrm_ring_alloc_tx ( struct bnxt *bp )
+{
+       DBGP ( "%s\n", __func__ );
+       return bnxt_hwrm_ring_alloc ( bp, RING_ALLOC_REQ_RING_TYPE_TX );
+}
+
+static int bnxt_hwrm_ring_alloc_rx ( struct bnxt *bp )
+{
+       DBGP ( "%s\n", __func__ );
+       return bnxt_hwrm_ring_alloc ( bp, RING_ALLOC_REQ_RING_TYPE_RX );
+}
+
+static int bnxt_hwrm_ring_free_cq ( struct bnxt *bp )
+{
+       int ret = STATUS_SUCCESS;
+
+       DBGP ( "%s\n", __func__ );
+       if ( ! ( FLAG_TEST ( bp->flag_hwrm, VALID_RING_CQ ) ) )
+               return ret;
+
+       ret = RING_FREE ( bp, bp->cq_ring_id, RING_FREE_REQ_RING_TYPE_L2_CMPL );
+       if ( ret == STATUS_SUCCESS )
+               FLAG_RESET ( bp->flag_hwrm, VALID_RING_CQ );
+
+       return ret;
+}
+
+static int bnxt_hwrm_ring_free_tx ( struct bnxt *bp )
+{
+       int ret = STATUS_SUCCESS;
+
+       DBGP ( "%s\n", __func__ );
+       if ( ! ( FLAG_TEST ( bp->flag_hwrm, VALID_RING_TX ) ) )
+               return ret;
+
+       ret = RING_FREE ( bp, bp->tx_ring_id, RING_FREE_REQ_RING_TYPE_TX );
+       if ( ret == STATUS_SUCCESS )
+               FLAG_RESET ( bp->flag_hwrm, VALID_RING_TX );
+
+       return ret;
+}
+
+static int bnxt_hwrm_ring_free_rx ( struct bnxt *bp )
+{
+       int ret = STATUS_SUCCESS;
+
+       DBGP ( "%s\n", __func__ );
+       if ( ! ( FLAG_TEST ( bp->flag_hwrm, VALID_RING_RX ) ) )
+               return ret;
+
+       ret = RING_FREE ( bp, bp->rx_ring_id, RING_FREE_REQ_RING_TYPE_RX );
+       if ( ret == STATUS_SUCCESS )
+               FLAG_RESET ( bp->flag_hwrm, VALID_RING_RX );
+
+       return ret;
+}
+
+static int bnxt_hwrm_ring_alloc_nq ( struct bnxt *bp )
+{
+       if ( !bp->thor )
+               return STATUS_SUCCESS;
+       return bnxt_hwrm_ring_alloc ( bp, RING_ALLOC_REQ_RING_TYPE_NQ );
+}
+
+static int bnxt_hwrm_ring_free_nq ( struct bnxt *bp )
+{
+       int ret = STATUS_SUCCESS;
+
+       if ( !bp->thor )
+               return STATUS_SUCCESS;
+
+       DBGP ( "%s\n", __func__ );
+       if ( ! ( FLAG_TEST ( bp->flag_hwrm, VALID_RING_NQ ) ) )
+               return ret;
+
+       ret = RING_FREE ( bp, bp->nq_ring_id, RING_FREE_REQ_RING_TYPE_NQ );
+       if ( ret == STATUS_SUCCESS )
+               FLAG_RESET ( bp->flag_hwrm, VALID_RING_NQ );
+
+       return ret;
+}
+
+static int bnxt_hwrm_vnic_alloc ( struct bnxt *bp )
+{
+       u16 cmd_len = ( u16 )sizeof ( struct hwrm_vnic_alloc_input );
+       struct hwrm_vnic_alloc_input *req;
+       struct hwrm_vnic_alloc_output *resp;
+       int rc;
+
+       DBGP ( "%s\n", __func__ );
+       req = ( struct hwrm_vnic_alloc_input * )bp->hwrm_addr_req;
+       resp = ( struct hwrm_vnic_alloc_output * )bp->hwrm_addr_resp;
+       hwrm_init ( bp, ( void * )req, ( u16 )HWRM_VNIC_ALLOC, cmd_len );
+       req->flags = VNIC_ALLOC_REQ_FLAGS_DEFAULT;
+       rc = wait_resp ( bp, bp->hwrm_cmd_timeout, cmd_len, __func__ );
+       if ( rc ) {
+               DBGP ( "- %s (  ): Failed\n", __func__ );
+               return STATUS_FAILURE;
+       }
+
+       FLAG_SET ( bp->flag_hwrm, VALID_VNIC_ID );
+       bp->vnic_id = resp->vnic_id;
+       return STATUS_SUCCESS;
+}
+
+static int bnxt_hwrm_vnic_free ( struct bnxt *bp )
+{
+       u16 cmd_len = ( u16 )sizeof ( struct hwrm_vnic_free_input );
+       struct hwrm_vnic_free_input *req;
+       int rc;
+
+       DBGP ( "%s\n", __func__ );
+       if ( ! ( FLAG_TEST ( bp->flag_hwrm, VALID_VNIC_ID ) ) )
+               return STATUS_SUCCESS;
+
+       req = ( struct hwrm_vnic_free_input * )bp->hwrm_addr_req;
+       hwrm_init ( bp, ( void * )req, ( u16 )HWRM_VNIC_FREE, cmd_len );
+       req->vnic_id = bp->vnic_id;
+       rc = wait_resp ( bp, bp->hwrm_cmd_timeout, cmd_len, __func__ );
+       if ( rc ) {
+               DBGP ( "- %s (  ): Failed\n", __func__ );
+               return STATUS_FAILURE;
+       }
+
+       FLAG_RESET ( bp->flag_hwrm, VALID_VNIC_ID );
+       return STATUS_SUCCESS;
+}
+
+static int bnxt_hwrm_vnic_cfg ( struct bnxt *bp )
+{
+       u16 cmd_len = ( u16 )sizeof ( struct hwrm_vnic_cfg_input );
+       struct hwrm_vnic_cfg_input *req;
+
+       DBGP ( "%s\n", __func__ );
+       req = ( struct hwrm_vnic_cfg_input * )bp->hwrm_addr_req;
+       hwrm_init ( bp, ( void * )req, ( u16 )HWRM_VNIC_CFG, cmd_len );
+       req->enables = VNIC_CFG_REQ_ENABLES_MRU;
+       req->mru         = bp->mtu;
+
+       if ( bp->thor ) {
+               req->enables |= ( VNIC_CFG_REQ_ENABLES_DEFAULT_RX_RING_ID |
+                               VNIC_CFG_REQ_ENABLES_DEFAULT_CMPL_RING_ID );
+               req->default_rx_ring_id   = bp->rx_ring_id;
+               req->default_cmpl_ring_id = bp->cq_ring_id;
+       } else {
+               req->enables |= VNIC_CFG_REQ_ENABLES_DFLT_RING_GRP;
+               req->dflt_ring_grp = bp->ring_grp_id;
+       }
+
+       req->flags   = VNIC_CFG_REQ_FLAGS_VLAN_STRIP_MODE;
+       req->vnic_id = bp->vnic_id;
+       return wait_resp ( bp, bp->hwrm_cmd_timeout, cmd_len, __func__ );
+}
+
+static int bnxt_set_rx_mask ( struct bnxt *bp )
+{
+       return bnxt_hwrm_set_rx_mask ( bp, RX_MASK );
+}
+
+static int bnxt_reset_rx_mask ( struct bnxt *bp )
+{
+       return bnxt_hwrm_set_rx_mask ( bp, 0 );
+}
+
+typedef int ( *hwrm_func_t ) ( struct bnxt *bp );
+
+hwrm_func_t bring_down_chip[] = {
+       bnxt_hwrm_func_drv_unrgtr,      /* HWRM_FUNC_DRV_UNRGTR         */
+       NULL,
+};
+
+hwrm_func_t bring_down_nic[] = {
+       bnxt_hwrm_cfa_l2_filter_free,   /* HWRM_CFA_L2_FILTER_FREE      */
+       bnxt_reset_rx_mask,
+       bnxt_hwrm_vnic_cfg,             /* HWRM_VNIC_CFG                */
+       bnxt_free_rx_iob,               /* HWRM_FREE_IOB                */
+       bnxt_hwrm_vnic_free,            /* HWRM_VNIC_FREE               */
+       bnxt_hwrm_ring_free_grp,        /* HWRM_RING_GRP_FREE           */
+       bnxt_hwrm_ring_free_rx,         /* HWRM_RING_FREE - RX Ring     */
+       bnxt_hwrm_ring_free_tx,         /* HWRM_RING_FREE - TX Ring     */
+       bnxt_hwrm_stat_ctx_free,        /* HWRM_STAT_CTX_FREE           */
+       bnxt_hwrm_ring_free_cq,         /* HWRM_RING_FREE - CQ Ring     */
+       bnxt_hwrm_ring_free_nq,         /* HWRM_RING_FREE - NQ Ring     */
+       NULL,
+};
+hwrm_func_t bring_up_chip[] = {
+       bnxt_hwrm_ver_get,              /* HWRM_VER_GET                 */
+       bnxt_hwrm_func_reset_req,       /* HWRM_FUNC_RESET              */
+       bnxt_hwrm_func_drv_rgtr,        /* HWRM_FUNC_DRV_RGTR           */
+       bnxt_hwrm_func_qcaps_req,       /* HWRM_FUNC_QCAPS              */
+       bnxt_hwrm_backing_store_cfg,    /* HWRM_FUNC_BACKING_STORE_CFG  */
+       bnxt_hwrm_backing_store_qcfg,   /* HWRM_FUNC_BACKING_STORE_QCFG */
+       bnxt_hwrm_func_resource_qcaps,  /* HWRM_FUNC_RESOURCE_QCAPS     */
+       bnxt_hwrm_func_qcfg_req,        /* HWRM_FUNC_QCFG               */
+       bnxt_get_vlan,                  /* HWRM_NVM_GET_VARIABLE - vlan */
+       bnxt_hwrm_port_mac_cfg,         /* HWRM_PORT_MAC_CFG            */
+       bnxt_hwrm_func_cfg_req,         /* HWRM_FUNC_CFG                */
+       bnxt_query_phy_link,            /* HWRM_PORT_PHY_QCFG           */
+       bnxt_get_device_address,        /* HW MAC address               */
+       NULL,
+};
+
+hwrm_func_t bring_up_nic[] = {
+       bnxt_hwrm_stat_ctx_alloc,       /* HWRM_STAT_CTX_ALLOC          */
+       bnxt_hwrm_queue_qportcfg,       /* HWRM_QUEUE_QPORTCFG          */
+       bnxt_hwrm_ring_alloc_nq,        /* HWRM_RING_ALLOC - NQ Ring    */
+       bnxt_hwrm_ring_alloc_cq,        /* HWRM_RING_ALLOC - CQ Ring    */
+       bnxt_hwrm_ring_alloc_tx,        /* HWRM_RING_ALLOC - TX Ring    */
+       bnxt_hwrm_ring_alloc_rx,        /* HWRM_RING_ALLOC - RX Ring    */
+       bnxt_hwrm_ring_alloc_grp,       /* HWRM_RING_GRP_ALLOC - Group  */
+       bnxt_hwrm_vnic_alloc,           /* HWRM_VNIC_ALLOC              */
+       bnxt_post_rx_buffers,           /* Post RX buffers              */
+       bnxt_hwrm_set_async_event,      /* ENABLES_ASYNC_EVENT_CR       */
+       bnxt_hwrm_vnic_cfg,             /* HWRM_VNIC_CFG                */
+       bnxt_hwrm_cfa_l2_filter_alloc,  /* HWRM_CFA_L2_FILTER_ALLOC     */
+       bnxt_get_phy_link,              /* HWRM_PORT_PHY_QCFG - PhyLink */
+       bnxt_set_rx_mask,               /* HWRM_CFA_L2_SET_RX_MASK      */
+       NULL,
+};
+
+int bnxt_hwrm_run ( hwrm_func_t cmds[], struct bnxt *bp )
+{
+       hwrm_func_t *ptr;
+       int ret;
+
+       for ( ptr = cmds; *ptr; ++ptr ) {
+               memset ( bp->hwrm_addr_req,  0, REQ_BUFFER_SIZE );
+               memset ( bp->hwrm_addr_resp, 0, RESP_BUFFER_SIZE );
+               ret = ( *ptr ) ( bp );
+               if ( ret ) {
+                       DBGP ( "- %s (  ): Failed\n", __func__ );
+                       return STATUS_FAILURE;
+               }
+       }
+       return STATUS_SUCCESS;
+}
+
+#define bnxt_down_chip( bp )   bnxt_hwrm_run ( bring_down_chip, bp )
+#define bnxt_up_chip( bp )     bnxt_hwrm_run ( bring_up_chip, bp )
+#define bnxt_down_nic( bp )    bnxt_hwrm_run ( bring_down_nic, bp )
+#define bnxt_up_nic( bp )      bnxt_hwrm_run ( bring_up_nic, bp )
+
+static int bnxt_open ( struct net_device *dev )
+{
+       struct bnxt *bp = netdev_priv ( dev );
+
+       DBGP ( "%s\n", __func__ );
+       bnxt_mm_nic ( bp );
+       return (bnxt_up_nic ( bp ));
+}
+
+static void bnxt_tx_adjust_pkt ( struct bnxt *bp, struct io_buffer *iob )
+{
+       u16 prev_len = iob_len ( iob );
+
+       bp->vlan_tx = bnxt_get_pkt_vlan ( ( char * )iob->data );
+       if ( !bp->vlan_tx && bp->vlan_id )
+               bnxt_add_vlan ( iob, bp->vlan_id );
+
+       dbg_tx_vlan ( bp, ( char * )iob->data, prev_len, iob_len ( iob ) );
+       if ( iob_len ( iob ) != prev_len )
+               prev_len = iob_len ( iob );
+
+       iob_pad ( iob, ETH_ZLEN );
+       dbg_tx_pad ( prev_len, iob_len ( iob ) );
+}
+
+static int bnxt_tx ( struct net_device *dev, struct io_buffer *iob )
+{
+       struct bnxt *bp = netdev_priv ( dev );
+       u16 len, entry;
+       dma_addr_t mapping;
+
+       if ( bnxt_tx_avail ( bp ) < 1 ) {
+               DBGP ( "- %s (  ): Failed no bd's available\n", __func__ );
+               return -ENOBUFS;
+       }
+
+       bnxt_tx_adjust_pkt ( bp, iob );
+       entry = bp->tx.prod_id;
+       mapping = virt_to_bus ( iob->data );
+       len = iob_len ( iob );
+       bp->tx.iob[entry] = iob;
+       bnxt_set_txq ( bp, entry, mapping, len );
+       entry = NEXT_IDX ( entry, bp->tx.ring_cnt );
+       dump_tx_pkt ( ( u8 * )iob->data, len, bp->tx.prod_id );
+       /* Packets are ready, update Tx producer idx local and on card. */
+       bnxt_db_tx ( bp, ( u32 )entry );
+       bp->tx.prod_id = entry;
+       bp->tx.cnt_req++;
+       /* memory barrier */
+       mb (  );
+       return 0;
+}
+
+static void bnxt_adv_nq_index ( struct bnxt *bp, u16 cnt )
+{
+       u16 cons_id;
+
+       cons_id = bp->nq.cons_id + cnt;
+       if ( cons_id >= bp->nq.ring_cnt ) {
+               /* Toggle completion bit when the ring wraps. */
+               bp->nq.completion_bit ^= 1;
+               cons_id = cons_id - bp->nq.ring_cnt;
+       }
+       bp->nq.cons_id = cons_id;
+}
+
+void bnxt_link_evt ( struct bnxt *bp, struct hwrm_async_event_cmpl *evt )
+{
+       switch ( evt->event_id ) {
+       case ASYNC_EVENT_CMPL_EVENT_ID_LINK_STATUS_CHANGE:
+               if ( evt->event_data1 & 0x01 )
+                       bp->link_status = STATUS_LINK_ACTIVE;
+               else
+                       bp->link_status = STATUS_LINK_DOWN;
+               bnxt_set_link ( bp );
+               dbg_link_status ( bp );
+               break;
+       default:
+               break;
+       }
+}
+
+static void bnxt_service_cq ( struct net_device *dev )
+{
+       struct bnxt *bp = netdev_priv ( dev );
+       struct cmpl_base *cmp;
+       struct tx_cmpl *tx;
+       u16 old_cid = bp->cq.cons_id;
+       int done = SERVICE_NEXT_CQ_BD;
+       u32 cq_type;
+
+       while ( done == SERVICE_NEXT_CQ_BD ) {
+               cmp = ( struct cmpl_base * )BD_NOW ( bp->cq.bd_virt,
+                                               bp->cq.cons_id,
+                                               sizeof ( struct cmpl_base ) );
+
+               if ( ( cmp->info3_v & CMPL_BASE_V ) ^ bp->cq.completion_bit )
+                       break;
+
+               cq_type = cmp->type & CMPL_BASE_TYPE_MASK;
+               dump_evt ( ( u8 * )cmp, cq_type, bp->cq.cons_id, 0 );
+               dump_cq ( cmp, bp->cq.cons_id );
+
+               switch ( cq_type ) {
+               case CMPL_BASE_TYPE_TX_L2:
+                       tx = ( struct tx_cmpl * )cmp;
+                       bnxt_tx_complete ( dev, ( u16 )tx->opaque );
+               /* Fall through */
+               case CMPL_BASE_TYPE_STAT_EJECT:
+                       bnxt_adv_cq_index ( bp, 1 );
+                       break;
+               case CMPL_BASE_TYPE_RX_L2:
+                       done = bnxt_rx_complete ( dev,
+                               ( struct rx_pkt_cmpl * )cmp );
+                       break;
+               case CMPL_BASE_TYPE_HWRM_ASYNC_EVENT:
+                       bnxt_link_evt ( bp,
+                               ( struct hwrm_async_event_cmpl * )cmp );
+                       bnxt_adv_cq_index ( bp, 1 );
+                       break;
+               default:
+                       done = NO_MORE_CQ_BD_TO_SERVICE;
+                       break;
+               }
+       }
+
+       if ( bp->cq.cons_id != old_cid )
+               bnxt_db_cq ( bp );
+}
+
+static void bnxt_service_nq ( struct net_device *dev )
+{
+       struct bnxt *bp = netdev_priv ( dev );
+       struct nq_base *nqp;
+       u16 old_cid = bp->nq.cons_id;
+       int done = SERVICE_NEXT_NQ_BD;
+       u32 nq_type;
+
+       if ( !bp->thor )
+               return;
+
+       while ( done == SERVICE_NEXT_NQ_BD ) {
+               nqp = ( struct nq_base * )BD_NOW ( bp->nq.bd_virt,
+                       bp->nq.cons_id, sizeof ( struct nq_base ) );
+               if ( ( nqp->v & NQ_CN_V ) ^ bp->nq.completion_bit )
+                       break;
+               nq_type = ( nqp->type & NQ_CN_TYPE_MASK );
+               dump_evt ( ( u8 * )nqp, nq_type, bp->nq.cons_id, 1 );
+               dump_nq ( nqp, bp->nq.cons_id );
+
+               switch ( nq_type ) {
+               case CMPL_BASE_TYPE_HWRM_ASYNC_EVENT:
+                       bnxt_link_evt ( bp,
+                               ( struct hwrm_async_event_cmpl * )nqp );
+                               /* Fall through */
+               case NQ_CN_TYPE_CQ_NOTIFICATION:
+                       bnxt_adv_nq_index ( bp, 1 );
+                       break;
+               default:
+                       done = NO_MORE_NQ_BD_TO_SERVICE;
+                       break;
+               }
+       }
+
+       if ( bp->nq.cons_id != old_cid )
+               bnxt_db_nq ( bp );
+}
+
+static void bnxt_poll ( struct net_device *dev )
+{
+       mb (  );
+       bnxt_service_cq ( dev );
+       bnxt_service_nq ( dev );
+}
+
+static void bnxt_close ( struct net_device *dev )
+{
+       struct bnxt *bp = netdev_priv ( dev );
+
+       DBGP ( "%s\n", __func__ );
+       bnxt_down_nic (bp);
+
+       /* iounmap PCI BAR ( s ) */
+       bnxt_down_pci(bp);
+
+       /* Get Bar Address */
+       bp->bar0 = bnxt_pci_base ( bp->pdev, PCI_BASE_ADDRESS_0 );
+       bp->bar1 = bnxt_pci_base ( bp->pdev, PCI_BASE_ADDRESS_2 );
+       bp->bar2 = bnxt_pci_base ( bp->pdev, PCI_BASE_ADDRESS_4 );
+
+}
+
+static struct net_device_operations bnxt_netdev_ops = {
+       .open     = bnxt_open,
+       .close    = bnxt_close,
+       .poll     = bnxt_poll,
+       .transmit = bnxt_tx,
+};
+
+static int bnxt_init_one ( struct pci_device *pci )
+{
+       struct net_device *netdev;
+       struct bnxt *bp;
+       int err = 0;
+
+       DBGP ( "%s\n", __func__ );
+       /* Allocate network device */
+       netdev = alloc_etherdev ( sizeof ( *bp ) );
+       if ( !netdev ) {
+               DBGP ( "- %s (  ): alloc_etherdev Failed\n", __func__ );
+               err = -ENOMEM;
+               goto disable_pdev;
+       }
+
+       /* Initialise network device */
+       netdev_init ( netdev, &bnxt_netdev_ops );
+
+       /* Driver private area for this device */
+       bp = netdev_priv ( netdev );
+
+       /* Set PCI driver private data */
+       pci_set_drvdata ( pci, netdev );
+
+       /* Clear Private area data */
+       memset ( bp, 0, sizeof ( *bp ) );
+       bp->pdev = pci;
+       bp->dev  = netdev;
+       netdev->dev = &pci->dev;
+
+       /* Enable PCI device */
+       adjust_pci_device ( pci );
+
+       /* Get PCI Information */
+       bnxt_get_pci_info ( bp );
+
+       /* Allocate and Initialise device specific parameters */
+       if ( bnxt_alloc_mem ( bp ) != 0 ) {
+               DBGP ( "- %s (  ): bnxt_alloc_mem Failed\n", __func__ );
+               goto err_down_pci;
+       }
+
+       /* Get device specific information */
+       if ( bnxt_up_chip ( bp ) != 0 ) {
+               DBGP ( "- %s (  ): bnxt_up_chip Failed\n", __func__ );
+               goto err_down_chip;
+       }
+
+       /* Register Network device */
+       if ( register_netdev ( netdev ) != 0 ) {
+               DBGP ( "- %s (  ): register_netdev Failed\n", __func__ );
+               goto err_down_chip;
+       }
+
+       return 0;
+
+err_down_chip:
+       bnxt_down_chip (bp);
+       bnxt_free_mem ( bp );
+
+err_down_pci:
+       bnxt_down_pci ( bp );
+       netdev_nullify ( netdev );
+       netdev_put ( netdev );
+
+disable_pdev:
+       pci_set_drvdata ( pci, NULL );
+       return err;
+}
+
+static void bnxt_remove_one ( struct pci_device *pci )
+{
+       struct net_device *netdev = pci_get_drvdata ( pci );
+       struct bnxt *bp = netdev_priv ( netdev );
+
+       DBGP ( "%s\n", __func__ );
+       /* Unregister network device */
+       unregister_netdev ( netdev );
+
+       /* Bring down Chip */
+       bnxt_down_chip(bp);
+
+       /* Free Allocated resource */
+       bnxt_free_mem ( bp );
+
+       /* iounmap PCI BAR ( s ) */
+       bnxt_down_pci ( bp );
+
+       /* Stop network device */
+       netdev_nullify ( netdev );
+
+       /* Drop refernce to network device */
+       netdev_put ( netdev );
+}
+
+/* Broadcom NXE PCI driver */
+struct pci_driver bnxt_pci_driver __pci_driver = {
+       .ids            = bnxt_nics,
+       .id_count       = ARRAY_SIZE ( bnxt_nics ),
+       .probe          = bnxt_init_one,
+       .remove         = bnxt_remove_one,
+};
diff --git a/src/drivers/net/bnxt/bnxt.h b/src/drivers/net/bnxt/bnxt.h
new file mode 100644 (file)
index 0000000..4cca07b
--- /dev/null
@@ -0,0 +1,1006 @@
+/*
+ * Copyright Â© 2018 Broadcom. All Rights Reserved. 
+ * The term \93Broadcom\94 refers to Broadcom Inc. and/or its subsidiaries.
+
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of version 2 of the GNU General Public License as published by the
+ * Free Software Foundation.
+
+ * This program is distributed in the hope that it will be useful.
+ * ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING 
+ * ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR
+ * NON-INFRINGEMENT, ARE DISCLAIMED, EXCEPT TO THE EXTENT THAT SUCH DISCLAIMERS
+ * ARE HELD TO BE LEGALLY INVALID. See the GNU General Public License for more
+ * details, a copy of which can be found in the file COPYING included with this
+ * package.
+ */
+
+#undef ERRFILE
+#define ERRFILE ERRFILE_tg3
+
+#define __le16  u16
+#define __le32  u32
+#define __le64  u64
+#define __be16  u16
+#define __be32  u32
+#define __be64  u64
+
+#define dma_addr_t unsigned long
+
+union dma_addr64_t {
+       dma_addr_t addr;
+       u64 as_u64;
+};
+
+#include "bnxt_hsi.h"
+
+#define DRV_MODULE_NAME              "bnxt"
+#define IPXE_VERSION_MAJOR           1
+#define IPXE_VERSION_MINOR           0
+#define IPXE_VERSION_UPDATE          0
+
+/*
+ * Broadcom ethernet driver defines.
+ */
+#define FLAG_SET(f, b)                          ((f) |= (b))
+#define FLAG_TEST(f, b)                         ((f) & (b))
+#define FLAG_RESET(f, b)                        ((f) &= ~(b))
+#define BNXT_FLAG_HWRM_SHORT_CMD_SUPP           0x0001
+#define BNXT_FLAG_HWRM_SHORT_CMD_REQ            0x0002
+#define BNXT_FLAG_RESOURCE_QCAPS_SUPPORT        0x0004
+#define BNXT_FLAG_MULTI_HOST                    0x0008
+#define BNXT_FLAG_NPAR_MODE                     0x0010
+#define BNXT_FLAG_ATOMICS_ENABLE                0x0020
+/*******************************************************************************
+ * Status codes.
+ ******************************************************************************/
+#define STATUS_SUCCESS                          0
+#define STATUS_FAILURE                          1
+#define STATUS_NO_RESOURCE                      2
+#define STATUS_INVALID_PARAMETER                3
+#define STATUS_LINK_ACTIVE                      4
+#define STATUS_LINK_DOWN                        5
+#define STATUS_LINK_SETTING_MISMATCH            6
+#define STATUS_TOO_MANY_FRAGMENTS               7
+#define STATUS_TRANSMIT_ABORTED                 8
+#define STATUS_TRANSMIT_ERROR                   9
+#define STATUS_RECEIVE_ABORTED                  10
+#define STATUS_RECEIVE_ERROR                    11
+#define STATUS_INVALID_PACKET_SIZE              12
+#define STATUS_NO_MAP_REGISTER                  13
+#define STATUS_UNKNOWN_ADAPTER                  14
+#define STATUS_NO_COALESCE_BUFFER               15
+#define STATUS_UNKNOWN_PHY                      16
+#define STATUS_PENDING                          17
+#define STATUS_NO_TX_DESC                       18
+#define STATUS_NO_TX_BD                         19
+#define STATUS_UNKNOWN_MEDIUM                   20
+#define STATUS_RESOURCE                         21
+#define STATUS_ABORT_REASON_DISCONNECT          22
+#define STATUS_ABORT_REASON_UPLOAD              23
+#define STATUS_TIMEOUT                          0xffff
+/*******************************************************************************
+ * Receive filter masks.
+ ******************************************************************************/
+#define RX_MASK_ACCEPT_NONE                     0x0000
+#define RX_MASK_ACCEPT_UNICAST                  0x0001
+#define RX_MASK_ACCEPT_MULTICAST                0x0002
+#define RX_MASK_ACCEPT_ALL_MULTICAST            0x0004
+#define RX_MASK_ACCEPT_BROADCAST                0x0008
+#define RX_MASK_ACCEPT_ERROR_PACKET             0x0010
+#define RX_MASK_PROMISCUOUS_MODE                0x10000
+/*******************************************************************************
+ * media speed.
+ ******************************************************************************/
+#define MEDIUM_SPEED_AUTONEG                    0x0000L
+#define MEDIUM_SPEED_UNKNOWN                    0x0000L
+#define MEDIUM_SPEED_10MBPS                     0x0100L
+#define MEDIUM_SPEED_100MBPS                    0x0200L
+#define MEDIUM_SPEED_1000MBPS                   0x0300L
+#define MEDIUM_SPEED_2500MBPS                   0x0400L
+#define MEDIUM_SPEED_10GBPS                     0x0600L
+#define MEDIUM_SPEED_20GBPS                     0x0700L
+#define MEDIUM_SPEED_25GBPS                     0x0800L
+#define MEDIUM_SPEED_40GBPS                     0x0900L
+#define MEDIUM_SPEED_50GBPS                     0x0a00L
+#define MEDIUM_SPEED_100GBPS                    0x0b00L
+#define MEDIUM_SPEED_200GBPS                    0x0c00L
+#define MEDIUM_SPEED_AUTONEG_1G_FALLBACK        0x8000L /* Serdes */
+#define MEDIUM_SPEED_AUTONEG_2_5G_FALLBACK      0x8100L /* Serdes */
+#define MEDIUM_SPEED_HARDWARE_DEFAULT           0xff00L /* Serdes nvram def.*/
+#define MEDIUM_SPEED_MASK                       0xff00L
+#define GET_MEDIUM_SPEED(m)                     ((m) & MEDIUM_SPEED_MASK)
+#define SET_MEDIUM_SPEED(bp, s) ((bp->medium & ~MEDIUM_SPEED_MASK) | s)
+#define MEDIUM_UNKNOWN_DUPLEX                   0x00000L
+#define MEDIUM_FULL_DUPLEX                      0x00000L
+#define MEDIUM_HALF_DUPLEX                      0x10000L
+#define GET_MEDIUM_DUPLEX(m)                    ((m) & MEDIUM_HALF_DUPLEX)
+#define SET_MEDIUM_DUPLEX(bp, d) ((bp->medium & ~MEDIUM_HALF_DUPLEX) | d)
+#define MEDIUM_SELECTIVE_AUTONEG                0x01000000L
+#define GET_MEDIUM_AUTONEG_MODE(m)              ((m) & 0xff000000L)
+#define PCICFG_ME_REGISTER                      0x98
+#define GRC_COM_CHAN_BASE                       0
+#define GRC_COM_CHAN_TRIG                       0x100
+#define GRC_IND_BAR_0_ADDR                      0x78
+#define GRC_IND_BAR_1_ADDR                      0x7C
+#define GRC_IND_BAR_0_DATA                      0x80
+#define GRC_IND_BAR_1_DATA                      0x84
+#define GRC_BASE_WIN_0                          0x400
+#define GRC_DATA_WIN_0                          0x1000
+#define HWRM_CMD_DEFAULT_TIMEOUT                500 /* in Miliseconds  */
+#define HWRM_CMD_POLL_WAIT_TIME                 100 /* In MicroeSconds */
+#define HWRM_CMD_DEFAULT_MULTIPLAYER(a)         ((a) * 10)
+#define HWRM_CMD_FLASH_MULTIPLAYER(a)           ((a) * 100)
+#define HWRM_CMD_FLASH_ERASE_MULTIPLAYER(a)     ((a) * 1000)
+#define HWRM_CMD_WAIT(b) ((bp->hwrm_cmd_timeout) * (b))
+#define MAX_ETHERNET_PACKET_BUFFER_SIZE         1536
+#define DEFAULT_NUMBER_OF_CMPL_RINGS            0x01
+#define DEFAULT_NUMBER_OF_TX_RINGS              0x01
+#define DEFAULT_NUMBER_OF_RX_RINGS              0x01
+#define DEFAULT_NUMBER_OF_RING_GRPS             0x01
+#define DEFAULT_NUMBER_OF_STAT_CTXS             0x01
+#define NUM_RX_BUFFERS                          8
+#define MAX_RX_DESC_CNT                         16
+#define MAX_TX_DESC_CNT                         16
+#define MAX_CQ_DESC_CNT                         64
+#define TX_RING_BUFFER_SIZE (MAX_TX_DESC_CNT * sizeof(struct tx_bd_short))
+#define RX_RING_BUFFER_SIZE \
+       (MAX_RX_DESC_CNT * sizeof(struct rx_prod_pkt_bd))
+#define CQ_RING_BUFFER_SIZE (MAX_CQ_DESC_CNT * sizeof(struct cmpl_base))
+#define BNXT_DMA_ALIGNMENT                      256 //64
+#define DMA_ALIGN_4K                            4096 //thor tx & rx
+#define REQ_BUFFER_SIZE                         1024
+#define RESP_BUFFER_SIZE                        1024
+#define DMA_BUFFER_SIZE                         1024
+#define LM_PAGE_BITS(a)                         (a)
+#define BNXT_RX_STD_DMA_SZ                      (1536 + 64 + 2)
+#define NEXT_IDX(N, S)                          (((N) + 1) & ((S) - 1))
+#define BD_NOW(bd, entry, len) (&((u8 *)(bd))[(entry) * (len)])
+#define BNXT_CQ_INTR_MODE(vf) (\
+       ((vf) ? RING_ALLOC_REQ_INT_MODE_MSIX : RING_ALLOC_REQ_INT_MODE_POLL))
+/* Set default link timeout period to 1 second */
+#define LINK_DEFAULT_TIMEOUT                    1000
+#define LINK_POLL_WAIT_TIME                     100    /* In Miliseconds */
+#define RX_MASK (\
+       RX_MASK_ACCEPT_BROADCAST | \
+       RX_MASK_ACCEPT_ALL_MULTICAST | \
+       RX_MASK_ACCEPT_MULTICAST)
+#define MAX_NQ_DESC_CNT                         64
+#define NQ_RING_BUFFER_SIZE (MAX_NQ_DESC_CNT * sizeof(struct cmpl_base))
+#define TX_RING_QID (bp->thor ? (u16)bp->queue_id : ((u16)bp->port_idx * 10))
+#define RX_RING_QID (bp->thor ? bp->queue_id : 0)
+#define STAT_CTX_ID ((bp->vf || bp->thor) ? bp->stat_ctx_id : 0)
+#define TX_AVAIL(r)                      (r - 1)
+#define TX_IN_USE(a, b, c) ((a - b) & (c - 1))
+#define NO_MORE_NQ_BD_TO_SERVICE         1
+#define SERVICE_NEXT_NQ_BD               0
+#define NO_MORE_CQ_BD_TO_SERVICE         1
+#define SERVICE_NEXT_CQ_BD               0
+#define MAC_HDR_SIZE     12
+#define VLAN_HDR_SIZE    4
+#define ETHERTYPE_VLAN   0x8100
+#define BYTE_SWAP_S(w) (\
+       (((w) & 0xff00) >> 8) | \
+       (((w) & 0x00ff) << 8))
+#define DB_OFFSET_PF           0x10000
+#define DB_OFFSET_VF           0x4000
+#define DBC_MSG_IDX(idx)       (\
+       ((idx) << DBC_DBC_INDEX_SFT) & DBC_DBC_INDEX_MASK)
+#define DBC_MSG_XID(xid, flg)  (\
+       (((xid) << DBC_DBC_XID_SFT) & DBC_DBC_XID_MASK) | \
+       DBC_DBC_PATH_L2 | (flg))
+#define PHY_STATUS         0x0001
+#define PHY_SPEED          0x0002
+#define DETECT_MEDIA       0x0004
+#define SUPPORT_SPEEDS     0x0008
+#define QCFG_PHY_ALL   (\
+       SUPPORT_SPEEDS | DETECT_MEDIA | PHY_SPEED | PHY_STATUS)
+#define str_mbps           "Mbps"
+#define str_gbps           "Gbps"
+/*
+ * Broadcom ethernet driver nvm defines.
+ */
+/* nvm cfg 203 - u32 link_settings */
+#define LINK_SPEED_DRV_NUM                                      203
+#define LINK_SPEED_DRV_MASK                                     0x0000000F
+#define LINK_SPEED_DRV_SHIFT                                    0
+#define LINK_SPEED_DRV_AUTONEG                                  0x0
+#define NS_LINK_SPEED_DRV_AUTONEG                               0x0
+#define LINK_SPEED_DRV_1G                                       0x1
+#define NS_LINK_SPEED_DRV_1G                                    0x1
+#define LINK_SPEED_DRV_10G                                      0x2
+#define NS_LINK_SPEED_DRV_10G                                   0x2
+#define LINK_SPEED_DRV_25G                                      0x3
+#define NS_LINK_SPEED_DRV_25G                                   0x3
+#define LINK_SPEED_DRV_40G                                      0x4
+#define NS_LINK_SPEED_DRV_40G                                   0x4
+#define LINK_SPEED_DRV_50G                                      0x5
+#define NS_LINK_SPEED_DRV_50G                                   0x5
+#define LINK_SPEED_DRV_100G                                     0x6
+#define NS_LINK_SPEED_DRV_100G                                  0x6
+#define LINK_SPEED_DRV_200G                                     0x7
+#define NS_LINK_SPEED_DRV_200G                                  0x7
+#define LINK_SPEED_DRV_2_5G                                     0xE
+#define NS_LINK_SPEED_DRV_2_5G                                  0xE
+#define LINK_SPEED_DRV_100M                                     0xF
+#define NS_LINK_SPEED_DRV_100M                                  0xF
+/* nvm cfg 201 - u32 speed_cap_mask */
+#define SPEED_CAPABILITY_DRV_MASK                               0x0000FFFF
+#define SPEED_CAPABILITY_DRV_SHIFT                              0
+#define SPEED_CAPABILITY_DRV_1G                                 0x1
+#define NS_SPEED_CAPABILITY_DRV_1G                              0x1
+#define SPEED_CAPABILITY_DRV_10G                                0x2
+#define NS_SPEED_CAPABILITY_DRV_10G                             0x2
+#define SPEED_CAPABILITY_DRV_25G                                0x4
+#define NS_SPEED_CAPABILITY_DRV_25G                             0x4
+#define SPEED_CAPABILITY_DRV_40G                                0x8
+#define NS_SPEED_CAPABILITY_DRV_40G                             0x8
+#define SPEED_CAPABILITY_DRV_50G                                0x10
+#define NS_SPEED_CAPABILITY_DRV_50G                             0x10
+#define SPEED_CAPABILITY_DRV_100G                               0x20
+#define NS_SPEED_CAPABILITY_DRV_100G                            0x20
+#define SPEED_CAPABILITY_DRV_200G                               0x40
+#define NS_SPEED_CAPABILITY_DRV_200G                            0x40
+#define SPEED_CAPABILITY_DRV_2_5G                               0x4000
+#define NS_SPEED_CAPABILITY_DRV_2_5G                            0x4000
+#define SPEED_CAPABILITY_DRV_100M                               0x8000
+#define NS_SPEED_CAPABILITY_DRV_100M                            0x8000
+/* nvm cfg 202 */
+#define SPEED_CAPABILITY_FW_MASK                                0xFFFF0000
+#define SPEED_CAPABILITY_FW_SHIFT                               16
+#define SPEED_CAPABILITY_FW_1G                                  (0x1L << 16)
+#define NS_SPEED_CAPABILITY_FW_1G                               (0x1)
+#define SPEED_CAPABILITY_FW_10G                                 (0x2L << 16)
+#define NS_SPEED_CAPABILITY_FW_10G                              (0x2)
+#define SPEED_CAPABILITY_FW_25G                                 (0x4L << 16)
+#define NS_SPEED_CAPABILITY_FW_25G                              (0x4)
+#define SPEED_CAPABILITY_FW_40G                                 (0x8L << 16)
+#define NS_SPEED_CAPABILITY_FW_40G                              (0x8)
+#define SPEED_CAPABILITY_FW_50G                                 (0x10L << 16)
+#define NS_SPEED_CAPABILITY_FW_50G                              (0x10)
+#define SPEED_CAPABILITY_FW_100G                                (0x20L << 16)
+#define NS_SPEED_CAPABILITY_FW_100G                             (0x20)
+#define SPEED_CAPABILITY_FW_200G                                (0x40L << 16)
+#define NS_SPEED_CAPABILITY_FW_200G                             (0x40)
+#define SPEED_CAPABILITY_FW_2_5G                                (0x4000L << 16)
+#define NS_SPEED_CAPABILITY_FW_2_5G                             (0x4000)
+#define SPEED_CAPABILITY_FW_100M                                (0x8000UL << 16)
+#define NS_SPEED_CAPABILITY_FW_100M                             (0x8000)
+/* nvm cfg 205 */
+#define LINK_SPEED_FW_NUM                                       205
+#define LINK_SPEED_FW_MASK                                      0x00000780
+#define LINK_SPEED_FW_SHIFT                                     7
+#define LINK_SPEED_FW_AUTONEG                                   (0x0L << 7)
+#define NS_LINK_SPEED_FW_AUTONEG                                (0x0)
+#define LINK_SPEED_FW_1G                                        (0x1L << 7)
+#define NS_LINK_SPEED_FW_1G                                     (0x1)
+#define LINK_SPEED_FW_10G                                       (0x2L << 7)
+#define NS_LINK_SPEED_FW_10G                                    (0x2)
+#define LINK_SPEED_FW_25G                                       (0x3L << 7)
+#define NS_LINK_SPEED_FW_25G                                    (0x3)
+#define LINK_SPEED_FW_40G                                       (0x4L << 7)
+#define NS_LINK_SPEED_FW_40G                                    (0x4)
+#define LINK_SPEED_FW_50G                                       (0x5L << 7)
+#define NS_LINK_SPEED_FW_50G                                    (0x5)
+#define LINK_SPEED_FW_100G                                      (0x6L << 7)
+#define NS_LINK_SPEED_FW_100G                                   (0x6)
+#define LINK_SPEED_FW_200G                                      (0x7L << 7)
+#define NS_LINK_SPEED_FW_200G                                   (0x7)
+#define LINK_SPEED_FW_2_5G                                      (0xEL << 7)
+#define NS_LINK_SPEED_FW_2_5G                                   (0xE)
+#define LINK_SPEED_FW_100M                                      (0xFL << 7)
+#define NS_LINK_SPEED_FW_100M                                   (0xF)
+/* nvm cfg 210 */
+#define D3_LINK_SPEED_FW_NUM                                    210
+#define D3_LINK_SPEED_FW_MASK                                   0x000F0000
+#define D3_LINK_SPEED_FW_SHIFT                                  16
+#define D3_LINK_SPEED_FW_AUTONEG                                (0x0L << 16)
+#define NS_D3_LINK_SPEED_FW_AUTONEG                             (0x0)
+#define D3_LINK_SPEED_FW_1G                                     (0x1L << 16)
+#define NS_D3_LINK_SPEED_FW_1G                                  (0x1)
+#define D3_LINK_SPEED_FW_10G                                    (0x2L << 16)
+#define NS_D3_LINK_SPEED_FW_10G                                 (0x2)
+#define D3_LINK_SPEED_FW_25G                                    (0x3L << 16)
+#define NS_D3_LINK_SPEED_FW_25G                                 (0x3)
+#define D3_LINK_SPEED_FW_40G                                    (0x4L << 16)
+#define NS_D3_LINK_SPEED_FW_40G                                 (0x4)
+#define D3_LINK_SPEED_FW_50G                                    (0x5L << 16)
+#define NS_D3_LINK_SPEED_FW_50G                                 (0x5)
+#define D3_LINK_SPEED_FW_100G                                   (0x6L << 16)
+#define NS_D3_LINK_SPEED_FW_100G                                (0x6)
+#define D3_LINK_SPEED_FW_200G                                   (0x7L << 16)
+#define NS_D3_LINK_SPEED_FW_200G                                (0x7)
+#define D3_LINK_SPEED_FW_2_5G                                   (0xEL << 16)
+#define NS_D3_LINK_SPEED_FW_2_5G                                (0xE)
+#define D3_LINK_SPEED_FW_100M                                   (0xFL << 16)
+#define NS_D3_LINK_SPEED_FW_100M                                (0xF)
+/* nvm cfg 211 */
+#define D3_FLOW_CONTROL_FW_NUM                                  211
+#define D3_FLOW_CONTROL_FW_MASK                                 0x00700000
+#define D3_FLOW_CONTROL_FW_SHIFT                                20
+#define D3_FLOW_CONTROL_FW_AUTO                                 (0x0L << 20)
+#define NS_D3_FLOW_CONTROL_FW_AUTO                              (0x0)
+#define D3_FLOW_CONTROL_FW_TX                                   (0x1L << 20)
+#define NS_D3_FLOW_CONTROL_FW_TX                                (0x1)
+#define D3_FLOW_CONTROL_FW_RX                                   (0x2L << 20)
+#define NS_D3_FLOW_CONTROL_FW_RX                                (0x2)
+#define D3_FLOW_CONTROL_FW_BOTH                                 (0x3L << 20)
+#define NS_D3_FLOW_CONTROL_FW_BOTH                              (0x3)
+#define D3_FLOW_CONTROL_FW_NONE                                 (0x4L << 20)
+#define NS_D3_FLOW_CONTROL_FW_NONE                              (0x4)
+/* nvm cfg 213 */
+#define PORT_CFG_LINK_SETTINGS_MEDIA_AUTO_DETECT_NUM            213
+#define PORT_CFG_LINK_SETTINGS_MEDIA_AUTO_DETECT_MASK           0x02000000
+#define PORT_CFG_LINK_SETTINGS_MEDIA_AUTO_DETECT_SHIFT          25
+#define PORT_CFG_LINK_SETTINGS_MEDIA_AUTO_DETECT_DISABLED       (0x0L << 25)
+#define NS_PORT_CFG_LINK_SETTINGS_MEDIA_AUTO_DETECT_DISABLED    (0x0)
+#define PORT_CFG_LINK_SETTINGS_MEDIA_AUTO_DETECT_ENABLED        (0x1L << 25)
+#define NS_PORT_CFG_LINK_SETTINGS_MEDIA_AUTO_DETECT_ENABLED     (0x1)
+/* nvm cfg 357 - u32 mba_cfg2 */
+#define FUNC_CFG_PRE_BOOT_MBA_VLAN_VALUE_NUM                    357
+#define FUNC_CFG_PRE_BOOT_MBA_VLAN_VALUE_MASK                   0x0000FFFF
+#define FUNC_CFG_PRE_BOOT_MBA_VLAN_VALUE_SHIFT                  0
+/* nvm cfg 358 - u32 mba_cfg2 */
+#define FUNC_CFG_PRE_BOOT_MBA_VLAN_NUM                          358
+#define FUNC_CFG_PRE_BOOT_MBA_VLAN_MASK                         0x00010000
+#define FUNC_CFG_PRE_BOOT_MBA_VLAN_SHIFT                        16
+#define FUNC_CFG_PRE_BOOT_MBA_VLAN_DISABLED                     (0x0L << 16)
+#define NS_FUNC_CFG_PRE_BOOT_MBA_VLAN_DISABLED                  (0x0)
+#define FUNC_CFG_PRE_BOOT_MBA_VLAN_ENABLED                      (0x1L << 16)
+#define NS_FUNC_CFG_PRE_BOOT_MBA_VLAN_ENABLED                   (0x1)
+
+struct tx_doorbell {
+       u32 key_idx;
+#define TX_DOORBELL_IDX_MASK      0xffffffUL
+#define TX_DOORBELL_IDX_SFT       0
+#define TX_DOORBELL_KEY_MASK      0xf0000000UL
+#define TX_DOORBELL_KEY_SFT       28
+    #define TX_DOORBELL_KEY_TX    (0x0UL << 28)
+    #define TX_DOORBELL_KEY_LAST  TX_DOORBELL_KEY_TX
+};
+
+struct rx_doorbell {
+       u32 key_idx;
+#define RX_DOORBELL_IDX_MASK      0xffffffUL
+#define RX_DOORBELL_IDX_SFT       0
+#define RX_DOORBELL_KEY_MASK      0xf0000000UL
+#define RX_DOORBELL_KEY_SFT       28
+    #define RX_DOORBELL_KEY_RX    (0x1UL << 28)
+    #define RX_DOORBELL_KEY_LAST  RX_DOORBELL_KEY_RX
+};
+
+struct cmpl_doorbell {
+       u32  key_mask_valid_idx;
+#define CMPL_DOORBELL_IDX_MASK      0xffffffUL
+#define CMPL_DOORBELL_IDX_SFT       0
+#define CMPL_DOORBELL_IDX_VALID     0x4000000UL
+#define CMPL_DOORBELL_MASK          0x8000000UL
+#define CMPL_DOORBELL_KEY_MASK      0xf0000000UL
+#define CMPL_DOORBELL_KEY_SFT       28
+    #define CMPL_DOORBELL_KEY_CMPL  (0x2UL << 28)
+    #define CMPL_DOORBELL_KEY_LAST  CMPL_DOORBELL_KEY_CMPL
+};
+
+/* dbc_dbc (size:64b/8B) */
+struct dbc_dbc {
+       __le32  index;
+       #define DBC_DBC_INDEX_MASK          0xffffffUL
+       #define DBC_DBC_INDEX_SFT           0
+       __le32  type_path_xid;
+       #define DBC_DBC_XID_MASK            0xfffffUL
+       #define DBC_DBC_XID_SFT             0
+       #define DBC_DBC_PATH_MASK           0x3000000UL
+       #define DBC_DBC_PATH_SFT            24
+       #define DBC_DBC_PATH_ROCE           (0x0UL << 24)
+       #define DBC_DBC_PATH_L2             (0x1UL << 24)
+       #define DBC_DBC_PATH_ENGINE         (0x2UL << 24)
+       #define DBC_DBC_PATH_LAST           DBC_DBC_PATH_ENGINE
+       #define DBC_DBC_DEBUG_TRACE         0x8000000UL
+       #define DBC_DBC_TYPE_MASK           0xf0000000UL
+       #define DBC_DBC_TYPE_SFT            28
+       #define DBC_DBC_TYPE_SQ             (0x0UL << 28)
+       #define DBC_DBC_TYPE_RQ             (0x1UL << 28)
+       #define DBC_DBC_TYPE_SRQ            (0x2UL << 28)
+       #define DBC_DBC_TYPE_SRQ_ARM        (0x3UL << 28)
+       #define DBC_DBC_TYPE_CQ             (0x4UL << 28)
+       #define DBC_DBC_TYPE_CQ_ARMSE       (0x5UL << 28)
+       #define DBC_DBC_TYPE_CQ_ARMALL      (0x6UL << 28)
+       #define DBC_DBC_TYPE_CQ_ARMENA      (0x7UL << 28)
+       #define DBC_DBC_TYPE_SRQ_ARMENA     (0x8UL << 28)
+       #define DBC_DBC_TYPE_CQ_CUTOFF_ACK  (0x9UL << 28)
+       #define DBC_DBC_TYPE_NQ             (0xaUL << 28)
+       #define DBC_DBC_TYPE_NQ_ARM         (0xbUL << 28)
+       #define DBC_DBC_TYPE_NULL           (0xfUL << 28)
+       #define DBC_DBC_TYPE_LAST           DBC_DBC_TYPE_NULL
+};
+
+/*******************************************************************************
+ * Transmit info.
+ *****************************************************************************/
+struct tx_bd_short {
+       u16 flags_type;
+#define TX_BD_SHORT_TYPE_MASK               0x3fUL
+#define TX_BD_SHORT_TYPE_SFT                0
+#define TX_BD_SHORT_TYPE_TX_BD_SHORT        0x0UL
+#define TX_BD_SHORT_TYPE_LAST               TX_BD_SHORT_TYPE_TX_BD_SHORT
+#define TX_BD_SHORT_FLAGS_MASK              0xffc0UL
+#define TX_BD_SHORT_FLAGS_SFT               6
+#define TX_BD_SHORT_FLAGS_PACKET_END        0x40UL
+#define TX_BD_SHORT_FLAGS_NO_CMPL           0x80UL
+#define TX_BD_SHORT_FLAGS_BD_CNT_MASK       0x1f00UL
+#define TX_BD_SHORT_FLAGS_BD_CNT_SFT        8
+#define TX_BD_SHORT_FLAGS_LHINT_MASK        0x6000UL
+#define TX_BD_SHORT_FLAGS_LHINT_SFT         13
+#define TX_BD_SHORT_FLAGS_LHINT_LT512       (0x0UL << 13)
+#define TX_BD_SHORT_FLAGS_LHINT_LT1K        (0x1UL << 13)
+#define TX_BD_SHORT_FLAGS_LHINT_LT2K        (0x2UL << 13)
+#define TX_BD_SHORT_FLAGS_LHINT_GTE2K       (0x3UL << 13)
+#define TX_BD_SHORT_FLAGS_LHINT_LAST        TX_BD_SHORT_FLAGS_LHINT_GTE2K
+#define TX_BD_SHORT_FLAGS_COAL_NOW          0x8000UL
+       u16 len;
+       u32 opaque;
+       union dma_addr64_t dma;
+};
+
+struct tx_cmpl {
+       u16 flags_type;
+#define TX_CMPL_TYPE_MASK        0x3fUL
+#define TX_CMPL_TYPE_SFT         0
+#define TX_CMPL_TYPE_TX_L2       0x0UL
+#define TX_CMPL_TYPE_LAST        TX_CMPL_TYPE_TX_L2
+#define TX_CMPL_FLAGS_MASK       0xffc0UL
+#define TX_CMPL_FLAGS_SFT        6
+#define TX_CMPL_FLAGS_ERROR      0x40UL
+#define TX_CMPL_FLAGS_PUSH       0x80UL
+       u16 unused_0;
+       u32 opaque;
+       u16 errors_v;
+#define TX_CMPL_V                               0x1UL
+#define TX_CMPL_ERRORS_MASK                     0xfffeUL
+#define TX_CMPL_ERRORS_SFT                      1
+#define TX_CMPL_ERRORS_BUFFER_ERROR_MASK        0xeUL
+#define TX_CMPL_ERRORS_BUFFER_ERROR_SFT         1
+#define TX_CMPL_ERRORS_BUFFER_ERROR_NO_ERROR    (0x0UL << 1)
+#define TX_CMPL_ERRORS_BUFFER_ERROR_BAD_FMT     (0x2UL << 1)
+#define TX_CMPL_ERRORS_BUFFER_ERROR_LAST TX_CMPL_ERRORS_BUFFER_ERROR_BAD_FMT
+#define TX_CMPL_ERRORS_ZERO_LENGTH_PKT          0x10UL
+#define TX_CMPL_ERRORS_EXCESSIVE_BD_LENGTH      0x20UL
+#define TX_CMPL_ERRORS_DMA_ERROR                0x40UL
+#define TX_CMPL_ERRORS_HINT_TOO_SHORT           0x80UL
+#define TX_CMPL_ERRORS_POISON_TLP_ERROR         0x100UL
+       u16 unused_1;
+       u32 unused_2;
+};
+
+struct tx_info {
+       void             *bd_virt;
+       struct io_buffer *iob[MAX_TX_DESC_CNT];
+       u16              prod_id;  /* Tx producer index. */
+       u16              cons_id;
+       u16              ring_cnt;
+       u32              cnt;   /* Tx statistics. */
+       u32              cnt_req;
+};
+
+struct cmpl_base {
+       u16 type;
+#define CMPL_BASE_TYPE_MASK              0x3fUL
+#define CMPL_BASE_TYPE_SFT               0
+#define CMPL_BASE_TYPE_TX_L2             0x0UL
+#define CMPL_BASE_TYPE_RX_L2             0x11UL
+#define CMPL_BASE_TYPE_RX_AGG            0x12UL
+#define CMPL_BASE_TYPE_RX_TPA_START      0x13UL
+#define CMPL_BASE_TYPE_RX_TPA_END        0x15UL
+#define CMPL_BASE_TYPE_STAT_EJECT        0x1aUL
+#define CMPL_BASE_TYPE_HWRM_DONE         0x20UL
+#define CMPL_BASE_TYPE_HWRM_FWD_REQ      0x22UL
+#define CMPL_BASE_TYPE_HWRM_FWD_RESP     0x24UL
+#define CMPL_BASE_TYPE_HWRM_ASYNC_EVENT  0x2eUL
+#define CMPL_BASE_TYPE_CQ_NOTIFICATION   0x30UL
+#define CMPL_BASE_TYPE_SRQ_EVENT         0x32UL
+#define CMPL_BASE_TYPE_DBQ_EVENT         0x34UL
+#define CMPL_BASE_TYPE_QP_EVENT          0x38UL
+#define CMPL_BASE_TYPE_FUNC_EVENT        0x3aUL
+#define CMPL_BASE_TYPE_LAST CMPL_BASE_TYPE_FUNC_EVENT
+       u16 info1;
+       u32 info2;
+       u32 info3_v;
+#define CMPL_BASE_V          0x1UL
+#define CMPL_BASE_INFO3_MASK 0xfffffffeUL
+#define CMPL_BASE_INFO3_SFT  1
+       u32 info4;
+};
+
+struct cmp_info {
+       void      *bd_virt;
+       u16       cons_id;
+       u16       ring_cnt;
+       u8        completion_bit;
+       u8        res[3];
+};
+
+/* Completion Queue Notification */
+/* nq_cn (size:128b/16B) */
+struct nq_base {
+       u16     type;
+/*
+ * This field indicates the exact type of the completion.
+ * By convention, the LSB identifies the length of the
+ * record in 16B units.  Even values indicate 16B
+ * records.  Odd values indicate 32B
+ * records.
+ */
+#define NQ_CN_TYPE_MASK           0x3fUL
+#define NQ_CN_TYPE_SFT            0
+/* CQ Notification */
+           #define NQ_CN_TYPE_CQ_NOTIFICATION  0x30UL
+           #define NQ_CN_TYPE_LAST            NQ_CN_TYPE_CQ_NOTIFICATION
+       u16     reserved16;
+/*
+ * This is an application level ID used to identify the
+ * CQ.  This field carries the lower 32b of the value.
+ */
+       u32     cq_handle_low;
+       u32     v;
+/*
+ * This value is written by the NIC such that it will be different
+ * for each pass through the completion queue.   The even passes
+ * will write 1.  The odd passes will write 0.
+ */
+#define NQ_CN_V     0x1UL
+/*
+ * This is an application level ID used to identify the
+ * CQ.  This field carries the upper 32b of the value.
+ */
+       u32     cq_handle_high;
+};
+
+struct nq_info {
+       void      *bd_virt;
+       u16       cons_id;
+       u16       ring_cnt;
+       u8        completion_bit;
+       u8        res[3];
+};
+
+struct rx_pkt_cmpl {
+       u16 flags_type;
+#define RX_PKT_CMPL_TYPE_MASK                    0x3fUL
+#define RX_PKT_CMPL_TYPE_SFT                     0
+#define RX_PKT_CMPL_TYPE_RX_L2                   0x11UL
+#define RX_PKT_CMPL_TYPE_LAST                    RX_PKT_CMPL_TYPE_RX_L2
+#define RX_PKT_CMPL_FLAGS_MASK                   0xffc0UL
+#define RX_PKT_CMPL_FLAGS_SFT                    6
+#define RX_PKT_CMPL_FLAGS_ERROR                  0x40UL
+#define RX_PKT_CMPL_FLAGS_PLACEMENT_MASK         0x380UL
+#define RX_PKT_CMPL_FLAGS_PLACEMENT_SFT          7
+#define RX_PKT_CMPL_FLAGS_PLACEMENT_NORMAL       (0x0UL << 7)
+#define RX_PKT_CMPL_FLAGS_PLACEMENT_JUMBO        (0x1UL << 7)
+#define RX_PKT_CMPL_FLAGS_PLACEMENT_HDS          (0x2UL << 7)
+#define RX_PKT_CMPL_FLAGS_PLACEMENT_LAST RX_PKT_CMPL_FLAGS_PLACEMENT_HDS
+#define RX_PKT_CMPL_FLAGS_RSS_VALID              0x400UL
+#define RX_PKT_CMPL_FLAGS_UNUSED                 0x800UL
+#define RX_PKT_CMPL_FLAGS_ITYPE_MASK             0xf000UL
+#define RX_PKT_CMPL_FLAGS_ITYPE_SFT              12
+#define RX_PKT_CMPL_FLAGS_ITYPE_NOT_KNOWN          (0x0UL << 12)
+#define RX_PKT_CMPL_FLAGS_ITYPE_IP                 (0x1UL << 12)
+#define RX_PKT_CMPL_FLAGS_ITYPE_TCP                (0x2UL << 12)
+#define RX_PKT_CMPL_FLAGS_ITYPE_UDP                (0x3UL << 12)
+#define RX_PKT_CMPL_FLAGS_ITYPE_FCOE               (0x4UL << 12)
+#define RX_PKT_CMPL_FLAGS_ITYPE_ROCE               (0x5UL << 12)
+#define RX_PKT_CMPL_FLAGS_ITYPE_ICMP               (0x7UL << 12)
+#define RX_PKT_CMPL_FLAGS_ITYPE_PTP_WO_TIMESTAMP   (0x8UL << 12)
+#define RX_PKT_CMPL_FLAGS_ITYPE_PTP_W_TIMESTAMP    (0x9UL << 12)
+#define RX_PKT_CMPL_FLAGS_ITYPE_LAST RX_PKT_CMPL_FLAGS_ITYPE_PTP_W_TIMESTAMP
+       u16 len;
+       u32 opaque;
+       u8  agg_bufs_v1;
+#define RX_PKT_CMPL_V1            0x1UL
+#define RX_PKT_CMPL_AGG_BUFS_MASK 0x3eUL
+#define RX_PKT_CMPL_AGG_BUFS_SFT  1
+#define RX_PKT_CMPL_UNUSED1_MASK  0xc0UL
+#define RX_PKT_CMPL_UNUSED1_SFT   6
+       u8  rss_hash_type;
+       u8  payload_offset;
+       u8  unused1;
+       u32 rss_hash;
+};
+
+struct rx_pkt_cmpl_hi {
+       u32  flags2;
+#define RX_PKT_CMPL_FLAGS2_IP_CS_CALC         0x1UL
+#define RX_PKT_CMPL_FLAGS2_L4_CS_CALC         0x2UL
+#define RX_PKT_CMPL_FLAGS2_T_IP_CS_CALC       0x4UL
+#define RX_PKT_CMPL_FLAGS2_T_L4_CS_CALC       0x8UL
+#define RX_PKT_CMPL_FLAGS2_META_FORMAT_MASK   0xf0UL
+#define RX_PKT_CMPL_FLAGS2_META_FORMAT_SFT    4
+#define RX_PKT_CMPL_FLAGS2_META_FORMAT_NONE   (0x0UL << 4)
+#define RX_PKT_CMPL_FLAGS2_META_FORMAT_VLAN   (0x1UL << 4)
+#define RX_PKT_CMPL_FLAGS2_META_FORMAT_LAST   \
+       RX_PKT_CMPL_FLAGS2_META_FORMAT_VLAN
+#define RX_PKT_CMPL_FLAGS2_IP_TYPE            0x100UL
+       u32 metadata;
+#define RX_PKT_CMPL_METADATA_VID_MASK         0xfffUL
+#define RX_PKT_CMPL_METADATA_VID_SFT          0
+#define RX_PKT_CMPL_METADATA_DE               0x1000UL
+#define RX_PKT_CMPL_METADATA_PRI_MASK         0xe000UL
+#define RX_PKT_CMPL_METADATA_PRI_SFT          13
+#define RX_PKT_CMPL_METADATA_TPID_MASK        0xffff0000UL
+#define RX_PKT_CMPL_METADATA_TPID_SFT         16
+       u16 errors_v2;
+#define RX_PKT_CMPL_V2                        0x1UL
+#define RX_PKT_CMPL_ERRORS_MASK               0xfffeUL
+#define RX_PKT_CMPL_ERRORS_SFT                1
+#define RX_PKT_CMPL_ERRORS_BUFFER_ERROR_MASK  0xeUL
+#define RX_PKT_CMPL_ERRORS_BUFFER_ERROR_SFT   1
+#define RX_PKT_CMPL_ERRORS_BUFFER_ERROR_NO_BUFFER   (0x0UL << 1)
+#define RX_PKT_CMPL_ERRORS_BUFFER_ERROR_DID_NOT_FIT (0x1UL << 1)
+#define RX_PKT_CMPL_ERRORS_BUFFER_ERROR_NOT_ON_CHIP (0x2UL << 1)
+#define RX_PKT_CMPL_ERRORS_BUFFER_ERROR_BAD_FORMAT  (0x3UL << 1)
+#define RX_PKT_CMPL_ERRORS_BUFFER_ERROR_LAST \
+       RX_PKT_CMPL_ERRORS_BUFFER_ERROR_BAD_FORMAT
+#define RX_PKT_CMPL_ERRORS_IP_CS_ERROR              0x10UL
+#define RX_PKT_CMPL_ERRORS_L4_CS_ERROR              0x20UL
+#define RX_PKT_CMPL_ERRORS_T_IP_CS_ERROR            0x40UL
+#define RX_PKT_CMPL_ERRORS_T_L4_CS_ERROR            0x80UL
+#define RX_PKT_CMPL_ERRORS_CRC_ERROR                0x100UL
+#define RX_PKT_CMPL_ERRORS_T_PKT_ERROR_MASK         0xe00UL
+#define RX_PKT_CMPL_ERRORS_T_PKT_ERROR_SFT          9
+#define RX_PKT_CMPL_ERRORS_T_PKT_ERROR_NO_ERROR     (0x0UL << 9)
+#define RX_PKT_CMPL_ERRORS_T_PKT_ERROR_T_L3_BAD_VERSION   (0x1UL << 9)
+#define RX_PKT_CMPL_ERRORS_T_PKT_ERROR_T_L3_BAD_HDR_LEN   (0x2UL << 9)
+#define RX_PKT_CMPL_ERRORS_T_PKT_ERROR_TUNNEL_TOTAL_ERROR (0x3UL << 9)
+#define RX_PKT_CMPL_ERRORS_T_PKT_ERROR_T_IP_TOTAL_ERROR   (0x4UL << 9)
+#define RX_PKT_CMPL_ERRORS_T_PKT_ERROR_T_UDP_TOTAL_ERROR  (0x5UL << 9)
+#define RX_PKT_CMPL_ERRORS_T_PKT_ERROR_T_L3_BAD_TTL       (0x6UL << 9)
+#define RX_PKT_CMPL_ERRORS_T_PKT_ERROR_LAST \
+       RX_PKT_CMPL_ERRORS_T_PKT_ERROR_T_L3_BAD_TTL
+#define RX_PKT_CMPL_ERRORS_PKT_ERROR_MASK                 0xf000UL
+#define RX_PKT_CMPL_ERRORS_PKT_ERROR_SFT                  12
+#define RX_PKT_CMPL_ERRORS_PKT_ERROR_NO_ERROR             (0x0UL << 12)
+#define RX_PKT_CMPL_ERRORS_PKT_ERROR_L3_BAD_VERSION       (0x1UL << 12)
+#define RX_PKT_CMPL_ERRORS_PKT_ERROR_L3_BAD_HDR_LEN       (0x2UL << 12)
+#define RX_PKT_CMPL_ERRORS_PKT_ERROR_L3_BAD_TTL           (0x3UL << 12)
+#define RX_PKT_CMPL_ERRORS_PKT_ERROR_IP_TOTAL_ERROR       (0x4UL << 12)
+#define RX_PKT_CMPL_ERRORS_PKT_ERROR_UDP_TOTAL_ERROR          (0x5UL << 12)
+#define RX_PKT_CMPL_ERRORS_PKT_ERROR_L4_BAD_HDR_LEN           (0x6UL << 12)
+#define RX_PKT_CMPL_ERRORS_PKT_ERROR_L4_BAD_HDR_LEN_TOO_SMALL (0x7UL << 12)
+#define RX_PKT_CMPL_ERRORS_PKT_ERROR_L4_BAD_OPT_LEN           (0x8UL << 12)
+#define RX_PKT_CMPL_ERRORS_PKT_ERROR_LAST \
+       RX_PKT_CMPL_ERRORS_PKT_ERROR_L4_BAD_OPT_LEN
+       u16 cfa_code;
+       u32 reorder;
+#define RX_PKT_CMPL_REORDER_MASK 0xffffffUL
+#define RX_PKT_CMPL_REORDER_SFT  0
+};
+
+struct rx_prod_pkt_bd {
+       u16  flags_type;
+#define RX_PROD_PKT_BD_TYPE_MASK          0x3fUL
+#define RX_PROD_PKT_BD_TYPE_SFT           0
+#define RX_PROD_PKT_BD_TYPE_RX_PROD_PKT   0x4UL
+#define RX_PROD_PKT_BD_TYPE_LAST          RX_PROD_PKT_BD_TYPE_RX_PROD_PKT
+#define RX_PROD_PKT_BD_FLAGS_MASK         0xffc0UL
+#define RX_PROD_PKT_BD_FLAGS_SFT          6
+#define RX_PROD_PKT_BD_FLAGS_SOP_PAD      0x40UL
+#define RX_PROD_PKT_BD_FLAGS_EOP_PAD      0x80UL
+#define RX_PROD_PKT_BD_FLAGS_BUFFERS_MASK 0x300UL
+#define RX_PROD_PKT_BD_FLAGS_BUFFERS_SFT  8
+       u16  len;
+       u32  opaque;
+       union dma_addr64_t dma;
+};
+
+struct rx_info {
+       void              *bd_virt;
+       struct io_buffer  *iob[NUM_RX_BUFFERS];
+       u16               iob_cnt;
+       u16               buf_cnt;  /* Total Rx buffer descriptors. */
+       u16               ring_cnt;
+       u16               cons_id;  /* Last processed consumer index. */
+/* Receive statistics. */
+       u32               cnt;
+       u32               good;
+       u32               drop_err;
+       u32               drop_lb;
+       u32               drop_vlan;
+};
+
+#define VALID_DRIVER_REG          0x0001
+#define VALID_STAT_CTX            0x0002
+#define VALID_RING_CQ             0x0004
+#define VALID_RING_TX             0x0008
+#define VALID_RING_RX             0x0010
+#define VALID_RING_GRP            0x0020
+#define VALID_VNIC_ID             0x0040
+#define VALID_RX_IOB              0x0080
+#define VALID_L2_FILTER           0x0100
+#define VALID_RING_NQ             0x0200
+
+struct bnxt {
+/* begin "general, frequently-used members" cacheline section */
+/* If the IRQ handler (which runs lockless) needs to be
+ * quiesced, the following bitmask state is used. The
+ * SYNC flag is set by non-IRQ context code to initiate
+ * the quiescence.
+ *
+ * When the IRQ handler notices that SYNC is set, it
+ * disables interrupts and returns.
+ *
+ * When all outstanding IRQ handlers have returned after
+ * the SYNC flag has been set, the setter can be assured
+ * that interrupts will no longer get run.
+ *
+ * In this way all SMP driver locks are never acquired
+ * in hw IRQ context, only sw IRQ context or lower.
+ */
+       unsigned int              irq_sync;
+       struct net_device         *dev;
+       struct pci_device         *pdev;
+       void                      *hwrm_addr_req;
+       void                      *hwrm_addr_resp;
+       void                      *hwrm_addr_dma;
+       dma_addr_t                req_addr_mapping;
+       dma_addr_t                resp_addr_mapping;
+       dma_addr_t                dma_addr_mapping;
+       struct tx_info            tx; /* Tx info. */
+       struct rx_info            rx; /* Rx info. */
+       struct cmp_info           cq; /* completion info. */
+       struct nq_info            nq; /* completion info. */
+       u16                       nq_ring_id;
+       u8                        queue_id;
+       u8                        thor;
+       u16                       last_resp_code;
+       u16                       seq_id;
+       u32                       flag_hwrm;
+       u32                       flags;
+/* PCI info. */
+       u16                       subsystem_vendor;
+       u16                       subsystem_device;
+       u16                       cmd_reg;
+       u8                        pf_num;  /* absolute PF number */
+       u8                        vf;
+       void                      *bar0;
+       void                      *bar1;
+       void                      *bar2;
+/* Device info. */
+       u16                       chip_num;
+/* chip num:16-31, rev:12-15, metal:4-11, bond_id:0-3 */
+       u32                       chip_id;
+       u32                       hwrm_cmd_timeout;
+       u16                       hwrm_spec_code;
+       u16                       hwrm_max_req_len;
+       u16                       hwrm_max_ext_req_len;
+       u8                        mac_addr[ETH_ALEN]; /* HW MAC address */
+       u16                       fid;
+       u8                        port_idx;
+       u8                        ordinal_value;
+       u16                       mtu;
+       u16                       ring_grp_id;
+       u16                       cq_ring_id;
+       u16                       tx_ring_id;
+       u16                       rx_ring_id;
+       u16                       current_link_speed;
+       u16                       link_status;
+       u16                       wait_link_timeout;
+       u64                       l2_filter_id;
+       u16                       vnic_id;
+       u16                       stat_ctx_id;
+       u16                       vlan_id;
+       u16                       vlan_tx;
+       u32                       mba_cfg2;
+       u32                       medium;
+       u16                       support_speeds;
+       u32                       link_set;
+       u8                        media_detect;
+       u8                        rsvd;
+       u16                       max_vfs;
+       u16                       vf_res_strategy;
+       u16                       min_vnics;
+       u16                       max_vnics;
+       u16                       max_msix;
+       u16                       min_hw_ring_grps;
+       u16                       max_hw_ring_grps;
+       u16                       min_tx_rings;
+       u16                       max_tx_rings;
+       u16                       min_rx_rings;
+       u16                       max_rx_rings;
+       u16                       min_cp_rings;
+       u16                       max_cp_rings;
+       u16                       min_rsscos_ctxs;
+       u16                       max_rsscos_ctxs;
+       u16                       min_l2_ctxs;
+       u16                       max_l2_ctxs;
+       u16                       min_stat_ctxs;
+       u16                       max_stat_ctxs;
+       u16                       num_cmpl_rings;
+       u16                       num_tx_rings;
+       u16                       num_rx_rings;
+       u16                       num_stat_ctxs;
+       u16                       num_hw_ring_grps;
+};
+
+/* defines required to rsolve checkpatch errors / warnings */
+#define test_if               if
+#define write32               writel
+#define write64               writeq
+#define pci_read_byte         pci_read_config_byte
+#define pci_read_word16       pci_read_config_word
+#define pci_write_word        pci_write_config_word
+#define SHORT_CMD_SUPPORTED   VER_GET_RESP_DEV_CAPS_CFG_SHORT_CMD_SUPPORTED
+#define SHORT_CMD_REQUIRED    VER_GET_RESP_DEV_CAPS_CFG_SHORT_CMD_REQUIRED
+#define CQ_DOORBELL_KEY_MASK(a) (\
+       CMPL_DOORBELL_KEY_CMPL | \
+       CMPL_DOORBELL_IDX_VALID | \
+       CMPL_DOORBELL_MASK | \
+       (u32)(a))
+#define CQ_DOORBELL_KEY_IDX(a) (\
+       CMPL_DOORBELL_KEY_CMPL | \
+       CMPL_DOORBELL_IDX_VALID | \
+       (u32)(a))
+#define TX_BD_FLAGS (\
+       TX_BD_SHORT_TYPE_TX_BD_SHORT |\
+       TX_BD_SHORT_FLAGS_COAL_NOW   |\
+       TX_BD_SHORT_FLAGS_PACKET_END |\
+       (1 << TX_BD_SHORT_FLAGS_BD_CNT_SFT))
+#define PORT_PHY_FLAGS (\
+       BNXT_FLAG_NPAR_MODE | \
+       BNXT_FLAG_MULTI_HOST)
+#define RING_FREE(bp, rid, flag) bnxt_hwrm_ring_free(bp, rid, flag)
+#define SET_LINK(p, m, s) ((p & (m >> s)) << s)
+#define SET_MBA(p, m, s)  ((p & (m >> s)) << s)
+#define SPEED_DRV_MASK    LINK_SPEED_DRV_MASK
+#define SPEED_DRV_SHIFT   LINK_SPEED_DRV_SHIFT
+#define SPEED_FW_MASK     LINK_SPEED_FW_MASK
+#define SPEED_FW_SHIFT    LINK_SPEED_FW_SHIFT
+#define D3_SPEED_FW_MASK  D3_LINK_SPEED_FW_MASK
+#define D3_SPEED_FW_SHIFT D3_LINK_SPEED_FW_SHIFT
+#define MEDIA_AUTO_DETECT_MASK  PORT_CFG_LINK_SETTINGS_MEDIA_AUTO_DETECT_MASK
+#define MEDIA_AUTO_DETECT_SHIFT PORT_CFG_LINK_SETTINGS_MEDIA_AUTO_DETECT_SHIFT
+#define VLAN_MASK        FUNC_CFG_PRE_BOOT_MBA_VLAN_MASK
+#define VLAN_SHIFT       FUNC_CFG_PRE_BOOT_MBA_VLAN_SHIFT
+#define VLAN_VALUE_MASK  FUNC_CFG_PRE_BOOT_MBA_VLAN_VALUE_MASK
+#define VLAN_VALUE_SHIFT FUNC_CFG_PRE_BOOT_MBA_VLAN_VALUE_SHIFT
+#define VF_CFG_ENABLE_FLAGS (\
+       FUNC_VF_CFG_REQ_ENABLES_MTU | \
+       FUNC_VF_CFG_REQ_ENABLES_GUEST_VLAN | \
+       FUNC_VF_CFG_REQ_ENABLES_ASYNC_EVENT_CR | \
+       FUNC_VF_CFG_REQ_ENABLES_DFLT_MAC_ADDR)
+
+/* Device ID's */
+#define PCI_VID_BCOM         0x14e4
+#define CHIP_NUM_57500       0x1750
+
+#define DID_57508            0x1750
+#define DID_57508_MF         0x1802
+#define DID_57508_MF_RDMA    0x1805
+#define DID_57504            0x1751
+#define DID_57504_MF         0x1801
+#define DID_57504_MF_RDMA    0x1804
+#define DID_57502            0x1752
+#define DID_57502_MF         0x1800
+#define DID_57502_MF_RDMA    0x1803
+#define DID_57508_VF         0x1806
+#define DID_57508_VF_RDMA    0x1807
+#define DID_57508_VF_HV      0x1806
+#define DID_57508_VF_RDMA_HV 0x1807
+/* Stratus Device IDs */
+#define DID_57320_1         0x16F0
+#define DID_57320_2         0x16F1
+#define DID_57454_MHB       0x1604
+#define DID_57454_MHB_RDMA  0x1605
+#define DID_57454_VF_RDMA   0x1606
+#define DID_57454_VF        0x1609
+#define DID_57454           0x1614
+#define DID_58802           0xD802
+#define DID_58804           0xD804
+
+#define DID_57417_RDMA_MF   0x16C0
+#define DID_57417_VF_RDMA   0x16c1
+#define DID_57301           0x16C8
+#define DID_57302           0x16C9
+#define DID_57304           0x16CA
+#define DID_57417_MF        0x16CC
+#define DID_58700           0x16CD
+#define DID_57311           0x16CE
+#define DID_57312           0x16CF
+#define DID_57402           0x16D0
+#define DID_57404           0x16D1
+#define DID_57406           0x16D2
+#define DID_57402_MF        0x16D4
+#define DID_57407C          0x16D5
+#define DID_57412           0x16D6
+#define DID_57414           0x16D7
+#define DID_57416C          0x16D8
+#define DID_57417C          0x16D9
+#define DID_57402L          0x16DA
+#define DID_57404L          0x16DB
+#define DID_57417_VF        0x16dc
+#define DID_57412_MF        0x16DE
+#define DID_57314           0x16DF
+#define DID_57317C          0x16E0
+#define DID_57417F          0x16E2
+#define DID_57416F          0x16E3
+#define DID_57317F          0x16E4
+#define DID_57404_MF        0x16E7
+#define DID_57406_MF        0x16E8
+#define DID_57407F          0x16E9
+#define DID_57407_MF        0x16EA
+#define DID_57412_RDMA_MF   0x16EB
+#define DID_57414_MF        0x16EC
+#define DID_57414_RDMA_MF   0x16ED
+#define DID_57416_MF        0x16EE
+#define DID_57416_RDMA_MF   0x16EF
+
+static struct pci_device_id bnxt_nics[] = {
+       PCI_ROM(PCI_VID_BCOM, DID_57417_RDMA_MF, "14e4-16C0", "14e4-16C0", 0),
+       PCI_ROM(PCI_VID_BCOM, DID_57417_VF_RDMA, "14e4-16C1", "14e4-16C1", 0),
+       PCI_ROM(PCI_VID_BCOM, DID_57301,         "14e4-16C8", "14e4-16C8", 0),
+       PCI_ROM(PCI_VID_BCOM, DID_57302,         "14e4-16C9", "14e4-16C9", 0),
+       PCI_ROM(PCI_VID_BCOM, DID_57304,         "14e4-16CA", "14e4-16CA", 0),
+       PCI_ROM(PCI_VID_BCOM, DID_57417_MF,      "14e4-16CC", "14e4-16CC", 0),
+       PCI_ROM(PCI_VID_BCOM, DID_58700,         "14e4-16CD", "14e4-16CD", 0),
+       PCI_ROM(PCI_VID_BCOM, DID_57311,         "14e4-16CE", "14e4-16CE", 0),
+       PCI_ROM(PCI_VID_BCOM, DID_57312,         "14e4-16CF", "14e4-16CF", 0),
+       PCI_ROM(PCI_VID_BCOM, DID_57402,         "14e4-16D0", "14e4-16D0", 0),
+       PCI_ROM(PCI_VID_BCOM, DID_57404,         "14e4-16D1", "14e4-16D1", 0),
+       PCI_ROM(PCI_VID_BCOM, DID_57406,         "14e4-16D2", "14e4-16D2", 0),
+       PCI_ROM(PCI_VID_BCOM, DID_57402_MF,      "14e4-16D4", "14e4-16D4", 0),
+       PCI_ROM(PCI_VID_BCOM, DID_57407C,        "14e4-16D5", "14e4-16D5", 0),
+       PCI_ROM(PCI_VID_BCOM, DID_57412,         "14e4-16D6", "14e4-16D6", 0),
+       PCI_ROM(PCI_VID_BCOM, DID_57414,         "14e4-16D7", "14e4-16D7", 0),
+       PCI_ROM(PCI_VID_BCOM, DID_57416C,        "14e4-16D8", "14e4-16D8", 0),
+       PCI_ROM(PCI_VID_BCOM, DID_57417C,        "14e4-16D9", "14e4-16D9", 0),
+       PCI_ROM(PCI_VID_BCOM, DID_57402L,        "14e4-16DA", "14e4-16DA", 0),
+       PCI_ROM(PCI_VID_BCOM, DID_57404L,        "14e4-16DB", "14e4-16DB", 0),
+       PCI_ROM(PCI_VID_BCOM, DID_57417_VF,      "14e4-16DC", "14e4-16DC", 0),
+       PCI_ROM(PCI_VID_BCOM, DID_57412_MF,      "14e4-16DE", "14e4-16DE", 0),
+       PCI_ROM(PCI_VID_BCOM, DID_57314,         "14e4-16DF", "14e4-16DF", 0),
+       PCI_ROM(PCI_VID_BCOM, DID_57317C,        "14e4-16E0", "14e4-16E0", 0),
+       PCI_ROM(PCI_VID_BCOM, DID_57417F,        "14e4-16E2", "14e4-16E2", 0),
+       PCI_ROM(PCI_VID_BCOM, DID_57416F,        "14e4-16E3", "14e4-16E3", 0),
+       PCI_ROM(PCI_VID_BCOM, DID_57317F,        "14e4-16E4", "14e4-16E4", 0),
+       PCI_ROM(PCI_VID_BCOM, DID_57404_MF,      "14e4-16E7", "14e4-16E7", 0),
+       PCI_ROM(PCI_VID_BCOM, DID_57406_MF,      "14e4-16E8", "14e4-16E8", 0),
+       PCI_ROM(PCI_VID_BCOM, DID_57407F,        "14e4-16E9", "14e4-16E9", 0),
+       PCI_ROM(PCI_VID_BCOM, DID_57407_MF,      "14e4-16EA", "14e4-16EA", 0),
+       PCI_ROM(PCI_VID_BCOM, DID_57412_RDMA_MF, "14e4-16EB", "14e4-16EB", 0),
+       PCI_ROM(PCI_VID_BCOM, DID_57414_MF,      "14e4-16EC", "14e4-16EC", 0),
+       PCI_ROM(PCI_VID_BCOM, DID_57414_RDMA_MF, "14e4-16ED", "14e4-16ED", 0),
+       PCI_ROM(PCI_VID_BCOM, DID_57416_MF,      "14e4-16EE", "14e4-16EE", 0),
+       PCI_ROM(PCI_VID_BCOM, DID_57416_RDMA_MF, "14e4-16EF", "14e4-16EF", 0),
+
+       PCI_ROM(PCI_VID_BCOM, DID_57320_1,        "14e4-16F0", "14e4-16F0", 0),
+       PCI_ROM(PCI_VID_BCOM, DID_57320_2,        "14e4-16F1", "14e4-16F1", 0),
+       PCI_ROM(PCI_VID_BCOM, DID_57454_MHB,      "14e4-1604", "14e4-1604", 0),
+       PCI_ROM(PCI_VID_BCOM, DID_57454_MHB_RDMA, "14e4-1605", "14e4-1605", 0),
+       PCI_ROM(PCI_VID_BCOM, DID_57454_VF_RDMA,  "14e4-1606", "14e4-1606", 0),
+       PCI_ROM(PCI_VID_BCOM, DID_57454_VF,       "14e4-1609", "14e4-1609", 0),
+       PCI_ROM(PCI_VID_BCOM, DID_57454,          "14e4-1614", "14e4-1614", 0),
+       PCI_ROM(PCI_VID_BCOM, DID_58802,          "14e4-D802", "14e4-D802", 0),
+       PCI_ROM(PCI_VID_BCOM, DID_58804,          "14e4-D804", "14e4-D804", 0),
+
+       PCI_ROM(PCI_VID_BCOM, DID_57508,          "14e4-1750", "14e4-1750", 0),
+       PCI_ROM(PCI_VID_BCOM, DID_57508_MF,       "14e4-1802", "14e4-1802", 0),
+       PCI_ROM(PCI_VID_BCOM, DID_57508_MF_RDMA,  "14e4-1805", "14e4-1805", 0),
+       PCI_ROM(PCI_VID_BCOM, DID_57504,          "14e4-1751", "14e4-1751", 0),
+       PCI_ROM(PCI_VID_BCOM, DID_57504_MF,       "14e4-1801", "14e4-1801", 0),
+       PCI_ROM(PCI_VID_BCOM, DID_57504_MF_RDMA,  "14e4-1804", "14e4-1804", 0),
+       PCI_ROM(PCI_VID_BCOM, DID_57502,          "14e4-1752", "14e4-1752", 0),
+       PCI_ROM(PCI_VID_BCOM, DID_57502_MF,       "14e4-1800", "14e4-1800", 0),
+       PCI_ROM(PCI_VID_BCOM, DID_57502_MF_RDMA,  "14e4-1803", "14e4-1803", 0),
+       PCI_ROM(PCI_VID_BCOM, DID_57508_VF,       "14e4-1806", "14e4-1806", 0),
+       PCI_ROM(PCI_VID_BCOM, DID_57508_VF_RDMA,  "14e4-1807", "14e4-1807", 0),
+       PCI_ROM(PCI_VID_BCOM, DID_57508_VF_HV,    "14e4-1808", "14e4-1808", 0),
+       PCI_ROM(PCI_VID_BCOM,
+               DID_57508_VF_RDMA_HV, "14e4-1809", "14e4-1809", 0),
+};
+
+static u16 bnxt_vf_nics[] = {
+       DID_57508_VF,
+       DID_57508_VF_RDMA,
+       DID_57508_VF_HV,
+       DID_57508_VF_RDMA_HV,
+       DID_57417_VF,
+       DID_57417_VF_RDMA,
+};
diff --git a/src/drivers/net/bnxt/bnxt_dbg.h b/src/drivers/net/bnxt/bnxt_dbg.h
new file mode 100644 (file)
index 0000000..188978a
--- /dev/null
@@ -0,0 +1,677 @@
+/*
+ * Copyright Â© 2018 Broadcom. All Rights Reserved. 
+ * The term \93Broadcom\94 refers to Broadcom Inc. and/or its subsidiaries.
+
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of version 2 of the GNU General Public License as published by the
+ * Free Software Foundation.
+
+ * This program is distributed in the hope that it will be useful.
+ * ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING 
+ * ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR
+ * NON-INFRINGEMENT, ARE DISCLAIMED, EXCEPT TO THE EXTENT THAT SUCH DISCLAIMERS
+ * ARE HELD TO BE LEGALLY INVALID. See the GNU General Public License for more
+ * details, a copy of which can be found in the file COPYING included with this
+ * package.
+ */
+
+//#define DEBUG_DRV
+//#define DEBUG_KEY
+//#define DEBUG_PCI
+//#define DEBUG_MEMORY
+//#define DEBUG_LINK
+//#define DEBUG_CHIP
+//#define DEBUG_FAIL
+//#define DEBUG_HWRM_CMDS
+//#define DEBUG_HWRM_DUMP
+//#define DEBUG_CQ
+//#define DEBUG_CQ_DUMP
+//#define DEBUG_TX
+//#define DEBUG_TX_DUMP
+//#define DEBUG_RX
+//#define DEBUG_RX_DUMP
+
+#if \
+       defined(DEBUG_DRV) || \
+       defined(DEBUG_PCI) || \
+       defined(DEBUG_CHIP) || \
+       defined(DEBUG_MEMORY) || \
+       defined(DEBUG_LINK) || \
+       defined(DEBUG_FAIL) || \
+       defined(DEBUG_HWRM_CMDS) || \
+       defined(DEBUG_HWRM_DUMP) || \
+       defined(DEBUG_CQ) || \
+       defined(DEBUG_CQ_DUMP) || \
+       defined(DEBUG_TX) || \
+       defined(DEBUG_TX_DUMP) || \
+       defined(DEBUG_RX) || \
+       defined(DEBUG_RX_DUMP)
+#define DEBUG_DEFAULT
+#endif
+#if defined(DEBUG_DEFAULT)
+#define dbg_prn          printf
+
+void pause_drv(void)
+{
+#if defined(DEBUG_KEY)
+       dbg_prn(" Press a key...");
+       getchar();
+#endif
+       dbg_prn("\n");
+}
+
+#define MAX_CHAR_SIZE(a) (u32)((1 << (a)) - 1)
+#define DISP_U8          0x00
+#define DISP_U16         0x01
+#define DISP_U32         0x02
+#define DISP_U64         0x03
+
+void dumpmemory1(u8 *buffer, u32 length, u8 flag)
+{
+       u32 jj = 0;
+       u8  i, c;
+
+       dbg_prn("\n  %p:", buffer);
+       for (jj = 0; jj < 16; jj++) {
+               if (!(jj & MAX_CHAR_SIZE(flag)))
+                       dbg_prn(" ");
+               if (jj < length)
+                       dbg_prn("%02x", buffer[jj]);
+               else
+                       dbg_prn("  ");
+               if ((jj & 0xF) == 0xF) {
+                       dbg_prn(" ");
+                       for (i = 0; i < 16; i++) {
+                               if (i < length) {
+                                       c = buffer[jj + i - 15];
+                                       if (c >= 0x20 && c < 0x7F)
+                                               ;
+                                       else
+                                               c = '.';
+                                       dbg_prn("%c", c);
+                               }
+                       }
+               }
+       }
+}
+
+void dump_mem(u8 *buffer, u32 length, u8 flag)
+{
+       u32 length16, remlen, jj;
+
+       length16 = length & 0xFFFFFFF0;
+       remlen   = length & 0xF;
+       for (jj = 0; jj < length16; jj += 16)
+               dumpmemory1((u8 *)&buffer[jj], 16, flag);
+       if (remlen)
+               dumpmemory1((u8 *)&buffer[length16], remlen, flag);
+       if (length16 || remlen)
+               dbg_prn("\n");
+}
+#else
+#define dbg_prn(func)
+#endif
+
+#if defined(DEBUG_PCI)
+void dbg_pci(struct bnxt *bp, const char *func, u16 cmd_reg)
+{
+       struct pci_device *pdev = bp->pdev;
+
+       dbg_prn("- %s()\n", func);
+       dbg_prn("  Bus:Dev:Func       : %04X\n", pdev->busdevfn);
+       dbg_prn("  Vendor id          : %04X\n", pdev->vendor);
+       dbg_prn("  Device id          : %04X (%cF)\n",
+               pdev->device, (bp->vf) ? 'V' : 'P');
+       dbg_prn("  Irq                : %d\n", pdev->irq);
+       dbg_prn("  PCI Command Reg    : %04X\n", cmd_reg);
+       dbg_prn("  Sub Vendor id      : %04X\n", bp->subsystem_vendor);
+       dbg_prn("  Sub Device id      : %04X\n", bp->subsystem_device);
+       dbg_prn("  PF Number          : %X\n", bp->pf_num);
+       dbg_prn("  BAR (0)            : %p %lx\n",
+               bp->bar0, pci_bar_start(pdev, PCI_BASE_ADDRESS_0));
+       dbg_prn("  BAR (1)            : %p %lx\n",
+               bp->bar1, pci_bar_start(pdev, PCI_BASE_ADDRESS_2));
+       dbg_prn("  BAR (2)            : %p %lx\n",
+               bp->bar2, pci_bar_start(pdev, PCI_BASE_ADDRESS_4));
+       dbg_prn(" ");
+       pause_drv();
+}
+#else
+#define dbg_pci(bp, func, creg)
+#endif
+
+#if defined(DEBUG_MEMORY)
+void dbg_mem(struct bnxt *bp, const char *func)
+{
+       dbg_prn("- %s()\n", func);
+       dbg_prn("  bp Addr            : %p", bp);
+       dbg_prn(" Len %4d", (u16)sizeof(struct bnxt));
+       dbg_prn(" phy %lx\n", virt_to_bus(bp));
+       dbg_prn("  bp->hwrm_req_addr  : %p", bp->hwrm_addr_req);
+       dbg_prn(" Len %4d", (u16)REQ_BUFFER_SIZE);
+       dbg_prn(" phy %lx\n", bp->req_addr_mapping);
+       dbg_prn("  bp->hwrm_resp_addr : %p", bp->hwrm_addr_resp);
+       dbg_prn(" Len %4d", (u16)RESP_BUFFER_SIZE);
+       dbg_prn(" phy %lx\n", bp->resp_addr_mapping);
+       dbg_prn("  bp->dma_addr       : %p", bp->hwrm_addr_dma);
+       dbg_prn(" Len %4d", (u16)DMA_BUFFER_SIZE);
+       dbg_prn(" phy %lx\n", bp->dma_addr_mapping);
+       dbg_prn("  bp->tx.bd_virt     : %p", bp->tx.bd_virt);
+       dbg_prn(" Len %4d", (u16)TX_RING_BUFFER_SIZE);
+       dbg_prn(" phy %lx\n", virt_to_bus(bp->tx.bd_virt));
+       dbg_prn("  bp->rx.bd_virt     : %p", bp->rx.bd_virt);
+       dbg_prn(" Len %4d", (u16)RX_RING_BUFFER_SIZE);
+       dbg_prn(" phy %lx\n", virt_to_bus(bp->rx.bd_virt));
+       dbg_prn("  bp->cq.bd_virt     : %p", bp->cq.bd_virt);
+       dbg_prn(" Len %4d", (u16)CQ_RING_BUFFER_SIZE);
+       dbg_prn(" phy %lx\n", virt_to_bus(bp->cq.bd_virt));
+       dbg_prn("  bp->nq.bd_virt     : %p", bp->nq.bd_virt);
+       dbg_prn(" Len %4d", (u16)NQ_RING_BUFFER_SIZE);
+       dbg_prn(" phy %lx\n", virt_to_bus(bp->nq.bd_virt));
+       dbg_prn(" ");
+       pause_drv();
+}
+#else
+#define dbg_mem(bp, func) (func = func)
+#endif
+
+#if defined(DEBUG_CHIP)
+void dbg_fw_ver(struct hwrm_ver_get_output *resp, u32 tmo)
+{
+       if (resp->hwrm_intf_maj_8b < 1) {
+               dbg_prn("  HWRM interface %d.%d.%d is older than 1.0.0.\n",
+                       resp->hwrm_intf_maj_8b, resp->hwrm_intf_min_8b,
+                       resp->hwrm_intf_upd_8b);
+               dbg_prn("  Update FW with HWRM interface 1.0.0 or newer.\n");
+       }
+       dbg_prn("  FW Version         : %d.%d.%d.%d\n",
+               resp->hwrm_fw_maj_8b, resp->hwrm_fw_min_8b,
+               resp->hwrm_fw_bld_8b, resp->hwrm_fw_rsvd_8b);
+       dbg_prn("  cmd timeout        : %d\n", tmo);
+       if (resp->hwrm_intf_maj_8b >= 1)
+               dbg_prn("  hwrm_max_req_len   : %d\n", resp->max_req_win_len);
+       dbg_prn("  hwrm_max_ext_req   : %d\n", resp->max_ext_req_len);
+       dbg_prn("  chip_num           : %x\n", resp->chip_num);
+       dbg_prn("  chip_id            : %x\n",
+               (u32)(resp->chip_rev << 24) |
+               (u32)(resp->chip_metal << 16) |
+               (u32)(resp->chip_bond_id << 8) |
+               (u32)resp->chip_platform_type);
+       test_if((resp->dev_caps_cfg & SHORT_CMD_SUPPORTED) &&
+               (resp->dev_caps_cfg & SHORT_CMD_REQUIRED))
+               dbg_prn("  SHORT_CMD_SUPPORTED\n");
+}
+
+void dbg_func_resource_qcaps(struct bnxt *bp)
+{
+// Ring Groups
+       dbg_prn("  min_hw_ring_grps   : %d\n", bp->min_hw_ring_grps);
+       dbg_prn("  max_hw_ring_grps   : %d\n", bp->max_hw_ring_grps);
+// TX Rings
+       dbg_prn("  min_tx_rings       : %d\n", bp->min_tx_rings);
+       dbg_prn("  max_tx_rings       : %d\n", bp->max_tx_rings);
+// RX Rings
+       dbg_prn("  min_rx_rings       : %d\n", bp->min_rx_rings);
+       dbg_prn("  max_rx_rings       : %d\n", bp->max_rx_rings);
+// Completion Rings
+       dbg_prn("  min_cq_rings       : %d\n", bp->min_cp_rings);
+       dbg_prn("  max_cq_rings       : %d\n", bp->max_cp_rings);
+// Statistic Contexts
+       dbg_prn("  min_stat_ctxs      : %d\n", bp->min_stat_ctxs);
+       dbg_prn("  max_stat_ctxs      : %d\n", bp->max_stat_ctxs);
+}
+
+void dbg_func_qcaps(struct bnxt *bp)
+{
+       dbg_prn("  Port Number        : %d\n", bp->port_idx);
+       dbg_prn("  fid                : 0x%04x\n", bp->fid);
+       dbg_prn("  PF MAC             : %02x:%02x:%02x:%02x:%02x:%02x\n",
+               bp->mac_addr[0],
+               bp->mac_addr[1],
+               bp->mac_addr[2],
+               bp->mac_addr[3],
+               bp->mac_addr[4],
+               bp->mac_addr[5]);
+}
+
+void dbg_func_qcfg(struct bnxt *bp)
+{
+       dbg_prn("  ordinal_value      : %d\n", bp->ordinal_value);
+       dbg_prn("  stat_ctx_id        : %x\n", bp->stat_ctx_id);
+       if (bp->vf) {
+               dbg_func_qcaps(bp);
+               dbg_prn("  vlan_id            : %d\n", bp->vlan_id);
+       }
+}
+
+void prn_set_speed(u32 speed)
+{
+       u32 speed1 = ((speed & LINK_SPEED_DRV_MASK) >> LINK_SPEED_DRV_SHIFT);
+
+       dbg_prn("  Set Link Speed     : ");
+       switch (speed & LINK_SPEED_DRV_MASK) {
+       case LINK_SPEED_DRV_1G:
+               dbg_prn("1 GBPS");
+               break;
+       case LINK_SPEED_DRV_10G:
+               dbg_prn("10 GBPS");
+               break;
+       case LINK_SPEED_DRV_25G:
+               dbg_prn("25 GBPS");
+               break;
+       case LINK_SPEED_DRV_40G:
+               dbg_prn("40 GBPS");
+               break;
+       case LINK_SPEED_DRV_50G:
+               dbg_prn("50 GBPS");
+               break;
+       case LINK_SPEED_DRV_100G:
+               dbg_prn("100 GBPS");
+               break;
+       case LINK_SPEED_DRV_200G:
+               dbg_prn("200 GBPS");
+               break;
+       case LINK_SPEED_DRV_AUTONEG:
+               dbg_prn("AUTONEG");
+               break;
+       default:
+               dbg_prn("%x", speed1);
+               break;
+       }
+       dbg_prn("\n");
+}
+
+void dbg_chip_info(struct bnxt *bp)
+{
+       if (bp->thor)
+               dbg_prn("  NQ Ring Id         : %d\n", bp->nq_ring_id);
+       else
+               dbg_prn("  Grp ID             : %d\n", bp->ring_grp_id);
+       dbg_prn("  Stat Ctx ID        : %d\n", bp->stat_ctx_id);
+       dbg_prn("  CQ Ring Id         : %d\n", bp->cq_ring_id);
+       dbg_prn("  Tx Ring Id         : %d\n", bp->tx_ring_id);
+       dbg_prn("  Rx ring Id         : %d\n", bp->rx_ring_id);
+       dbg_prn(" ");
+       pause_drv();
+}
+
+void dbg_num_rings(struct bnxt *bp)
+{
+       dbg_prn("  num_cmpl_rings     : %d\n", bp->num_cmpl_rings);
+       dbg_prn("  num_tx_rings       : %d\n", bp->num_tx_rings);
+       dbg_prn("  num_rx_rings       : %d\n", bp->num_rx_rings);
+       dbg_prn("  num_ring_grps      : %d\n", bp->num_hw_ring_grps);
+       dbg_prn("  num_stat_ctxs      : %d\n", bp->num_stat_ctxs);
+}
+
+void dbg_flags(const char *func, u32 flags)
+{
+       dbg_prn("- %s()\n", func);
+       dbg_prn("  bp->flags          : 0x%04x\n", flags);
+}
+
+void dbg_bnxt_pause(void)
+{
+       dbg_prn(" ");
+       pause_drv();
+}
+#else
+#define dbg_fw_ver(resp, tmo)
+#define dbg_func_resource_qcaps(bp)
+#define dbg_func_qcaps(bp)
+#define dbg_func_qcfg(bp)
+#define prn_set_speed(speed)
+#define dbg_chip_info(bp)
+#define dbg_num_rings(bp)
+#define dbg_flags(func, flags)
+#define dbg_bnxt_pause()
+#endif
+
+#if defined(DEBUG_HWRM_CMDS) || defined(DEBUG_FAIL)
+void dump_hwrm_req(struct bnxt *bp, const char *func, u32 len, u32 tmo)
+{
+       dbg_prn("- %s(0x%04x) cmd_len %d cmd_tmo %d",
+               func, (u16)((struct input *)bp->hwrm_addr_req)->req_type,
+               len, tmo);
+#if defined(DEBUG_HWRM_DUMP)
+       dump_mem((u8 *)bp->hwrm_addr_req, len, DISP_U8);
+#else
+       dbg_prn("\n");
+#endif
+}
+
+void debug_resp(struct bnxt *bp, const char *func, u32 resp_len, u16 err)
+{
+       dbg_prn("- %s(0x%04x) - ",
+               func, (u16)((struct input *)bp->hwrm_addr_req)->req_type);
+       if (err == STATUS_SUCCESS)
+               dbg_prn("Done");
+       else if (err != STATUS_TIMEOUT)
+               dbg_prn("Fail err 0x%04x", err);
+       else
+               dbg_prn("timedout");
+#if defined(DEBUG_HWRM_DUMP)
+       if (err != STATUS_TIMEOUT) {
+               dump_mem((u8 *)bp->hwrm_addr_resp, resp_len, DISP_U8);
+               sleep(1);
+       } else
+               dbg_prn("\n");
+#else
+       resp_len = resp_len;
+       dbg_prn("\n");
+#endif
+}
+
+void dbg_hw_cmd(struct bnxt *bp,
+               const char *func, u16 cmd_len,
+               u16 resp_len, u32 cmd_tmo, u16 err)
+{
+#if !defined(DEBUG_HWRM_CMDS)
+       if (err)
+#endif
+       {
+               dump_hwrm_req(bp, func, cmd_len, cmd_tmo);
+               debug_resp(bp, func, resp_len, err);
+       }
+}
+#else
+#define dbg_hw_cmd(bp, func, cmd_len, resp_len, cmd_tmo, err) (func = func)
+#endif
+
+#if defined(DEBUG_HWRM_CMDS)
+void dbg_short_cmd(u8 *req, const char *func, u32 len)
+{
+       struct hwrm_short_input *sreq;
+
+       sreq = (struct hwrm_short_input *)req;
+       dbg_prn("- %s(0x%04x) short_cmd_len %d",
+               func,
+               sreq->req_type,
+               (int)len);
+#if defined(DEBUG_HWRM_DUMP)
+       dump_mem((u8 *)sreq, len, DISP_U8);
+#else
+       dbg_prn("\n");
+#endif
+}
+#else
+#define dbg_short_cmd(sreq, func, len)
+#endif
+
+#if defined(DEBUG_RX)
+void dump_rx_bd(struct rx_pkt_cmpl *rx_cmp,
+               struct rx_pkt_cmpl_hi *rx_cmp_hi,
+               u32 desc_idx)
+{
+       dbg_prn("  RX desc_idx %d PktLen %d\n", desc_idx, rx_cmp->len);
+       dbg_prn("- rx_cmp    %lx", virt_to_bus(rx_cmp));
+#if defined(DEBUG_RX_DUMP)
+       dump_mem((u8 *)rx_cmp, (u32)sizeof(struct rx_pkt_cmpl), DISP_U8);
+#else
+       dbg_prn("\n");
+#endif
+       dbg_prn("- rx_cmp_hi %lx", virt_to_bus(rx_cmp_hi));
+#if defined(DEBUG_RX_DUMP)
+       dump_mem((u8 *)rx_cmp_hi, (u32)sizeof(struct rx_pkt_cmpl_hi), DISP_U8);
+#else
+       dbg_prn("\n");
+#endif
+}
+
+void dbg_rx_vlan(struct bnxt *bp, u32 meta, u16 f2, u16 rx_vid)
+{
+       dbg_prn("  Rx VLAN metadata %x flags2 %x\n", meta, f2);
+       dbg_prn("  Rx VLAN MBA %d TX %d RX %d\n",
+               bp->vlan_id, bp->vlan_tx, rx_vid);
+}
+
+void dbg_alloc_rx_iob(struct io_buffer *iob, u16 id, u16 cid)
+{
+       dbg_prn("  Rx alloc_iob (%d) %p bd_virt (%d)\n",
+               id, iob->data, cid);
+}
+
+void dbg_rx_cid(u16 idx, u16 cid)
+{
+       dbg_prn("- RX old cid %d new cid %d\n", idx, cid);
+}
+
+void dbg_alloc_rx_iob_fail(u16 iob_idx, u16 cons_id)
+{
+       dbg_prn("  Rx alloc_iob (%d) ", iob_idx);
+       dbg_prn("failed for cons_id %d\n", cons_id);
+}
+
+void dbg_rxp(u8 *iob, u16 rx_len, u8 drop)
+{
+       dbg_prn("- RX iob %lx Len %d ", virt_to_bus(iob), rx_len);
+       if (drop == 1)
+               dbg_prn("drop ErrPkt ");
+       else if (drop == 2)
+               dbg_prn("drop LoopBack ");
+       else if (drop == 3)
+               dbg_prn("drop VLAN");
+#if defined(DEBUG_RX_DUMP)
+       dump_mem(iob, (u32)rx_len, DISP_U8);
+#else
+       dbg_prn("\n");
+#endif
+}
+
+void dbg_rx_stat(struct bnxt *bp)
+{
+       dbg_prn("- RX Stat Total %d Good %d Drop err %d LB %d VLAN %d\n",
+               bp->rx.cnt, bp->rx.good,
+               bp->rx.drop_err, bp->rx.drop_lb, bp->rx.drop_vlan);
+}
+#else
+#define dump_rx_bd(rx_cmp, rx_cmp_hi, desc_idx)
+#define dbg_rx_vlan(bp, metadata, flags2, rx_vid)
+#define dbg_alloc_rx_iob(iob, id, cid)
+#define dbg_rx_cid(idx, cid)
+#define dbg_alloc_rx_iob_fail(iob_idx, cons_id)
+#define dbg_rxp(iob, rx_len, drop)
+#define dbg_rx_stat(bp)
+#endif
+
+#if defined(DEBUG_CQ)
+static void dump_cq(struct cmpl_base *cmp, u16 cid)
+{
+       dbg_prn("- CQ Type ");
+       switch (cmp->type & CMPL_BASE_TYPE_MASK) {
+       case CMPL_BASE_TYPE_HWRM_ASYNC_EVENT:
+               dbg_prn("(ae)");
+               break;
+       case CMPL_BASE_TYPE_STAT_EJECT:
+               dbg_prn("(se)");
+               break;
+       case CMPL_BASE_TYPE_TX_L2:
+               dbg_prn("(tx)");
+               break;
+       case CMPL_BASE_TYPE_RX_L2:
+               dbg_prn("(rx)");
+               break;
+       default:
+               dbg_prn("%04x", (u16)(cmp->type & CMPL_BASE_TYPE_MASK));
+               break;
+       }
+       dbg_prn(" cid %d", cid);
+#if defined(DEBUG_CQ_DUMP)
+       dump_mem((u8 *)cmp, (u32)sizeof(struct cmpl_base), DISP_U8);
+#else
+       dbg_prn("\n");
+#endif
+}
+
+static void dump_nq(struct nq_base *nqp, u16 cid)
+{
+       dbg_prn("- NQ Type %lx cid %d", (nqp->type & NQ_CN_TYPE_MASK), cid);
+#if defined(DEBUG_CQ_DUMP)
+       dump_mem((u8 *)nqp, (u32)sizeof(struct nq_base), DISP_U8);
+#else
+       dbg_prn("\n");
+#endif
+}
+#else
+#define dump_cq(cq, id)
+#define dump_nq(nq, id)
+#endif
+
+#if defined(DEBUG_TX)
+void dbg_tx_avail(struct bnxt *bp, u32 avail, u16 use)
+{
+       dbg_prn("- Tx BD %d Avail %d Use %d pid %d cid %d\n",
+               bp->tx.ring_cnt,
+               avail, use,
+               bp->tx.prod_id,
+               bp->tx.cons_id);
+}
+
+void dbg_tx_vlan(struct bnxt *bp, char *src, u16 plen, u16 len)
+{
+       dbg_prn("- Tx VLAN PKT %d MBA %d", bp->vlan_tx, bp->vlan_id);
+       dbg_prn(" PKT %d",
+               BYTE_SWAP_S(*(u16 *)(&src[MAC_HDR_SIZE + 2])));
+       dbg_prn(" Pro %x",
+               BYTE_SWAP_S(*(u16 *)(&src[MAC_HDR_SIZE])));
+       dbg_prn(" old len %d new len %d\n", plen, len);
+}
+
+void dbg_tx_pad(u16 plen, u16 len)
+{
+       if (len != plen)
+               dbg_prn("- Tx padded(0) old len %d new len %d\n", plen, len);
+}
+
+void dump_tx_stat(struct bnxt *bp)
+{
+       dbg_prn("  TX stats cnt %d req_cnt %d", bp->tx.cnt, bp->tx.cnt_req);
+       dbg_prn(" prod_id %d cons_id %d\n", bp->tx.prod_id, bp->tx.cons_id);
+}
+
+void dump_tx_pkt(u8 *pkt, u16 len, u16 idx)
+{
+       dbg_prn("  TX(%d) Addr %lx Size %d", idx, virt_to_bus(pkt), len);
+#if defined(DEBUG_TX_DUMP)
+       dump_mem(pkt, (u32)len, DISP_U8);
+#else
+       dbg_prn("\n");
+#endif
+}
+
+void dump_tx_bd(struct tx_bd_short *tx_bd, u16 len, int idx)
+{
+       dbg_prn("  Tx(%d) BD Addr %lx Size %d", idx, virt_to_bus(tx_bd), len);
+#if defined(DEBUG_TX_DUMP)
+       dump_mem((u8 *)tx_bd, (u32)len, DISP_U8);
+#else
+       dbg_prn("\n");
+#endif
+}
+
+void dbg_tx_done(u8 *pkt, u16 len, u16 idx)
+{
+       dbg_prn("  Tx(%d) Done pkt %lx Size %d\n", idx, virt_to_bus(pkt), len);
+}
+#else
+#define dbg_tx_avail(bp, a, u)
+#define dbg_tx_vlan(bp, src, plen, len)
+#define dbg_tx_pad(plen, len)
+#define dump_tx_stat(bp)
+#define dump_tx_pkt(pkt, len, idx)
+#define dump_tx_bd(prod_bd, len, idx)
+#define dbg_tx_done(pkt, len, idx)
+#endif
+
+#if defined(DEBUG_LINK)
+static void dump_evt(u8 *cmp, u32 type, u16 cid, u8 ring)
+{
+       u32 size;
+       u8  c;
+
+       if (ring) {
+               c = 'N';
+               size = sizeof(struct nq_base);
+       } else {
+               c = 'C';
+               size = sizeof(struct cmpl_base);
+       }
+       switch (type) {
+       case CMPL_BASE_TYPE_HWRM_ASYNC_EVENT:
+               break;
+       default:
+               return;
+       }
+       dbg_prn("- %cQ Type (ae)  cid %d", c, cid);
+       dump_mem(cmp, size, DISP_U8);
+}
+
+void dbg_link_info(struct bnxt *bp)
+{
+       dbg_prn("  Current Speed      : ");
+       switch (bp->current_link_speed) {
+       case PORT_PHY_QCFG_RESP_LINK_SPEED_200GB:
+               dbg_prn("200 %s", str_gbps);
+               break;
+       case PORT_PHY_QCFG_RESP_LINK_SPEED_100GB:
+               dbg_prn("100 %s", str_gbps);
+               break;
+       case PORT_PHY_QCFG_RESP_LINK_SPEED_50GB:
+               dbg_prn("50 %s", str_gbps);
+               break;
+       case PORT_PHY_QCFG_RESP_LINK_SPEED_40GB:
+               dbg_prn("40 %s", str_gbps);
+               break;
+       case PORT_PHY_QCFG_RESP_LINK_SPEED_25GB:
+               dbg_prn("25 %s", str_gbps);
+               break;
+       case PORT_PHY_QCFG_RESP_LINK_SPEED_20GB:
+               dbg_prn("20 %s", str_gbps);
+               break;
+       case PORT_PHY_QCFG_RESP_LINK_SPEED_10GB:
+               dbg_prn("10 %s", str_gbps);
+               break;
+       case PORT_PHY_QCFG_RESP_LINK_SPEED_2_5GB:
+               dbg_prn("2.5 %s", str_gbps);
+               break;
+       case PORT_PHY_QCFG_RESP_LINK_SPEED_2GB:
+               dbg_prn("2 %s", str_gbps);
+               break;
+       case PORT_PHY_QCFG_RESP_LINK_SPEED_1GB:
+               dbg_prn("1 %s", str_gbps);
+               break;
+       case PORT_PHY_QCFG_RESP_LINK_SPEED_100MB:
+               dbg_prn("100 %s", str_mbps);
+               break;
+       case PORT_PHY_QCFG_RESP_LINK_SPEED_10MB:
+               dbg_prn("10 %s", str_mbps);
+               break;
+       default:
+               dbg_prn("%x", bp->current_link_speed);
+       }
+       dbg_prn("\n");
+       dbg_prn("  media_detect       : %x\n", bp->media_detect);
+}
+
+void dbg_link_status(struct bnxt *bp)
+{
+       dbg_prn("  Port(%d)            : Link", bp->port_idx);
+       if (bp->link_status == STATUS_LINK_ACTIVE)
+               dbg_prn("Up");
+       else
+               dbg_prn("Down");
+       dbg_prn("\n");
+}
+
+void dbg_link_state(struct bnxt *bp, u32 tmo)
+{
+       dbg_link_status(bp);
+       dbg_link_info(bp);
+       dbg_prn("  Link wait time     : %d ms", tmo);
+       pause_drv();
+}
+#else
+#define dump_evt(cq, ty, id, ring)
+#define dbg_link_status(bp)
+#define dbg_link_state(bp, tmo)
+#endif
diff --git a/src/drivers/net/bnxt/bnxt_hsi.h b/src/drivers/net/bnxt/bnxt_hsi.h
new file mode 100644 (file)
index 0000000..086acb8
--- /dev/null
@@ -0,0 +1,10337 @@
+/* Broadcom NetXtreme-C/E network driver.
+ *
+ * Copyright (c) 2014-2016 Broadcom Corporation
+ * Copyright (c) 2016-2019 Broadcom Limited
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation.
+ *
+ * DO NOT MODIFY!!! This file is automatically generated.
+ */
+
+#ifndef _BNXT_HSI_H_
+#define _BNXT_HSI_H_
+
+/* hwrm_cmd_hdr (size:128b/16B) */
+struct hwrm_cmd_hdr {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+};
+
+/* hwrm_resp_hdr (size:64b/8B) */
+struct hwrm_resp_hdr {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+};
+
+#define CMD_DISCR_TLV_ENCAP 0x8000UL
+#define CMD_DISCR_LAST     CMD_DISCR_TLV_ENCAP
+
+#define TLV_TYPE_HWRM_REQUEST                    0x1UL
+#define TLV_TYPE_HWRM_RESPONSE                   0x2UL
+#define TLV_TYPE_ROCE_SP_COMMAND                 0x3UL
+#define TLV_TYPE_QUERY_ROCE_CC_GEN1              0x4UL
+#define TLV_TYPE_MODIFY_ROCE_CC_GEN1             0x5UL
+#define TLV_TYPE_ENGINE_CKV_DEVICE_SERIAL_NUMBER 0x8001UL
+#define TLV_TYPE_ENGINE_CKV_NONCE                0x8002UL
+#define TLV_TYPE_ENGINE_CKV_IV                   0x8003UL
+#define TLV_TYPE_ENGINE_CKV_AUTH_TAG             0x8004UL
+#define TLV_TYPE_ENGINE_CKV_CIPHERTEXT           0x8005UL
+#define TLV_TYPE_ENGINE_CKV_ALGORITHMS           0x8006UL
+#define TLV_TYPE_ENGINE_CKV_ECC_PUBLIC_KEY       0x8007UL
+#define TLV_TYPE_ENGINE_CKV_ECDSA_SIGNATURE      0x8008UL
+#define TLV_TYPE_LAST                           TLV_TYPE_ENGINE_CKV_ECDSA_SIGNATURE
+
+/* tlv (size:64b/8B) */
+struct tlv {
+       __le16  cmd_discr;
+       u8      reserved_8b;
+       u8      flags;
+       #define TLV_FLAGS_MORE         0x1UL
+       #define TLV_FLAGS_MORE_LAST      0x0UL
+       #define TLV_FLAGS_MORE_NOT_LAST  0x1UL
+       #define TLV_FLAGS_REQUIRED     0x2UL
+       #define TLV_FLAGS_REQUIRED_NO    (0x0UL << 1)
+       #define TLV_FLAGS_REQUIRED_YES   (0x1UL << 1)
+       #define TLV_FLAGS_REQUIRED_LAST TLV_FLAGS_REQUIRED_YES
+       __le16  tlv_type;
+       __le16  length;
+};
+
+/* input (size:128b/16B) */
+struct input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+};
+
+/* output (size:64b/8B) */
+struct output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+};
+
+/* hwrm_short_input (size:128b/16B) */
+struct hwrm_short_input {
+       __le16  req_type;
+       __le16  signature;
+       #define SHORT_REQ_SIGNATURE_SHORT_CMD 0x4321UL
+       #define SHORT_REQ_SIGNATURE_LAST     SHORT_REQ_SIGNATURE_SHORT_CMD
+       __le16  unused_0;
+       __le16  size;
+       __le64  req_addr;
+};
+
+/* cmd_nums (size:64b/8B) */
+struct cmd_nums {
+       __le16  req_type;
+       #define HWRM_VER_GET                              0x0UL
+       #define HWRM_FUNC_DRV_IF_CHANGE                   0xdUL
+       #define HWRM_FUNC_BUF_UNRGTR                      0xeUL
+       #define HWRM_FUNC_VF_CFG                          0xfUL
+       #define HWRM_RESERVED1                            0x10UL
+       #define HWRM_FUNC_RESET                           0x11UL
+       #define HWRM_FUNC_GETFID                          0x12UL
+       #define HWRM_FUNC_VF_ALLOC                        0x13UL
+       #define HWRM_FUNC_VF_FREE                         0x14UL
+       #define HWRM_FUNC_QCAPS                           0x15UL
+       #define HWRM_FUNC_QCFG                            0x16UL
+       #define HWRM_FUNC_CFG                             0x17UL
+       #define HWRM_FUNC_QSTATS                          0x18UL
+       #define HWRM_FUNC_CLR_STATS                       0x19UL
+       #define HWRM_FUNC_DRV_UNRGTR                      0x1aUL
+       #define HWRM_FUNC_VF_RESC_FREE                    0x1bUL
+       #define HWRM_FUNC_VF_VNIC_IDS_QUERY               0x1cUL
+       #define HWRM_FUNC_DRV_RGTR                        0x1dUL
+       #define HWRM_FUNC_DRV_QVER                        0x1eUL
+       #define HWRM_FUNC_BUF_RGTR                        0x1fUL
+       #define HWRM_PORT_PHY_CFG                         0x20UL
+       #define HWRM_PORT_MAC_CFG                         0x21UL
+       #define HWRM_PORT_TS_QUERY                        0x22UL
+       #define HWRM_PORT_QSTATS                          0x23UL
+       #define HWRM_PORT_LPBK_QSTATS                     0x24UL
+       #define HWRM_PORT_CLR_STATS                       0x25UL
+       #define HWRM_PORT_LPBK_CLR_STATS                  0x26UL
+       #define HWRM_PORT_PHY_QCFG                        0x27UL
+       #define HWRM_PORT_MAC_QCFG                        0x28UL
+       #define HWRM_PORT_MAC_PTP_QCFG                    0x29UL
+       #define HWRM_PORT_PHY_QCAPS                       0x2aUL
+       #define HWRM_PORT_PHY_I2C_WRITE                   0x2bUL
+       #define HWRM_PORT_PHY_I2C_READ                    0x2cUL
+       #define HWRM_PORT_LED_CFG                         0x2dUL
+       #define HWRM_PORT_LED_QCFG                        0x2eUL
+       #define HWRM_PORT_LED_QCAPS                       0x2fUL
+       #define HWRM_QUEUE_QPORTCFG                       0x30UL
+       #define HWRM_QUEUE_QCFG                           0x31UL
+       #define HWRM_QUEUE_CFG                            0x32UL
+       #define HWRM_FUNC_VLAN_CFG                        0x33UL
+       #define HWRM_FUNC_VLAN_QCFG                       0x34UL
+       #define HWRM_QUEUE_PFCENABLE_QCFG                 0x35UL
+       #define HWRM_QUEUE_PFCENABLE_CFG                  0x36UL
+       #define HWRM_QUEUE_PRI2COS_QCFG                   0x37UL
+       #define HWRM_QUEUE_PRI2COS_CFG                    0x38UL
+       #define HWRM_QUEUE_COS2BW_QCFG                    0x39UL
+       #define HWRM_QUEUE_COS2BW_CFG                     0x3aUL
+       #define HWRM_QUEUE_DSCP_QCAPS                     0x3bUL
+       #define HWRM_QUEUE_DSCP2PRI_QCFG                  0x3cUL
+       #define HWRM_QUEUE_DSCP2PRI_CFG                   0x3dUL
+       #define HWRM_VNIC_ALLOC                           0x40UL
+       #define HWRM_VNIC_FREE                            0x41UL
+       #define HWRM_VNIC_CFG                             0x42UL
+       #define HWRM_VNIC_QCFG                            0x43UL
+       #define HWRM_VNIC_TPA_CFG                         0x44UL
+       #define HWRM_VNIC_TPA_QCFG                        0x45UL
+       #define HWRM_VNIC_RSS_CFG                         0x46UL
+       #define HWRM_VNIC_RSS_QCFG                        0x47UL
+       #define HWRM_VNIC_PLCMODES_CFG                    0x48UL
+       #define HWRM_VNIC_PLCMODES_QCFG                   0x49UL
+       #define HWRM_VNIC_QCAPS                           0x4aUL
+       #define HWRM_RING_ALLOC                           0x50UL
+       #define HWRM_RING_FREE                            0x51UL
+       #define HWRM_RING_CMPL_RING_QAGGINT_PARAMS        0x52UL
+       #define HWRM_RING_CMPL_RING_CFG_AGGINT_PARAMS     0x53UL
+       #define HWRM_RING_AGGINT_QCAPS                    0x54UL
+       #define HWRM_RING_RESET                           0x5eUL
+       #define HWRM_RING_GRP_ALLOC                       0x60UL
+       #define HWRM_RING_GRP_FREE                        0x61UL
+       #define HWRM_RESERVED5                            0x64UL
+       #define HWRM_RESERVED6                            0x65UL
+       #define HWRM_VNIC_RSS_COS_LB_CTX_ALLOC            0x70UL
+       #define HWRM_VNIC_RSS_COS_LB_CTX_FREE             0x71UL
+       #define HWRM_CFA_L2_FILTER_ALLOC                  0x90UL
+       #define HWRM_CFA_L2_FILTER_FREE                   0x91UL
+       #define HWRM_CFA_L2_FILTER_CFG                    0x92UL
+       #define HWRM_CFA_L2_SET_RX_MASK                   0x93UL
+       #define HWRM_CFA_VLAN_ANTISPOOF_CFG               0x94UL
+       #define HWRM_CFA_TUNNEL_FILTER_ALLOC              0x95UL
+       #define HWRM_CFA_TUNNEL_FILTER_FREE               0x96UL
+       #define HWRM_CFA_ENCAP_RECORD_ALLOC               0x97UL
+       #define HWRM_CFA_ENCAP_RECORD_FREE                0x98UL
+       #define HWRM_CFA_NTUPLE_FILTER_ALLOC              0x99UL
+       #define HWRM_CFA_NTUPLE_FILTER_FREE               0x9aUL
+       #define HWRM_CFA_NTUPLE_FILTER_CFG                0x9bUL
+       #define HWRM_CFA_EM_FLOW_ALLOC                    0x9cUL
+       #define HWRM_CFA_EM_FLOW_FREE                     0x9dUL
+       #define HWRM_CFA_EM_FLOW_CFG                      0x9eUL
+       #define HWRM_TUNNEL_DST_PORT_QUERY                0xa0UL
+       #define HWRM_TUNNEL_DST_PORT_ALLOC                0xa1UL
+       #define HWRM_TUNNEL_DST_PORT_FREE                 0xa2UL
+       #define HWRM_STAT_CTX_ENG_QUERY                   0xafUL
+       #define HWRM_STAT_CTX_ALLOC                       0xb0UL
+       #define HWRM_STAT_CTX_FREE                        0xb1UL
+       #define HWRM_STAT_CTX_QUERY                       0xb2UL
+       #define HWRM_STAT_CTX_CLR_STATS                   0xb3UL
+       #define HWRM_PORT_QSTATS_EXT                      0xb4UL
+       #define HWRM_FW_RESET                             0xc0UL
+       #define HWRM_FW_QSTATUS                           0xc1UL
+       #define HWRM_FW_HEALTH_CHECK                      0xc2UL
+       #define HWRM_FW_SYNC                              0xc3UL
+       #define HWRM_FW_SET_TIME                          0xc8UL
+       #define HWRM_FW_GET_TIME                          0xc9UL
+       #define HWRM_FW_SET_STRUCTURED_DATA               0xcaUL
+       #define HWRM_FW_GET_STRUCTURED_DATA               0xcbUL
+       #define HWRM_FW_IPC_MAILBOX                       0xccUL
+       #define HWRM_EXEC_FWD_RESP                        0xd0UL
+       #define HWRM_REJECT_FWD_RESP                      0xd1UL
+       #define HWRM_FWD_RESP                             0xd2UL
+       #define HWRM_FWD_ASYNC_EVENT_CMPL                 0xd3UL
+       #define HWRM_OEM_CMD                              0xd4UL
+       #define HWRM_TEMP_MONITOR_QUERY                   0xe0UL
+       #define HWRM_WOL_FILTER_ALLOC                     0xf0UL
+       #define HWRM_WOL_FILTER_FREE                      0xf1UL
+       #define HWRM_WOL_FILTER_QCFG                      0xf2UL
+       #define HWRM_WOL_REASON_QCFG                      0xf3UL
+       #define HWRM_CFA_METER_PROFILE_ALLOC              0xf5UL
+       #define HWRM_CFA_METER_PROFILE_FREE               0xf6UL
+       #define HWRM_CFA_METER_PROFILE_CFG                0xf7UL
+       #define HWRM_CFA_METER_INSTANCE_ALLOC             0xf8UL
+       #define HWRM_CFA_METER_INSTANCE_FREE              0xf9UL
+       #define HWRM_CFA_VFR_ALLOC                        0xfdUL
+       #define HWRM_CFA_VFR_FREE                         0xfeUL
+       #define HWRM_CFA_VF_PAIR_ALLOC                    0x100UL
+       #define HWRM_CFA_VF_PAIR_FREE                     0x101UL
+       #define HWRM_CFA_VF_PAIR_INFO                     0x102UL
+       #define HWRM_CFA_FLOW_ALLOC                       0x103UL
+       #define HWRM_CFA_FLOW_FREE                        0x104UL
+       #define HWRM_CFA_FLOW_FLUSH                       0x105UL
+       #define HWRM_CFA_FLOW_STATS                       0x106UL
+       #define HWRM_CFA_FLOW_INFO                        0x107UL
+       #define HWRM_CFA_DECAP_FILTER_ALLOC               0x108UL
+       #define HWRM_CFA_DECAP_FILTER_FREE                0x109UL
+       #define HWRM_CFA_VLAN_ANTISPOOF_QCFG              0x10aUL
+       #define HWRM_CFA_REDIRECT_TUNNEL_TYPE_ALLOC       0x10bUL
+       #define HWRM_CFA_REDIRECT_TUNNEL_TYPE_FREE        0x10cUL
+       #define HWRM_CFA_PAIR_ALLOC                       0x10dUL
+       #define HWRM_CFA_PAIR_FREE                        0x10eUL
+       #define HWRM_CFA_PAIR_INFO                        0x10fUL
+       #define HWRM_FW_IPC_MSG                           0x110UL
+       #define HWRM_CFA_REDIRECT_TUNNEL_TYPE_INFO        0x111UL
+       #define HWRM_CFA_REDIRECT_QUERY_TUNNEL_TYPE       0x112UL
+       #define HWRM_CFA_FLOW_AGING_TIMER_RESET           0x113UL
+       #define HWRM_CFA_FLOW_AGING_CFG                   0x114UL
+       #define HWRM_CFA_FLOW_AGING_QCFG                  0x115UL
+       #define HWRM_CFA_FLOW_AGING_QCAPS                 0x116UL
+       #define HWRM_ENGINE_CKV_HELLO                     0x12dUL
+       #define HWRM_ENGINE_CKV_STATUS                    0x12eUL
+       #define HWRM_ENGINE_CKV_CKEK_ADD                  0x12fUL
+       #define HWRM_ENGINE_CKV_CKEK_DELETE               0x130UL
+       #define HWRM_ENGINE_CKV_KEY_ADD                   0x131UL
+       #define HWRM_ENGINE_CKV_KEY_DELETE                0x132UL
+       #define HWRM_ENGINE_CKV_FLUSH                     0x133UL
+       #define HWRM_ENGINE_CKV_RNG_GET                   0x134UL
+       #define HWRM_ENGINE_CKV_KEY_GEN                   0x135UL
+       #define HWRM_ENGINE_QG_CONFIG_QUERY               0x13cUL
+       #define HWRM_ENGINE_QG_QUERY                      0x13dUL
+       #define HWRM_ENGINE_QG_METER_PROFILE_CONFIG_QUERY 0x13eUL
+       #define HWRM_ENGINE_QG_METER_PROFILE_QUERY        0x13fUL
+       #define HWRM_ENGINE_QG_METER_PROFILE_ALLOC        0x140UL
+       #define HWRM_ENGINE_QG_METER_PROFILE_FREE         0x141UL
+       #define HWRM_ENGINE_QG_METER_QUERY                0x142UL
+       #define HWRM_ENGINE_QG_METER_BIND                 0x143UL
+       #define HWRM_ENGINE_QG_METER_UNBIND               0x144UL
+       #define HWRM_ENGINE_QG_FUNC_BIND                  0x145UL
+       #define HWRM_ENGINE_SG_CONFIG_QUERY               0x146UL
+       #define HWRM_ENGINE_SG_QUERY                      0x147UL
+       #define HWRM_ENGINE_SG_METER_QUERY                0x148UL
+       #define HWRM_ENGINE_SG_METER_CONFIG               0x149UL
+       #define HWRM_ENGINE_SG_QG_BIND                    0x14aUL
+       #define HWRM_ENGINE_QG_SG_UNBIND                  0x14bUL
+       #define HWRM_ENGINE_CONFIG_QUERY                  0x154UL
+       #define HWRM_ENGINE_STATS_CONFIG                  0x155UL
+       #define HWRM_ENGINE_STATS_CLEAR                   0x156UL
+       #define HWRM_ENGINE_STATS_QUERY                   0x157UL
+       #define HWRM_ENGINE_RQ_ALLOC                      0x15eUL
+       #define HWRM_ENGINE_RQ_FREE                       0x15fUL
+       #define HWRM_ENGINE_CQ_ALLOC                      0x160UL
+       #define HWRM_ENGINE_CQ_FREE                       0x161UL
+       #define HWRM_ENGINE_NQ_ALLOC                      0x162UL
+       #define HWRM_ENGINE_NQ_FREE                       0x163UL
+       #define HWRM_ENGINE_ON_DIE_RQE_CREDITS            0x164UL
+       #define HWRM_FUNC_RESOURCE_QCAPS                  0x190UL
+       #define HWRM_FUNC_VF_RESOURCE_CFG                 0x191UL
+       #define HWRM_FUNC_BACKING_STORE_QCAPS             0x192UL
+       #define HWRM_FUNC_BACKING_STORE_CFG               0x193UL
+       #define HWRM_FUNC_BACKING_STORE_QCFG              0x194UL
+       #define HWRM_FUNC_VF_BW_CFG                       0x195UL
+       #define HWRM_FUNC_VF_BW_QCFG                      0x196UL
+       #define HWRM_SELFTEST_QLIST                       0x200UL
+       #define HWRM_SELFTEST_EXEC                        0x201UL
+       #define HWRM_SELFTEST_IRQ                         0x202UL
+       #define HWRM_SELFTEST_RETRIEVE_SERDES_DATA        0x203UL
+       #define HWRM_PCIE_QSTATS                          0x204UL
+       #define HWRM_DBG_READ_DIRECT                      0xff10UL
+       #define HWRM_DBG_READ_INDIRECT                    0xff11UL
+       #define HWRM_DBG_WRITE_DIRECT                     0xff12UL
+       #define HWRM_DBG_WRITE_INDIRECT                   0xff13UL
+       #define HWRM_DBG_DUMP                             0xff14UL
+       #define HWRM_DBG_ERASE_NVM                        0xff15UL
+       #define HWRM_DBG_CFG                              0xff16UL
+       #define HWRM_DBG_COREDUMP_LIST                    0xff17UL
+       #define HWRM_DBG_COREDUMP_INITIATE                0xff18UL
+       #define HWRM_DBG_COREDUMP_RETRIEVE                0xff19UL
+       #define HWRM_DBG_FW_CLI                           0xff1aUL
+       #define HWRM_DBG_I2C_CMD                          0xff1bUL
+       #define HWRM_DBG_RING_INFO_GET                    0xff1cUL
+       #define HWRM_NVM_FACTORY_DEFAULTS                 0xffeeUL
+       #define HWRM_NVM_VALIDATE_OPTION                  0xffefUL
+       #define HWRM_NVM_FLUSH                            0xfff0UL
+       #define HWRM_NVM_GET_VARIABLE                     0xfff1UL
+       #define HWRM_NVM_SET_VARIABLE                     0xfff2UL
+       #define HWRM_NVM_INSTALL_UPDATE                   0xfff3UL
+       #define HWRM_NVM_MODIFY                           0xfff4UL
+       #define HWRM_NVM_VERIFY_UPDATE                    0xfff5UL
+       #define HWRM_NVM_GET_DEV_INFO                     0xfff6UL
+       #define HWRM_NVM_ERASE_DIR_ENTRY                  0xfff7UL
+       #define HWRM_NVM_MOD_DIR_ENTRY                    0xfff8UL
+       #define HWRM_NVM_FIND_DIR_ENTRY                   0xfff9UL
+       #define HWRM_NVM_GET_DIR_ENTRIES                  0xfffaUL
+       #define HWRM_NVM_GET_DIR_INFO                     0xfffbUL
+       #define HWRM_NVM_RAW_DUMP                         0xfffcUL
+       #define HWRM_NVM_READ                             0xfffdUL
+       #define HWRM_NVM_WRITE                            0xfffeUL
+       #define HWRM_NVM_RAW_WRITE_BLK                    0xffffUL
+       #define HWRM_LAST                                HWRM_NVM_RAW_WRITE_BLK
+       __le16  unused_0[3];
+};
+
+/* ret_codes (size:64b/8B) */
+struct ret_codes {
+       __le16  error_code;
+       #define HWRM_ERR_CODE_SUCCESS                   0x0UL
+       #define HWRM_ERR_CODE_FAIL                      0x1UL
+       #define HWRM_ERR_CODE_INVALID_PARAMS            0x2UL
+       #define HWRM_ERR_CODE_RESOURCE_ACCESS_DENIED    0x3UL
+       #define HWRM_ERR_CODE_RESOURCE_ALLOC_ERROR      0x4UL
+       #define HWRM_ERR_CODE_INVALID_FLAGS             0x5UL
+       #define HWRM_ERR_CODE_INVALID_ENABLES           0x6UL
+       #define HWRM_ERR_CODE_UNSUPPORTED_TLV           0x7UL
+       #define HWRM_ERR_CODE_NO_BUFFER                 0x8UL
+       #define HWRM_ERR_CODE_UNSUPPORTED_OPTION_ERR    0x9UL
+       #define HWRM_ERR_CODE_HOT_RESET_PROGRESS        0xaUL
+       #define HWRM_ERR_CODE_HOT_RESET_FAIL            0xbUL
+       #define HWRM_ERR_CODE_HWRM_ERROR                0xfUL
+       #define HWRM_ERR_CODE_TLV_ENCAPSULATED_RESPONSE 0x8000UL
+       #define HWRM_ERR_CODE_UNKNOWN_ERR               0xfffeUL
+       #define HWRM_ERR_CODE_CMD_NOT_SUPPORTED         0xffffUL
+       #define HWRM_ERR_CODE_LAST                     HWRM_ERR_CODE_CMD_NOT_SUPPORTED
+       __le16  unused_0[3];
+};
+
+/* hwrm_err_output (size:128b/16B) */
+struct hwrm_err_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le32  opaque_0;
+       __le16  opaque_1;
+       u8      cmd_err;
+       u8      valid;
+};
+
+#define HWRM_NA_SIGNATURE ((__le32)(-1))
+#define HWRM_MAX_REQ_LEN 128
+#define HWRM_MAX_RESP_LEN 280
+#define HW_HASH_INDEX_SIZE 0x80
+#define HW_HASH_KEY_SIZE 40
+#define HWRM_RESP_VALID_KEY 1
+#define HWRM_VERSION_MAJOR 1
+#define HWRM_VERSION_MINOR 10
+#define HWRM_VERSION_UPDATE 0
+#define HWRM_VERSION_RSVD 18
+#define HWRM_VERSION_STR "1.10.0.18"
+
+/* hwrm_ver_get_input (size:192b/24B) */
+struct hwrm_ver_get_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       u8      hwrm_intf_maj;
+       u8      hwrm_intf_min;
+       u8      hwrm_intf_upd;
+       u8      unused_0[5];
+};
+
+/* hwrm_ver_get_output (size:1408b/176B) */
+struct hwrm_ver_get_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      hwrm_intf_maj_8b;
+       u8      hwrm_intf_min_8b;
+       u8      hwrm_intf_upd_8b;
+       u8      hwrm_intf_rsvd_8b;
+       u8      hwrm_fw_maj_8b;
+       u8      hwrm_fw_min_8b;
+       u8      hwrm_fw_bld_8b;
+       u8      hwrm_fw_rsvd_8b;
+       u8      mgmt_fw_maj_8b;
+       u8      mgmt_fw_min_8b;
+       u8      mgmt_fw_bld_8b;
+       u8      mgmt_fw_rsvd_8b;
+       u8      netctrl_fw_maj_8b;
+       u8      netctrl_fw_min_8b;
+       u8      netctrl_fw_bld_8b;
+       u8      netctrl_fw_rsvd_8b;
+       __le32  dev_caps_cfg;
+       #define VER_GET_RESP_DEV_CAPS_CFG_SECURE_FW_UPD_SUPPORTED                  0x1UL
+       #define VER_GET_RESP_DEV_CAPS_CFG_FW_DCBX_AGENT_SUPPORTED                  0x2UL
+       #define VER_GET_RESP_DEV_CAPS_CFG_SHORT_CMD_SUPPORTED                      0x4UL
+       #define VER_GET_RESP_DEV_CAPS_CFG_SHORT_CMD_REQUIRED                       0x8UL
+       #define VER_GET_RESP_DEV_CAPS_CFG_KONG_MB_CHNL_SUPPORTED                   0x10UL
+       #define VER_GET_RESP_DEV_CAPS_CFG_FLOW_HANDLE_64BIT_SUPPORTED              0x20UL
+       #define VER_GET_RESP_DEV_CAPS_CFG_L2_FILTER_TYPES_ROCE_OR_L2_SUPPORTED     0x40UL
+       #define VER_GET_RESP_DEV_CAPS_CFG_VIRTIO_VSWITCH_OFFLOAD_SUPPORTED         0x80UL
+       #define VER_GET_RESP_DEV_CAPS_CFG_TRUSTED_VF_SUPPORTED                     0x100UL
+       #define VER_GET_RESP_DEV_CAPS_CFG_FLOW_AGING_SUPPORTED                     0x200UL
+       u8      roce_fw_maj_8b;
+       u8      roce_fw_min_8b;
+       u8      roce_fw_bld_8b;
+       u8      roce_fw_rsvd_8b;
+       char    hwrm_fw_name[16];
+       char    mgmt_fw_name[16];
+       char    netctrl_fw_name[16];
+       u8      reserved2[16];
+       char    roce_fw_name[16];
+       __le16  chip_num;
+       u8      chip_rev;
+       u8      chip_metal;
+       u8      chip_bond_id;
+       u8      chip_platform_type;
+       #define VER_GET_RESP_CHIP_PLATFORM_TYPE_ASIC      0x0UL
+       #define VER_GET_RESP_CHIP_PLATFORM_TYPE_FPGA      0x1UL
+       #define VER_GET_RESP_CHIP_PLATFORM_TYPE_PALLADIUM 0x2UL
+       #define VER_GET_RESP_CHIP_PLATFORM_TYPE_LAST     VER_GET_RESP_CHIP_PLATFORM_TYPE_PALLADIUM
+       __le16  max_req_win_len;
+       __le16  max_resp_len;
+       __le16  def_req_timeout;
+       u8      flags;
+       #define VER_GET_RESP_FLAGS_DEV_NOT_RDY       0x1UL
+       #define VER_GET_RESP_FLAGS_EXT_VER_AVAIL     0x2UL
+       u8      unused_0[2];
+       u8      always_1;
+       __le16  hwrm_intf_major;
+       __le16  hwrm_intf_minor;
+       __le16  hwrm_intf_build;
+       __le16  hwrm_intf_patch;
+       __le16  hwrm_fw_major;
+       __le16  hwrm_fw_minor;
+       __le16  hwrm_fw_build;
+       __le16  hwrm_fw_patch;
+       __le16  mgmt_fw_major;
+       __le16  mgmt_fw_minor;
+       __le16  mgmt_fw_build;
+       __le16  mgmt_fw_patch;
+       __le16  netctrl_fw_major;
+       __le16  netctrl_fw_minor;
+       __le16  netctrl_fw_build;
+       __le16  netctrl_fw_patch;
+       __le16  roce_fw_major;
+       __le16  roce_fw_minor;
+       __le16  roce_fw_build;
+       __le16  roce_fw_patch;
+       __le16  max_ext_req_len;
+       u8      unused_1[5];
+       u8      valid;
+};
+
+/* eject_cmpl (size:128b/16B) */
+struct eject_cmpl {
+       __le16  type;
+       #define EJECT_CMPL_TYPE_MASK       0x3fUL
+       #define EJECT_CMPL_TYPE_SFT        0
+       #define EJECT_CMPL_TYPE_STAT_EJECT   0x1aUL
+       #define EJECT_CMPL_TYPE_LAST        EJECT_CMPL_TYPE_STAT_EJECT
+       #define EJECT_CMPL_FLAGS_MASK      0xffc0UL
+       #define EJECT_CMPL_FLAGS_SFT       6
+       #define EJECT_CMPL_FLAGS_ERROR      0x40UL
+       __le16  len;
+       __le32  opaque;
+       __le16  v;
+       #define EJECT_CMPL_V                              0x1UL
+       #define EJECT_CMPL_ERRORS_MASK                    0xfffeUL
+       #define EJECT_CMPL_ERRORS_SFT                     1
+       #define EJECT_CMPL_ERRORS_BUFFER_ERROR_MASK        0xeUL
+       #define EJECT_CMPL_ERRORS_BUFFER_ERROR_SFT         1
+       #define EJECT_CMPL_ERRORS_BUFFER_ERROR_NO_BUFFER     (0x0UL << 1)
+       #define EJECT_CMPL_ERRORS_BUFFER_ERROR_DID_NOT_FIT   (0x1UL << 1)
+       #define EJECT_CMPL_ERRORS_BUFFER_ERROR_BAD_FORMAT    (0x3UL << 1)
+       #define EJECT_CMPL_ERRORS_BUFFER_ERROR_FLUSH         (0x5UL << 1)
+       #define EJECT_CMPL_ERRORS_BUFFER_ERROR_LAST         EJECT_CMPL_ERRORS_BUFFER_ERROR_FLUSH
+       __le16  reserved16;
+       __le32  unused_2;
+};
+
+/* hwrm_cmpl (size:128b/16B) */
+struct hwrm_cmpl {
+       __le16  type;
+       #define CMPL_TYPE_MASK     0x3fUL
+       #define CMPL_TYPE_SFT      0
+       #define CMPL_TYPE_HWRM_DONE  0x20UL
+       #define CMPL_TYPE_LAST      CMPL_TYPE_HWRM_DONE
+       __le16  sequence_id;
+       __le32  unused_1;
+       __le32  v;
+       #define CMPL_V     0x1UL
+       __le32  unused_3;
+};
+
+/* hwrm_fwd_req_cmpl (size:128b/16B) */
+struct hwrm_fwd_req_cmpl {
+       __le16  req_len_type;
+       #define FWD_REQ_CMPL_TYPE_MASK        0x3fUL
+       #define FWD_REQ_CMPL_TYPE_SFT         0
+       #define FWD_REQ_CMPL_TYPE_HWRM_FWD_REQ  0x22UL
+       #define FWD_REQ_CMPL_TYPE_LAST         FWD_REQ_CMPL_TYPE_HWRM_FWD_REQ
+       #define FWD_REQ_CMPL_REQ_LEN_MASK     0xffc0UL
+       #define FWD_REQ_CMPL_REQ_LEN_SFT      6
+       __le16  source_id;
+       __le32  unused0;
+       __le32  req_buf_addr_v[2];
+       #define FWD_REQ_CMPL_V                0x1UL
+       #define FWD_REQ_CMPL_REQ_BUF_ADDR_MASK 0xfffffffeUL
+       #define FWD_REQ_CMPL_REQ_BUF_ADDR_SFT 1
+};
+
+/* hwrm_fwd_resp_cmpl (size:128b/16B) */
+struct hwrm_fwd_resp_cmpl {
+       __le16  type;
+       #define FWD_RESP_CMPL_TYPE_MASK         0x3fUL
+       #define FWD_RESP_CMPL_TYPE_SFT          0
+       #define FWD_RESP_CMPL_TYPE_HWRM_FWD_RESP  0x24UL
+       #define FWD_RESP_CMPL_TYPE_LAST          FWD_RESP_CMPL_TYPE_HWRM_FWD_RESP
+       __le16  source_id;
+       __le16  resp_len;
+       __le16  unused_1;
+       __le32  resp_buf_addr_v[2];
+       #define FWD_RESP_CMPL_V                 0x1UL
+       #define FWD_RESP_CMPL_RESP_BUF_ADDR_MASK 0xfffffffeUL
+       #define FWD_RESP_CMPL_RESP_BUF_ADDR_SFT 1
+};
+
+/* hwrm_async_event_cmpl (size:128b/16B) */
+struct hwrm_async_event_cmpl {
+       __le16  type;
+       #define ASYNC_EVENT_CMPL_TYPE_MASK            0x3fUL
+       #define ASYNC_EVENT_CMPL_TYPE_SFT             0
+       #define ASYNC_EVENT_CMPL_TYPE_HWRM_ASYNC_EVENT  0x2eUL
+       #define ASYNC_EVENT_CMPL_TYPE_LAST             ASYNC_EVENT_CMPL_TYPE_HWRM_ASYNC_EVENT
+       __le16  event_id;
+       #define ASYNC_EVENT_CMPL_EVENT_ID_LINK_STATUS_CHANGE         0x0UL
+       #define ASYNC_EVENT_CMPL_EVENT_ID_LINK_MTU_CHANGE            0x1UL
+       #define ASYNC_EVENT_CMPL_EVENT_ID_LINK_SPEED_CHANGE          0x2UL
+       #define ASYNC_EVENT_CMPL_EVENT_ID_DCB_CONFIG_CHANGE          0x3UL
+       #define ASYNC_EVENT_CMPL_EVENT_ID_PORT_CONN_NOT_ALLOWED      0x4UL
+       #define ASYNC_EVENT_CMPL_EVENT_ID_LINK_SPEED_CFG_NOT_ALLOWED 0x5UL
+       #define ASYNC_EVENT_CMPL_EVENT_ID_LINK_SPEED_CFG_CHANGE      0x6UL
+       #define ASYNC_EVENT_CMPL_EVENT_ID_PORT_PHY_CFG_CHANGE        0x7UL
+       #define ASYNC_EVENT_CMPL_EVENT_ID_RESET_NOTIFY               0x8UL
+       #define ASYNC_EVENT_CMPL_EVENT_ID_FUNC_DRVR_UNLOAD           0x10UL
+       #define ASYNC_EVENT_CMPL_EVENT_ID_FUNC_DRVR_LOAD             0x11UL
+       #define ASYNC_EVENT_CMPL_EVENT_ID_FUNC_FLR_PROC_CMPLT        0x12UL
+       #define ASYNC_EVENT_CMPL_EVENT_ID_PF_DRVR_UNLOAD             0x20UL
+       #define ASYNC_EVENT_CMPL_EVENT_ID_PF_DRVR_LOAD               0x21UL
+       #define ASYNC_EVENT_CMPL_EVENT_ID_VF_FLR                     0x30UL
+       #define ASYNC_EVENT_CMPL_EVENT_ID_VF_MAC_ADDR_CHANGE         0x31UL
+       #define ASYNC_EVENT_CMPL_EVENT_ID_PF_VF_COMM_STATUS_CHANGE   0x32UL
+       #define ASYNC_EVENT_CMPL_EVENT_ID_VF_CFG_CHANGE              0x33UL
+       #define ASYNC_EVENT_CMPL_EVENT_ID_LLFC_PFC_CHANGE            0x34UL
+       #define ASYNC_EVENT_CMPL_EVENT_ID_DEFAULT_VNIC_CHANGE        0x35UL
+       #define ASYNC_EVENT_CMPL_EVENT_ID_HW_FLOW_AGED               0x36UL
+       #define ASYNC_EVENT_CMPL_EVENT_ID_DEBUG_NOTIFICATION         0x37UL
+       #define ASYNC_EVENT_CMPL_EVENT_ID_FW_TRACE_MSG               0xfeUL
+       #define ASYNC_EVENT_CMPL_EVENT_ID_HWRM_ERROR                 0xffUL
+       #define ASYNC_EVENT_CMPL_EVENT_ID_LAST                      ASYNC_EVENT_CMPL_EVENT_ID_HWRM_ERROR
+       __le32  event_data2;
+       u8      opaque_v;
+       #define ASYNC_EVENT_CMPL_V          0x1UL
+       #define ASYNC_EVENT_CMPL_OPAQUE_MASK 0xfeUL
+       #define ASYNC_EVENT_CMPL_OPAQUE_SFT 1
+       u8      timestamp_lo;
+       __le16  timestamp_hi;
+       __le32  event_data1;
+};
+
+/* hwrm_async_event_cmpl_link_status_change (size:128b/16B) */
+struct hwrm_async_event_cmpl_link_status_change {
+       __le16  type;
+       #define ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_TYPE_MASK            0x3fUL
+       #define ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_TYPE_SFT             0
+       #define ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_TYPE_HWRM_ASYNC_EVENT  0x2eUL
+       #define ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_TYPE_LAST             ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_TYPE_HWRM_ASYNC_EVENT
+       __le16  event_id;
+       #define ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_EVENT_ID_LINK_STATUS_CHANGE 0x0UL
+       #define ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_EVENT_ID_LAST              ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_EVENT_ID_LINK_STATUS_CHANGE
+       __le32  event_data2;
+       u8      opaque_v;
+       #define ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_V          0x1UL
+       #define ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_OPAQUE_MASK 0xfeUL
+       #define ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_OPAQUE_SFT 1
+       u8      timestamp_lo;
+       __le16  timestamp_hi;
+       __le32  event_data1;
+       #define ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_EVENT_DATA1_LINK_CHANGE     0x1UL
+       #define ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_EVENT_DATA1_LINK_CHANGE_DOWN  0x0UL
+       #define ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_EVENT_DATA1_LINK_CHANGE_UP    0x1UL
+       #define ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_EVENT_DATA1_LINK_CHANGE_LAST ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_EVENT_DATA1_LINK_CHANGE_UP
+       #define ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_EVENT_DATA1_PORT_MASK       0xeUL
+       #define ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_EVENT_DATA1_PORT_SFT        1
+       #define ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_EVENT_DATA1_PORT_ID_MASK    0xffff0UL
+       #define ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_EVENT_DATA1_PORT_ID_SFT     4
+       #define ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_EVENT_DATA1_PF_ID_MASK      0xff00000UL
+       #define ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_EVENT_DATA1_PF_ID_SFT       20
+};
+
+/* hwrm_async_event_cmpl_link_mtu_change (size:128b/16B) */
+struct hwrm_async_event_cmpl_link_mtu_change {
+       __le16  type;
+       #define ASYNC_EVENT_CMPL_LINK_MTU_CHANGE_TYPE_MASK            0x3fUL
+       #define ASYNC_EVENT_CMPL_LINK_MTU_CHANGE_TYPE_SFT             0
+       #define ASYNC_EVENT_CMPL_LINK_MTU_CHANGE_TYPE_HWRM_ASYNC_EVENT  0x2eUL
+       #define ASYNC_EVENT_CMPL_LINK_MTU_CHANGE_TYPE_LAST             ASYNC_EVENT_CMPL_LINK_MTU_CHANGE_TYPE_HWRM_ASYNC_EVENT
+       __le16  event_id;
+       #define ASYNC_EVENT_CMPL_LINK_MTU_CHANGE_EVENT_ID_LINK_MTU_CHANGE 0x1UL
+       #define ASYNC_EVENT_CMPL_LINK_MTU_CHANGE_EVENT_ID_LAST           ASYNC_EVENT_CMPL_LINK_MTU_CHANGE_EVENT_ID_LINK_MTU_CHANGE
+       __le32  event_data2;
+       u8      opaque_v;
+       #define ASYNC_EVENT_CMPL_LINK_MTU_CHANGE_V          0x1UL
+       #define ASYNC_EVENT_CMPL_LINK_MTU_CHANGE_OPAQUE_MASK 0xfeUL
+       #define ASYNC_EVENT_CMPL_LINK_MTU_CHANGE_OPAQUE_SFT 1
+       u8      timestamp_lo;
+       __le16  timestamp_hi;
+       __le32  event_data1;
+       #define ASYNC_EVENT_CMPL_LINK_MTU_CHANGE_EVENT_DATA1_NEW_MTU_MASK 0xffffUL
+       #define ASYNC_EVENT_CMPL_LINK_MTU_CHANGE_EVENT_DATA1_NEW_MTU_SFT 0
+};
+
+/* hwrm_async_event_cmpl_link_speed_change (size:128b/16B) */
+struct hwrm_async_event_cmpl_link_speed_change {
+       __le16  type;
+       #define ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_TYPE_MASK            0x3fUL
+       #define ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_TYPE_SFT             0
+       #define ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_TYPE_HWRM_ASYNC_EVENT  0x2eUL
+       #define ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_TYPE_LAST             ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_TYPE_HWRM_ASYNC_EVENT
+       __le16  event_id;
+       #define ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_ID_LINK_SPEED_CHANGE 0x2UL
+       #define ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_ID_LAST             ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_ID_LINK_SPEED_CHANGE
+       __le32  event_data2;
+       u8      opaque_v;
+       #define ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_V          0x1UL
+       #define ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_OPAQUE_MASK 0xfeUL
+       #define ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_OPAQUE_SFT 1
+       u8      timestamp_lo;
+       __le16  timestamp_hi;
+       __le32  event_data1;
+       #define ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_DATA1_FORCE                       0x1UL
+       #define ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_DATA1_NEW_LINK_SPEED_100MBPS_MASK 0xfffeUL
+       #define ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_DATA1_NEW_LINK_SPEED_100MBPS_SFT  1
+       #define ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_DATA1_NEW_LINK_SPEED_100MBPS_100MB  (0x1UL << 1)
+       #define ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_DATA1_NEW_LINK_SPEED_100MBPS_1GB    (0xaUL << 1)
+       #define ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_DATA1_NEW_LINK_SPEED_100MBPS_2GB    (0x14UL << 1)
+       #define ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_DATA1_NEW_LINK_SPEED_100MBPS_2_5GB  (0x19UL << 1)
+       #define ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_DATA1_NEW_LINK_SPEED_100MBPS_10GB   (0x64UL << 1)
+       #define ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_DATA1_NEW_LINK_SPEED_100MBPS_20GB   (0xc8UL << 1)
+       #define ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_DATA1_NEW_LINK_SPEED_100MBPS_25GB   (0xfaUL << 1)
+       #define ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_DATA1_NEW_LINK_SPEED_100MBPS_40GB   (0x190UL << 1)
+       #define ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_DATA1_NEW_LINK_SPEED_100MBPS_50GB   (0x1f4UL << 1)
+       #define ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_DATA1_NEW_LINK_SPEED_100MBPS_100GB  (0x3e8UL << 1)
+       #define ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_DATA1_NEW_LINK_SPEED_100MBPS_LAST  ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_DATA1_NEW_LINK_SPEED_100MBPS_100GB
+       #define ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_DATA1_PORT_ID_MASK                0xffff0000UL
+       #define ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_DATA1_PORT_ID_SFT                 16
+};
+
+/* hwrm_async_event_cmpl_dcb_config_change (size:128b/16B) */
+struct hwrm_async_event_cmpl_dcb_config_change {
+       __le16  type;
+       #define ASYNC_EVENT_CMPL_DCB_CONFIG_CHANGE_TYPE_MASK            0x3fUL
+       #define ASYNC_EVENT_CMPL_DCB_CONFIG_CHANGE_TYPE_SFT             0
+       #define ASYNC_EVENT_CMPL_DCB_CONFIG_CHANGE_TYPE_HWRM_ASYNC_EVENT  0x2eUL
+       #define ASYNC_EVENT_CMPL_DCB_CONFIG_CHANGE_TYPE_LAST             ASYNC_EVENT_CMPL_DCB_CONFIG_CHANGE_TYPE_HWRM_ASYNC_EVENT
+       __le16  event_id;
+       #define ASYNC_EVENT_CMPL_DCB_CONFIG_CHANGE_EVENT_ID_DCB_CONFIG_CHANGE 0x3UL
+       #define ASYNC_EVENT_CMPL_DCB_CONFIG_CHANGE_EVENT_ID_LAST             ASYNC_EVENT_CMPL_DCB_CONFIG_CHANGE_EVENT_ID_DCB_CONFIG_CHANGE
+       __le32  event_data2;
+       #define ASYNC_EVENT_CMPL_DCB_CONFIG_CHANGE_EVENT_DATA2_ETS     0x1UL
+       #define ASYNC_EVENT_CMPL_DCB_CONFIG_CHANGE_EVENT_DATA2_PFC     0x2UL
+       #define ASYNC_EVENT_CMPL_DCB_CONFIG_CHANGE_EVENT_DATA2_APP     0x4UL
+       u8      opaque_v;
+       #define ASYNC_EVENT_CMPL_DCB_CONFIG_CHANGE_V          0x1UL
+       #define ASYNC_EVENT_CMPL_DCB_CONFIG_CHANGE_OPAQUE_MASK 0xfeUL
+       #define ASYNC_EVENT_CMPL_DCB_CONFIG_CHANGE_OPAQUE_SFT 1
+       u8      timestamp_lo;
+       __le16  timestamp_hi;
+       __le32  event_data1;
+       #define ASYNC_EVENT_CMPL_DCB_CONFIG_CHANGE_EVENT_DATA1_PORT_ID_MASK                0xffffUL
+       #define ASYNC_EVENT_CMPL_DCB_CONFIG_CHANGE_EVENT_DATA1_PORT_ID_SFT                 0
+       #define ASYNC_EVENT_CMPL_DCB_CONFIG_CHANGE_EVENT_DATA1_RECOMMEND_ROCE_PRIORITY_MASK 0xff0000UL
+       #define ASYNC_EVENT_CMPL_DCB_CONFIG_CHANGE_EVENT_DATA1_RECOMMEND_ROCE_PRIORITY_SFT 16
+       #define ASYNC_EVENT_CMPL_DCB_CONFIG_CHANGE_EVENT_DATA1_RECOMMEND_ROCE_PRIORITY_NONE  (0xffUL << 16)
+       #define ASYNC_EVENT_CMPL_DCB_CONFIG_CHANGE_EVENT_DATA1_RECOMMEND_ROCE_PRIORITY_LAST ASYNC_EVENT_CMPL_DCB_CONFIG_CHANGE_EVENT_DATA1_RECOMMEND_ROCE_PRIORITY_NONE
+       #define ASYNC_EVENT_CMPL_DCB_CONFIG_CHANGE_EVENT_DATA1_RECOMMEND_L2_PRIORITY_MASK  0xff000000UL
+       #define ASYNC_EVENT_CMPL_DCB_CONFIG_CHANGE_EVENT_DATA1_RECOMMEND_L2_PRIORITY_SFT   24
+       #define ASYNC_EVENT_CMPL_DCB_CONFIG_CHANGE_EVENT_DATA1_RECOMMEND_L2_PRIORITY_NONE    (0xffUL << 24)
+       #define ASYNC_EVENT_CMPL_DCB_CONFIG_CHANGE_EVENT_DATA1_RECOMMEND_L2_PRIORITY_LAST   ASYNC_EVENT_CMPL_DCB_CONFIG_CHANGE_EVENT_DATA1_RECOMMEND_L2_PRIORITY_NONE
+};
+
+/* hwrm_async_event_cmpl_port_conn_not_allowed (size:128b/16B) */
+struct hwrm_async_event_cmpl_port_conn_not_allowed {
+       __le16  type;
+       #define ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_TYPE_MASK            0x3fUL
+       #define ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_TYPE_SFT             0
+       #define ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_TYPE_HWRM_ASYNC_EVENT  0x2eUL
+       #define ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_TYPE_LAST             ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_TYPE_HWRM_ASYNC_EVENT
+       __le16  event_id;
+       #define ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_EVENT_ID_PORT_CONN_NOT_ALLOWED 0x4UL
+       #define ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_EVENT_ID_LAST                 ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_EVENT_ID_PORT_CONN_NOT_ALLOWED
+       __le32  event_data2;
+       u8      opaque_v;
+       #define ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_V          0x1UL
+       #define ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_OPAQUE_MASK 0xfeUL
+       #define ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_OPAQUE_SFT 1
+       u8      timestamp_lo;
+       __le16  timestamp_hi;
+       __le32  event_data1;
+       #define ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_EVENT_DATA1_PORT_ID_MASK                 0xffffUL
+       #define ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_EVENT_DATA1_PORT_ID_SFT                  0
+       #define ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_EVENT_DATA1_ENFORCEMENT_POLICY_MASK      0xff0000UL
+       #define ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_EVENT_DATA1_ENFORCEMENT_POLICY_SFT       16
+       #define ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_EVENT_DATA1_ENFORCEMENT_POLICY_NONE        (0x0UL << 16)
+       #define ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_EVENT_DATA1_ENFORCEMENT_POLICY_DISABLETX   (0x1UL << 16)
+       #define ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_EVENT_DATA1_ENFORCEMENT_POLICY_WARNINGMSG  (0x2UL << 16)
+       #define ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_EVENT_DATA1_ENFORCEMENT_POLICY_PWRDOWN     (0x3UL << 16)
+       #define ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_EVENT_DATA1_ENFORCEMENT_POLICY_LAST       ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_EVENT_DATA1_ENFORCEMENT_POLICY_PWRDOWN
+};
+
+/* hwrm_async_event_cmpl_link_speed_cfg_not_allowed (size:128b/16B) */
+struct hwrm_async_event_cmpl_link_speed_cfg_not_allowed {
+       __le16  type;
+       #define ASYNC_EVENT_CMPL_LINK_SPEED_CFG_NOT_ALLOWED_TYPE_MASK            0x3fUL
+       #define ASYNC_EVENT_CMPL_LINK_SPEED_CFG_NOT_ALLOWED_TYPE_SFT             0
+       #define ASYNC_EVENT_CMPL_LINK_SPEED_CFG_NOT_ALLOWED_TYPE_HWRM_ASYNC_EVENT  0x2eUL
+       #define ASYNC_EVENT_CMPL_LINK_SPEED_CFG_NOT_ALLOWED_TYPE_LAST             ASYNC_EVENT_CMPL_LINK_SPEED_CFG_NOT_ALLOWED_TYPE_HWRM_ASYNC_EVENT
+       __le16  event_id;
+       #define ASYNC_EVENT_CMPL_LINK_SPEED_CFG_NOT_ALLOWED_EVENT_ID_LINK_SPEED_CFG_NOT_ALLOWED 0x5UL
+       #define ASYNC_EVENT_CMPL_LINK_SPEED_CFG_NOT_ALLOWED_EVENT_ID_LAST                      ASYNC_EVENT_CMPL_LINK_SPEED_CFG_NOT_ALLOWED_EVENT_ID_LINK_SPEED_CFG_NOT_ALLOWED
+       __le32  event_data2;
+       u8      opaque_v;
+       #define ASYNC_EVENT_CMPL_LINK_SPEED_CFG_NOT_ALLOWED_V          0x1UL
+       #define ASYNC_EVENT_CMPL_LINK_SPEED_CFG_NOT_ALLOWED_OPAQUE_MASK 0xfeUL
+       #define ASYNC_EVENT_CMPL_LINK_SPEED_CFG_NOT_ALLOWED_OPAQUE_SFT 1
+       u8      timestamp_lo;
+       __le16  timestamp_hi;
+       __le32  event_data1;
+       #define ASYNC_EVENT_CMPL_LINK_SPEED_CFG_NOT_ALLOWED_EVENT_DATA1_PORT_ID_MASK 0xffffUL
+       #define ASYNC_EVENT_CMPL_LINK_SPEED_CFG_NOT_ALLOWED_EVENT_DATA1_PORT_ID_SFT 0
+};
+
+/* hwrm_async_event_cmpl_link_speed_cfg_change (size:128b/16B) */
+struct hwrm_async_event_cmpl_link_speed_cfg_change {
+       __le16  type;
+       #define ASYNC_EVENT_CMPL_LINK_SPEED_CFG_CHANGE_TYPE_MASK            0x3fUL
+       #define ASYNC_EVENT_CMPL_LINK_SPEED_CFG_CHANGE_TYPE_SFT             0
+       #define ASYNC_EVENT_CMPL_LINK_SPEED_CFG_CHANGE_TYPE_HWRM_ASYNC_EVENT  0x2eUL
+       #define ASYNC_EVENT_CMPL_LINK_SPEED_CFG_CHANGE_TYPE_LAST             ASYNC_EVENT_CMPL_LINK_SPEED_CFG_CHANGE_TYPE_HWRM_ASYNC_EVENT
+       __le16  event_id;
+       #define ASYNC_EVENT_CMPL_LINK_SPEED_CFG_CHANGE_EVENT_ID_LINK_SPEED_CFG_CHANGE 0x6UL
+       #define ASYNC_EVENT_CMPL_LINK_SPEED_CFG_CHANGE_EVENT_ID_LAST                 ASYNC_EVENT_CMPL_LINK_SPEED_CFG_CHANGE_EVENT_ID_LINK_SPEED_CFG_CHANGE
+       __le32  event_data2;
+       u8      opaque_v;
+       #define ASYNC_EVENT_CMPL_LINK_SPEED_CFG_CHANGE_V          0x1UL
+       #define ASYNC_EVENT_CMPL_LINK_SPEED_CFG_CHANGE_OPAQUE_MASK 0xfeUL
+       #define ASYNC_EVENT_CMPL_LINK_SPEED_CFG_CHANGE_OPAQUE_SFT 1
+       u8      timestamp_lo;
+       __le16  timestamp_hi;
+       __le32  event_data1;
+       #define ASYNC_EVENT_CMPL_LINK_SPEED_CFG_CHANGE_EVENT_DATA1_PORT_ID_MASK                     0xffffUL
+       #define ASYNC_EVENT_CMPL_LINK_SPEED_CFG_CHANGE_EVENT_DATA1_PORT_ID_SFT                      0
+       #define ASYNC_EVENT_CMPL_LINK_SPEED_CFG_CHANGE_EVENT_DATA1_SUPPORTED_LINK_SPEEDS_CHANGE     0x10000UL
+       #define ASYNC_EVENT_CMPL_LINK_SPEED_CFG_CHANGE_EVENT_DATA1_ILLEGAL_LINK_SPEED_CFG           0x20000UL
+};
+
+/* hwrm_async_event_cmpl_port_phy_cfg_change (size:128b/16B) */
+struct hwrm_async_event_cmpl_port_phy_cfg_change {
+       __le16  type;
+       #define ASYNC_EVENT_CMPL_PORT_PHY_CFG_CHANGE_TYPE_MASK            0x3fUL
+       #define ASYNC_EVENT_CMPL_PORT_PHY_CFG_CHANGE_TYPE_SFT             0
+       #define ASYNC_EVENT_CMPL_PORT_PHY_CFG_CHANGE_TYPE_HWRM_ASYNC_EVENT  0x2eUL
+       #define ASYNC_EVENT_CMPL_PORT_PHY_CFG_CHANGE_TYPE_LAST             ASYNC_EVENT_CMPL_PORT_PHY_CFG_CHANGE_TYPE_HWRM_ASYNC_EVENT
+       __le16  event_id;
+       #define ASYNC_EVENT_CMPL_PORT_PHY_CFG_CHANGE_EVENT_ID_PORT_PHY_CFG_CHANGE 0x7UL
+       #define ASYNC_EVENT_CMPL_PORT_PHY_CFG_CHANGE_EVENT_ID_LAST               ASYNC_EVENT_CMPL_PORT_PHY_CFG_CHANGE_EVENT_ID_PORT_PHY_CFG_CHANGE
+       __le32  event_data2;
+       u8      opaque_v;
+       #define ASYNC_EVENT_CMPL_PORT_PHY_CFG_CHANGE_V          0x1UL
+       #define ASYNC_EVENT_CMPL_PORT_PHY_CFG_CHANGE_OPAQUE_MASK 0xfeUL
+       #define ASYNC_EVENT_CMPL_PORT_PHY_CFG_CHANGE_OPAQUE_SFT 1
+       u8      timestamp_lo;
+       __le16  timestamp_hi;
+       __le32  event_data1;
+       #define ASYNC_EVENT_CMPL_PORT_PHY_CFG_CHANGE_EVENT_DATA1_PORT_ID_MASK         0xffffUL
+       #define ASYNC_EVENT_CMPL_PORT_PHY_CFG_CHANGE_EVENT_DATA1_PORT_ID_SFT          0
+       #define ASYNC_EVENT_CMPL_PORT_PHY_CFG_CHANGE_EVENT_DATA1_FEC_CFG_CHANGE       0x10000UL
+       #define ASYNC_EVENT_CMPL_PORT_PHY_CFG_CHANGE_EVENT_DATA1_EEE_CFG_CHANGE       0x20000UL
+       #define ASYNC_EVENT_CMPL_PORT_PHY_CFG_CHANGE_EVENT_DATA1_PAUSE_CFG_CHANGE     0x40000UL
+};
+
+/* hwrm_async_event_cmpl_reset_notify (size:128b/16B) */
+struct hwrm_async_event_cmpl_reset_notify {
+       __le16  type;
+       #define ASYNC_EVENT_CMPL_RESET_NOTIFY_TYPE_MASK            0x3fUL
+       #define ASYNC_EVENT_CMPL_RESET_NOTIFY_TYPE_SFT             0
+       #define ASYNC_EVENT_CMPL_RESET_NOTIFY_TYPE_HWRM_ASYNC_EVENT  0x2eUL
+       #define ASYNC_EVENT_CMPL_RESET_NOTIFY_TYPE_LAST             ASYNC_EVENT_CMPL_RESET_NOTIFY_TYPE_HWRM_ASYNC_EVENT
+       __le16  event_id;
+       #define ASYNC_EVENT_CMPL_RESET_NOTIFY_EVENT_ID_RESET_NOTIFY 0x8UL
+       #define ASYNC_EVENT_CMPL_RESET_NOTIFY_EVENT_ID_LAST        ASYNC_EVENT_CMPL_RESET_NOTIFY_EVENT_ID_RESET_NOTIFY
+       __le32  event_data2;
+       u8      opaque_v;
+       #define ASYNC_EVENT_CMPL_RESET_NOTIFY_V          0x1UL
+       #define ASYNC_EVENT_CMPL_RESET_NOTIFY_OPAQUE_MASK 0xfeUL
+       #define ASYNC_EVENT_CMPL_RESET_NOTIFY_OPAQUE_SFT 1
+       u8      timestamp_lo;
+       __le16  timestamp_hi;
+       __le32  event_data1;
+       #define ASYNC_EVENT_CMPL_RESET_NOTIFY_EVENT_DATA1_DRIVER_ACTION_MASK                  0xffUL
+       #define ASYNC_EVENT_CMPL_RESET_NOTIFY_EVENT_DATA1_DRIVER_ACTION_SFT                   0
+       #define ASYNC_EVENT_CMPL_RESET_NOTIFY_EVENT_DATA1_DRIVER_ACTION_DRIVER_STOP_TX_QUEUE    0x1UL
+       #define ASYNC_EVENT_CMPL_RESET_NOTIFY_EVENT_DATA1_DRIVER_ACTION_DRIVER_IFDOWN           0x2UL
+       #define ASYNC_EVENT_CMPL_RESET_NOTIFY_EVENT_DATA1_DRIVER_ACTION_LAST                   ASYNC_EVENT_CMPL_RESET_NOTIFY_EVENT_DATA1_DRIVER_ACTION_DRIVER_IFDOWN
+       #define ASYNC_EVENT_CMPL_RESET_NOTIFY_EVENT_DATA1_REASON_CODE_MASK                    0xff00UL
+       #define ASYNC_EVENT_CMPL_RESET_NOTIFY_EVENT_DATA1_REASON_CODE_SFT                     8
+       #define ASYNC_EVENT_CMPL_RESET_NOTIFY_EVENT_DATA1_REASON_CODE_MANAGEMENT_RESET_REQUEST  (0x1UL << 8)
+       #define ASYNC_EVENT_CMPL_RESET_NOTIFY_EVENT_DATA1_REASON_CODE_FW_EXCEPTION_FATAL        (0x2UL << 8)
+       #define ASYNC_EVENT_CMPL_RESET_NOTIFY_EVENT_DATA1_REASON_CODE_FW_EXCEPTION_NON_FATAL    (0x3UL << 8)
+       #define ASYNC_EVENT_CMPL_RESET_NOTIFY_EVENT_DATA1_REASON_CODE_LAST                     ASYNC_EVENT_CMPL_RESET_NOTIFY_EVENT_DATA1_REASON_CODE_FW_EXCEPTION_NON_FATAL
+       #define ASYNC_EVENT_CMPL_RESET_NOTIFY_EVENT_DATA1_DELAY_IN_100MS_TICKS_MASK           0xffff0000UL
+       #define ASYNC_EVENT_CMPL_RESET_NOTIFY_EVENT_DATA1_DELAY_IN_100MS_TICKS_SFT            16
+};
+
+/* hwrm_async_event_cmpl_func_drvr_unload (size:128b/16B) */
+struct hwrm_async_event_cmpl_func_drvr_unload {
+       __le16  type;
+       #define ASYNC_EVENT_CMPL_FUNC_DRVR_UNLOAD_TYPE_MASK            0x3fUL
+       #define ASYNC_EVENT_CMPL_FUNC_DRVR_UNLOAD_TYPE_SFT             0
+       #define ASYNC_EVENT_CMPL_FUNC_DRVR_UNLOAD_TYPE_HWRM_ASYNC_EVENT  0x2eUL
+       #define ASYNC_EVENT_CMPL_FUNC_DRVR_UNLOAD_TYPE_LAST             ASYNC_EVENT_CMPL_FUNC_DRVR_UNLOAD_TYPE_HWRM_ASYNC_EVENT
+       __le16  event_id;
+       #define ASYNC_EVENT_CMPL_FUNC_DRVR_UNLOAD_EVENT_ID_FUNC_DRVR_UNLOAD 0x10UL
+       #define ASYNC_EVENT_CMPL_FUNC_DRVR_UNLOAD_EVENT_ID_LAST            ASYNC_EVENT_CMPL_FUNC_DRVR_UNLOAD_EVENT_ID_FUNC_DRVR_UNLOAD
+       __le32  event_data2;
+       u8      opaque_v;
+       #define ASYNC_EVENT_CMPL_FUNC_DRVR_UNLOAD_V          0x1UL
+       #define ASYNC_EVENT_CMPL_FUNC_DRVR_UNLOAD_OPAQUE_MASK 0xfeUL
+       #define ASYNC_EVENT_CMPL_FUNC_DRVR_UNLOAD_OPAQUE_SFT 1
+       u8      timestamp_lo;
+       __le16  timestamp_hi;
+       __le32  event_data1;
+       #define ASYNC_EVENT_CMPL_FUNC_DRVR_UNLOAD_EVENT_DATA1_FUNC_ID_MASK 0xffffUL
+       #define ASYNC_EVENT_CMPL_FUNC_DRVR_UNLOAD_EVENT_DATA1_FUNC_ID_SFT 0
+};
+
+/* hwrm_async_event_cmpl_func_drvr_load (size:128b/16B) */
+struct hwrm_async_event_cmpl_func_drvr_load {
+       __le16  type;
+       #define ASYNC_EVENT_CMPL_FUNC_DRVR_LOAD_TYPE_MASK            0x3fUL
+       #define ASYNC_EVENT_CMPL_FUNC_DRVR_LOAD_TYPE_SFT             0
+       #define ASYNC_EVENT_CMPL_FUNC_DRVR_LOAD_TYPE_HWRM_ASYNC_EVENT  0x2eUL
+       #define ASYNC_EVENT_CMPL_FUNC_DRVR_LOAD_TYPE_LAST             ASYNC_EVENT_CMPL_FUNC_DRVR_LOAD_TYPE_HWRM_ASYNC_EVENT
+       __le16  event_id;
+       #define ASYNC_EVENT_CMPL_FUNC_DRVR_LOAD_EVENT_ID_FUNC_DRVR_LOAD 0x11UL
+       #define ASYNC_EVENT_CMPL_FUNC_DRVR_LOAD_EVENT_ID_LAST          ASYNC_EVENT_CMPL_FUNC_DRVR_LOAD_EVENT_ID_FUNC_DRVR_LOAD
+       __le32  event_data2;
+       u8      opaque_v;
+       #define ASYNC_EVENT_CMPL_FUNC_DRVR_LOAD_V          0x1UL
+       #define ASYNC_EVENT_CMPL_FUNC_DRVR_LOAD_OPAQUE_MASK 0xfeUL
+       #define ASYNC_EVENT_CMPL_FUNC_DRVR_LOAD_OPAQUE_SFT 1
+       u8      timestamp_lo;
+       __le16  timestamp_hi;
+       __le32  event_data1;
+       #define ASYNC_EVENT_CMPL_FUNC_DRVR_LOAD_EVENT_DATA1_FUNC_ID_MASK 0xffffUL
+       #define ASYNC_EVENT_CMPL_FUNC_DRVR_LOAD_EVENT_DATA1_FUNC_ID_SFT 0
+};
+
+/* hwrm_async_event_cmpl_func_flr_proc_cmplt (size:128b/16B) */
+struct hwrm_async_event_cmpl_func_flr_proc_cmplt {
+       __le16  type;
+       #define ASYNC_EVENT_CMPL_FUNC_FLR_PROC_CMPLT_TYPE_MASK            0x3fUL
+       #define ASYNC_EVENT_CMPL_FUNC_FLR_PROC_CMPLT_TYPE_SFT             0
+       #define ASYNC_EVENT_CMPL_FUNC_FLR_PROC_CMPLT_TYPE_HWRM_ASYNC_EVENT  0x2eUL
+       #define ASYNC_EVENT_CMPL_FUNC_FLR_PROC_CMPLT_TYPE_LAST             ASYNC_EVENT_CMPL_FUNC_FLR_PROC_CMPLT_TYPE_HWRM_ASYNC_EVENT
+       __le16  event_id;
+       #define ASYNC_EVENT_CMPL_FUNC_FLR_PROC_CMPLT_EVENT_ID_FUNC_FLR_PROC_CMPLT 0x12UL
+       #define ASYNC_EVENT_CMPL_FUNC_FLR_PROC_CMPLT_EVENT_ID_LAST               ASYNC_EVENT_CMPL_FUNC_FLR_PROC_CMPLT_EVENT_ID_FUNC_FLR_PROC_CMPLT
+       __le32  event_data2;
+       u8      opaque_v;
+       #define ASYNC_EVENT_CMPL_FUNC_FLR_PROC_CMPLT_V          0x1UL
+       #define ASYNC_EVENT_CMPL_FUNC_FLR_PROC_CMPLT_OPAQUE_MASK 0xfeUL
+       #define ASYNC_EVENT_CMPL_FUNC_FLR_PROC_CMPLT_OPAQUE_SFT 1
+       u8      timestamp_lo;
+       __le16  timestamp_hi;
+       __le32  event_data1;
+       #define ASYNC_EVENT_CMPL_FUNC_FLR_PROC_CMPLT_EVENT_DATA1_FUNC_ID_MASK 0xffffUL
+       #define ASYNC_EVENT_CMPL_FUNC_FLR_PROC_CMPLT_EVENT_DATA1_FUNC_ID_SFT 0
+};
+
+/* hwrm_async_event_cmpl_pf_drvr_unload (size:128b/16B) */
+struct hwrm_async_event_cmpl_pf_drvr_unload {
+       __le16  type;
+       #define ASYNC_EVENT_CMPL_PF_DRVR_UNLOAD_TYPE_MASK            0x3fUL
+       #define ASYNC_EVENT_CMPL_PF_DRVR_UNLOAD_TYPE_SFT             0
+       #define ASYNC_EVENT_CMPL_PF_DRVR_UNLOAD_TYPE_HWRM_ASYNC_EVENT  0x2eUL
+       #define ASYNC_EVENT_CMPL_PF_DRVR_UNLOAD_TYPE_LAST             ASYNC_EVENT_CMPL_PF_DRVR_UNLOAD_TYPE_HWRM_ASYNC_EVENT
+       __le16  event_id;
+       #define ASYNC_EVENT_CMPL_PF_DRVR_UNLOAD_EVENT_ID_PF_DRVR_UNLOAD 0x20UL
+       #define ASYNC_EVENT_CMPL_PF_DRVR_UNLOAD_EVENT_ID_LAST          ASYNC_EVENT_CMPL_PF_DRVR_UNLOAD_EVENT_ID_PF_DRVR_UNLOAD
+       __le32  event_data2;
+       u8      opaque_v;
+       #define ASYNC_EVENT_CMPL_PF_DRVR_UNLOAD_V          0x1UL
+       #define ASYNC_EVENT_CMPL_PF_DRVR_UNLOAD_OPAQUE_MASK 0xfeUL
+       #define ASYNC_EVENT_CMPL_PF_DRVR_UNLOAD_OPAQUE_SFT 1
+       u8      timestamp_lo;
+       __le16  timestamp_hi;
+       __le32  event_data1;
+       #define ASYNC_EVENT_CMPL_PF_DRVR_UNLOAD_EVENT_DATA1_FUNC_ID_MASK 0xffffUL
+       #define ASYNC_EVENT_CMPL_PF_DRVR_UNLOAD_EVENT_DATA1_FUNC_ID_SFT 0
+       #define ASYNC_EVENT_CMPL_PF_DRVR_UNLOAD_EVENT_DATA1_PORT_MASK   0x70000UL
+       #define ASYNC_EVENT_CMPL_PF_DRVR_UNLOAD_EVENT_DATA1_PORT_SFT    16
+};
+
+/* hwrm_async_event_cmpl_pf_drvr_load (size:128b/16B) */
+struct hwrm_async_event_cmpl_pf_drvr_load {
+       __le16  type;
+       #define ASYNC_EVENT_CMPL_PF_DRVR_LOAD_TYPE_MASK            0x3fUL
+       #define ASYNC_EVENT_CMPL_PF_DRVR_LOAD_TYPE_SFT             0
+       #define ASYNC_EVENT_CMPL_PF_DRVR_LOAD_TYPE_HWRM_ASYNC_EVENT  0x2eUL
+       #define ASYNC_EVENT_CMPL_PF_DRVR_LOAD_TYPE_LAST             ASYNC_EVENT_CMPL_PF_DRVR_LOAD_TYPE_HWRM_ASYNC_EVENT
+       __le16  event_id;
+       #define ASYNC_EVENT_CMPL_PF_DRVR_LOAD_EVENT_ID_PF_DRVR_LOAD 0x21UL
+       #define ASYNC_EVENT_CMPL_PF_DRVR_LOAD_EVENT_ID_LAST        ASYNC_EVENT_CMPL_PF_DRVR_LOAD_EVENT_ID_PF_DRVR_LOAD
+       __le32  event_data2;
+       u8      opaque_v;
+       #define ASYNC_EVENT_CMPL_PF_DRVR_LOAD_V          0x1UL
+       #define ASYNC_EVENT_CMPL_PF_DRVR_LOAD_OPAQUE_MASK 0xfeUL
+       #define ASYNC_EVENT_CMPL_PF_DRVR_LOAD_OPAQUE_SFT 1
+       u8      timestamp_lo;
+       __le16  timestamp_hi;
+       __le32  event_data1;
+       #define ASYNC_EVENT_CMPL_PF_DRVR_LOAD_EVENT_DATA1_FUNC_ID_MASK 0xffffUL
+       #define ASYNC_EVENT_CMPL_PF_DRVR_LOAD_EVENT_DATA1_FUNC_ID_SFT 0
+       #define ASYNC_EVENT_CMPL_PF_DRVR_LOAD_EVENT_DATA1_PORT_MASK   0x70000UL
+       #define ASYNC_EVENT_CMPL_PF_DRVR_LOAD_EVENT_DATA1_PORT_SFT    16
+};
+
+/* hwrm_async_event_cmpl_vf_flr (size:128b/16B) */
+struct hwrm_async_event_cmpl_vf_flr {
+       __le16  type;
+       #define ASYNC_EVENT_CMPL_VF_FLR_TYPE_MASK            0x3fUL
+       #define ASYNC_EVENT_CMPL_VF_FLR_TYPE_SFT             0
+       #define ASYNC_EVENT_CMPL_VF_FLR_TYPE_HWRM_ASYNC_EVENT  0x2eUL
+       #define ASYNC_EVENT_CMPL_VF_FLR_TYPE_LAST             ASYNC_EVENT_CMPL_VF_FLR_TYPE_HWRM_ASYNC_EVENT
+       __le16  event_id;
+       #define ASYNC_EVENT_CMPL_VF_FLR_EVENT_ID_VF_FLR 0x30UL
+       #define ASYNC_EVENT_CMPL_VF_FLR_EVENT_ID_LAST  ASYNC_EVENT_CMPL_VF_FLR_EVENT_ID_VF_FLR
+       __le32  event_data2;
+       u8      opaque_v;
+       #define ASYNC_EVENT_CMPL_VF_FLR_V          0x1UL
+       #define ASYNC_EVENT_CMPL_VF_FLR_OPAQUE_MASK 0xfeUL
+       #define ASYNC_EVENT_CMPL_VF_FLR_OPAQUE_SFT 1
+       u8      timestamp_lo;
+       __le16  timestamp_hi;
+       __le32  event_data1;
+       #define ASYNC_EVENT_CMPL_VF_FLR_EVENT_DATA1_VF_ID_MASK 0xffffUL
+       #define ASYNC_EVENT_CMPL_VF_FLR_EVENT_DATA1_VF_ID_SFT 0
+       #define ASYNC_EVENT_CMPL_VF_FLR_EVENT_DATA1_PF_ID_MASK 0xff0000UL
+       #define ASYNC_EVENT_CMPL_VF_FLR_EVENT_DATA1_PF_ID_SFT 16
+};
+
+/* hwrm_async_event_cmpl_vf_mac_addr_change (size:128b/16B) */
+struct hwrm_async_event_cmpl_vf_mac_addr_change {
+       __le16  type;
+       #define ASYNC_EVENT_CMPL_VF_MAC_ADDR_CHANGE_TYPE_MASK            0x3fUL
+       #define ASYNC_EVENT_CMPL_VF_MAC_ADDR_CHANGE_TYPE_SFT             0
+       #define ASYNC_EVENT_CMPL_VF_MAC_ADDR_CHANGE_TYPE_HWRM_ASYNC_EVENT  0x2eUL
+       #define ASYNC_EVENT_CMPL_VF_MAC_ADDR_CHANGE_TYPE_LAST             ASYNC_EVENT_CMPL_VF_MAC_ADDR_CHANGE_TYPE_HWRM_ASYNC_EVENT
+       __le16  event_id;
+       #define ASYNC_EVENT_CMPL_VF_MAC_ADDR_CHANGE_EVENT_ID_VF_MAC_ADDR_CHANGE 0x31UL
+       #define ASYNC_EVENT_CMPL_VF_MAC_ADDR_CHANGE_EVENT_ID_LAST              ASYNC_EVENT_CMPL_VF_MAC_ADDR_CHANGE_EVENT_ID_VF_MAC_ADDR_CHANGE
+       __le32  event_data2;
+       u8      opaque_v;
+       #define ASYNC_EVENT_CMPL_VF_MAC_ADDR_CHANGE_V          0x1UL
+       #define ASYNC_EVENT_CMPL_VF_MAC_ADDR_CHANGE_OPAQUE_MASK 0xfeUL
+       #define ASYNC_EVENT_CMPL_VF_MAC_ADDR_CHANGE_OPAQUE_SFT 1
+       u8      timestamp_lo;
+       __le16  timestamp_hi;
+       __le32  event_data1;
+       #define ASYNC_EVENT_CMPL_VF_MAC_ADDR_CHANGE_EVENT_DATA1_VF_ID_MASK 0xffffUL
+       #define ASYNC_EVENT_CMPL_VF_MAC_ADDR_CHANGE_EVENT_DATA1_VF_ID_SFT 0
+};
+
+/* hwrm_async_event_cmpl_pf_vf_comm_status_change (size:128b/16B) */
+struct hwrm_async_event_cmpl_pf_vf_comm_status_change {
+       __le16  type;
+       #define ASYNC_EVENT_CMPL_PF_VF_COMM_STATUS_CHANGE_TYPE_MASK            0x3fUL
+       #define ASYNC_EVENT_CMPL_PF_VF_COMM_STATUS_CHANGE_TYPE_SFT             0
+       #define ASYNC_EVENT_CMPL_PF_VF_COMM_STATUS_CHANGE_TYPE_HWRM_ASYNC_EVENT  0x2eUL
+       #define ASYNC_EVENT_CMPL_PF_VF_COMM_STATUS_CHANGE_TYPE_LAST             ASYNC_EVENT_CMPL_PF_VF_COMM_STATUS_CHANGE_TYPE_HWRM_ASYNC_EVENT
+       __le16  event_id;
+       #define ASYNC_EVENT_CMPL_PF_VF_COMM_STATUS_CHANGE_EVENT_ID_PF_VF_COMM_STATUS_CHANGE 0x32UL
+       #define ASYNC_EVENT_CMPL_PF_VF_COMM_STATUS_CHANGE_EVENT_ID_LAST                    ASYNC_EVENT_CMPL_PF_VF_COMM_STATUS_CHANGE_EVENT_ID_PF_VF_COMM_STATUS_CHANGE
+       __le32  event_data2;
+       u8      opaque_v;
+       #define ASYNC_EVENT_CMPL_PF_VF_COMM_STATUS_CHANGE_V          0x1UL
+       #define ASYNC_EVENT_CMPL_PF_VF_COMM_STATUS_CHANGE_OPAQUE_MASK 0xfeUL
+       #define ASYNC_EVENT_CMPL_PF_VF_COMM_STATUS_CHANGE_OPAQUE_SFT 1
+       u8      timestamp_lo;
+       __le16  timestamp_hi;
+       __le32  event_data1;
+       #define ASYNC_EVENT_CMPL_PF_VF_COMM_STATUS_CHANGE_EVENT_DATA1_COMM_ESTABLISHED     0x1UL
+};
+
+/* hwrm_async_event_cmpl_vf_cfg_change (size:128b/16B) */
+struct hwrm_async_event_cmpl_vf_cfg_change {
+       __le16  type;
+       #define ASYNC_EVENT_CMPL_VF_CFG_CHANGE_TYPE_MASK            0x3fUL
+       #define ASYNC_EVENT_CMPL_VF_CFG_CHANGE_TYPE_SFT             0
+       #define ASYNC_EVENT_CMPL_VF_CFG_CHANGE_TYPE_HWRM_ASYNC_EVENT  0x2eUL
+       #define ASYNC_EVENT_CMPL_VF_CFG_CHANGE_TYPE_LAST             ASYNC_EVENT_CMPL_VF_CFG_CHANGE_TYPE_HWRM_ASYNC_EVENT
+       __le16  event_id;
+       #define ASYNC_EVENT_CMPL_VF_CFG_CHANGE_EVENT_ID_VF_CFG_CHANGE 0x33UL
+       #define ASYNC_EVENT_CMPL_VF_CFG_CHANGE_EVENT_ID_LAST         ASYNC_EVENT_CMPL_VF_CFG_CHANGE_EVENT_ID_VF_CFG_CHANGE
+       __le32  event_data2;
+       u8      opaque_v;
+       #define ASYNC_EVENT_CMPL_VF_CFG_CHANGE_V          0x1UL
+       #define ASYNC_EVENT_CMPL_VF_CFG_CHANGE_OPAQUE_MASK 0xfeUL
+       #define ASYNC_EVENT_CMPL_VF_CFG_CHANGE_OPAQUE_SFT 1
+       u8      timestamp_lo;
+       __le16  timestamp_hi;
+       __le32  event_data1;
+       #define ASYNC_EVENT_CMPL_VF_CFG_CHANGE_EVENT_DATA1_MTU_CHANGE                0x1UL
+       #define ASYNC_EVENT_CMPL_VF_CFG_CHANGE_EVENT_DATA1_MRU_CHANGE                0x2UL
+       #define ASYNC_EVENT_CMPL_VF_CFG_CHANGE_EVENT_DATA1_DFLT_MAC_ADDR_CHANGE      0x4UL
+       #define ASYNC_EVENT_CMPL_VF_CFG_CHANGE_EVENT_DATA1_DFLT_VLAN_CHANGE          0x8UL
+       #define ASYNC_EVENT_CMPL_VF_CFG_CHANGE_EVENT_DATA1_TRUSTED_VF_CFG_CHANGE     0x10UL
+};
+
+/* hwrm_async_event_cmpl_llfc_pfc_change (size:128b/16B) */
+struct hwrm_async_event_cmpl_llfc_pfc_change {
+       __le16  type;
+       #define ASYNC_EVENT_CMPL_LLFC_PFC_CHANGE_TYPE_MASK            0x3fUL
+       #define ASYNC_EVENT_CMPL_LLFC_PFC_CHANGE_TYPE_SFT             0
+       #define ASYNC_EVENT_CMPL_LLFC_PFC_CHANGE_TYPE_HWRM_ASYNC_EVENT  0x2eUL
+       #define ASYNC_EVENT_CMPL_LLFC_PFC_CHANGE_TYPE_LAST             ASYNC_EVENT_CMPL_LLFC_PFC_CHANGE_TYPE_HWRM_ASYNC_EVENT
+       #define ASYNC_EVENT_CMPL_LLFC_PFC_CHANGE_UNUSED1_MASK         0xffc0UL
+       #define ASYNC_EVENT_CMPL_LLFC_PFC_CHANGE_UNUSED1_SFT          6
+       __le16  event_id;
+       #define ASYNC_EVENT_CMPL_LLFC_PFC_CHANGE_EVENT_ID_LLFC_PFC_CHANGE 0x34UL
+       #define ASYNC_EVENT_CMPL_LLFC_PFC_CHANGE_EVENT_ID_LAST           ASYNC_EVENT_CMPL_LLFC_PFC_CHANGE_EVENT_ID_LLFC_PFC_CHANGE
+       __le32  event_data2;
+       u8      opaque_v;
+       #define ASYNC_EVENT_CMPL_LLFC_PFC_CHANGE_V          0x1UL
+       #define ASYNC_EVENT_CMPL_LLFC_PFC_CHANGE_OPAQUE_MASK 0xfeUL
+       #define ASYNC_EVENT_CMPL_LLFC_PFC_CHANGE_OPAQUE_SFT 1
+       u8      timestamp_lo;
+       __le16  timestamp_hi;
+       __le32  event_data1;
+       #define ASYNC_EVENT_CMPL_LLFC_PFC_CHANGE_EVENT_DATA1_LLFC_PFC_MASK 0x3UL
+       #define ASYNC_EVENT_CMPL_LLFC_PFC_CHANGE_EVENT_DATA1_LLFC_PFC_SFT 0
+       #define ASYNC_EVENT_CMPL_LLFC_PFC_CHANGE_EVENT_DATA1_LLFC_PFC_LLFC  0x1UL
+       #define ASYNC_EVENT_CMPL_LLFC_PFC_CHANGE_EVENT_DATA1_LLFC_PFC_PFC   0x2UL
+       #define ASYNC_EVENT_CMPL_LLFC_PFC_CHANGE_EVENT_DATA1_LLFC_PFC_LAST ASYNC_EVENT_CMPL_LLFC_PFC_CHANGE_EVENT_DATA1_LLFC_PFC_PFC
+       #define ASYNC_EVENT_CMPL_LLFC_PFC_CHANGE_EVENT_DATA1_PORT_MASK    0x1cUL
+       #define ASYNC_EVENT_CMPL_LLFC_PFC_CHANGE_EVENT_DATA1_PORT_SFT     2
+       #define ASYNC_EVENT_CMPL_LLFC_PFC_CHANGE_EVENT_DATA1_PORT_ID_MASK 0x1fffe0UL
+       #define ASYNC_EVENT_CMPL_LLFC_PFC_CHANGE_EVENT_DATA1_PORT_ID_SFT  5
+};
+
+/* hwrm_async_event_cmpl_default_vnic_change (size:128b/16B) */
+struct hwrm_async_event_cmpl_default_vnic_change {
+       __le16  type;
+       #define ASYNC_EVENT_CMPL_DEFAULT_VNIC_CHANGE_TYPE_MASK            0x3fUL
+       #define ASYNC_EVENT_CMPL_DEFAULT_VNIC_CHANGE_TYPE_SFT             0
+       #define ASYNC_EVENT_CMPL_DEFAULT_VNIC_CHANGE_TYPE_HWRM_ASYNC_EVENT  0x2eUL
+       #define ASYNC_EVENT_CMPL_DEFAULT_VNIC_CHANGE_TYPE_LAST             ASYNC_EVENT_CMPL_DEFAULT_VNIC_CHANGE_TYPE_HWRM_ASYNC_EVENT
+       #define ASYNC_EVENT_CMPL_DEFAULT_VNIC_CHANGE_UNUSED1_MASK         0xffc0UL
+       #define ASYNC_EVENT_CMPL_DEFAULT_VNIC_CHANGE_UNUSED1_SFT          6
+       __le16  event_id;
+       #define ASYNC_EVENT_CMPL_DEFAULT_VNIC_CHANGE_EVENT_ID_ALLOC_FREE_NOTIFICATION 0x35UL
+       #define ASYNC_EVENT_CMPL_DEFAULT_VNIC_CHANGE_EVENT_ID_LAST                   ASYNC_EVENT_CMPL_DEFAULT_VNIC_CHANGE_EVENT_ID_ALLOC_FREE_NOTIFICATION
+       __le32  event_data2;
+       u8      opaque_v;
+       #define ASYNC_EVENT_CMPL_DEFAULT_VNIC_CHANGE_V          0x1UL
+       #define ASYNC_EVENT_CMPL_DEFAULT_VNIC_CHANGE_OPAQUE_MASK 0xfeUL
+       #define ASYNC_EVENT_CMPL_DEFAULT_VNIC_CHANGE_OPAQUE_SFT 1
+       u8      timestamp_lo;
+       __le16  timestamp_hi;
+       __le32  event_data1;
+       #define ASYNC_EVENT_CMPL_DEFAULT_VNIC_CHANGE_EVENT_DATA1_DEF_VNIC_STATE_MASK          0x3UL
+       #define ASYNC_EVENT_CMPL_DEFAULT_VNIC_CHANGE_EVENT_DATA1_DEF_VNIC_STATE_SFT           0
+       #define ASYNC_EVENT_CMPL_DEFAULT_VNIC_CHANGE_EVENT_DATA1_DEF_VNIC_STATE_DEF_VNIC_ALLOC  0x1UL
+       #define ASYNC_EVENT_CMPL_DEFAULT_VNIC_CHANGE_EVENT_DATA1_DEF_VNIC_STATE_DEF_VNIC_FREE   0x2UL
+       #define ASYNC_EVENT_CMPL_DEFAULT_VNIC_CHANGE_EVENT_DATA1_DEF_VNIC_STATE_LAST           ASYNC_EVENT_CMPL_DEFAULT_VNIC_CHANGE_EVENT_DATA1_DEF_VNIC_STATE_DEF_VNIC_FREE
+       #define ASYNC_EVENT_CMPL_DEFAULT_VNIC_CHANGE_EVENT_DATA1_PF_ID_MASK                   0x3fcUL
+       #define ASYNC_EVENT_CMPL_DEFAULT_VNIC_CHANGE_EVENT_DATA1_PF_ID_SFT                    2
+       #define ASYNC_EVENT_CMPL_DEFAULT_VNIC_CHANGE_EVENT_DATA1_VF_ID_MASK                   0x3fffc00UL
+       #define ASYNC_EVENT_CMPL_DEFAULT_VNIC_CHANGE_EVENT_DATA1_VF_ID_SFT                    10
+};
+
+/* hwrm_async_event_cmpl_hw_flow_aged (size:128b/16B) */
+struct hwrm_async_event_cmpl_hw_flow_aged {
+       __le16  type;
+       #define ASYNC_EVENT_CMPL_HW_FLOW_AGED_TYPE_MASK            0x3fUL
+       #define ASYNC_EVENT_CMPL_HW_FLOW_AGED_TYPE_SFT             0
+       #define ASYNC_EVENT_CMPL_HW_FLOW_AGED_TYPE_HWRM_ASYNC_EVENT  0x2eUL
+       #define ASYNC_EVENT_CMPL_HW_FLOW_AGED_TYPE_LAST             ASYNC_EVENT_CMPL_HW_FLOW_AGED_TYPE_HWRM_ASYNC_EVENT
+       __le16  event_id;
+       #define ASYNC_EVENT_CMPL_HW_FLOW_AGED_EVENT_ID_HW_FLOW_AGED 0x36UL
+       #define ASYNC_EVENT_CMPL_HW_FLOW_AGED_EVENT_ID_LAST        ASYNC_EVENT_CMPL_HW_FLOW_AGED_EVENT_ID_HW_FLOW_AGED
+       __le32  event_data2;
+       u8      opaque_v;
+       #define ASYNC_EVENT_CMPL_HW_FLOW_AGED_V          0x1UL
+       #define ASYNC_EVENT_CMPL_HW_FLOW_AGED_OPAQUE_MASK 0xfeUL
+       #define ASYNC_EVENT_CMPL_HW_FLOW_AGED_OPAQUE_SFT 1
+       u8      timestamp_lo;
+       __le16  timestamp_hi;
+       __le32  event_data1;
+       #define ASYNC_EVENT_CMPL_HW_FLOW_AGED_EVENT_DATA1_FLOW_ID_MASK       0x7fffffffUL
+       #define ASYNC_EVENT_CMPL_HW_FLOW_AGED_EVENT_DATA1_FLOW_ID_SFT        0
+       #define ASYNC_EVENT_CMPL_HW_FLOW_AGED_EVENT_DATA1_FLOW_DIRECTION     0x80000000UL
+       #define ASYNC_EVENT_CMPL_HW_FLOW_AGED_EVENT_DATA1_FLOW_DIRECTION_RX    (0x0UL << 31)
+       #define ASYNC_EVENT_CMPL_HW_FLOW_AGED_EVENT_DATA1_FLOW_DIRECTION_TX    (0x1UL << 31)
+       #define ASYNC_EVENT_CMPL_HW_FLOW_AGED_EVENT_DATA1_FLOW_DIRECTION_LAST ASYNC_EVENT_CMPL_HW_FLOW_AGED_EVENT_DATA1_FLOW_DIRECTION_TX
+};
+
+/* hwrm_async_event_cmpl_hwrm_error (size:128b/16B) */
+struct hwrm_async_event_cmpl_hwrm_error {
+       __le16  type;
+       #define ASYNC_EVENT_CMPL_HWRM_ERROR_TYPE_MASK            0x3fUL
+       #define ASYNC_EVENT_CMPL_HWRM_ERROR_TYPE_SFT             0
+       #define ASYNC_EVENT_CMPL_HWRM_ERROR_TYPE_HWRM_ASYNC_EVENT  0x2eUL
+       #define ASYNC_EVENT_CMPL_HWRM_ERROR_TYPE_LAST             ASYNC_EVENT_CMPL_HWRM_ERROR_TYPE_HWRM_ASYNC_EVENT
+       __le16  event_id;
+       #define ASYNC_EVENT_CMPL_HWRM_ERROR_EVENT_ID_HWRM_ERROR 0xffUL
+       #define ASYNC_EVENT_CMPL_HWRM_ERROR_EVENT_ID_LAST      ASYNC_EVENT_CMPL_HWRM_ERROR_EVENT_ID_HWRM_ERROR
+       __le32  event_data2;
+       #define ASYNC_EVENT_CMPL_HWRM_ERROR_EVENT_DATA2_SEVERITY_MASK    0xffUL
+       #define ASYNC_EVENT_CMPL_HWRM_ERROR_EVENT_DATA2_SEVERITY_SFT     0
+       #define ASYNC_EVENT_CMPL_HWRM_ERROR_EVENT_DATA2_SEVERITY_WARNING   0x0UL
+       #define ASYNC_EVENT_CMPL_HWRM_ERROR_EVENT_DATA2_SEVERITY_NONFATAL  0x1UL
+       #define ASYNC_EVENT_CMPL_HWRM_ERROR_EVENT_DATA2_SEVERITY_FATAL     0x2UL
+       #define ASYNC_EVENT_CMPL_HWRM_ERROR_EVENT_DATA2_SEVERITY_LAST     ASYNC_EVENT_CMPL_HWRM_ERROR_EVENT_DATA2_SEVERITY_FATAL
+       u8      opaque_v;
+       #define ASYNC_EVENT_CMPL_HWRM_ERROR_V          0x1UL
+       #define ASYNC_EVENT_CMPL_HWRM_ERROR_OPAQUE_MASK 0xfeUL
+       #define ASYNC_EVENT_CMPL_HWRM_ERROR_OPAQUE_SFT 1
+       u8      timestamp_lo;
+       __le16  timestamp_hi;
+       __le32  event_data1;
+       #define ASYNC_EVENT_CMPL_HWRM_ERROR_EVENT_DATA1_TIMESTAMP     0x1UL
+};
+
+/* hwrm_func_reset_input (size:192b/24B) */
+struct hwrm_func_reset_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le32  enables;
+       #define FUNC_RESET_REQ_ENABLES_VF_ID_VALID     0x1UL
+       __le16  vf_id;
+       u8      func_reset_level;
+       #define FUNC_RESET_REQ_FUNC_RESET_LEVEL_RESETALL      0x0UL
+       #define FUNC_RESET_REQ_FUNC_RESET_LEVEL_RESETME       0x1UL
+       #define FUNC_RESET_REQ_FUNC_RESET_LEVEL_RESETCHILDREN 0x2UL
+       #define FUNC_RESET_REQ_FUNC_RESET_LEVEL_RESETVF       0x3UL
+       #define FUNC_RESET_REQ_FUNC_RESET_LEVEL_LAST         FUNC_RESET_REQ_FUNC_RESET_LEVEL_RESETVF
+       u8      unused_0;
+};
+
+/* hwrm_func_reset_output (size:128b/16B) */
+struct hwrm_func_reset_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_func_getfid_input (size:192b/24B) */
+struct hwrm_func_getfid_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le32  enables;
+       #define FUNC_GETFID_REQ_ENABLES_PCI_ID     0x1UL
+       __le16  pci_id;
+       u8      unused_0[2];
+};
+
+/* hwrm_func_getfid_output (size:128b/16B) */
+struct hwrm_func_getfid_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le16  fid;
+       u8      unused_0[5];
+       u8      valid;
+};
+
+/* hwrm_func_vf_alloc_input (size:192b/24B) */
+struct hwrm_func_vf_alloc_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le32  enables;
+       #define FUNC_VF_ALLOC_REQ_ENABLES_FIRST_VF_ID     0x1UL
+       __le16  first_vf_id;
+       __le16  num_vfs;
+};
+
+/* hwrm_func_vf_alloc_output (size:128b/16B) */
+struct hwrm_func_vf_alloc_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le16  first_vf_id;
+       u8      unused_0[5];
+       u8      valid;
+};
+
+/* hwrm_func_vf_free_input (size:192b/24B) */
+struct hwrm_func_vf_free_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le32  enables;
+       #define FUNC_VF_FREE_REQ_ENABLES_FIRST_VF_ID     0x1UL
+       __le16  first_vf_id;
+       __le16  num_vfs;
+};
+
+/* hwrm_func_vf_free_output (size:128b/16B) */
+struct hwrm_func_vf_free_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_func_vf_cfg_input (size:448b/56B) */
+struct hwrm_func_vf_cfg_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le32  enables;
+       #define FUNC_VF_CFG_REQ_ENABLES_MTU                  0x1UL
+       #define FUNC_VF_CFG_REQ_ENABLES_GUEST_VLAN           0x2UL
+       #define FUNC_VF_CFG_REQ_ENABLES_ASYNC_EVENT_CR       0x4UL
+       #define FUNC_VF_CFG_REQ_ENABLES_DFLT_MAC_ADDR        0x8UL
+       #define FUNC_VF_CFG_REQ_ENABLES_NUM_RSSCOS_CTXS      0x10UL
+       #define FUNC_VF_CFG_REQ_ENABLES_NUM_CMPL_RINGS       0x20UL
+       #define FUNC_VF_CFG_REQ_ENABLES_NUM_TX_RINGS         0x40UL
+       #define FUNC_VF_CFG_REQ_ENABLES_NUM_RX_RINGS         0x80UL
+       #define FUNC_VF_CFG_REQ_ENABLES_NUM_L2_CTXS          0x100UL
+       #define FUNC_VF_CFG_REQ_ENABLES_NUM_VNICS            0x200UL
+       #define FUNC_VF_CFG_REQ_ENABLES_NUM_STAT_CTXS        0x400UL
+       #define FUNC_VF_CFG_REQ_ENABLES_NUM_HW_RING_GRPS     0x800UL
+       __le16  mtu;
+       __le16  guest_vlan;
+       __le16  async_event_cr;
+       u8      dflt_mac_addr[6];
+       __le32  flags;
+       #define FUNC_VF_CFG_REQ_FLAGS_TX_ASSETS_TEST             0x1UL
+       #define FUNC_VF_CFG_REQ_FLAGS_RX_ASSETS_TEST             0x2UL
+       #define FUNC_VF_CFG_REQ_FLAGS_CMPL_ASSETS_TEST           0x4UL
+       #define FUNC_VF_CFG_REQ_FLAGS_RSSCOS_CTX_ASSETS_TEST     0x8UL
+       #define FUNC_VF_CFG_REQ_FLAGS_RING_GRP_ASSETS_TEST       0x10UL
+       #define FUNC_VF_CFG_REQ_FLAGS_STAT_CTX_ASSETS_TEST       0x20UL
+       #define FUNC_VF_CFG_REQ_FLAGS_VNIC_ASSETS_TEST           0x40UL
+       #define FUNC_VF_CFG_REQ_FLAGS_L2_CTX_ASSETS_TEST         0x80UL
+       __le16  num_rsscos_ctxs;
+       __le16  num_cmpl_rings;
+       __le16  num_tx_rings;
+       __le16  num_rx_rings;
+       __le16  num_l2_ctxs;
+       __le16  num_vnics;
+       __le16  num_stat_ctxs;
+       __le16  num_hw_ring_grps;
+       u8      unused_0[4];
+};
+
+/* hwrm_func_vf_cfg_output (size:128b/16B) */
+struct hwrm_func_vf_cfg_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_func_qcaps_input (size:192b/24B) */
+struct hwrm_func_qcaps_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le16  fid;
+       u8      unused_0[6];
+};
+
+/* hwrm_func_qcaps_output (size:640b/80B) */
+struct hwrm_func_qcaps_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le16  fid;
+       __le16  port_id;
+       __le32  flags;
+       #define FUNC_QCAPS_RESP_FLAGS_PUSH_MODE_SUPPORTED             0x1UL
+       #define FUNC_QCAPS_RESP_FLAGS_GLOBAL_MSIX_AUTOMASKING         0x2UL
+       #define FUNC_QCAPS_RESP_FLAGS_PTP_SUPPORTED                   0x4UL
+       #define FUNC_QCAPS_RESP_FLAGS_ROCE_V1_SUPPORTED               0x8UL
+       #define FUNC_QCAPS_RESP_FLAGS_ROCE_V2_SUPPORTED               0x10UL
+       #define FUNC_QCAPS_RESP_FLAGS_WOL_MAGICPKT_SUPPORTED          0x20UL
+       #define FUNC_QCAPS_RESP_FLAGS_WOL_BMP_SUPPORTED               0x40UL
+       #define FUNC_QCAPS_RESP_FLAGS_TX_RING_RL_SUPPORTED            0x80UL
+       #define FUNC_QCAPS_RESP_FLAGS_TX_BW_CFG_SUPPORTED             0x100UL
+       #define FUNC_QCAPS_RESP_FLAGS_VF_TX_RING_RL_SUPPORTED         0x200UL
+       #define FUNC_QCAPS_RESP_FLAGS_VF_BW_CFG_SUPPORTED             0x400UL
+       #define FUNC_QCAPS_RESP_FLAGS_STD_TX_RING_MODE_SUPPORTED      0x800UL
+       #define FUNC_QCAPS_RESP_FLAGS_GENEVE_TUN_FLAGS_SUPPORTED      0x1000UL
+       #define FUNC_QCAPS_RESP_FLAGS_NVGRE_TUN_FLAGS_SUPPORTED       0x2000UL
+       #define FUNC_QCAPS_RESP_FLAGS_GRE_TUN_FLAGS_SUPPORTED         0x4000UL
+       #define FUNC_QCAPS_RESP_FLAGS_MPLS_TUN_FLAGS_SUPPORTED        0x8000UL
+       #define FUNC_QCAPS_RESP_FLAGS_PCIE_STATS_SUPPORTED            0x10000UL
+       #define FUNC_QCAPS_RESP_FLAGS_ADOPTED_PF_SUPPORTED            0x20000UL
+       #define FUNC_QCAPS_RESP_FLAGS_ADMIN_PF_SUPPORTED              0x40000UL
+       #define FUNC_QCAPS_RESP_FLAGS_LINK_ADMIN_STATUS_SUPPORTED     0x80000UL
+       #define FUNC_QCAPS_RESP_FLAGS_WCB_PUSH_MODE                   0x100000UL
+       #define FUNC_QCAPS_RESP_FLAGS_DYNAMIC_TX_RING_ALLOC           0x200000UL
+       #define FUNC_QCAPS_RESP_FLAGS_HOT_RESET_CAPABLE               0x400000UL
+       u8      mac_address[6];
+       __le16  max_rsscos_ctx;
+       __le16  max_cmpl_rings;
+       __le16  max_tx_rings;
+       __le16  max_rx_rings;
+       __le16  max_l2_ctxs;
+       __le16  max_vnics;
+       __le16  first_vf_id;
+       __le16  max_vfs;
+       __le16  max_stat_ctx;
+       __le32  max_encap_records;
+       __le32  max_decap_records;
+       __le32  max_tx_em_flows;
+       __le32  max_tx_wm_flows;
+       __le32  max_rx_em_flows;
+       __le32  max_rx_wm_flows;
+       __le32  max_mcast_filters;
+       __le32  max_flow_id;
+       __le32  max_hw_ring_grps;
+       __le16  max_sp_tx_rings;
+       u8      unused_0;
+       u8      valid;
+};
+
+/* hwrm_func_qcfg_input (size:192b/24B) */
+struct hwrm_func_qcfg_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le16  fid;
+       u8      unused_0[6];
+};
+
+/* hwrm_func_qcfg_output (size:704b/88B) */
+struct hwrm_func_qcfg_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le16  fid;
+       __le16  port_id;
+       __le16  vlan;
+       __le16  flags;
+       #define FUNC_QCFG_RESP_FLAGS_OOB_WOL_MAGICPKT_ENABLED     0x1UL
+       #define FUNC_QCFG_RESP_FLAGS_OOB_WOL_BMP_ENABLED          0x2UL
+       #define FUNC_QCFG_RESP_FLAGS_FW_DCBX_AGENT_ENABLED        0x4UL
+       #define FUNC_QCFG_RESP_FLAGS_STD_TX_RING_MODE_ENABLED     0x8UL
+       #define FUNC_QCFG_RESP_FLAGS_FW_LLDP_AGENT_ENABLED        0x10UL
+       #define FUNC_QCFG_RESP_FLAGS_MULTI_HOST                   0x20UL
+       #define FUNC_QCFG_RESP_FLAGS_TRUSTED_VF                   0x40UL
+       u8      mac_address[6];
+       __le16  pci_id;
+       __le16  alloc_rsscos_ctx;
+       __le16  alloc_cmpl_rings;
+       __le16  alloc_tx_rings;
+       __le16  alloc_rx_rings;
+       __le16  alloc_l2_ctx;
+       __le16  alloc_vnics;
+       __le16  mtu;
+       __le16  mru;
+       __le16  stat_ctx_id;
+       u8      port_partition_type;
+       #define FUNC_QCFG_RESP_PORT_PARTITION_TYPE_SPF     0x0UL
+       #define FUNC_QCFG_RESP_PORT_PARTITION_TYPE_MPFS    0x1UL
+       #define FUNC_QCFG_RESP_PORT_PARTITION_TYPE_NPAR1_0 0x2UL
+       #define FUNC_QCFG_RESP_PORT_PARTITION_TYPE_NPAR1_5 0x3UL
+       #define FUNC_QCFG_RESP_PORT_PARTITION_TYPE_NPAR2_0 0x4UL
+       #define FUNC_QCFG_RESP_PORT_PARTITION_TYPE_UNKNOWN 0xffUL
+       #define FUNC_QCFG_RESP_PORT_PARTITION_TYPE_LAST   FUNC_QCFG_RESP_PORT_PARTITION_TYPE_UNKNOWN
+       u8      port_pf_cnt;
+       #define FUNC_QCFG_RESP_PORT_PF_CNT_UNAVAIL 0x0UL
+       #define FUNC_QCFG_RESP_PORT_PF_CNT_LAST   FUNC_QCFG_RESP_PORT_PF_CNT_UNAVAIL
+       __le16  dflt_vnic_id;
+       __le16  max_mtu_configured;
+       __le32  min_bw;
+       #define FUNC_QCFG_RESP_MIN_BW_BW_VALUE_MASK             0xfffffffUL
+       #define FUNC_QCFG_RESP_MIN_BW_BW_VALUE_SFT              0
+       #define FUNC_QCFG_RESP_MIN_BW_SCALE                     0x10000000UL
+       #define FUNC_QCFG_RESP_MIN_BW_SCALE_BITS                  (0x0UL << 28)
+       #define FUNC_QCFG_RESP_MIN_BW_SCALE_BYTES                 (0x1UL << 28)
+       #define FUNC_QCFG_RESP_MIN_BW_SCALE_LAST                 FUNC_QCFG_RESP_MIN_BW_SCALE_BYTES
+       #define FUNC_QCFG_RESP_MIN_BW_BW_VALUE_UNIT_MASK        0xe0000000UL
+       #define FUNC_QCFG_RESP_MIN_BW_BW_VALUE_UNIT_SFT         29
+       #define FUNC_QCFG_RESP_MIN_BW_BW_VALUE_UNIT_MEGA          (0x0UL << 29)
+       #define FUNC_QCFG_RESP_MIN_BW_BW_VALUE_UNIT_KILO          (0x2UL << 29)
+       #define FUNC_QCFG_RESP_MIN_BW_BW_VALUE_UNIT_BASE          (0x4UL << 29)
+       #define FUNC_QCFG_RESP_MIN_BW_BW_VALUE_UNIT_GIGA          (0x6UL << 29)
+       #define FUNC_QCFG_RESP_MIN_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL << 29)
+       #define FUNC_QCFG_RESP_MIN_BW_BW_VALUE_UNIT_INVALID       (0x7UL << 29)
+       #define FUNC_QCFG_RESP_MIN_BW_BW_VALUE_UNIT_LAST         FUNC_QCFG_RESP_MIN_BW_BW_VALUE_UNIT_INVALID
+       __le32  max_bw;
+       #define FUNC_QCFG_RESP_MAX_BW_BW_VALUE_MASK             0xfffffffUL
+       #define FUNC_QCFG_RESP_MAX_BW_BW_VALUE_SFT              0
+       #define FUNC_QCFG_RESP_MAX_BW_SCALE                     0x10000000UL
+       #define FUNC_QCFG_RESP_MAX_BW_SCALE_BITS                  (0x0UL << 28)
+       #define FUNC_QCFG_RESP_MAX_BW_SCALE_BYTES                 (0x1UL << 28)
+       #define FUNC_QCFG_RESP_MAX_BW_SCALE_LAST                 FUNC_QCFG_RESP_MAX_BW_SCALE_BYTES
+       #define FUNC_QCFG_RESP_MAX_BW_BW_VALUE_UNIT_MASK        0xe0000000UL
+       #define FUNC_QCFG_RESP_MAX_BW_BW_VALUE_UNIT_SFT         29
+       #define FUNC_QCFG_RESP_MAX_BW_BW_VALUE_UNIT_MEGA          (0x0UL << 29)
+       #define FUNC_QCFG_RESP_MAX_BW_BW_VALUE_UNIT_KILO          (0x2UL << 29)
+       #define FUNC_QCFG_RESP_MAX_BW_BW_VALUE_UNIT_BASE          (0x4UL << 29)
+       #define FUNC_QCFG_RESP_MAX_BW_BW_VALUE_UNIT_GIGA          (0x6UL << 29)
+       #define FUNC_QCFG_RESP_MAX_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL << 29)
+       #define FUNC_QCFG_RESP_MAX_BW_BW_VALUE_UNIT_INVALID       (0x7UL << 29)
+       #define FUNC_QCFG_RESP_MAX_BW_BW_VALUE_UNIT_LAST         FUNC_QCFG_RESP_MAX_BW_BW_VALUE_UNIT_INVALID
+       u8      evb_mode;
+       #define FUNC_QCFG_RESP_EVB_MODE_NO_EVB 0x0UL
+       #define FUNC_QCFG_RESP_EVB_MODE_VEB    0x1UL
+       #define FUNC_QCFG_RESP_EVB_MODE_VEPA   0x2UL
+       #define FUNC_QCFG_RESP_EVB_MODE_LAST  FUNC_QCFG_RESP_EVB_MODE_VEPA
+       u8      options;
+       #define FUNC_QCFG_RESP_OPTIONS_CACHE_LINESIZE_MASK         0x3UL
+       #define FUNC_QCFG_RESP_OPTIONS_CACHE_LINESIZE_SFT          0
+       #define FUNC_QCFG_RESP_OPTIONS_CACHE_LINESIZE_SIZE_64        0x0UL
+       #define FUNC_QCFG_RESP_OPTIONS_CACHE_LINESIZE_SIZE_128       0x1UL
+       #define FUNC_QCFG_RESP_OPTIONS_CACHE_LINESIZE_LAST          FUNC_QCFG_RESP_OPTIONS_CACHE_LINESIZE_SIZE_128
+       #define FUNC_QCFG_RESP_OPTIONS_LINK_ADMIN_STATE_MASK       0xcUL
+       #define FUNC_QCFG_RESP_OPTIONS_LINK_ADMIN_STATE_SFT        2
+       #define FUNC_QCFG_RESP_OPTIONS_LINK_ADMIN_STATE_FORCED_DOWN  (0x0UL << 2)
+       #define FUNC_QCFG_RESP_OPTIONS_LINK_ADMIN_STATE_FORCED_UP    (0x1UL << 2)
+       #define FUNC_QCFG_RESP_OPTIONS_LINK_ADMIN_STATE_AUTO         (0x2UL << 2)
+       #define FUNC_QCFG_RESP_OPTIONS_LINK_ADMIN_STATE_LAST        FUNC_QCFG_RESP_OPTIONS_LINK_ADMIN_STATE_AUTO
+       #define FUNC_QCFG_RESP_OPTIONS_RSVD_MASK                   0xf0UL
+       #define FUNC_QCFG_RESP_OPTIONS_RSVD_SFT                    4
+       __le16  alloc_vfs;
+       __le32  alloc_mcast_filters;
+       __le32  alloc_hw_ring_grps;
+       __le16  alloc_sp_tx_rings;
+       __le16  alloc_stat_ctx;
+       __le16  alloc_msix;
+       __le16  registered_vfs;
+       u8      unused_1[3];
+       u8      always_1;
+       __le32  reset_addr_poll;
+       u8      unused_2[3];
+       u8      valid;
+};
+
+/* hwrm_func_cfg_input (size:704b/88B) */
+struct hwrm_func_cfg_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le16  fid;
+       __le16  num_msix;
+       __le32  flags;
+       #define FUNC_CFG_REQ_FLAGS_SRC_MAC_ADDR_CHECK_DISABLE     0x1UL
+       #define FUNC_CFG_REQ_FLAGS_SRC_MAC_ADDR_CHECK_ENABLE      0x2UL
+       #define FUNC_CFG_REQ_FLAGS_RSVD_MASK                      0x1fcUL
+       #define FUNC_CFG_REQ_FLAGS_RSVD_SFT                       2
+       #define FUNC_CFG_REQ_FLAGS_STD_TX_RING_MODE_ENABLE        0x200UL
+       #define FUNC_CFG_REQ_FLAGS_STD_TX_RING_MODE_DISABLE       0x400UL
+       #define FUNC_CFG_REQ_FLAGS_VIRT_MAC_PERSIST               0x800UL
+       #define FUNC_CFG_REQ_FLAGS_NO_AUTOCLEAR_STATISTIC         0x1000UL
+       #define FUNC_CFG_REQ_FLAGS_TX_ASSETS_TEST                 0x2000UL
+       #define FUNC_CFG_REQ_FLAGS_RX_ASSETS_TEST                 0x4000UL
+       #define FUNC_CFG_REQ_FLAGS_CMPL_ASSETS_TEST               0x8000UL
+       #define FUNC_CFG_REQ_FLAGS_RSSCOS_CTX_ASSETS_TEST         0x10000UL
+       #define FUNC_CFG_REQ_FLAGS_RING_GRP_ASSETS_TEST           0x20000UL
+       #define FUNC_CFG_REQ_FLAGS_STAT_CTX_ASSETS_TEST           0x40000UL
+       #define FUNC_CFG_REQ_FLAGS_VNIC_ASSETS_TEST               0x80000UL
+       #define FUNC_CFG_REQ_FLAGS_L2_CTX_ASSETS_TEST             0x100000UL
+       #define FUNC_CFG_REQ_FLAGS_TRUSTED_VF_ENABLE              0x200000UL
+       #define FUNC_CFG_REQ_FLAGS_DYNAMIC_TX_RING_ALLOC          0x400000UL
+       __le32  enables;
+       #define FUNC_CFG_REQ_ENABLES_MTU                     0x1UL
+       #define FUNC_CFG_REQ_ENABLES_MRU                     0x2UL
+       #define FUNC_CFG_REQ_ENABLES_NUM_RSSCOS_CTXS         0x4UL
+       #define FUNC_CFG_REQ_ENABLES_NUM_CMPL_RINGS          0x8UL
+       #define FUNC_CFG_REQ_ENABLES_NUM_TX_RINGS            0x10UL
+       #define FUNC_CFG_REQ_ENABLES_NUM_RX_RINGS            0x20UL
+       #define FUNC_CFG_REQ_ENABLES_NUM_L2_CTXS             0x40UL
+       #define FUNC_CFG_REQ_ENABLES_NUM_VNICS               0x80UL
+       #define FUNC_CFG_REQ_ENABLES_NUM_STAT_CTXS           0x100UL
+       #define FUNC_CFG_REQ_ENABLES_DFLT_MAC_ADDR           0x200UL
+       #define FUNC_CFG_REQ_ENABLES_DFLT_VLAN               0x400UL
+       #define FUNC_CFG_REQ_ENABLES_DFLT_IP_ADDR            0x800UL
+       #define FUNC_CFG_REQ_ENABLES_MIN_BW                  0x1000UL
+       #define FUNC_CFG_REQ_ENABLES_MAX_BW                  0x2000UL
+       #define FUNC_CFG_REQ_ENABLES_ASYNC_EVENT_CR          0x4000UL
+       #define FUNC_CFG_REQ_ENABLES_VLAN_ANTISPOOF_MODE     0x8000UL
+       #define FUNC_CFG_REQ_ENABLES_ALLOWED_VLAN_PRIS       0x10000UL
+       #define FUNC_CFG_REQ_ENABLES_EVB_MODE                0x20000UL
+       #define FUNC_CFG_REQ_ENABLES_NUM_MCAST_FILTERS       0x40000UL
+       #define FUNC_CFG_REQ_ENABLES_NUM_HW_RING_GRPS        0x80000UL
+       #define FUNC_CFG_REQ_ENABLES_CACHE_LINESIZE          0x100000UL
+       #define FUNC_CFG_REQ_ENABLES_NUM_MSIX                0x200000UL
+       #define FUNC_CFG_REQ_ENABLES_ADMIN_LINK_STATE        0x400000UL
+       __le16  mtu;
+       __le16  mru;
+       __le16  num_rsscos_ctxs;
+       __le16  num_cmpl_rings;
+       __le16  num_tx_rings;
+       __le16  num_rx_rings;
+       __le16  num_l2_ctxs;
+       __le16  num_vnics;
+       __le16  num_stat_ctxs;
+       __le16  num_hw_ring_grps;
+       u8      dflt_mac_addr[6];
+       __le16  dflt_vlan;
+       __be32  dflt_ip_addr[4];
+       __le32  min_bw;
+       #define FUNC_CFG_REQ_MIN_BW_BW_VALUE_MASK             0xfffffffUL
+       #define FUNC_CFG_REQ_MIN_BW_BW_VALUE_SFT              0
+       #define FUNC_CFG_REQ_MIN_BW_SCALE                     0x10000000UL
+       #define FUNC_CFG_REQ_MIN_BW_SCALE_BITS                  (0x0UL << 28)
+       #define FUNC_CFG_REQ_MIN_BW_SCALE_BYTES                 (0x1UL << 28)
+       #define FUNC_CFG_REQ_MIN_BW_SCALE_LAST                 FUNC_CFG_REQ_MIN_BW_SCALE_BYTES
+       #define FUNC_CFG_REQ_MIN_BW_BW_VALUE_UNIT_MASK        0xe0000000UL
+       #define FUNC_CFG_REQ_MIN_BW_BW_VALUE_UNIT_SFT         29
+       #define FUNC_CFG_REQ_MIN_BW_BW_VALUE_UNIT_MEGA          (0x0UL << 29)
+       #define FUNC_CFG_REQ_MIN_BW_BW_VALUE_UNIT_KILO          (0x2UL << 29)
+       #define FUNC_CFG_REQ_MIN_BW_BW_VALUE_UNIT_BASE          (0x4UL << 29)
+       #define FUNC_CFG_REQ_MIN_BW_BW_VALUE_UNIT_GIGA          (0x6UL << 29)
+       #define FUNC_CFG_REQ_MIN_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL << 29)
+       #define FUNC_CFG_REQ_MIN_BW_BW_VALUE_UNIT_INVALID       (0x7UL << 29)
+       #define FUNC_CFG_REQ_MIN_BW_BW_VALUE_UNIT_LAST         FUNC_CFG_REQ_MIN_BW_BW_VALUE_UNIT_INVALID
+       __le32  max_bw;
+       #define FUNC_CFG_REQ_MAX_BW_BW_VALUE_MASK             0xfffffffUL
+       #define FUNC_CFG_REQ_MAX_BW_BW_VALUE_SFT              0
+       #define FUNC_CFG_REQ_MAX_BW_SCALE                     0x10000000UL
+       #define FUNC_CFG_REQ_MAX_BW_SCALE_BITS                  (0x0UL << 28)
+       #define FUNC_CFG_REQ_MAX_BW_SCALE_BYTES                 (0x1UL << 28)
+       #define FUNC_CFG_REQ_MAX_BW_SCALE_LAST                 FUNC_CFG_REQ_MAX_BW_SCALE_BYTES
+       #define FUNC_CFG_REQ_MAX_BW_BW_VALUE_UNIT_MASK        0xe0000000UL
+       #define FUNC_CFG_REQ_MAX_BW_BW_VALUE_UNIT_SFT         29
+       #define FUNC_CFG_REQ_MAX_BW_BW_VALUE_UNIT_MEGA          (0x0UL << 29)
+       #define FUNC_CFG_REQ_MAX_BW_BW_VALUE_UNIT_KILO          (0x2UL << 29)
+       #define FUNC_CFG_REQ_MAX_BW_BW_VALUE_UNIT_BASE          (0x4UL << 29)
+       #define FUNC_CFG_REQ_MAX_BW_BW_VALUE_UNIT_GIGA          (0x6UL << 29)
+       #define FUNC_CFG_REQ_MAX_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL << 29)
+       #define FUNC_CFG_REQ_MAX_BW_BW_VALUE_UNIT_INVALID       (0x7UL << 29)
+       #define FUNC_CFG_REQ_MAX_BW_BW_VALUE_UNIT_LAST         FUNC_CFG_REQ_MAX_BW_BW_VALUE_UNIT_INVALID
+       __le16  async_event_cr;
+       u8      vlan_antispoof_mode;
+       #define FUNC_CFG_REQ_VLAN_ANTISPOOF_MODE_NOCHECK                 0x0UL
+       #define FUNC_CFG_REQ_VLAN_ANTISPOOF_MODE_VALIDATE_VLAN           0x1UL
+       #define FUNC_CFG_REQ_VLAN_ANTISPOOF_MODE_INSERT_IF_VLANDNE       0x2UL
+       #define FUNC_CFG_REQ_VLAN_ANTISPOOF_MODE_INSERT_OR_OVERRIDE_VLAN 0x3UL
+       #define FUNC_CFG_REQ_VLAN_ANTISPOOF_MODE_LAST                   FUNC_CFG_REQ_VLAN_ANTISPOOF_MODE_INSERT_OR_OVERRIDE_VLAN
+       u8      allowed_vlan_pris;
+       u8      evb_mode;
+       #define FUNC_CFG_REQ_EVB_MODE_NO_EVB 0x0UL
+       #define FUNC_CFG_REQ_EVB_MODE_VEB    0x1UL
+       #define FUNC_CFG_REQ_EVB_MODE_VEPA   0x2UL
+       #define FUNC_CFG_REQ_EVB_MODE_LAST  FUNC_CFG_REQ_EVB_MODE_VEPA
+       u8      options;
+       #define FUNC_CFG_REQ_OPTIONS_CACHE_LINESIZE_MASK         0x3UL
+       #define FUNC_CFG_REQ_OPTIONS_CACHE_LINESIZE_SFT          0
+       #define FUNC_CFG_REQ_OPTIONS_CACHE_LINESIZE_SIZE_64        0x0UL
+       #define FUNC_CFG_REQ_OPTIONS_CACHE_LINESIZE_SIZE_128       0x1UL
+       #define FUNC_CFG_REQ_OPTIONS_CACHE_LINESIZE_LAST          FUNC_CFG_REQ_OPTIONS_CACHE_LINESIZE_SIZE_128
+       #define FUNC_CFG_REQ_OPTIONS_LINK_ADMIN_STATE_MASK       0xcUL
+       #define FUNC_CFG_REQ_OPTIONS_LINK_ADMIN_STATE_SFT        2
+       #define FUNC_CFG_REQ_OPTIONS_LINK_ADMIN_STATE_FORCED_DOWN  (0x0UL << 2)
+       #define FUNC_CFG_REQ_OPTIONS_LINK_ADMIN_STATE_FORCED_UP    (0x1UL << 2)
+       #define FUNC_CFG_REQ_OPTIONS_LINK_ADMIN_STATE_AUTO         (0x2UL << 2)
+       #define FUNC_CFG_REQ_OPTIONS_LINK_ADMIN_STATE_LAST        FUNC_CFG_REQ_OPTIONS_LINK_ADMIN_STATE_AUTO
+       #define FUNC_CFG_REQ_OPTIONS_RSVD_MASK                   0xf0UL
+       #define FUNC_CFG_REQ_OPTIONS_RSVD_SFT                    4
+       __le16  num_mcast_filters;
+};
+
+/* hwrm_func_cfg_output (size:128b/16B) */
+struct hwrm_func_cfg_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_func_qstats_input (size:192b/24B) */
+struct hwrm_func_qstats_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le16  fid;
+       u8      unused_0[6];
+};
+
+/* hwrm_func_qstats_output (size:1408b/176B) */
+struct hwrm_func_qstats_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le64  tx_ucast_pkts;
+       __le64  tx_mcast_pkts;
+       __le64  tx_bcast_pkts;
+       __le64  tx_discard_pkts;
+       __le64  tx_drop_pkts;
+       __le64  tx_ucast_bytes;
+       __le64  tx_mcast_bytes;
+       __le64  tx_bcast_bytes;
+       __le64  rx_ucast_pkts;
+       __le64  rx_mcast_pkts;
+       __le64  rx_bcast_pkts;
+       __le64  rx_discard_pkts;
+       __le64  rx_drop_pkts;
+       __le64  rx_ucast_bytes;
+       __le64  rx_mcast_bytes;
+       __le64  rx_bcast_bytes;
+       __le64  rx_agg_pkts;
+       __le64  rx_agg_bytes;
+       __le64  rx_agg_events;
+       __le64  rx_agg_aborts;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_func_clr_stats_input (size:192b/24B) */
+struct hwrm_func_clr_stats_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le16  fid;
+       u8      unused_0[6];
+};
+
+/* hwrm_func_clr_stats_output (size:128b/16B) */
+struct hwrm_func_clr_stats_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_func_vf_resc_free_input (size:192b/24B) */
+struct hwrm_func_vf_resc_free_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le16  vf_id;
+       u8      unused_0[6];
+};
+
+/* hwrm_func_vf_resc_free_output (size:128b/16B) */
+struct hwrm_func_vf_resc_free_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_func_drv_rgtr_input (size:896b/112B) */
+struct hwrm_func_drv_rgtr_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le32  flags;
+       #define FUNC_DRV_RGTR_REQ_FLAGS_FWD_ALL_MODE               0x1UL
+       #define FUNC_DRV_RGTR_REQ_FLAGS_FWD_NONE_MODE              0x2UL
+       #define FUNC_DRV_RGTR_REQ_FLAGS_16BIT_VER_MODE             0x4UL
+       #define FUNC_DRV_RGTR_REQ_FLAGS_FLOW_HANDLE_64BIT_MODE     0x8UL
+       #define FUNC_DRV_RGTR_REQ_FLAGS_HOT_RESET_SUPPORT          0x10UL
+       __le32  enables;
+       #define FUNC_DRV_RGTR_REQ_ENABLES_OS_TYPE             0x1UL
+       #define FUNC_DRV_RGTR_REQ_ENABLES_VER                 0x2UL
+       #define FUNC_DRV_RGTR_REQ_ENABLES_TIMESTAMP           0x4UL
+       #define FUNC_DRV_RGTR_REQ_ENABLES_VF_REQ_FWD          0x8UL
+       #define FUNC_DRV_RGTR_REQ_ENABLES_ASYNC_EVENT_FWD     0x10UL
+       __le16  os_type;
+       #define FUNC_DRV_RGTR_REQ_OS_TYPE_UNKNOWN   0x0UL
+       #define FUNC_DRV_RGTR_REQ_OS_TYPE_OTHER     0x1UL
+       #define FUNC_DRV_RGTR_REQ_OS_TYPE_MSDOS     0xeUL
+       #define FUNC_DRV_RGTR_REQ_OS_TYPE_WINDOWS   0x12UL
+       #define FUNC_DRV_RGTR_REQ_OS_TYPE_SOLARIS   0x1dUL
+       #define FUNC_DRV_RGTR_REQ_OS_TYPE_LINUX     0x24UL
+       #define FUNC_DRV_RGTR_REQ_OS_TYPE_FREEBSD   0x2aUL
+       #define FUNC_DRV_RGTR_REQ_OS_TYPE_ESXI      0x68UL
+       #define FUNC_DRV_RGTR_REQ_OS_TYPE_WIN864    0x73UL
+       #define FUNC_DRV_RGTR_REQ_OS_TYPE_WIN2012R2 0x74UL
+       #define FUNC_DRV_RGTR_REQ_OS_TYPE_UEFI      0x8000UL
+       #define FUNC_DRV_RGTR_REQ_OS_TYPE_LAST     FUNC_DRV_RGTR_REQ_OS_TYPE_UEFI
+       u8      ver_maj_8b;
+       u8      ver_min_8b;
+       u8      ver_upd_8b;
+       u8      unused_0[3];
+       __le32  timestamp;
+       u8      unused_1[4];
+       __le32  vf_req_fwd[8];
+       __le32  async_event_fwd[8];
+       __le16  ver_maj;
+       __le16  ver_min;
+       __le16  ver_upd;
+       __le16  ver_patch;
+};
+
+/* hwrm_func_drv_rgtr_output (size:128b/16B) */
+struct hwrm_func_drv_rgtr_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le32  flags;
+       #define FUNC_DRV_RGTR_RESP_FLAGS_IF_CHANGE_SUPPORTED     0x1UL
+       u8      unused_0[3];
+       u8      valid;
+};
+
+/* hwrm_func_drv_unrgtr_input (size:192b/24B) */
+struct hwrm_func_drv_unrgtr_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le32  flags;
+       #define FUNC_DRV_UNRGTR_REQ_FLAGS_PREPARE_FOR_SHUTDOWN     0x1UL
+       u8      unused_0[4];
+};
+
+/* hwrm_func_drv_unrgtr_output (size:128b/16B) */
+struct hwrm_func_drv_unrgtr_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_func_buf_rgtr_input (size:1024b/128B) */
+struct hwrm_func_buf_rgtr_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le32  enables;
+       #define FUNC_BUF_RGTR_REQ_ENABLES_VF_ID            0x1UL
+       #define FUNC_BUF_RGTR_REQ_ENABLES_ERR_BUF_ADDR     0x2UL
+       __le16  vf_id;
+       __le16  req_buf_num_pages;
+       __le16  req_buf_page_size;
+       #define FUNC_BUF_RGTR_REQ_REQ_BUF_PAGE_SIZE_16B 0x4UL
+       #define FUNC_BUF_RGTR_REQ_REQ_BUF_PAGE_SIZE_4K  0xcUL
+       #define FUNC_BUF_RGTR_REQ_REQ_BUF_PAGE_SIZE_8K  0xdUL
+       #define FUNC_BUF_RGTR_REQ_REQ_BUF_PAGE_SIZE_64K 0x10UL
+       #define FUNC_BUF_RGTR_REQ_REQ_BUF_PAGE_SIZE_2M  0x15UL
+       #define FUNC_BUF_RGTR_REQ_REQ_BUF_PAGE_SIZE_4M  0x16UL
+       #define FUNC_BUF_RGTR_REQ_REQ_BUF_PAGE_SIZE_1G  0x1eUL
+       #define FUNC_BUF_RGTR_REQ_REQ_BUF_PAGE_SIZE_LAST FUNC_BUF_RGTR_REQ_REQ_BUF_PAGE_SIZE_1G
+       __le16  req_buf_len;
+       __le16  resp_buf_len;
+       u8      unused_0[2];
+       __le64  req_buf_page_addr0;
+       __le64  req_buf_page_addr1;
+       __le64  req_buf_page_addr2;
+       __le64  req_buf_page_addr3;
+       __le64  req_buf_page_addr4;
+       __le64  req_buf_page_addr5;
+       __le64  req_buf_page_addr6;
+       __le64  req_buf_page_addr7;
+       __le64  req_buf_page_addr8;
+       __le64  req_buf_page_addr9;
+       __le64  error_buf_addr;
+       __le64  resp_buf_addr;
+};
+
+/* hwrm_func_buf_rgtr_output (size:128b/16B) */
+struct hwrm_func_buf_rgtr_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_func_buf_unrgtr_input (size:192b/24B) */
+struct hwrm_func_buf_unrgtr_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le32  enables;
+       #define FUNC_BUF_UNRGTR_REQ_ENABLES_VF_ID     0x1UL
+       __le16  vf_id;
+       u8      unused_0[2];
+};
+
+/* hwrm_func_buf_unrgtr_output (size:128b/16B) */
+struct hwrm_func_buf_unrgtr_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_func_drv_qver_input (size:192b/24B) */
+struct hwrm_func_drv_qver_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le32  reserved;
+       __le16  fid;
+       u8      unused_0[2];
+};
+
+/* hwrm_func_drv_qver_output (size:256b/32B) */
+struct hwrm_func_drv_qver_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le16  os_type;
+       #define FUNC_DRV_QVER_RESP_OS_TYPE_UNKNOWN   0x0UL
+       #define FUNC_DRV_QVER_RESP_OS_TYPE_OTHER     0x1UL
+       #define FUNC_DRV_QVER_RESP_OS_TYPE_MSDOS     0xeUL
+       #define FUNC_DRV_QVER_RESP_OS_TYPE_WINDOWS   0x12UL
+       #define FUNC_DRV_QVER_RESP_OS_TYPE_SOLARIS   0x1dUL
+       #define FUNC_DRV_QVER_RESP_OS_TYPE_LINUX     0x24UL
+       #define FUNC_DRV_QVER_RESP_OS_TYPE_FREEBSD   0x2aUL
+       #define FUNC_DRV_QVER_RESP_OS_TYPE_ESXI      0x68UL
+       #define FUNC_DRV_QVER_RESP_OS_TYPE_WIN864    0x73UL
+       #define FUNC_DRV_QVER_RESP_OS_TYPE_WIN2012R2 0x74UL
+       #define FUNC_DRV_QVER_RESP_OS_TYPE_UEFI      0x8000UL
+       #define FUNC_DRV_QVER_RESP_OS_TYPE_LAST     FUNC_DRV_QVER_RESP_OS_TYPE_UEFI
+       u8      ver_maj_8b;
+       u8      ver_min_8b;
+       u8      ver_upd_8b;
+       u8      unused_0[3];
+       __le16  ver_maj;
+       __le16  ver_min;
+       __le16  ver_upd;
+       __le16  ver_patch;
+       u8      unused_1[7];
+       u8      valid;
+};
+
+/* hwrm_func_resource_qcaps_input (size:192b/24B) */
+struct hwrm_func_resource_qcaps_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le16  fid;
+       u8      unused_0[6];
+};
+
+/* hwrm_func_resource_qcaps_output (size:448b/56B) */
+struct hwrm_func_resource_qcaps_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le16  max_vfs;
+       __le16  max_msix;
+       __le16  vf_reservation_strategy;
+       #define FUNC_RESOURCE_QCAPS_RESP_VF_RESERVATION_STRATEGY_MAXIMAL        0x0UL
+       #define FUNC_RESOURCE_QCAPS_RESP_VF_RESERVATION_STRATEGY_MINIMAL        0x1UL
+       #define FUNC_RESOURCE_QCAPS_RESP_VF_RESERVATION_STRATEGY_MINIMAL_STATIC 0x2UL
+       #define FUNC_RESOURCE_QCAPS_RESP_VF_RESERVATION_STRATEGY_LAST          FUNC_RESOURCE_QCAPS_RESP_VF_RESERVATION_STRATEGY_MINIMAL_STATIC
+       __le16  min_rsscos_ctx;
+       __le16  max_rsscos_ctx;
+       __le16  min_cmpl_rings;
+       __le16  max_cmpl_rings;
+       __le16  min_tx_rings;
+       __le16  max_tx_rings;
+       __le16  min_rx_rings;
+       __le16  max_rx_rings;
+       __le16  min_l2_ctxs;
+       __le16  max_l2_ctxs;
+       __le16  min_vnics;
+       __le16  max_vnics;
+       __le16  min_stat_ctx;
+       __le16  max_stat_ctx;
+       __le16  min_hw_ring_grps;
+       __le16  max_hw_ring_grps;
+       __le16  max_tx_scheduler_inputs;
+       __le16  flags;
+       #define FUNC_RESOURCE_QCAPS_RESP_FLAGS_MIN_GUARANTEED     0x1UL
+       u8      unused_0[5];
+       u8      valid;
+};
+
+/* hwrm_func_vf_resource_cfg_input (size:448b/56B) */
+struct hwrm_func_vf_resource_cfg_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le16  vf_id;
+       __le16  max_msix;
+       __le16  min_rsscos_ctx;
+       __le16  max_rsscos_ctx;
+       __le16  min_cmpl_rings;
+       __le16  max_cmpl_rings;
+       __le16  min_tx_rings;
+       __le16  max_tx_rings;
+       __le16  min_rx_rings;
+       __le16  max_rx_rings;
+       __le16  min_l2_ctxs;
+       __le16  max_l2_ctxs;
+       __le16  min_vnics;
+       __le16  max_vnics;
+       __le16  min_stat_ctx;
+       __le16  max_stat_ctx;
+       __le16  min_hw_ring_grps;
+       __le16  max_hw_ring_grps;
+       __le16  flags;
+       #define FUNC_VF_RESOURCE_CFG_REQ_FLAGS_MIN_GUARANTEED     0x1UL
+       u8      unused_0[2];
+};
+
+/* hwrm_func_vf_resource_cfg_output (size:256b/32B) */
+struct hwrm_func_vf_resource_cfg_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le16  reserved_rsscos_ctx;
+       __le16  reserved_cmpl_rings;
+       __le16  reserved_tx_rings;
+       __le16  reserved_rx_rings;
+       __le16  reserved_l2_ctxs;
+       __le16  reserved_vnics;
+       __le16  reserved_stat_ctx;
+       __le16  reserved_hw_ring_grps;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_func_backing_store_qcaps_input (size:128b/16B) */
+struct hwrm_func_backing_store_qcaps_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+};
+
+/* hwrm_func_backing_store_qcaps_output (size:576b/72B) */
+struct hwrm_func_backing_store_qcaps_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le32  qp_max_entries;
+       __le16  qp_min_qp1_entries;
+       __le16  qp_max_l2_entries;
+       __le16  qp_entry_size;
+       __le16  srq_max_l2_entries;
+       __le32  srq_max_entries;
+       __le16  srq_entry_size;
+       __le16  cq_max_l2_entries;
+       __le32  cq_max_entries;
+       __le16  cq_entry_size;
+       __le16  vnic_max_vnic_entries;
+       __le16  vnic_max_ring_table_entries;
+       __le16  vnic_entry_size;
+       __le32  stat_max_entries;
+       __le16  stat_entry_size;
+       __le16  tqm_entry_size;
+       __le32  tqm_min_entries_per_ring;
+       __le32  tqm_max_entries_per_ring;
+       __le32  mrav_max_entries;
+       __le16  mrav_entry_size;
+       __le16  tim_entry_size;
+       __le32  tim_max_entries;
+       u8      unused_0[2];
+       u8      tqm_entries_multiple;
+       u8      valid;
+};
+
+/* hwrm_func_backing_store_cfg_input (size:2048b/256B) */
+struct hwrm_func_backing_store_cfg_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le32  flags;
+       #define FUNC_BACKING_STORE_CFG_REQ_FLAGS_PREBOOT_MODE     0x1UL
+       __le32  enables;
+       #define FUNC_BACKING_STORE_CFG_REQ_ENABLES_QP            0x1UL
+       #define FUNC_BACKING_STORE_CFG_REQ_ENABLES_SRQ           0x2UL
+       #define FUNC_BACKING_STORE_CFG_REQ_ENABLES_CQ            0x4UL
+       #define FUNC_BACKING_STORE_CFG_REQ_ENABLES_VNIC          0x8UL
+       #define FUNC_BACKING_STORE_CFG_REQ_ENABLES_STAT          0x10UL
+       #define FUNC_BACKING_STORE_CFG_REQ_ENABLES_TQM_SP        0x20UL
+       #define FUNC_BACKING_STORE_CFG_REQ_ENABLES_TQM_RING0     0x40UL
+       #define FUNC_BACKING_STORE_CFG_REQ_ENABLES_TQM_RING1     0x80UL
+       #define FUNC_BACKING_STORE_CFG_REQ_ENABLES_TQM_RING2     0x100UL
+       #define FUNC_BACKING_STORE_CFG_REQ_ENABLES_TQM_RING3     0x200UL
+       #define FUNC_BACKING_STORE_CFG_REQ_ENABLES_TQM_RING4     0x400UL
+       #define FUNC_BACKING_STORE_CFG_REQ_ENABLES_TQM_RING5     0x800UL
+       #define FUNC_BACKING_STORE_CFG_REQ_ENABLES_TQM_RING6     0x1000UL
+       #define FUNC_BACKING_STORE_CFG_REQ_ENABLES_TQM_RING7     0x2000UL
+       #define FUNC_BACKING_STORE_CFG_REQ_ENABLES_MRAV          0x4000UL
+       #define FUNC_BACKING_STORE_CFG_REQ_ENABLES_TIM           0x8000UL
+       u8      qpc_pg_size_qpc_lvl;
+       #define FUNC_BACKING_STORE_CFG_REQ_QPC_LVL_MASK      0xfUL
+       #define FUNC_BACKING_STORE_CFG_REQ_QPC_LVL_SFT       0
+       #define FUNC_BACKING_STORE_CFG_REQ_QPC_LVL_LVL_0       0x0UL
+       #define FUNC_BACKING_STORE_CFG_REQ_QPC_LVL_LVL_1       0x1UL
+       #define FUNC_BACKING_STORE_CFG_REQ_QPC_LVL_LVL_2       0x2UL
+       #define FUNC_BACKING_STORE_CFG_REQ_QPC_LVL_LAST       FUNC_BACKING_STORE_CFG_REQ_QPC_LVL_LVL_2
+       #define FUNC_BACKING_STORE_CFG_REQ_QPC_PG_SIZE_MASK  0xf0UL
+       #define FUNC_BACKING_STORE_CFG_REQ_QPC_PG_SIZE_SFT   4
+       #define FUNC_BACKING_STORE_CFG_REQ_QPC_PG_SIZE_PG_4K   (0x0UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_QPC_PG_SIZE_PG_8K   (0x1UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_QPC_PG_SIZE_PG_64K  (0x2UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_QPC_PG_SIZE_PG_2M   (0x3UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_QPC_PG_SIZE_PG_8M   (0x4UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_QPC_PG_SIZE_PG_1G   (0x5UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_QPC_PG_SIZE_LAST   FUNC_BACKING_STORE_CFG_REQ_QPC_PG_SIZE_PG_1G
+       u8      srq_pg_size_srq_lvl;
+       #define FUNC_BACKING_STORE_CFG_REQ_SRQ_LVL_MASK      0xfUL
+       #define FUNC_BACKING_STORE_CFG_REQ_SRQ_LVL_SFT       0
+       #define FUNC_BACKING_STORE_CFG_REQ_SRQ_LVL_LVL_0       0x0UL
+       #define FUNC_BACKING_STORE_CFG_REQ_SRQ_LVL_LVL_1       0x1UL
+       #define FUNC_BACKING_STORE_CFG_REQ_SRQ_LVL_LVL_2       0x2UL
+       #define FUNC_BACKING_STORE_CFG_REQ_SRQ_LVL_LAST       FUNC_BACKING_STORE_CFG_REQ_SRQ_LVL_LVL_2
+       #define FUNC_BACKING_STORE_CFG_REQ_SRQ_PG_SIZE_MASK  0xf0UL
+       #define FUNC_BACKING_STORE_CFG_REQ_SRQ_PG_SIZE_SFT   4
+       #define FUNC_BACKING_STORE_CFG_REQ_SRQ_PG_SIZE_PG_4K   (0x0UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_SRQ_PG_SIZE_PG_8K   (0x1UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_SRQ_PG_SIZE_PG_64K  (0x2UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_SRQ_PG_SIZE_PG_2M   (0x3UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_SRQ_PG_SIZE_PG_8M   (0x4UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_SRQ_PG_SIZE_PG_1G   (0x5UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_SRQ_PG_SIZE_LAST   FUNC_BACKING_STORE_CFG_REQ_SRQ_PG_SIZE_PG_1G
+       u8      cq_pg_size_cq_lvl;
+       #define FUNC_BACKING_STORE_CFG_REQ_CQ_LVL_MASK      0xfUL
+       #define FUNC_BACKING_STORE_CFG_REQ_CQ_LVL_SFT       0
+       #define FUNC_BACKING_STORE_CFG_REQ_CQ_LVL_LVL_0       0x0UL
+       #define FUNC_BACKING_STORE_CFG_REQ_CQ_LVL_LVL_1       0x1UL
+       #define FUNC_BACKING_STORE_CFG_REQ_CQ_LVL_LVL_2       0x2UL
+       #define FUNC_BACKING_STORE_CFG_REQ_CQ_LVL_LAST       FUNC_BACKING_STORE_CFG_REQ_CQ_LVL_LVL_2
+       #define FUNC_BACKING_STORE_CFG_REQ_CQ_PG_SIZE_MASK  0xf0UL
+       #define FUNC_BACKING_STORE_CFG_REQ_CQ_PG_SIZE_SFT   4
+       #define FUNC_BACKING_STORE_CFG_REQ_CQ_PG_SIZE_PG_4K   (0x0UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_CQ_PG_SIZE_PG_8K   (0x1UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_CQ_PG_SIZE_PG_64K  (0x2UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_CQ_PG_SIZE_PG_2M   (0x3UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_CQ_PG_SIZE_PG_8M   (0x4UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_CQ_PG_SIZE_PG_1G   (0x5UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_CQ_PG_SIZE_LAST   FUNC_BACKING_STORE_CFG_REQ_CQ_PG_SIZE_PG_1G
+       u8      vnic_pg_size_vnic_lvl;
+       #define FUNC_BACKING_STORE_CFG_REQ_VNIC_LVL_MASK      0xfUL
+       #define FUNC_BACKING_STORE_CFG_REQ_VNIC_LVL_SFT       0
+       #define FUNC_BACKING_STORE_CFG_REQ_VNIC_LVL_LVL_0       0x0UL
+       #define FUNC_BACKING_STORE_CFG_REQ_VNIC_LVL_LVL_1       0x1UL
+       #define FUNC_BACKING_STORE_CFG_REQ_VNIC_LVL_LVL_2       0x2UL
+       #define FUNC_BACKING_STORE_CFG_REQ_VNIC_LVL_LAST       FUNC_BACKING_STORE_CFG_REQ_VNIC_LVL_LVL_2
+       #define FUNC_BACKING_STORE_CFG_REQ_VNIC_PG_SIZE_MASK  0xf0UL
+       #define FUNC_BACKING_STORE_CFG_REQ_VNIC_PG_SIZE_SFT   4
+       #define FUNC_BACKING_STORE_CFG_REQ_VNIC_PG_SIZE_PG_4K   (0x0UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_VNIC_PG_SIZE_PG_8K   (0x1UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_VNIC_PG_SIZE_PG_64K  (0x2UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_VNIC_PG_SIZE_PG_2M   (0x3UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_VNIC_PG_SIZE_PG_8M   (0x4UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_VNIC_PG_SIZE_PG_1G   (0x5UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_VNIC_PG_SIZE_LAST   FUNC_BACKING_STORE_CFG_REQ_VNIC_PG_SIZE_PG_1G
+       u8      stat_pg_size_stat_lvl;
+       #define FUNC_BACKING_STORE_CFG_REQ_STAT_LVL_MASK      0xfUL
+       #define FUNC_BACKING_STORE_CFG_REQ_STAT_LVL_SFT       0
+       #define FUNC_BACKING_STORE_CFG_REQ_STAT_LVL_LVL_0       0x0UL
+       #define FUNC_BACKING_STORE_CFG_REQ_STAT_LVL_LVL_1       0x1UL
+       #define FUNC_BACKING_STORE_CFG_REQ_STAT_LVL_LVL_2       0x2UL
+       #define FUNC_BACKING_STORE_CFG_REQ_STAT_LVL_LAST       FUNC_BACKING_STORE_CFG_REQ_STAT_LVL_LVL_2
+       #define FUNC_BACKING_STORE_CFG_REQ_STAT_PG_SIZE_MASK  0xf0UL
+       #define FUNC_BACKING_STORE_CFG_REQ_STAT_PG_SIZE_SFT   4
+       #define FUNC_BACKING_STORE_CFG_REQ_STAT_PG_SIZE_PG_4K   (0x0UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_STAT_PG_SIZE_PG_8K   (0x1UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_STAT_PG_SIZE_PG_64K  (0x2UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_STAT_PG_SIZE_PG_2M   (0x3UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_STAT_PG_SIZE_PG_8M   (0x4UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_STAT_PG_SIZE_PG_1G   (0x5UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_STAT_PG_SIZE_LAST   FUNC_BACKING_STORE_CFG_REQ_STAT_PG_SIZE_PG_1G
+       u8      tqm_sp_pg_size_tqm_sp_lvl;
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_SP_LVL_MASK      0xfUL
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_SP_LVL_SFT       0
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_SP_LVL_LVL_0       0x0UL
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_SP_LVL_LVL_1       0x1UL
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_SP_LVL_LVL_2       0x2UL
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_SP_LVL_LAST       FUNC_BACKING_STORE_CFG_REQ_TQM_SP_LVL_LVL_2
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_SP_PG_SIZE_MASK  0xf0UL
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_SP_PG_SIZE_SFT   4
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_SP_PG_SIZE_PG_4K   (0x0UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_SP_PG_SIZE_PG_8K   (0x1UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_SP_PG_SIZE_PG_64K  (0x2UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_SP_PG_SIZE_PG_2M   (0x3UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_SP_PG_SIZE_PG_8M   (0x4UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_SP_PG_SIZE_PG_1G   (0x5UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_SP_PG_SIZE_LAST   FUNC_BACKING_STORE_CFG_REQ_TQM_SP_PG_SIZE_PG_1G
+       u8      tqm_ring0_pg_size_tqm_ring0_lvl;
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING0_LVL_MASK      0xfUL
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING0_LVL_SFT       0
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING0_LVL_LVL_0       0x0UL
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING0_LVL_LVL_1       0x1UL
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING0_LVL_LVL_2       0x2UL
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING0_LVL_LAST       FUNC_BACKING_STORE_CFG_REQ_TQM_RING0_LVL_LVL_2
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING0_PG_SIZE_MASK  0xf0UL
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING0_PG_SIZE_SFT   4
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING0_PG_SIZE_PG_4K   (0x0UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING0_PG_SIZE_PG_8K   (0x1UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING0_PG_SIZE_PG_64K  (0x2UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING0_PG_SIZE_PG_2M   (0x3UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING0_PG_SIZE_PG_8M   (0x4UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING0_PG_SIZE_PG_1G   (0x5UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING0_PG_SIZE_LAST   FUNC_BACKING_STORE_CFG_REQ_TQM_RING0_PG_SIZE_PG_1G
+       u8      tqm_ring1_pg_size_tqm_ring1_lvl;
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING1_LVL_MASK      0xfUL
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING1_LVL_SFT       0
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING1_LVL_LVL_0       0x0UL
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING1_LVL_LVL_1       0x1UL
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING1_LVL_LVL_2       0x2UL
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING1_LVL_LAST       FUNC_BACKING_STORE_CFG_REQ_TQM_RING1_LVL_LVL_2
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING1_PG_SIZE_MASK  0xf0UL
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING1_PG_SIZE_SFT   4
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING1_PG_SIZE_PG_4K   (0x0UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING1_PG_SIZE_PG_8K   (0x1UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING1_PG_SIZE_PG_64K  (0x2UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING1_PG_SIZE_PG_2M   (0x3UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING1_PG_SIZE_PG_8M   (0x4UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING1_PG_SIZE_PG_1G   (0x5UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING1_PG_SIZE_LAST   FUNC_BACKING_STORE_CFG_REQ_TQM_RING1_PG_SIZE_PG_1G
+       u8      tqm_ring2_pg_size_tqm_ring2_lvl;
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING2_LVL_MASK      0xfUL
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING2_LVL_SFT       0
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING2_LVL_LVL_0       0x0UL
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING2_LVL_LVL_1       0x1UL
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING2_LVL_LVL_2       0x2UL
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING2_LVL_LAST       FUNC_BACKING_STORE_CFG_REQ_TQM_RING2_LVL_LVL_2
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING2_PG_SIZE_MASK  0xf0UL
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING2_PG_SIZE_SFT   4
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING2_PG_SIZE_PG_4K   (0x0UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING2_PG_SIZE_PG_8K   (0x1UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING2_PG_SIZE_PG_64K  (0x2UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING2_PG_SIZE_PG_2M   (0x3UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING2_PG_SIZE_PG_8M   (0x4UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING2_PG_SIZE_PG_1G   (0x5UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING2_PG_SIZE_LAST   FUNC_BACKING_STORE_CFG_REQ_TQM_RING2_PG_SIZE_PG_1G
+       u8      tqm_ring3_pg_size_tqm_ring3_lvl;
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING3_LVL_MASK      0xfUL
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING3_LVL_SFT       0
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING3_LVL_LVL_0       0x0UL
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING3_LVL_LVL_1       0x1UL
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING3_LVL_LVL_2       0x2UL
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING3_LVL_LAST       FUNC_BACKING_STORE_CFG_REQ_TQM_RING3_LVL_LVL_2
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING3_PG_SIZE_MASK  0xf0UL
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING3_PG_SIZE_SFT   4
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING3_PG_SIZE_PG_4K   (0x0UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING3_PG_SIZE_PG_8K   (0x1UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING3_PG_SIZE_PG_64K  (0x2UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING3_PG_SIZE_PG_2M   (0x3UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING3_PG_SIZE_PG_8M   (0x4UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING3_PG_SIZE_PG_1G   (0x5UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING3_PG_SIZE_LAST   FUNC_BACKING_STORE_CFG_REQ_TQM_RING3_PG_SIZE_PG_1G
+       u8      tqm_ring4_pg_size_tqm_ring4_lvl;
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING4_LVL_MASK      0xfUL
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING4_LVL_SFT       0
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING4_LVL_LVL_0       0x0UL
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING4_LVL_LVL_1       0x1UL
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING4_LVL_LVL_2       0x2UL
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING4_LVL_LAST       FUNC_BACKING_STORE_CFG_REQ_TQM_RING4_LVL_LVL_2
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING4_PG_SIZE_MASK  0xf0UL
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING4_PG_SIZE_SFT   4
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING4_PG_SIZE_PG_4K   (0x0UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING4_PG_SIZE_PG_8K   (0x1UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING4_PG_SIZE_PG_64K  (0x2UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING4_PG_SIZE_PG_2M   (0x3UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING4_PG_SIZE_PG_8M   (0x4UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING4_PG_SIZE_PG_1G   (0x5UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING4_PG_SIZE_LAST   FUNC_BACKING_STORE_CFG_REQ_TQM_RING4_PG_SIZE_PG_1G
+       u8      tqm_ring5_pg_size_tqm_ring5_lvl;
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING5_LVL_MASK      0xfUL
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING5_LVL_SFT       0
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING5_LVL_LVL_0       0x0UL
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING5_LVL_LVL_1       0x1UL
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING5_LVL_LVL_2       0x2UL
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING5_LVL_LAST       FUNC_BACKING_STORE_CFG_REQ_TQM_RING5_LVL_LVL_2
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING5_PG_SIZE_MASK  0xf0UL
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING5_PG_SIZE_SFT   4
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING5_PG_SIZE_PG_4K   (0x0UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING5_PG_SIZE_PG_8K   (0x1UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING5_PG_SIZE_PG_64K  (0x2UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING5_PG_SIZE_PG_2M   (0x3UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING5_PG_SIZE_PG_8M   (0x4UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING5_PG_SIZE_PG_1G   (0x5UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING5_PG_SIZE_LAST   FUNC_BACKING_STORE_CFG_REQ_TQM_RING5_PG_SIZE_PG_1G
+       u8      tqm_ring6_pg_size_tqm_ring6_lvl;
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING6_LVL_MASK      0xfUL
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING6_LVL_SFT       0
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING6_LVL_LVL_0       0x0UL
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING6_LVL_LVL_1       0x1UL
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING6_LVL_LVL_2       0x2UL
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING6_LVL_LAST       FUNC_BACKING_STORE_CFG_REQ_TQM_RING6_LVL_LVL_2
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING6_PG_SIZE_MASK  0xf0UL
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING6_PG_SIZE_SFT   4
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING6_PG_SIZE_PG_4K   (0x0UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING6_PG_SIZE_PG_8K   (0x1UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING6_PG_SIZE_PG_64K  (0x2UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING6_PG_SIZE_PG_2M   (0x3UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING6_PG_SIZE_PG_8M   (0x4UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING6_PG_SIZE_PG_1G   (0x5UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING6_PG_SIZE_LAST   FUNC_BACKING_STORE_CFG_REQ_TQM_RING6_PG_SIZE_PG_1G
+       u8      tqm_ring7_pg_size_tqm_ring7_lvl;
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING7_LVL_MASK      0xfUL
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING7_LVL_SFT       0
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING7_LVL_LVL_0       0x0UL
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING7_LVL_LVL_1       0x1UL
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING7_LVL_LVL_2       0x2UL
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING7_LVL_LAST       FUNC_BACKING_STORE_CFG_REQ_TQM_RING7_LVL_LVL_2
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING7_PG_SIZE_MASK  0xf0UL
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING7_PG_SIZE_SFT   4
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING7_PG_SIZE_PG_4K   (0x0UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING7_PG_SIZE_PG_8K   (0x1UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING7_PG_SIZE_PG_64K  (0x2UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING7_PG_SIZE_PG_2M   (0x3UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING7_PG_SIZE_PG_8M   (0x4UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING7_PG_SIZE_PG_1G   (0x5UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_TQM_RING7_PG_SIZE_LAST   FUNC_BACKING_STORE_CFG_REQ_TQM_RING7_PG_SIZE_PG_1G
+       u8      mrav_pg_size_mrav_lvl;
+       #define FUNC_BACKING_STORE_CFG_REQ_MRAV_LVL_MASK      0xfUL
+       #define FUNC_BACKING_STORE_CFG_REQ_MRAV_LVL_SFT       0
+       #define FUNC_BACKING_STORE_CFG_REQ_MRAV_LVL_LVL_0       0x0UL
+       #define FUNC_BACKING_STORE_CFG_REQ_MRAV_LVL_LVL_1       0x1UL
+       #define FUNC_BACKING_STORE_CFG_REQ_MRAV_LVL_LVL_2       0x2UL
+       #define FUNC_BACKING_STORE_CFG_REQ_MRAV_LVL_LAST       FUNC_BACKING_STORE_CFG_REQ_MRAV_LVL_LVL_2
+       #define FUNC_BACKING_STORE_CFG_REQ_MRAV_PG_SIZE_MASK  0xf0UL
+       #define FUNC_BACKING_STORE_CFG_REQ_MRAV_PG_SIZE_SFT   4
+       #define FUNC_BACKING_STORE_CFG_REQ_MRAV_PG_SIZE_PG_4K   (0x0UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_MRAV_PG_SIZE_PG_8K   (0x1UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_MRAV_PG_SIZE_PG_64K  (0x2UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_MRAV_PG_SIZE_PG_2M   (0x3UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_MRAV_PG_SIZE_PG_8M   (0x4UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_MRAV_PG_SIZE_PG_1G   (0x5UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_MRAV_PG_SIZE_LAST   FUNC_BACKING_STORE_CFG_REQ_MRAV_PG_SIZE_PG_1G
+       u8      tim_pg_size_tim_lvl;
+       #define FUNC_BACKING_STORE_CFG_REQ_TIM_LVL_MASK      0xfUL
+       #define FUNC_BACKING_STORE_CFG_REQ_TIM_LVL_SFT       0
+       #define FUNC_BACKING_STORE_CFG_REQ_TIM_LVL_LVL_0       0x0UL
+       #define FUNC_BACKING_STORE_CFG_REQ_TIM_LVL_LVL_1       0x1UL
+       #define FUNC_BACKING_STORE_CFG_REQ_TIM_LVL_LVL_2       0x2UL
+       #define FUNC_BACKING_STORE_CFG_REQ_TIM_LVL_LAST       FUNC_BACKING_STORE_CFG_REQ_TIM_LVL_LVL_2
+       #define FUNC_BACKING_STORE_CFG_REQ_TIM_PG_SIZE_MASK  0xf0UL
+       #define FUNC_BACKING_STORE_CFG_REQ_TIM_PG_SIZE_SFT   4
+       #define FUNC_BACKING_STORE_CFG_REQ_TIM_PG_SIZE_PG_4K   (0x0UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_TIM_PG_SIZE_PG_8K   (0x1UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_TIM_PG_SIZE_PG_64K  (0x2UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_TIM_PG_SIZE_PG_2M   (0x3UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_TIM_PG_SIZE_PG_8M   (0x4UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_TIM_PG_SIZE_PG_1G   (0x5UL << 4)
+       #define FUNC_BACKING_STORE_CFG_REQ_TIM_PG_SIZE_LAST   FUNC_BACKING_STORE_CFG_REQ_TIM_PG_SIZE_PG_1G
+       __le64  qpc_page_dir;
+       __le64  srq_page_dir;
+       __le64  cq_page_dir;
+       __le64  vnic_page_dir;
+       __le64  stat_page_dir;
+       __le64  tqm_sp_page_dir;
+       __le64  tqm_ring0_page_dir;
+       __le64  tqm_ring1_page_dir;
+       __le64  tqm_ring2_page_dir;
+       __le64  tqm_ring3_page_dir;
+       __le64  tqm_ring4_page_dir;
+       __le64  tqm_ring5_page_dir;
+       __le64  tqm_ring6_page_dir;
+       __le64  tqm_ring7_page_dir;
+       __le64  mrav_page_dir;
+       __le64  tim_page_dir;
+       __le32  qp_num_entries;
+       __le32  srq_num_entries;
+       __le32  cq_num_entries;
+       __le32  stat_num_entries;
+       __le32  tqm_sp_num_entries;
+       __le32  tqm_ring0_num_entries;
+       __le32  tqm_ring1_num_entries;
+       __le32  tqm_ring2_num_entries;
+       __le32  tqm_ring3_num_entries;
+       __le32  tqm_ring4_num_entries;
+       __le32  tqm_ring5_num_entries;
+       __le32  tqm_ring6_num_entries;
+       __le32  tqm_ring7_num_entries;
+       __le32  mrav_num_entries;
+       __le32  tim_num_entries;
+       __le16  qp_num_qp1_entries;
+       __le16  qp_num_l2_entries;
+       __le16  qp_entry_size;
+       __le16  srq_num_l2_entries;
+       __le16  srq_entry_size;
+       __le16  cq_num_l2_entries;
+       __le16  cq_entry_size;
+       __le16  vnic_num_vnic_entries;
+       __le16  vnic_num_ring_table_entries;
+       __le16  vnic_entry_size;
+       __le16  stat_entry_size;
+       __le16  tqm_entry_size;
+       __le16  mrav_entry_size;
+       __le16  tim_entry_size;
+};
+
+/* hwrm_func_backing_store_cfg_output (size:128b/16B) */
+struct hwrm_func_backing_store_cfg_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_func_backing_store_qcfg_input (size:128b/16B) */
+struct hwrm_func_backing_store_qcfg_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+};
+
+/* hwrm_func_backing_store_qcfg_output (size:1920b/240B) */
+struct hwrm_func_backing_store_qcfg_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le32  flags;
+       #define FUNC_BACKING_STORE_QCFG_RESP_FLAGS_PREBOOT_MODE     0x1UL
+       u8      unused_0[4];
+       #define FUNC_BACKING_STORE_QCFG_RESP_UNUSED_0_QP            0x1UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_UNUSED_0_SRQ           0x2UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_UNUSED_0_CQ            0x4UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_UNUSED_0_VNIC          0x8UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_UNUSED_0_STAT          0x10UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_UNUSED_0_TQM_SP        0x20UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_UNUSED_0_TQM_RING0     0x40UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_UNUSED_0_TQM_RING1     0x80UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_UNUSED_0_TQM_RING2     0x100UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_UNUSED_0_TQM_RING3     0x200UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_UNUSED_0_TQM_RING4     0x400UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_UNUSED_0_TQM_RING5     0x800UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_UNUSED_0_TQM_RING6     0x1000UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_UNUSED_0_TQM_RING7     0x2000UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_UNUSED_0_MRAV          0x4000UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_UNUSED_0_TIM           0x8000UL
+       u8      qpc_pg_size_qpc_lvl;
+       #define FUNC_BACKING_STORE_QCFG_RESP_QPC_LVL_MASK      0xfUL
+       #define FUNC_BACKING_STORE_QCFG_RESP_QPC_LVL_SFT       0
+       #define FUNC_BACKING_STORE_QCFG_RESP_QPC_LVL_LVL_0       0x0UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_QPC_LVL_LVL_1       0x1UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_QPC_LVL_LVL_2       0x2UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_QPC_LVL_LAST       FUNC_BACKING_STORE_QCFG_RESP_QPC_LVL_LVL_2
+       #define FUNC_BACKING_STORE_QCFG_RESP_QPC_PG_SIZE_MASK  0xf0UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_QPC_PG_SIZE_SFT   4
+       #define FUNC_BACKING_STORE_QCFG_RESP_QPC_PG_SIZE_PG_4K   (0x0UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_QPC_PG_SIZE_PG_8K   (0x1UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_QPC_PG_SIZE_PG_64K  (0x2UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_QPC_PG_SIZE_PG_2M   (0x3UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_QPC_PG_SIZE_PG_8M   (0x4UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_QPC_PG_SIZE_PG_1G   (0x5UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_QPC_PG_SIZE_LAST   FUNC_BACKING_STORE_QCFG_RESP_QPC_PG_SIZE_PG_1G
+       u8      srq_pg_size_srq_lvl;
+       #define FUNC_BACKING_STORE_QCFG_RESP_SRQ_LVL_MASK      0xfUL
+       #define FUNC_BACKING_STORE_QCFG_RESP_SRQ_LVL_SFT       0
+       #define FUNC_BACKING_STORE_QCFG_RESP_SRQ_LVL_LVL_0       0x0UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_SRQ_LVL_LVL_1       0x1UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_SRQ_LVL_LVL_2       0x2UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_SRQ_LVL_LAST       FUNC_BACKING_STORE_QCFG_RESP_SRQ_LVL_LVL_2
+       #define FUNC_BACKING_STORE_QCFG_RESP_SRQ_PG_SIZE_MASK  0xf0UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_SRQ_PG_SIZE_SFT   4
+       #define FUNC_BACKING_STORE_QCFG_RESP_SRQ_PG_SIZE_PG_4K   (0x0UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_SRQ_PG_SIZE_PG_8K   (0x1UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_SRQ_PG_SIZE_PG_64K  (0x2UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_SRQ_PG_SIZE_PG_2M   (0x3UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_SRQ_PG_SIZE_PG_8M   (0x4UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_SRQ_PG_SIZE_PG_1G   (0x5UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_SRQ_PG_SIZE_LAST   FUNC_BACKING_STORE_QCFG_RESP_SRQ_PG_SIZE_PG_1G
+       u8      cq_pg_size_cq_lvl;
+       #define FUNC_BACKING_STORE_QCFG_RESP_CQ_LVL_MASK      0xfUL
+       #define FUNC_BACKING_STORE_QCFG_RESP_CQ_LVL_SFT       0
+       #define FUNC_BACKING_STORE_QCFG_RESP_CQ_LVL_LVL_0       0x0UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_CQ_LVL_LVL_1       0x1UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_CQ_LVL_LVL_2       0x2UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_CQ_LVL_LAST       FUNC_BACKING_STORE_QCFG_RESP_CQ_LVL_LVL_2
+       #define FUNC_BACKING_STORE_QCFG_RESP_CQ_PG_SIZE_MASK  0xf0UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_CQ_PG_SIZE_SFT   4
+       #define FUNC_BACKING_STORE_QCFG_RESP_CQ_PG_SIZE_PG_4K   (0x0UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_CQ_PG_SIZE_PG_8K   (0x1UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_CQ_PG_SIZE_PG_64K  (0x2UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_CQ_PG_SIZE_PG_2M   (0x3UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_CQ_PG_SIZE_PG_8M   (0x4UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_CQ_PG_SIZE_PG_1G   (0x5UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_CQ_PG_SIZE_LAST   FUNC_BACKING_STORE_QCFG_RESP_CQ_PG_SIZE_PG_1G
+       u8      vnic_pg_size_vnic_lvl;
+       #define FUNC_BACKING_STORE_QCFG_RESP_VNIC_LVL_MASK      0xfUL
+       #define FUNC_BACKING_STORE_QCFG_RESP_VNIC_LVL_SFT       0
+       #define FUNC_BACKING_STORE_QCFG_RESP_VNIC_LVL_LVL_0       0x0UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_VNIC_LVL_LVL_1       0x1UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_VNIC_LVL_LVL_2       0x2UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_VNIC_LVL_LAST       FUNC_BACKING_STORE_QCFG_RESP_VNIC_LVL_LVL_2
+       #define FUNC_BACKING_STORE_QCFG_RESP_VNIC_PG_SIZE_MASK  0xf0UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_VNIC_PG_SIZE_SFT   4
+       #define FUNC_BACKING_STORE_QCFG_RESP_VNIC_PG_SIZE_PG_4K   (0x0UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_VNIC_PG_SIZE_PG_8K   (0x1UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_VNIC_PG_SIZE_PG_64K  (0x2UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_VNIC_PG_SIZE_PG_2M   (0x3UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_VNIC_PG_SIZE_PG_8M   (0x4UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_VNIC_PG_SIZE_PG_1G   (0x5UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_VNIC_PG_SIZE_LAST   FUNC_BACKING_STORE_QCFG_RESP_VNIC_PG_SIZE_PG_1G
+       u8      stat_pg_size_stat_lvl;
+       #define FUNC_BACKING_STORE_QCFG_RESP_STAT_LVL_MASK      0xfUL
+       #define FUNC_BACKING_STORE_QCFG_RESP_STAT_LVL_SFT       0
+       #define FUNC_BACKING_STORE_QCFG_RESP_STAT_LVL_LVL_0       0x0UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_STAT_LVL_LVL_1       0x1UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_STAT_LVL_LVL_2       0x2UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_STAT_LVL_LAST       FUNC_BACKING_STORE_QCFG_RESP_STAT_LVL_LVL_2
+       #define FUNC_BACKING_STORE_QCFG_RESP_STAT_PG_SIZE_MASK  0xf0UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_STAT_PG_SIZE_SFT   4
+       #define FUNC_BACKING_STORE_QCFG_RESP_STAT_PG_SIZE_PG_4K   (0x0UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_STAT_PG_SIZE_PG_8K   (0x1UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_STAT_PG_SIZE_PG_64K  (0x2UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_STAT_PG_SIZE_PG_2M   (0x3UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_STAT_PG_SIZE_PG_8M   (0x4UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_STAT_PG_SIZE_PG_1G   (0x5UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_STAT_PG_SIZE_LAST   FUNC_BACKING_STORE_QCFG_RESP_STAT_PG_SIZE_PG_1G
+       u8      tqm_sp_pg_size_tqm_sp_lvl;
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_SP_LVL_MASK      0xfUL
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_SP_LVL_SFT       0
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_SP_LVL_LVL_0       0x0UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_SP_LVL_LVL_1       0x1UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_SP_LVL_LVL_2       0x2UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_SP_LVL_LAST       FUNC_BACKING_STORE_QCFG_RESP_TQM_SP_LVL_LVL_2
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_SP_PG_SIZE_MASK  0xf0UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_SP_PG_SIZE_SFT   4
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_SP_PG_SIZE_PG_4K   (0x0UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_SP_PG_SIZE_PG_8K   (0x1UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_SP_PG_SIZE_PG_64K  (0x2UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_SP_PG_SIZE_PG_2M   (0x3UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_SP_PG_SIZE_PG_8M   (0x4UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_SP_PG_SIZE_PG_1G   (0x5UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_SP_PG_SIZE_LAST   FUNC_BACKING_STORE_QCFG_RESP_TQM_SP_PG_SIZE_PG_1G
+       u8      tqm_ring0_pg_size_tqm_ring0_lvl;
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING0_LVL_MASK      0xfUL
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING0_LVL_SFT       0
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING0_LVL_LVL_0       0x0UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING0_LVL_LVL_1       0x1UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING0_LVL_LVL_2       0x2UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING0_LVL_LAST       FUNC_BACKING_STORE_QCFG_RESP_TQM_RING0_LVL_LVL_2
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING0_PG_SIZE_MASK  0xf0UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING0_PG_SIZE_SFT   4
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING0_PG_SIZE_PG_4K   (0x0UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING0_PG_SIZE_PG_8K   (0x1UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING0_PG_SIZE_PG_64K  (0x2UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING0_PG_SIZE_PG_2M   (0x3UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING0_PG_SIZE_PG_8M   (0x4UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING0_PG_SIZE_PG_1G   (0x5UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING0_PG_SIZE_LAST   FUNC_BACKING_STORE_QCFG_RESP_TQM_RING0_PG_SIZE_PG_1G
+       u8      tqm_ring1_pg_size_tqm_ring1_lvl;
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING1_LVL_MASK      0xfUL
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING1_LVL_SFT       0
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING1_LVL_LVL_0       0x0UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING1_LVL_LVL_1       0x1UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING1_LVL_LVL_2       0x2UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING1_LVL_LAST       FUNC_BACKING_STORE_QCFG_RESP_TQM_RING1_LVL_LVL_2
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING1_PG_SIZE_MASK  0xf0UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING1_PG_SIZE_SFT   4
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING1_PG_SIZE_PG_4K   (0x0UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING1_PG_SIZE_PG_8K   (0x1UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING1_PG_SIZE_PG_64K  (0x2UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING1_PG_SIZE_PG_2M   (0x3UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING1_PG_SIZE_PG_8M   (0x4UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING1_PG_SIZE_PG_1G   (0x5UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING1_PG_SIZE_LAST   FUNC_BACKING_STORE_QCFG_RESP_TQM_RING1_PG_SIZE_PG_1G
+       u8      tqm_ring2_pg_size_tqm_ring2_lvl;
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING2_LVL_MASK      0xfUL
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING2_LVL_SFT       0
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING2_LVL_LVL_0       0x0UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING2_LVL_LVL_1       0x1UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING2_LVL_LVL_2       0x2UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING2_LVL_LAST       FUNC_BACKING_STORE_QCFG_RESP_TQM_RING2_LVL_LVL_2
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING2_PG_SIZE_MASK  0xf0UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING2_PG_SIZE_SFT   4
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING2_PG_SIZE_PG_4K   (0x0UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING2_PG_SIZE_PG_8K   (0x1UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING2_PG_SIZE_PG_64K  (0x2UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING2_PG_SIZE_PG_2M   (0x3UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING2_PG_SIZE_PG_8M   (0x4UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING2_PG_SIZE_PG_1G   (0x5UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING2_PG_SIZE_LAST   FUNC_BACKING_STORE_QCFG_RESP_TQM_RING2_PG_SIZE_PG_1G
+       u8      tqm_ring3_pg_size_tqm_ring3_lvl;
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING3_LVL_MASK      0xfUL
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING3_LVL_SFT       0
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING3_LVL_LVL_0       0x0UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING3_LVL_LVL_1       0x1UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING3_LVL_LVL_2       0x2UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING3_LVL_LAST       FUNC_BACKING_STORE_QCFG_RESP_TQM_RING3_LVL_LVL_2
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING3_PG_SIZE_MASK  0xf0UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING3_PG_SIZE_SFT   4
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING3_PG_SIZE_PG_4K   (0x0UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING3_PG_SIZE_PG_8K   (0x1UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING3_PG_SIZE_PG_64K  (0x2UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING3_PG_SIZE_PG_2M   (0x3UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING3_PG_SIZE_PG_8M   (0x4UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING3_PG_SIZE_PG_1G   (0x5UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING3_PG_SIZE_LAST   FUNC_BACKING_STORE_QCFG_RESP_TQM_RING3_PG_SIZE_PG_1G
+       u8      tqm_ring4_pg_size_tqm_ring4_lvl;
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING4_LVL_MASK      0xfUL
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING4_LVL_SFT       0
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING4_LVL_LVL_0       0x0UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING4_LVL_LVL_1       0x1UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING4_LVL_LVL_2       0x2UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING4_LVL_LAST       FUNC_BACKING_STORE_QCFG_RESP_TQM_RING4_LVL_LVL_2
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING4_PG_SIZE_MASK  0xf0UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING4_PG_SIZE_SFT   4
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING4_PG_SIZE_PG_4K   (0x0UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING4_PG_SIZE_PG_8K   (0x1UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING4_PG_SIZE_PG_64K  (0x2UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING4_PG_SIZE_PG_2M   (0x3UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING4_PG_SIZE_PG_8M   (0x4UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING4_PG_SIZE_PG_1G   (0x5UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING4_PG_SIZE_LAST   FUNC_BACKING_STORE_QCFG_RESP_TQM_RING4_PG_SIZE_PG_1G
+       u8      tqm_ring5_pg_size_tqm_ring5_lvl;
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING5_LVL_MASK      0xfUL
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING5_LVL_SFT       0
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING5_LVL_LVL_0       0x0UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING5_LVL_LVL_1       0x1UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING5_LVL_LVL_2       0x2UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING5_LVL_LAST       FUNC_BACKING_STORE_QCFG_RESP_TQM_RING5_LVL_LVL_2
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING5_PG_SIZE_MASK  0xf0UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING5_PG_SIZE_SFT   4
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING5_PG_SIZE_PG_4K   (0x0UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING5_PG_SIZE_PG_8K   (0x1UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING5_PG_SIZE_PG_64K  (0x2UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING5_PG_SIZE_PG_2M   (0x3UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING5_PG_SIZE_PG_8M   (0x4UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING5_PG_SIZE_PG_1G   (0x5UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING5_PG_SIZE_LAST   FUNC_BACKING_STORE_QCFG_RESP_TQM_RING5_PG_SIZE_PG_1G
+       u8      tqm_ring6_pg_size_tqm_ring6_lvl;
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING6_LVL_MASK      0xfUL
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING6_LVL_SFT       0
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING6_LVL_LVL_0       0x0UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING6_LVL_LVL_1       0x1UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING6_LVL_LVL_2       0x2UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING6_LVL_LAST       FUNC_BACKING_STORE_QCFG_RESP_TQM_RING6_LVL_LVL_2
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING6_PG_SIZE_MASK  0xf0UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING6_PG_SIZE_SFT   4
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING6_PG_SIZE_PG_4K   (0x0UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING6_PG_SIZE_PG_8K   (0x1UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING6_PG_SIZE_PG_64K  (0x2UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING6_PG_SIZE_PG_2M   (0x3UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING6_PG_SIZE_PG_8M   (0x4UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING6_PG_SIZE_PG_1G   (0x5UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING6_PG_SIZE_LAST   FUNC_BACKING_STORE_QCFG_RESP_TQM_RING6_PG_SIZE_PG_1G
+       u8      tqm_ring7_pg_size_tqm_ring7_lvl;
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING7_LVL_MASK      0xfUL
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING7_LVL_SFT       0
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING7_LVL_LVL_0       0x0UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING7_LVL_LVL_1       0x1UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING7_LVL_LVL_2       0x2UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING7_LVL_LAST       FUNC_BACKING_STORE_QCFG_RESP_TQM_RING7_LVL_LVL_2
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING7_PG_SIZE_MASK  0xf0UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING7_PG_SIZE_SFT   4
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING7_PG_SIZE_PG_4K   (0x0UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING7_PG_SIZE_PG_8K   (0x1UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING7_PG_SIZE_PG_64K  (0x2UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING7_PG_SIZE_PG_2M   (0x3UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING7_PG_SIZE_PG_8M   (0x4UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING7_PG_SIZE_PG_1G   (0x5UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_TQM_RING7_PG_SIZE_LAST   FUNC_BACKING_STORE_QCFG_RESP_TQM_RING7_PG_SIZE_PG_1G
+       u8      mrav_pg_size_mrav_lvl;
+       #define FUNC_BACKING_STORE_QCFG_RESP_MRAV_LVL_MASK      0xfUL
+       #define FUNC_BACKING_STORE_QCFG_RESP_MRAV_LVL_SFT       0
+       #define FUNC_BACKING_STORE_QCFG_RESP_MRAV_LVL_LVL_0       0x0UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_MRAV_LVL_LVL_1       0x1UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_MRAV_LVL_LVL_2       0x2UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_MRAV_LVL_LAST       FUNC_BACKING_STORE_QCFG_RESP_MRAV_LVL_LVL_2
+       #define FUNC_BACKING_STORE_QCFG_RESP_MRAV_PG_SIZE_MASK  0xf0UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_MRAV_PG_SIZE_SFT   4
+       #define FUNC_BACKING_STORE_QCFG_RESP_MRAV_PG_SIZE_PG_4K   (0x0UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_MRAV_PG_SIZE_PG_8K   (0x1UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_MRAV_PG_SIZE_PG_64K  (0x2UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_MRAV_PG_SIZE_PG_2M   (0x3UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_MRAV_PG_SIZE_PG_8M   (0x4UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_MRAV_PG_SIZE_PG_1G   (0x5UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_MRAV_PG_SIZE_LAST   FUNC_BACKING_STORE_QCFG_RESP_MRAV_PG_SIZE_PG_1G
+       u8      tim_pg_size_tim_lvl;
+       #define FUNC_BACKING_STORE_QCFG_RESP_TIM_LVL_MASK      0xfUL
+       #define FUNC_BACKING_STORE_QCFG_RESP_TIM_LVL_SFT       0
+       #define FUNC_BACKING_STORE_QCFG_RESP_TIM_LVL_LVL_0       0x0UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_TIM_LVL_LVL_1       0x1UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_TIM_LVL_LVL_2       0x2UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_TIM_LVL_LAST       FUNC_BACKING_STORE_QCFG_RESP_TIM_LVL_LVL_2
+       #define FUNC_BACKING_STORE_QCFG_RESP_TIM_PG_SIZE_MASK  0xf0UL
+       #define FUNC_BACKING_STORE_QCFG_RESP_TIM_PG_SIZE_SFT   4
+       #define FUNC_BACKING_STORE_QCFG_RESP_TIM_PG_SIZE_PG_4K   (0x0UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_TIM_PG_SIZE_PG_8K   (0x1UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_TIM_PG_SIZE_PG_64K  (0x2UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_TIM_PG_SIZE_PG_2M   (0x3UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_TIM_PG_SIZE_PG_8M   (0x4UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_TIM_PG_SIZE_PG_1G   (0x5UL << 4)
+       #define FUNC_BACKING_STORE_QCFG_RESP_TIM_PG_SIZE_LAST   FUNC_BACKING_STORE_QCFG_RESP_TIM_PG_SIZE_PG_1G
+       __le64  qpc_page_dir;
+       __le64  srq_page_dir;
+       __le64  cq_page_dir;
+       __le64  vnic_page_dir;
+       __le64  stat_page_dir;
+       __le64  tqm_sp_page_dir;
+       __le64  tqm_ring0_page_dir;
+       __le64  tqm_ring1_page_dir;
+       __le64  tqm_ring2_page_dir;
+       __le64  tqm_ring3_page_dir;
+       __le64  tqm_ring4_page_dir;
+       __le64  tqm_ring5_page_dir;
+       __le64  tqm_ring6_page_dir;
+       __le64  tqm_ring7_page_dir;
+       __le64  mrav_page_dir;
+       __le64  tim_page_dir;
+       __le16  qp_num_qp1_entries;
+       __le16  qp_num_l2_entries;
+       __le32  qp_num_entries;
+       __le32  srq_num_entries;
+       __le16  srq_num_l2_entries;
+       __le16  cq_num_l2_entries;
+       __le32  cq_num_entries;
+       __le16  vnic_num_vnic_entries;
+       __le16  vnic_num_ring_table_entries;
+       __le32  stat_num_entries;
+       __le32  tqm_sp_num_entries;
+       __le32  tqm_ring0_num_entries;
+       __le32  tqm_ring1_num_entries;
+       __le32  tqm_ring2_num_entries;
+       __le32  tqm_ring3_num_entries;
+       __le32  tqm_ring4_num_entries;
+       __le32  tqm_ring5_num_entries;
+       __le32  tqm_ring6_num_entries;
+       __le32  tqm_ring7_num_entries;
+       __le32  mrav_num_entries;
+       __le32  tim_num_entries;
+       u8      unused_1[7];
+       u8      valid;
+};
+
+/* hwrm_func_vlan_qcfg_input (size:192b/24B) */
+struct hwrm_func_vlan_qcfg_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le16  fid;
+       u8      unused_0[6];
+};
+
+/* hwrm_func_vlan_qcfg_output (size:320b/40B) */
+struct hwrm_func_vlan_qcfg_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le64  unused_0;
+       __le16  stag_vid;
+       u8      stag_pcp;
+       u8      unused_1;
+       __be16  stag_tpid;
+       __le16  ctag_vid;
+       u8      ctag_pcp;
+       u8      unused_2;
+       __be16  ctag_tpid;
+       __le32  rsvd2;
+       __le32  rsvd3;
+       u8      unused_3[3];
+       u8      valid;
+};
+
+/* hwrm_func_vlan_cfg_input (size:384b/48B) */
+struct hwrm_func_vlan_cfg_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le16  fid;
+       u8      unused_0[2];
+       __le32  enables;
+       #define FUNC_VLAN_CFG_REQ_ENABLES_STAG_VID      0x1UL
+       #define FUNC_VLAN_CFG_REQ_ENABLES_CTAG_VID      0x2UL
+       #define FUNC_VLAN_CFG_REQ_ENABLES_STAG_PCP      0x4UL
+       #define FUNC_VLAN_CFG_REQ_ENABLES_CTAG_PCP      0x8UL
+       #define FUNC_VLAN_CFG_REQ_ENABLES_STAG_TPID     0x10UL
+       #define FUNC_VLAN_CFG_REQ_ENABLES_CTAG_TPID     0x20UL
+       __le16  stag_vid;
+       u8      stag_pcp;
+       u8      unused_1;
+       __be16  stag_tpid;
+       __le16  ctag_vid;
+       u8      ctag_pcp;
+       u8      unused_2;
+       __be16  ctag_tpid;
+       __le32  rsvd1;
+       __le32  rsvd2;
+       u8      unused_3[4];
+};
+
+/* hwrm_func_vlan_cfg_output (size:128b/16B) */
+struct hwrm_func_vlan_cfg_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_func_vf_vnic_ids_query_input (size:256b/32B) */
+struct hwrm_func_vf_vnic_ids_query_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le16  vf_id;
+       u8      unused_0[2];
+       __le32  max_vnic_id_cnt;
+       __le64  vnic_id_tbl_addr;
+};
+
+/* hwrm_func_vf_vnic_ids_query_output (size:128b/16B) */
+struct hwrm_func_vf_vnic_ids_query_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le32  vnic_id_cnt;
+       u8      unused_0[3];
+       u8      valid;
+};
+
+/* hwrm_func_vf_bw_cfg_input (size:960b/120B) */
+struct hwrm_func_vf_bw_cfg_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le16  num_vfs;
+       __le16  unused[3];
+       __le16  vfn[48];
+       #define FUNC_VF_BW_CFG_REQ_VFN_VFID_MASK     0xfffUL
+       #define FUNC_VF_BW_CFG_REQ_VFN_VFID_SFT      0
+       #define FUNC_VF_BW_CFG_REQ_VFN_RATE_MASK     0xf000UL
+       #define FUNC_VF_BW_CFG_REQ_VFN_RATE_SFT      12
+       #define FUNC_VF_BW_CFG_REQ_VFN_RATE_PCT_0      (0x0UL << 12)
+       #define FUNC_VF_BW_CFG_REQ_VFN_RATE_PCT_6_66   (0x1UL << 12)
+       #define FUNC_VF_BW_CFG_REQ_VFN_RATE_PCT_13_33  (0x2UL << 12)
+       #define FUNC_VF_BW_CFG_REQ_VFN_RATE_PCT_20     (0x3UL << 12)
+       #define FUNC_VF_BW_CFG_REQ_VFN_RATE_PCT_26_66  (0x4UL << 12)
+       #define FUNC_VF_BW_CFG_REQ_VFN_RATE_PCT_33_33  (0x5UL << 12)
+       #define FUNC_VF_BW_CFG_REQ_VFN_RATE_PCT_40     (0x6UL << 12)
+       #define FUNC_VF_BW_CFG_REQ_VFN_RATE_PCT_46_66  (0x7UL << 12)
+       #define FUNC_VF_BW_CFG_REQ_VFN_RATE_PCT_53_33  (0x8UL << 12)
+       #define FUNC_VF_BW_CFG_REQ_VFN_RATE_PCT_60     (0x9UL << 12)
+       #define FUNC_VF_BW_CFG_REQ_VFN_RATE_PCT_66_66  (0xaUL << 12)
+       #define FUNC_VF_BW_CFG_REQ_VFN_RATE_PCT_73_33  (0xbUL << 12)
+       #define FUNC_VF_BW_CFG_REQ_VFN_RATE_PCT_80     (0xcUL << 12)
+       #define FUNC_VF_BW_CFG_REQ_VFN_RATE_PCT_86_66  (0xdUL << 12)
+       #define FUNC_VF_BW_CFG_REQ_VFN_RATE_PCT_93_33  (0xeUL << 12)
+       #define FUNC_VF_BW_CFG_REQ_VFN_RATE_PCT_100    (0xfUL << 12)
+       #define FUNC_VF_BW_CFG_REQ_VFN_RATE_LAST      FUNC_VF_BW_CFG_REQ_VFN_RATE_PCT_100
+};
+
+/* hwrm_func_vf_bw_cfg_output (size:128b/16B) */
+struct hwrm_func_vf_bw_cfg_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_func_vf_bw_qcfg_input (size:960b/120B) */
+struct hwrm_func_vf_bw_qcfg_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le16  num_vfs;
+       __le16  unused[3];
+       __le16  vfn[48];
+       #define FUNC_VF_BW_QCFG_REQ_VFN_VFID_MASK 0xfffUL
+       #define FUNC_VF_BW_QCFG_REQ_VFN_VFID_SFT 0
+};
+
+/* hwrm_func_vf_bw_qcfg_output (size:960b/120B) */
+struct hwrm_func_vf_bw_qcfg_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le16  num_vfs;
+       __le16  unused[3];
+       __le16  vfn[48];
+       #define FUNC_VF_BW_QCFG_RESP_VFN_VFID_MASK     0xfffUL
+       #define FUNC_VF_BW_QCFG_RESP_VFN_VFID_SFT      0
+       #define FUNC_VF_BW_QCFG_RESP_VFN_RATE_MASK     0xf000UL
+       #define FUNC_VF_BW_QCFG_RESP_VFN_RATE_SFT      12
+       #define FUNC_VF_BW_QCFG_RESP_VFN_RATE_PCT_0      (0x0UL << 12)
+       #define FUNC_VF_BW_QCFG_RESP_VFN_RATE_PCT_6_66   (0x1UL << 12)
+       #define FUNC_VF_BW_QCFG_RESP_VFN_RATE_PCT_13_33  (0x2UL << 12)
+       #define FUNC_VF_BW_QCFG_RESP_VFN_RATE_PCT_20     (0x3UL << 12)
+       #define FUNC_VF_BW_QCFG_RESP_VFN_RATE_PCT_26_66  (0x4UL << 12)
+       #define FUNC_VF_BW_QCFG_RESP_VFN_RATE_PCT_33_33  (0x5UL << 12)
+       #define FUNC_VF_BW_QCFG_RESP_VFN_RATE_PCT_40     (0x6UL << 12)
+       #define FUNC_VF_BW_QCFG_RESP_VFN_RATE_PCT_46_66  (0x7UL << 12)
+       #define FUNC_VF_BW_QCFG_RESP_VFN_RATE_PCT_53_33  (0x8UL << 12)
+       #define FUNC_VF_BW_QCFG_RESP_VFN_RATE_PCT_60     (0x9UL << 12)
+       #define FUNC_VF_BW_QCFG_RESP_VFN_RATE_PCT_66_66  (0xaUL << 12)
+       #define FUNC_VF_BW_QCFG_RESP_VFN_RATE_PCT_73_33  (0xbUL << 12)
+       #define FUNC_VF_BW_QCFG_RESP_VFN_RATE_PCT_80     (0xcUL << 12)
+       #define FUNC_VF_BW_QCFG_RESP_VFN_RATE_PCT_86_66  (0xdUL << 12)
+       #define FUNC_VF_BW_QCFG_RESP_VFN_RATE_PCT_93_33  (0xeUL << 12)
+       #define FUNC_VF_BW_QCFG_RESP_VFN_RATE_PCT_100    (0xfUL << 12)
+       #define FUNC_VF_BW_QCFG_RESP_VFN_RATE_LAST      FUNC_VF_BW_QCFG_RESP_VFN_RATE_PCT_100
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_func_drv_if_change_input (size:192b/24B) */
+struct hwrm_func_drv_if_change_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le32  flags;
+       #define FUNC_DRV_IF_CHANGE_REQ_FLAGS_UP     0x1UL
+       __le32  unused;
+};
+
+/* hwrm_func_drv_if_change_output (size:128b/16B) */
+struct hwrm_func_drv_if_change_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le32  flags;
+       #define FUNC_DRV_IF_CHANGE_RESP_FLAGS_RESC_CHANGE     0x1UL
+       u8      unused_0[3];
+       u8      valid;
+};
+
+/* hwrm_port_phy_cfg_input (size:448b/56B) */
+struct hwrm_port_phy_cfg_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le32  flags;
+       #define PORT_PHY_CFG_REQ_FLAGS_RESET_PHY                0x1UL
+       #define PORT_PHY_CFG_REQ_FLAGS_DEPRECATED               0x2UL
+       #define PORT_PHY_CFG_REQ_FLAGS_FORCE                    0x4UL
+       #define PORT_PHY_CFG_REQ_FLAGS_RESTART_AUTONEG          0x8UL
+       #define PORT_PHY_CFG_REQ_FLAGS_EEE_ENABLE               0x10UL
+       #define PORT_PHY_CFG_REQ_FLAGS_EEE_DISABLE              0x20UL
+       #define PORT_PHY_CFG_REQ_FLAGS_EEE_TX_LPI_ENABLE        0x40UL
+       #define PORT_PHY_CFG_REQ_FLAGS_EEE_TX_LPI_DISABLE       0x80UL
+       #define PORT_PHY_CFG_REQ_FLAGS_FEC_AUTONEG_ENABLE       0x100UL
+       #define PORT_PHY_CFG_REQ_FLAGS_FEC_AUTONEG_DISABLE      0x200UL
+       #define PORT_PHY_CFG_REQ_FLAGS_FEC_CLAUSE74_ENABLE      0x400UL
+       #define PORT_PHY_CFG_REQ_FLAGS_FEC_CLAUSE74_DISABLE     0x800UL
+       #define PORT_PHY_CFG_REQ_FLAGS_FEC_CLAUSE91_ENABLE      0x1000UL
+       #define PORT_PHY_CFG_REQ_FLAGS_FEC_CLAUSE91_DISABLE     0x2000UL
+       #define PORT_PHY_CFG_REQ_FLAGS_FORCE_LINK_DWN           0x4000UL
+       __le32  enables;
+       #define PORT_PHY_CFG_REQ_ENABLES_AUTO_MODE                0x1UL
+       #define PORT_PHY_CFG_REQ_ENABLES_AUTO_DUPLEX              0x2UL
+       #define PORT_PHY_CFG_REQ_ENABLES_AUTO_PAUSE               0x4UL
+       #define PORT_PHY_CFG_REQ_ENABLES_AUTO_LINK_SPEED          0x8UL
+       #define PORT_PHY_CFG_REQ_ENABLES_AUTO_LINK_SPEED_MASK     0x10UL
+       #define PORT_PHY_CFG_REQ_ENABLES_WIRESPEED                0x20UL
+       #define PORT_PHY_CFG_REQ_ENABLES_LPBK                     0x40UL
+       #define PORT_PHY_CFG_REQ_ENABLES_PREEMPHASIS              0x80UL
+       #define PORT_PHY_CFG_REQ_ENABLES_FORCE_PAUSE              0x100UL
+       #define PORT_PHY_CFG_REQ_ENABLES_EEE_LINK_SPEED_MASK      0x200UL
+       #define PORT_PHY_CFG_REQ_ENABLES_TX_LPI_TIMER             0x400UL
+       __le16  port_id;
+       __le16  force_link_speed;
+       #define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_100MB 0x1UL
+       #define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_1GB   0xaUL
+       #define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_2GB   0x14UL
+       #define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_2_5GB 0x19UL
+       #define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_10GB  0x64UL
+       #define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_20GB  0xc8UL
+       #define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_25GB  0xfaUL
+       #define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_40GB  0x190UL
+       #define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_50GB  0x1f4UL
+       #define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_100GB 0x3e8UL
+       #define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_200GB 0x7d0UL
+       #define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_10MB  0xffffUL
+       #define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_LAST PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_10MB
+       u8      auto_mode;
+       #define PORT_PHY_CFG_REQ_AUTO_MODE_NONE         0x0UL
+       #define PORT_PHY_CFG_REQ_AUTO_MODE_ALL_SPEEDS   0x1UL
+       #define PORT_PHY_CFG_REQ_AUTO_MODE_ONE_SPEED    0x2UL
+       #define PORT_PHY_CFG_REQ_AUTO_MODE_ONE_OR_BELOW 0x3UL
+       #define PORT_PHY_CFG_REQ_AUTO_MODE_SPEED_MASK   0x4UL
+       #define PORT_PHY_CFG_REQ_AUTO_MODE_LAST        PORT_PHY_CFG_REQ_AUTO_MODE_SPEED_MASK
+       u8      auto_duplex;
+       #define PORT_PHY_CFG_REQ_AUTO_DUPLEX_HALF 0x0UL
+       #define PORT_PHY_CFG_REQ_AUTO_DUPLEX_FULL 0x1UL
+       #define PORT_PHY_CFG_REQ_AUTO_DUPLEX_BOTH 0x2UL
+       #define PORT_PHY_CFG_REQ_AUTO_DUPLEX_LAST PORT_PHY_CFG_REQ_AUTO_DUPLEX_BOTH
+       u8      auto_pause;
+       #define PORT_PHY_CFG_REQ_AUTO_PAUSE_TX                0x1UL
+       #define PORT_PHY_CFG_REQ_AUTO_PAUSE_RX                0x2UL
+       #define PORT_PHY_CFG_REQ_AUTO_PAUSE_AUTONEG_PAUSE     0x4UL
+       u8      unused_0;
+       __le16  auto_link_speed;
+       #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_100MB 0x1UL
+       #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_1GB   0xaUL
+       #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_2GB   0x14UL
+       #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_2_5GB 0x19UL
+       #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_10GB  0x64UL
+       #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_20GB  0xc8UL
+       #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_25GB  0xfaUL
+       #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_40GB  0x190UL
+       #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_50GB  0x1f4UL
+       #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_100GB 0x3e8UL
+       #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_200GB 0x7d0UL
+       #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_10MB  0xffffUL
+       #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_LAST PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_10MB
+       __le16  auto_link_speed_mask;
+       #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_100MBHD     0x1UL
+       #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_100MB       0x2UL
+       #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_1GBHD       0x4UL
+       #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_1GB         0x8UL
+       #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_2GB         0x10UL
+       #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_2_5GB       0x20UL
+       #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_10GB        0x40UL
+       #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_20GB        0x80UL
+       #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_25GB        0x100UL
+       #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_40GB        0x200UL
+       #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_50GB        0x400UL
+       #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_100GB       0x800UL
+       #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_10MBHD      0x1000UL
+       #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_10MB        0x2000UL
+       #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_200GB       0x4000UL
+       u8      wirespeed;
+       #define PORT_PHY_CFG_REQ_WIRESPEED_OFF 0x0UL
+       #define PORT_PHY_CFG_REQ_WIRESPEED_ON  0x1UL
+       #define PORT_PHY_CFG_REQ_WIRESPEED_LAST PORT_PHY_CFG_REQ_WIRESPEED_ON
+       u8      lpbk;
+       #define PORT_PHY_CFG_REQ_LPBK_NONE     0x0UL
+       #define PORT_PHY_CFG_REQ_LPBK_LOCAL    0x1UL
+       #define PORT_PHY_CFG_REQ_LPBK_REMOTE   0x2UL
+       #define PORT_PHY_CFG_REQ_LPBK_EXTERNAL 0x3UL
+       #define PORT_PHY_CFG_REQ_LPBK_LAST    PORT_PHY_CFG_REQ_LPBK_EXTERNAL
+       u8      force_pause;
+       #define PORT_PHY_CFG_REQ_FORCE_PAUSE_TX     0x1UL
+       #define PORT_PHY_CFG_REQ_FORCE_PAUSE_RX     0x2UL
+       u8      unused_1;
+       __le32  preemphasis;
+       __le16  eee_link_speed_mask;
+       #define PORT_PHY_CFG_REQ_EEE_LINK_SPEED_MASK_RSVD1     0x1UL
+       #define PORT_PHY_CFG_REQ_EEE_LINK_SPEED_MASK_100MB     0x2UL
+       #define PORT_PHY_CFG_REQ_EEE_LINK_SPEED_MASK_RSVD2     0x4UL
+       #define PORT_PHY_CFG_REQ_EEE_LINK_SPEED_MASK_1GB       0x8UL
+       #define PORT_PHY_CFG_REQ_EEE_LINK_SPEED_MASK_RSVD3     0x10UL
+       #define PORT_PHY_CFG_REQ_EEE_LINK_SPEED_MASK_RSVD4     0x20UL
+       #define PORT_PHY_CFG_REQ_EEE_LINK_SPEED_MASK_10GB      0x40UL
+       u8      unused_2[2];
+       __le32  tx_lpi_timer;
+       #define PORT_PHY_CFG_REQ_TX_LPI_TIMER_MASK 0xffffffUL
+       #define PORT_PHY_CFG_REQ_TX_LPI_TIMER_SFT 0
+       __le32  unused_3;
+};
+
+/* hwrm_port_phy_cfg_output (size:128b/16B) */
+struct hwrm_port_phy_cfg_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_port_phy_cfg_cmd_err (size:64b/8B) */
+struct hwrm_port_phy_cfg_cmd_err {
+       u8      code;
+       #define PORT_PHY_CFG_CMD_ERR_CODE_UNKNOWN       0x0UL
+       #define PORT_PHY_CFG_CMD_ERR_CODE_ILLEGAL_SPEED 0x1UL
+       #define PORT_PHY_CFG_CMD_ERR_CODE_RETRY         0x2UL
+       #define PORT_PHY_CFG_CMD_ERR_CODE_LAST         PORT_PHY_CFG_CMD_ERR_CODE_RETRY
+       u8      unused_0[7];
+};
+
+/* hwrm_port_phy_qcfg_input (size:192b/24B) */
+struct hwrm_port_phy_qcfg_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le16  port_id;
+       u8      unused_0[6];
+};
+
+/* hwrm_port_phy_qcfg_output (size:768b/96B) */
+struct hwrm_port_phy_qcfg_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      link;
+       #define PORT_PHY_QCFG_RESP_LINK_NO_LINK 0x0UL
+       #define PORT_PHY_QCFG_RESP_LINK_SIGNAL  0x1UL
+       #define PORT_PHY_QCFG_RESP_LINK_LINK    0x2UL
+       #define PORT_PHY_QCFG_RESP_LINK_LAST   PORT_PHY_QCFG_RESP_LINK_LINK
+       u8      unused_0;
+       __le16  link_speed;
+       #define PORT_PHY_QCFG_RESP_LINK_SPEED_100MB 0x1UL
+       #define PORT_PHY_QCFG_RESP_LINK_SPEED_1GB   0xaUL
+       #define PORT_PHY_QCFG_RESP_LINK_SPEED_2GB   0x14UL
+       #define PORT_PHY_QCFG_RESP_LINK_SPEED_2_5GB 0x19UL
+       #define PORT_PHY_QCFG_RESP_LINK_SPEED_10GB  0x64UL
+       #define PORT_PHY_QCFG_RESP_LINK_SPEED_20GB  0xc8UL
+       #define PORT_PHY_QCFG_RESP_LINK_SPEED_25GB  0xfaUL
+       #define PORT_PHY_QCFG_RESP_LINK_SPEED_40GB  0x190UL
+       #define PORT_PHY_QCFG_RESP_LINK_SPEED_50GB  0x1f4UL
+       #define PORT_PHY_QCFG_RESP_LINK_SPEED_100GB 0x3e8UL
+       #define PORT_PHY_QCFG_RESP_LINK_SPEED_200GB 0x7d0UL
+       #define PORT_PHY_QCFG_RESP_LINK_SPEED_10MB  0xffffUL
+       #define PORT_PHY_QCFG_RESP_LINK_SPEED_LAST PORT_PHY_QCFG_RESP_LINK_SPEED_10MB
+       u8      duplex_cfg;
+       #define PORT_PHY_QCFG_RESP_DUPLEX_CFG_HALF 0x0UL
+       #define PORT_PHY_QCFG_RESP_DUPLEX_CFG_FULL 0x1UL
+       #define PORT_PHY_QCFG_RESP_DUPLEX_CFG_LAST PORT_PHY_QCFG_RESP_DUPLEX_CFG_FULL
+       u8      pause;
+       #define PORT_PHY_QCFG_RESP_PAUSE_TX     0x1UL
+       #define PORT_PHY_QCFG_RESP_PAUSE_RX     0x2UL
+       __le16  support_speeds;
+       #define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_100MBHD     0x1UL
+       #define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_100MB       0x2UL
+       #define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_1GBHD       0x4UL
+       #define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_1GB         0x8UL
+       #define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_2GB         0x10UL
+       #define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_2_5GB       0x20UL
+       #define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_10GB        0x40UL
+       #define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_20GB        0x80UL
+       #define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_25GB        0x100UL
+       #define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_40GB        0x200UL
+       #define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_50GB        0x400UL
+       #define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_100GB       0x800UL
+       #define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_10MBHD      0x1000UL
+       #define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_10MB        0x2000UL
+       #define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_200GB       0x4000UL
+       __le16  force_link_speed;
+       #define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_100MB 0x1UL
+       #define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_1GB   0xaUL
+       #define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_2GB   0x14UL
+       #define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_2_5GB 0x19UL
+       #define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_10GB  0x64UL
+       #define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_20GB  0xc8UL
+       #define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_25GB  0xfaUL
+       #define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_40GB  0x190UL
+       #define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_50GB  0x1f4UL
+       #define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_100GB 0x3e8UL
+       #define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_200GB 0x7d0UL
+       #define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_10MB  0xffffUL
+       #define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_LAST PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_10MB
+       u8      auto_mode;
+       #define PORT_PHY_QCFG_RESP_AUTO_MODE_NONE         0x0UL
+       #define PORT_PHY_QCFG_RESP_AUTO_MODE_ALL_SPEEDS   0x1UL
+       #define PORT_PHY_QCFG_RESP_AUTO_MODE_ONE_SPEED    0x2UL
+       #define PORT_PHY_QCFG_RESP_AUTO_MODE_ONE_OR_BELOW 0x3UL
+       #define PORT_PHY_QCFG_RESP_AUTO_MODE_SPEED_MASK   0x4UL
+       #define PORT_PHY_QCFG_RESP_AUTO_MODE_LAST        PORT_PHY_QCFG_RESP_AUTO_MODE_SPEED_MASK
+       u8      auto_pause;
+       #define PORT_PHY_QCFG_RESP_AUTO_PAUSE_TX                0x1UL
+       #define PORT_PHY_QCFG_RESP_AUTO_PAUSE_RX                0x2UL
+       #define PORT_PHY_QCFG_RESP_AUTO_PAUSE_AUTONEG_PAUSE     0x4UL
+       __le16  auto_link_speed;
+       #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_100MB 0x1UL
+       #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_1GB   0xaUL
+       #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_2GB   0x14UL
+       #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_2_5GB 0x19UL
+       #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_10GB  0x64UL
+       #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_20GB  0xc8UL
+       #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_25GB  0xfaUL
+       #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_40GB  0x190UL
+       #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_50GB  0x1f4UL
+       #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_100GB 0x3e8UL
+       #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_200GB 0x7d0UL
+       #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_10MB  0xffffUL
+       #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_LAST PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_10MB
+       __le16  auto_link_speed_mask;
+       #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_100MBHD     0x1UL
+       #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_100MB       0x2UL
+       #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_1GBHD       0x4UL
+       #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_1GB         0x8UL
+       #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_2GB         0x10UL
+       #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_2_5GB       0x20UL
+       #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_10GB        0x40UL
+       #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_20GB        0x80UL
+       #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_25GB        0x100UL
+       #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_40GB        0x200UL
+       #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_50GB        0x400UL
+       #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_100GB       0x800UL
+       #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_10MBHD      0x1000UL
+       #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_10MB        0x2000UL
+       #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_200GB       0x4000UL
+       u8      wirespeed;
+       #define PORT_PHY_QCFG_RESP_WIRESPEED_OFF 0x0UL
+       #define PORT_PHY_QCFG_RESP_WIRESPEED_ON  0x1UL
+       #define PORT_PHY_QCFG_RESP_WIRESPEED_LAST PORT_PHY_QCFG_RESP_WIRESPEED_ON
+       u8      lpbk;
+       #define PORT_PHY_QCFG_RESP_LPBK_NONE     0x0UL
+       #define PORT_PHY_QCFG_RESP_LPBK_LOCAL    0x1UL
+       #define PORT_PHY_QCFG_RESP_LPBK_REMOTE   0x2UL
+       #define PORT_PHY_QCFG_RESP_LPBK_EXTERNAL 0x3UL
+       #define PORT_PHY_QCFG_RESP_LPBK_LAST    PORT_PHY_QCFG_RESP_LPBK_EXTERNAL
+       u8      force_pause;
+       #define PORT_PHY_QCFG_RESP_FORCE_PAUSE_TX     0x1UL
+       #define PORT_PHY_QCFG_RESP_FORCE_PAUSE_RX     0x2UL
+       u8      module_status;
+       #define PORT_PHY_QCFG_RESP_MODULE_STATUS_NONE          0x0UL
+       #define PORT_PHY_QCFG_RESP_MODULE_STATUS_DISABLETX     0x1UL
+       #define PORT_PHY_QCFG_RESP_MODULE_STATUS_WARNINGMSG    0x2UL
+       #define PORT_PHY_QCFG_RESP_MODULE_STATUS_PWRDOWN       0x3UL
+       #define PORT_PHY_QCFG_RESP_MODULE_STATUS_NOTINSERTED   0x4UL
+       #define PORT_PHY_QCFG_RESP_MODULE_STATUS_NOTAPPLICABLE 0xffUL
+       #define PORT_PHY_QCFG_RESP_MODULE_STATUS_LAST         PORT_PHY_QCFG_RESP_MODULE_STATUS_NOTAPPLICABLE
+       __le32  preemphasis;
+       u8      phy_maj;
+       u8      phy_min;
+       u8      phy_bld;
+       u8      phy_type;
+       #define PORT_PHY_QCFG_RESP_PHY_TYPE_UNKNOWN          0x0UL
+       #define PORT_PHY_QCFG_RESP_PHY_TYPE_BASECR           0x1UL
+       #define PORT_PHY_QCFG_RESP_PHY_TYPE_BASEKR4          0x2UL
+       #define PORT_PHY_QCFG_RESP_PHY_TYPE_BASELR           0x3UL
+       #define PORT_PHY_QCFG_RESP_PHY_TYPE_BASESR           0x4UL
+       #define PORT_PHY_QCFG_RESP_PHY_TYPE_BASEKR2          0x5UL
+       #define PORT_PHY_QCFG_RESP_PHY_TYPE_BASEKX           0x6UL
+       #define PORT_PHY_QCFG_RESP_PHY_TYPE_BASEKR           0x7UL
+       #define PORT_PHY_QCFG_RESP_PHY_TYPE_BASET            0x8UL
+       #define PORT_PHY_QCFG_RESP_PHY_TYPE_BASETE           0x9UL
+       #define PORT_PHY_QCFG_RESP_PHY_TYPE_SGMIIEXTPHY      0xaUL
+       #define PORT_PHY_QCFG_RESP_PHY_TYPE_25G_BASECR_CA_L  0xbUL
+       #define PORT_PHY_QCFG_RESP_PHY_TYPE_25G_BASECR_CA_S  0xcUL
+       #define PORT_PHY_QCFG_RESP_PHY_TYPE_25G_BASECR_CA_N  0xdUL
+       #define PORT_PHY_QCFG_RESP_PHY_TYPE_25G_BASESR       0xeUL
+       #define PORT_PHY_QCFG_RESP_PHY_TYPE_100G_BASECR4     0xfUL
+       #define PORT_PHY_QCFG_RESP_PHY_TYPE_100G_BASESR4     0x10UL
+       #define PORT_PHY_QCFG_RESP_PHY_TYPE_100G_BASELR4     0x11UL
+       #define PORT_PHY_QCFG_RESP_PHY_TYPE_100G_BASEER4     0x12UL
+       #define PORT_PHY_QCFG_RESP_PHY_TYPE_100G_BASESR10    0x13UL
+       #define PORT_PHY_QCFG_RESP_PHY_TYPE_40G_BASECR4      0x14UL
+       #define PORT_PHY_QCFG_RESP_PHY_TYPE_40G_BASESR4      0x15UL
+       #define PORT_PHY_QCFG_RESP_PHY_TYPE_40G_BASELR4      0x16UL
+       #define PORT_PHY_QCFG_RESP_PHY_TYPE_40G_BASEER4      0x17UL
+       #define PORT_PHY_QCFG_RESP_PHY_TYPE_40G_ACTIVE_CABLE 0x18UL
+       #define PORT_PHY_QCFG_RESP_PHY_TYPE_1G_BASET         0x19UL
+       #define PORT_PHY_QCFG_RESP_PHY_TYPE_1G_BASESX        0x1aUL
+       #define PORT_PHY_QCFG_RESP_PHY_TYPE_1G_BASECX        0x1bUL
+       #define PORT_PHY_QCFG_RESP_PHY_TYPE_200G_BASECR4     0x1cUL
+       #define PORT_PHY_QCFG_RESP_PHY_TYPE_200G_BASESR4     0x1dUL
+       #define PORT_PHY_QCFG_RESP_PHY_TYPE_200G_BASELR4     0x1eUL
+       #define PORT_PHY_QCFG_RESP_PHY_TYPE_200G_BASEER4     0x1fUL
+       #define PORT_PHY_QCFG_RESP_PHY_TYPE_LAST            PORT_PHY_QCFG_RESP_PHY_TYPE_200G_BASEER4
+       u8      media_type;
+       #define PORT_PHY_QCFG_RESP_MEDIA_TYPE_UNKNOWN 0x0UL
+       #define PORT_PHY_QCFG_RESP_MEDIA_TYPE_TP      0x1UL
+       #define PORT_PHY_QCFG_RESP_MEDIA_TYPE_DAC     0x2UL
+       #define PORT_PHY_QCFG_RESP_MEDIA_TYPE_FIBRE   0x3UL
+       #define PORT_PHY_QCFG_RESP_MEDIA_TYPE_LAST   PORT_PHY_QCFG_RESP_MEDIA_TYPE_FIBRE
+       u8      xcvr_pkg_type;
+       #define PORT_PHY_QCFG_RESP_XCVR_PKG_TYPE_XCVR_INTERNAL 0x1UL
+       #define PORT_PHY_QCFG_RESP_XCVR_PKG_TYPE_XCVR_EXTERNAL 0x2UL
+       #define PORT_PHY_QCFG_RESP_XCVR_PKG_TYPE_LAST         PORT_PHY_QCFG_RESP_XCVR_PKG_TYPE_XCVR_EXTERNAL
+       u8      eee_config_phy_addr;
+       #define PORT_PHY_QCFG_RESP_PHY_ADDR_MASK              0x1fUL
+       #define PORT_PHY_QCFG_RESP_PHY_ADDR_SFT               0
+       #define PORT_PHY_QCFG_RESP_EEE_CONFIG_MASK            0xe0UL
+       #define PORT_PHY_QCFG_RESP_EEE_CONFIG_SFT             5
+       #define PORT_PHY_QCFG_RESP_EEE_CONFIG_EEE_ENABLED      0x20UL
+       #define PORT_PHY_QCFG_RESP_EEE_CONFIG_EEE_ACTIVE       0x40UL
+       #define PORT_PHY_QCFG_RESP_EEE_CONFIG_EEE_TX_LPI       0x80UL
+       u8      parallel_detect;
+       #define PORT_PHY_QCFG_RESP_PARALLEL_DETECT     0x1UL
+       __le16  link_partner_adv_speeds;
+       #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_100MBHD     0x1UL
+       #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_100MB       0x2UL
+       #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_1GBHD       0x4UL
+       #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_1GB         0x8UL
+       #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_2GB         0x10UL
+       #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_2_5GB       0x20UL
+       #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_10GB        0x40UL
+       #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_20GB        0x80UL
+       #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_25GB        0x100UL
+       #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_40GB        0x200UL
+       #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_50GB        0x400UL
+       #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_100GB       0x800UL
+       #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_10MBHD      0x1000UL
+       #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_10MB        0x2000UL
+       u8      link_partner_adv_auto_mode;
+       #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_AUTO_MODE_NONE         0x0UL
+       #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_AUTO_MODE_ALL_SPEEDS   0x1UL
+       #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_AUTO_MODE_ONE_SPEED    0x2UL
+       #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_AUTO_MODE_ONE_OR_BELOW 0x3UL
+       #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_AUTO_MODE_SPEED_MASK   0x4UL
+       #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_AUTO_MODE_LAST        PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_AUTO_MODE_SPEED_MASK
+       u8      link_partner_adv_pause;
+       #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_PAUSE_TX     0x1UL
+       #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_PAUSE_RX     0x2UL
+       __le16  adv_eee_link_speed_mask;
+       #define PORT_PHY_QCFG_RESP_ADV_EEE_LINK_SPEED_MASK_RSVD1     0x1UL
+       #define PORT_PHY_QCFG_RESP_ADV_EEE_LINK_SPEED_MASK_100MB     0x2UL
+       #define PORT_PHY_QCFG_RESP_ADV_EEE_LINK_SPEED_MASK_RSVD2     0x4UL
+       #define PORT_PHY_QCFG_RESP_ADV_EEE_LINK_SPEED_MASK_1GB       0x8UL
+       #define PORT_PHY_QCFG_RESP_ADV_EEE_LINK_SPEED_MASK_RSVD3     0x10UL
+       #define PORT_PHY_QCFG_RESP_ADV_EEE_LINK_SPEED_MASK_RSVD4     0x20UL
+       #define PORT_PHY_QCFG_RESP_ADV_EEE_LINK_SPEED_MASK_10GB      0x40UL
+       __le16  link_partner_adv_eee_link_speed_mask;
+       #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_EEE_LINK_SPEED_MASK_RSVD1     0x1UL
+       #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_EEE_LINK_SPEED_MASK_100MB     0x2UL
+       #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_EEE_LINK_SPEED_MASK_RSVD2     0x4UL
+       #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_EEE_LINK_SPEED_MASK_1GB       0x8UL
+       #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_EEE_LINK_SPEED_MASK_RSVD3     0x10UL
+       #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_EEE_LINK_SPEED_MASK_RSVD4     0x20UL
+       #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_EEE_LINK_SPEED_MASK_10GB      0x40UL
+       __le32  xcvr_identifier_type_tx_lpi_timer;
+       #define PORT_PHY_QCFG_RESP_TX_LPI_TIMER_MASK            0xffffffUL
+       #define PORT_PHY_QCFG_RESP_TX_LPI_TIMER_SFT             0
+       #define PORT_PHY_QCFG_RESP_XCVR_IDENTIFIER_TYPE_MASK    0xff000000UL
+       #define PORT_PHY_QCFG_RESP_XCVR_IDENTIFIER_TYPE_SFT     24
+       #define PORT_PHY_QCFG_RESP_XCVR_IDENTIFIER_TYPE_UNKNOWN   (0x0UL << 24)
+       #define PORT_PHY_QCFG_RESP_XCVR_IDENTIFIER_TYPE_SFP       (0x3UL << 24)
+       #define PORT_PHY_QCFG_RESP_XCVR_IDENTIFIER_TYPE_QSFP      (0xcUL << 24)
+       #define PORT_PHY_QCFG_RESP_XCVR_IDENTIFIER_TYPE_QSFPPLUS  (0xdUL << 24)
+       #define PORT_PHY_QCFG_RESP_XCVR_IDENTIFIER_TYPE_QSFP28    (0x11UL << 24)
+       #define PORT_PHY_QCFG_RESP_XCVR_IDENTIFIER_TYPE_LAST     PORT_PHY_QCFG_RESP_XCVR_IDENTIFIER_TYPE_QSFP28
+       __le16  fec_cfg;
+       #define PORT_PHY_QCFG_RESP_FEC_CFG_FEC_NONE_SUPPORTED         0x1UL
+       #define PORT_PHY_QCFG_RESP_FEC_CFG_FEC_AUTONEG_SUPPORTED      0x2UL
+       #define PORT_PHY_QCFG_RESP_FEC_CFG_FEC_AUTONEG_ENABLED        0x4UL
+       #define PORT_PHY_QCFG_RESP_FEC_CFG_FEC_CLAUSE74_SUPPORTED     0x8UL
+       #define PORT_PHY_QCFG_RESP_FEC_CFG_FEC_CLAUSE74_ENABLED       0x10UL
+       #define PORT_PHY_QCFG_RESP_FEC_CFG_FEC_CLAUSE91_SUPPORTED     0x20UL
+       #define PORT_PHY_QCFG_RESP_FEC_CFG_FEC_CLAUSE91_ENABLED       0x40UL
+       u8      duplex_state;
+       #define PORT_PHY_QCFG_RESP_DUPLEX_STATE_HALF 0x0UL
+       #define PORT_PHY_QCFG_RESP_DUPLEX_STATE_FULL 0x1UL
+       #define PORT_PHY_QCFG_RESP_DUPLEX_STATE_LAST PORT_PHY_QCFG_RESP_DUPLEX_STATE_FULL
+       u8      option_flags;
+       #define PORT_PHY_QCFG_RESP_OPTION_FLAGS_MEDIA_AUTO_DETECT     0x1UL
+       char    phy_vendor_name[16];
+       char    phy_vendor_partnumber[16];
+       u8      unused_2[7];
+       u8      valid;
+};
+
+/* hwrm_port_mac_cfg_input (size:320b/40B) */
+struct hwrm_port_mac_cfg_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le32  flags;
+       #define PORT_MAC_CFG_REQ_FLAGS_MATCH_LINK                    0x1UL
+       #define PORT_MAC_CFG_REQ_FLAGS_VLAN_PRI2COS_ENABLE           0x2UL
+       #define PORT_MAC_CFG_REQ_FLAGS_TUNNEL_PRI2COS_ENABLE         0x4UL
+       #define PORT_MAC_CFG_REQ_FLAGS_IP_DSCP2COS_ENABLE            0x8UL
+       #define PORT_MAC_CFG_REQ_FLAGS_PTP_RX_TS_CAPTURE_ENABLE      0x10UL
+       #define PORT_MAC_CFG_REQ_FLAGS_PTP_RX_TS_CAPTURE_DISABLE     0x20UL
+       #define PORT_MAC_CFG_REQ_FLAGS_PTP_TX_TS_CAPTURE_ENABLE      0x40UL
+       #define PORT_MAC_CFG_REQ_FLAGS_PTP_TX_TS_CAPTURE_DISABLE     0x80UL
+       #define PORT_MAC_CFG_REQ_FLAGS_OOB_WOL_ENABLE                0x100UL
+       #define PORT_MAC_CFG_REQ_FLAGS_OOB_WOL_DISABLE               0x200UL
+       #define PORT_MAC_CFG_REQ_FLAGS_VLAN_PRI2COS_DISABLE          0x400UL
+       #define PORT_MAC_CFG_REQ_FLAGS_TUNNEL_PRI2COS_DISABLE        0x800UL
+       #define PORT_MAC_CFG_REQ_FLAGS_IP_DSCP2COS_DISABLE           0x1000UL
+       __le32  enables;
+       #define PORT_MAC_CFG_REQ_ENABLES_IPG                            0x1UL
+       #define PORT_MAC_CFG_REQ_ENABLES_LPBK                           0x2UL
+       #define PORT_MAC_CFG_REQ_ENABLES_VLAN_PRI2COS_MAP_PRI           0x4UL
+       #define PORT_MAC_CFG_REQ_ENABLES_TUNNEL_PRI2COS_MAP_PRI         0x10UL
+       #define PORT_MAC_CFG_REQ_ENABLES_DSCP2COS_MAP_PRI               0x20UL
+       #define PORT_MAC_CFG_REQ_ENABLES_RX_TS_CAPTURE_PTP_MSG_TYPE     0x40UL
+       #define PORT_MAC_CFG_REQ_ENABLES_TX_TS_CAPTURE_PTP_MSG_TYPE     0x80UL
+       #define PORT_MAC_CFG_REQ_ENABLES_COS_FIELD_CFG                  0x100UL
+       __le16  port_id;
+       u8      ipg;
+       u8      lpbk;
+       #define PORT_MAC_CFG_REQ_LPBK_NONE   0x0UL
+       #define PORT_MAC_CFG_REQ_LPBK_LOCAL  0x1UL
+       #define PORT_MAC_CFG_REQ_LPBK_REMOTE 0x2UL
+       #define PORT_MAC_CFG_REQ_LPBK_LAST  PORT_MAC_CFG_REQ_LPBK_REMOTE
+       u8      vlan_pri2cos_map_pri;
+       u8      reserved1;
+       u8      tunnel_pri2cos_map_pri;
+       u8      dscp2pri_map_pri;
+       __le16  rx_ts_capture_ptp_msg_type;
+       __le16  tx_ts_capture_ptp_msg_type;
+       u8      cos_field_cfg;
+       #define PORT_MAC_CFG_REQ_COS_FIELD_CFG_RSVD1                     0x1UL
+       #define PORT_MAC_CFG_REQ_COS_FIELD_CFG_VLAN_PRI_SEL_MASK         0x6UL
+       #define PORT_MAC_CFG_REQ_COS_FIELD_CFG_VLAN_PRI_SEL_SFT          1
+       #define PORT_MAC_CFG_REQ_COS_FIELD_CFG_VLAN_PRI_SEL_INNERMOST      (0x0UL << 1)
+       #define PORT_MAC_CFG_REQ_COS_FIELD_CFG_VLAN_PRI_SEL_OUTER          (0x1UL << 1)
+       #define PORT_MAC_CFG_REQ_COS_FIELD_CFG_VLAN_PRI_SEL_OUTERMOST      (0x2UL << 1)
+       #define PORT_MAC_CFG_REQ_COS_FIELD_CFG_VLAN_PRI_SEL_UNSPECIFIED    (0x3UL << 1)
+       #define PORT_MAC_CFG_REQ_COS_FIELD_CFG_VLAN_PRI_SEL_LAST          PORT_MAC_CFG_REQ_COS_FIELD_CFG_VLAN_PRI_SEL_UNSPECIFIED
+       #define PORT_MAC_CFG_REQ_COS_FIELD_CFG_T_VLAN_PRI_SEL_MASK       0x18UL
+       #define PORT_MAC_CFG_REQ_COS_FIELD_CFG_T_VLAN_PRI_SEL_SFT        3
+       #define PORT_MAC_CFG_REQ_COS_FIELD_CFG_T_VLAN_PRI_SEL_INNERMOST    (0x0UL << 3)
+       #define PORT_MAC_CFG_REQ_COS_FIELD_CFG_T_VLAN_PRI_SEL_OUTER        (0x1UL << 3)
+       #define PORT_MAC_CFG_REQ_COS_FIELD_CFG_T_VLAN_PRI_SEL_OUTERMOST    (0x2UL << 3)
+       #define PORT_MAC_CFG_REQ_COS_FIELD_CFG_T_VLAN_PRI_SEL_UNSPECIFIED  (0x3UL << 3)
+       #define PORT_MAC_CFG_REQ_COS_FIELD_CFG_T_VLAN_PRI_SEL_LAST        PORT_MAC_CFG_REQ_COS_FIELD_CFG_T_VLAN_PRI_SEL_UNSPECIFIED
+       #define PORT_MAC_CFG_REQ_COS_FIELD_CFG_DEFAULT_COS_MASK          0xe0UL
+       #define PORT_MAC_CFG_REQ_COS_FIELD_CFG_DEFAULT_COS_SFT           5
+       u8      unused_0[3];
+};
+
+/* hwrm_port_mac_cfg_output (size:128b/16B) */
+struct hwrm_port_mac_cfg_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le16  mru;
+       __le16  mtu;
+       u8      ipg;
+       u8      lpbk;
+       #define PORT_MAC_CFG_RESP_LPBK_NONE   0x0UL
+       #define PORT_MAC_CFG_RESP_LPBK_LOCAL  0x1UL
+       #define PORT_MAC_CFG_RESP_LPBK_REMOTE 0x2UL
+       #define PORT_MAC_CFG_RESP_LPBK_LAST  PORT_MAC_CFG_RESP_LPBK_REMOTE
+       u8      unused_0;
+       u8      valid;
+};
+
+/* hwrm_port_mac_qcfg_input (size:192b/24B) */
+struct hwrm_port_mac_qcfg_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le16  port_id;
+       u8      unused_0[6];
+};
+
+/* hwrm_port_mac_qcfg_output (size:192b/24B) */
+struct hwrm_port_mac_qcfg_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le16  mru;
+       __le16  mtu;
+       u8      ipg;
+       u8      lpbk;
+       #define PORT_MAC_QCFG_RESP_LPBK_NONE   0x0UL
+       #define PORT_MAC_QCFG_RESP_LPBK_LOCAL  0x1UL
+       #define PORT_MAC_QCFG_RESP_LPBK_REMOTE 0x2UL
+       #define PORT_MAC_QCFG_RESP_LPBK_LAST  PORT_MAC_QCFG_RESP_LPBK_REMOTE
+       u8      vlan_pri2cos_map_pri;
+       u8      flags;
+       #define PORT_MAC_QCFG_RESP_FLAGS_VLAN_PRI2COS_ENABLE          0x1UL
+       #define PORT_MAC_QCFG_RESP_FLAGS_TUNNEL_PRI2COS_ENABLE        0x2UL
+       #define PORT_MAC_QCFG_RESP_FLAGS_IP_DSCP2COS_ENABLE           0x4UL
+       #define PORT_MAC_QCFG_RESP_FLAGS_OOB_WOL_ENABLE               0x8UL
+       #define PORT_MAC_QCFG_RESP_FLAGS_PTP_RX_TS_CAPTURE_ENABLE     0x10UL
+       #define PORT_MAC_QCFG_RESP_FLAGS_PTP_TX_TS_CAPTURE_ENABLE     0x20UL
+       u8      tunnel_pri2cos_map_pri;
+       u8      dscp2pri_map_pri;
+       __le16  rx_ts_capture_ptp_msg_type;
+       __le16  tx_ts_capture_ptp_msg_type;
+       u8      cos_field_cfg;
+       #define PORT_MAC_QCFG_RESP_COS_FIELD_CFG_RSVD                      0x1UL
+       #define PORT_MAC_QCFG_RESP_COS_FIELD_CFG_VLAN_PRI_SEL_MASK         0x6UL
+       #define PORT_MAC_QCFG_RESP_COS_FIELD_CFG_VLAN_PRI_SEL_SFT          1
+       #define PORT_MAC_QCFG_RESP_COS_FIELD_CFG_VLAN_PRI_SEL_INNERMOST      (0x0UL << 1)
+       #define PORT_MAC_QCFG_RESP_COS_FIELD_CFG_VLAN_PRI_SEL_OUTER          (0x1UL << 1)
+       #define PORT_MAC_QCFG_RESP_COS_FIELD_CFG_VLAN_PRI_SEL_OUTERMOST      (0x2UL << 1)
+       #define PORT_MAC_QCFG_RESP_COS_FIELD_CFG_VLAN_PRI_SEL_UNSPECIFIED    (0x3UL << 1)
+       #define PORT_MAC_QCFG_RESP_COS_FIELD_CFG_VLAN_PRI_SEL_LAST          PORT_MAC_QCFG_RESP_COS_FIELD_CFG_VLAN_PRI_SEL_UNSPECIFIED
+       #define PORT_MAC_QCFG_RESP_COS_FIELD_CFG_T_VLAN_PRI_SEL_MASK       0x18UL
+       #define PORT_MAC_QCFG_RESP_COS_FIELD_CFG_T_VLAN_PRI_SEL_SFT        3
+       #define PORT_MAC_QCFG_RESP_COS_FIELD_CFG_T_VLAN_PRI_SEL_INNERMOST    (0x0UL << 3)
+       #define PORT_MAC_QCFG_RESP_COS_FIELD_CFG_T_VLAN_PRI_SEL_OUTER        (0x1UL << 3)
+       #define PORT_MAC_QCFG_RESP_COS_FIELD_CFG_T_VLAN_PRI_SEL_OUTERMOST    (0x2UL << 3)
+       #define PORT_MAC_QCFG_RESP_COS_FIELD_CFG_T_VLAN_PRI_SEL_UNSPECIFIED  (0x3UL << 3)
+       #define PORT_MAC_QCFG_RESP_COS_FIELD_CFG_T_VLAN_PRI_SEL_LAST        PORT_MAC_QCFG_RESP_COS_FIELD_CFG_T_VLAN_PRI_SEL_UNSPECIFIED
+       #define PORT_MAC_QCFG_RESP_COS_FIELD_CFG_DEFAULT_COS_MASK          0xe0UL
+       #define PORT_MAC_QCFG_RESP_COS_FIELD_CFG_DEFAULT_COS_SFT           5
+       u8      valid;
+};
+
+/* hwrm_port_mac_ptp_qcfg_input (size:192b/24B) */
+struct hwrm_port_mac_ptp_qcfg_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le16  port_id;
+       u8      unused_0[6];
+};
+
+/* hwrm_port_mac_ptp_qcfg_output (size:640b/80B) */
+struct hwrm_port_mac_ptp_qcfg_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      flags;
+       #define PORT_MAC_PTP_QCFG_RESP_FLAGS_DIRECT_ACCESS     0x1UL
+       #define PORT_MAC_PTP_QCFG_RESP_FLAGS_HWRM_ACCESS       0x2UL
+       u8      unused_0[3];
+       __le32  rx_ts_reg_off_lower;
+       __le32  rx_ts_reg_off_upper;
+       __le32  rx_ts_reg_off_seq_id;
+       __le32  rx_ts_reg_off_src_id_0;
+       __le32  rx_ts_reg_off_src_id_1;
+       __le32  rx_ts_reg_off_src_id_2;
+       __le32  rx_ts_reg_off_domain_id;
+       __le32  rx_ts_reg_off_fifo;
+       __le32  rx_ts_reg_off_fifo_adv;
+       __le32  rx_ts_reg_off_granularity;
+       __le32  tx_ts_reg_off_lower;
+       __le32  tx_ts_reg_off_upper;
+       __le32  tx_ts_reg_off_seq_id;
+       __le32  tx_ts_reg_off_fifo;
+       __le32  tx_ts_reg_off_granularity;
+       u8      unused_1[7];
+       u8      valid;
+};
+
+/* tx_port_stats (size:3264b/408B) */
+struct tx_port_stats {
+       __le64  tx_64b_frames;
+       __le64  tx_65b_127b_frames;
+       __le64  tx_128b_255b_frames;
+       __le64  tx_256b_511b_frames;
+       __le64  tx_512b_1023b_frames;
+       __le64  tx_1024b_1518b_frames;
+       __le64  tx_good_vlan_frames;
+       __le64  tx_1519b_2047b_frames;
+       __le64  tx_2048b_4095b_frames;
+       __le64  tx_4096b_9216b_frames;
+       __le64  tx_9217b_16383b_frames;
+       __le64  tx_good_frames;
+       __le64  tx_total_frames;
+       __le64  tx_ucast_frames;
+       __le64  tx_mcast_frames;
+       __le64  tx_bcast_frames;
+       __le64  tx_pause_frames;
+       __le64  tx_pfc_frames;
+       __le64  tx_jabber_frames;
+       __le64  tx_fcs_err_frames;
+       __le64  tx_control_frames;
+       __le64  tx_oversz_frames;
+       __le64  tx_single_dfrl_frames;
+       __le64  tx_multi_dfrl_frames;
+       __le64  tx_single_coll_frames;
+       __le64  tx_multi_coll_frames;
+       __le64  tx_late_coll_frames;
+       __le64  tx_excessive_coll_frames;
+       __le64  tx_frag_frames;
+       __le64  tx_err;
+       __le64  tx_tagged_frames;
+       __le64  tx_dbl_tagged_frames;
+       __le64  tx_runt_frames;
+       __le64  tx_fifo_underruns;
+       __le64  tx_pfc_ena_frames_pri0;
+       __le64  tx_pfc_ena_frames_pri1;
+       __le64  tx_pfc_ena_frames_pri2;
+       __le64  tx_pfc_ena_frames_pri3;
+       __le64  tx_pfc_ena_frames_pri4;
+       __le64  tx_pfc_ena_frames_pri5;
+       __le64  tx_pfc_ena_frames_pri6;
+       __le64  tx_pfc_ena_frames_pri7;
+       __le64  tx_eee_lpi_events;
+       __le64  tx_eee_lpi_duration;
+       __le64  tx_llfc_logical_msgs;
+       __le64  tx_hcfc_msgs;
+       __le64  tx_total_collisions;
+       __le64  tx_bytes;
+       __le64  tx_xthol_frames;
+       __le64  tx_stat_discard;
+       __le64  tx_stat_error;
+};
+
+/* rx_port_stats (size:4224b/528B) */
+struct rx_port_stats {
+       __le64  rx_64b_frames;
+       __le64  rx_65b_127b_frames;
+       __le64  rx_128b_255b_frames;
+       __le64  rx_256b_511b_frames;
+       __le64  rx_512b_1023b_frames;
+       __le64  rx_1024b_1518b_frames;
+       __le64  rx_good_vlan_frames;
+       __le64  rx_1519b_2047b_frames;
+       __le64  rx_2048b_4095b_frames;
+       __le64  rx_4096b_9216b_frames;
+       __le64  rx_9217b_16383b_frames;
+       __le64  rx_total_frames;
+       __le64  rx_ucast_frames;
+       __le64  rx_mcast_frames;
+       __le64  rx_bcast_frames;
+       __le64  rx_fcs_err_frames;
+       __le64  rx_ctrl_frames;
+       __le64  rx_pause_frames;
+       __le64  rx_pfc_frames;
+       __le64  rx_unsupported_opcode_frames;
+       __le64  rx_unsupported_da_pausepfc_frames;
+       __le64  rx_wrong_sa_frames;
+       __le64  rx_align_err_frames;
+       __le64  rx_oor_len_frames;
+       __le64  rx_code_err_frames;
+       __le64  rx_false_carrier_frames;
+       __le64  rx_ovrsz_frames;
+       __le64  rx_jbr_frames;
+       __le64  rx_mtu_err_frames;
+       __le64  rx_match_crc_frames;
+       __le64  rx_promiscuous_frames;
+       __le64  rx_tagged_frames;
+       __le64  rx_double_tagged_frames;
+       __le64  rx_trunc_frames;
+       __le64  rx_good_frames;
+       __le64  rx_pfc_xon2xoff_frames_pri0;
+       __le64  rx_pfc_xon2xoff_frames_pri1;
+       __le64  rx_pfc_xon2xoff_frames_pri2;
+       __le64  rx_pfc_xon2xoff_frames_pri3;
+       __le64  rx_pfc_xon2xoff_frames_pri4;
+       __le64  rx_pfc_xon2xoff_frames_pri5;
+       __le64  rx_pfc_xon2xoff_frames_pri6;
+       __le64  rx_pfc_xon2xoff_frames_pri7;
+       __le64  rx_pfc_ena_frames_pri0;
+       __le64  rx_pfc_ena_frames_pri1;
+       __le64  rx_pfc_ena_frames_pri2;
+       __le64  rx_pfc_ena_frames_pri3;
+       __le64  rx_pfc_ena_frames_pri4;
+       __le64  rx_pfc_ena_frames_pri5;
+       __le64  rx_pfc_ena_frames_pri6;
+       __le64  rx_pfc_ena_frames_pri7;
+       __le64  rx_sch_crc_err_frames;
+       __le64  rx_undrsz_frames;
+       __le64  rx_frag_frames;
+       __le64  rx_eee_lpi_events;
+       __le64  rx_eee_lpi_duration;
+       __le64  rx_llfc_physical_msgs;
+       __le64  rx_llfc_logical_msgs;
+       __le64  rx_llfc_msgs_with_crc_err;
+       __le64  rx_hcfc_msgs;
+       __le64  rx_hcfc_msgs_with_crc_err;
+       __le64  rx_bytes;
+       __le64  rx_runt_bytes;
+       __le64  rx_runt_frames;
+       __le64  rx_stat_discard;
+       __le64  rx_stat_err;
+};
+
+/* hwrm_port_qstats_input (size:320b/40B) */
+struct hwrm_port_qstats_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le16  port_id;
+       u8      unused_0[6];
+       __le64  tx_stat_host_addr;
+       __le64  rx_stat_host_addr;
+};
+
+/* hwrm_port_qstats_output (size:128b/16B) */
+struct hwrm_port_qstats_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le16  tx_stat_size;
+       __le16  rx_stat_size;
+       u8      unused_0[3];
+       u8      valid;
+};
+
+/* tx_port_stats_ext (size:2048b/256B) */
+struct tx_port_stats_ext {
+       __le64  tx_bytes_cos0;
+       __le64  tx_bytes_cos1;
+       __le64  tx_bytes_cos2;
+       __le64  tx_bytes_cos3;
+       __le64  tx_bytes_cos4;
+       __le64  tx_bytes_cos5;
+       __le64  tx_bytes_cos6;
+       __le64  tx_bytes_cos7;
+       __le64  tx_packets_cos0;
+       __le64  tx_packets_cos1;
+       __le64  tx_packets_cos2;
+       __le64  tx_packets_cos3;
+       __le64  tx_packets_cos4;
+       __le64  tx_packets_cos5;
+       __le64  tx_packets_cos6;
+       __le64  tx_packets_cos7;
+       __le64  pfc_pri0_tx_duration_us;
+       __le64  pfc_pri0_tx_transitions;
+       __le64  pfc_pri1_tx_duration_us;
+       __le64  pfc_pri1_tx_transitions;
+       __le64  pfc_pri2_tx_duration_us;
+       __le64  pfc_pri2_tx_transitions;
+       __le64  pfc_pri3_tx_duration_us;
+       __le64  pfc_pri3_tx_transitions;
+       __le64  pfc_pri4_tx_duration_us;
+       __le64  pfc_pri4_tx_transitions;
+       __le64  pfc_pri5_tx_duration_us;
+       __le64  pfc_pri5_tx_transitions;
+       __le64  pfc_pri6_tx_duration_us;
+       __le64  pfc_pri6_tx_transitions;
+       __le64  pfc_pri7_tx_duration_us;
+       __le64  pfc_pri7_tx_transitions;
+};
+
+/* rx_port_stats_ext (size:2368b/296B) */
+struct rx_port_stats_ext {
+       __le64  link_down_events;
+       __le64  continuous_pause_events;
+       __le64  resume_pause_events;
+       __le64  continuous_roce_pause_events;
+       __le64  resume_roce_pause_events;
+       __le64  rx_bytes_cos0;
+       __le64  rx_bytes_cos1;
+       __le64  rx_bytes_cos2;
+       __le64  rx_bytes_cos3;
+       __le64  rx_bytes_cos4;
+       __le64  rx_bytes_cos5;
+       __le64  rx_bytes_cos6;
+       __le64  rx_bytes_cos7;
+       __le64  rx_packets_cos0;
+       __le64  rx_packets_cos1;
+       __le64  rx_packets_cos2;
+       __le64  rx_packets_cos3;
+       __le64  rx_packets_cos4;
+       __le64  rx_packets_cos5;
+       __le64  rx_packets_cos6;
+       __le64  rx_packets_cos7;
+       __le64  pfc_pri0_rx_duration_us;
+       __le64  pfc_pri0_rx_transitions;
+       __le64  pfc_pri1_rx_duration_us;
+       __le64  pfc_pri1_rx_transitions;
+       __le64  pfc_pri2_rx_duration_us;
+       __le64  pfc_pri2_rx_transitions;
+       __le64  pfc_pri3_rx_duration_us;
+       __le64  pfc_pri3_rx_transitions;
+       __le64  pfc_pri4_rx_duration_us;
+       __le64  pfc_pri4_rx_transitions;
+       __le64  pfc_pri5_rx_duration_us;
+       __le64  pfc_pri5_rx_transitions;
+       __le64  pfc_pri6_rx_duration_us;
+       __le64  pfc_pri6_rx_transitions;
+       __le64  pfc_pri7_rx_duration_us;
+       __le64  pfc_pri7_rx_transitions;
+};
+
+/* hwrm_port_qstats_ext_input (size:320b/40B) */
+struct hwrm_port_qstats_ext_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le16  port_id;
+       __le16  tx_stat_size;
+       __le16  rx_stat_size;
+       u8      unused_0[2];
+       __le64  tx_stat_host_addr;
+       __le64  rx_stat_host_addr;
+};
+
+/* hwrm_port_qstats_ext_output (size:128b/16B) */
+struct hwrm_port_qstats_ext_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le16  tx_stat_size;
+       __le16  rx_stat_size;
+       __le16  total_active_cos_queues;
+       u8      flags;
+       #define PORT_QSTATS_EXT_RESP_FLAGS_CLEAR_ROCE_COUNTERS_SUPPORTED     0x1UL
+       u8      valid;
+};
+
+/* hwrm_port_lpbk_qstats_input (size:128b/16B) */
+struct hwrm_port_lpbk_qstats_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+};
+
+/* hwrm_port_lpbk_qstats_output (size:768b/96B) */
+struct hwrm_port_lpbk_qstats_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le64  lpbk_ucast_frames;
+       __le64  lpbk_mcast_frames;
+       __le64  lpbk_bcast_frames;
+       __le64  lpbk_ucast_bytes;
+       __le64  lpbk_mcast_bytes;
+       __le64  lpbk_bcast_bytes;
+       __le64  tx_stat_discard;
+       __le64  tx_stat_error;
+       __le64  rx_stat_discard;
+       __le64  rx_stat_error;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_port_clr_stats_input (size:192b/24B) */
+struct hwrm_port_clr_stats_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le16  port_id;
+       u8      flags;
+       #define PORT_CLR_STATS_REQ_FLAGS_ROCE_COUNTERS     0x1UL
+       u8      unused_0[5];
+};
+
+/* hwrm_port_clr_stats_output (size:128b/16B) */
+struct hwrm_port_clr_stats_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_port_lpbk_clr_stats_input (size:128b/16B) */
+struct hwrm_port_lpbk_clr_stats_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+};
+
+/* hwrm_port_lpbk_clr_stats_output (size:128b/16B) */
+struct hwrm_port_lpbk_clr_stats_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_port_ts_query_input (size:192b/24B) */
+struct hwrm_port_ts_query_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le32  flags;
+       #define PORT_TS_QUERY_REQ_FLAGS_PATH     0x1UL
+       #define PORT_TS_QUERY_REQ_FLAGS_PATH_TX    0x0UL
+       #define PORT_TS_QUERY_REQ_FLAGS_PATH_RX    0x1UL
+       #define PORT_TS_QUERY_REQ_FLAGS_PATH_LAST PORT_TS_QUERY_REQ_FLAGS_PATH_RX
+       __le16  port_id;
+       u8      unused_0[2];
+};
+
+/* hwrm_port_ts_query_output (size:192b/24B) */
+struct hwrm_port_ts_query_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le64  ptp_msg_ts;
+       __le16  ptp_msg_seqid;
+       u8      unused_0[5];
+       u8      valid;
+};
+
+/* hwrm_port_phy_qcaps_input (size:192b/24B) */
+struct hwrm_port_phy_qcaps_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le16  port_id;
+       u8      unused_0[6];
+};
+
+/* hwrm_port_phy_qcaps_output (size:192b/24B) */
+struct hwrm_port_phy_qcaps_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      flags;
+       #define PORT_PHY_QCAPS_RESP_FLAGS_EEE_SUPPORTED               0x1UL
+       #define PORT_PHY_QCAPS_RESP_FLAGS_EXTERNAL_LPBK_SUPPORTED     0x2UL
+       #define PORT_PHY_QCAPS_RESP_FLAGS_RSVD1_MASK                  0xfcUL
+       #define PORT_PHY_QCAPS_RESP_FLAGS_RSVD1_SFT                   2
+       u8      port_cnt;
+       #define PORT_PHY_QCAPS_RESP_PORT_CNT_UNKNOWN 0x0UL
+       #define PORT_PHY_QCAPS_RESP_PORT_CNT_1       0x1UL
+       #define PORT_PHY_QCAPS_RESP_PORT_CNT_2       0x2UL
+       #define PORT_PHY_QCAPS_RESP_PORT_CNT_3       0x3UL
+       #define PORT_PHY_QCAPS_RESP_PORT_CNT_4       0x4UL
+       #define PORT_PHY_QCAPS_RESP_PORT_CNT_LAST   PORT_PHY_QCAPS_RESP_PORT_CNT_4
+       __le16  supported_speeds_force_mode;
+       #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_100MBHD     0x1UL
+       #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_100MB       0x2UL
+       #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_1GBHD       0x4UL
+       #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_1GB         0x8UL
+       #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_2GB         0x10UL
+       #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_2_5GB       0x20UL
+       #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_10GB        0x40UL
+       #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_20GB        0x80UL
+       #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_25GB        0x100UL
+       #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_40GB        0x200UL
+       #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_50GB        0x400UL
+       #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_100GB       0x800UL
+       #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_10MBHD      0x1000UL
+       #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_10MB        0x2000UL
+       __le16  supported_speeds_auto_mode;
+       #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_100MBHD     0x1UL
+       #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_100MB       0x2UL
+       #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_1GBHD       0x4UL
+       #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_1GB         0x8UL
+       #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_2GB         0x10UL
+       #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_2_5GB       0x20UL
+       #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_10GB        0x40UL
+       #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_20GB        0x80UL
+       #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_25GB        0x100UL
+       #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_40GB        0x200UL
+       #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_50GB        0x400UL
+       #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_100GB       0x800UL
+       #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_10MBHD      0x1000UL
+       #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_10MB        0x2000UL
+       __le16  supported_speeds_eee_mode;
+       #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_EEE_MODE_RSVD1     0x1UL
+       #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_EEE_MODE_100MB     0x2UL
+       #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_EEE_MODE_RSVD2     0x4UL
+       #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_EEE_MODE_1GB       0x8UL
+       #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_EEE_MODE_RSVD3     0x10UL
+       #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_EEE_MODE_RSVD4     0x20UL
+       #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_EEE_MODE_10GB      0x40UL
+       __le32  tx_lpi_timer_low;
+       #define PORT_PHY_QCAPS_RESP_TX_LPI_TIMER_LOW_MASK 0xffffffUL
+       #define PORT_PHY_QCAPS_RESP_TX_LPI_TIMER_LOW_SFT 0
+       #define PORT_PHY_QCAPS_RESP_RSVD2_MASK           0xff000000UL
+       #define PORT_PHY_QCAPS_RESP_RSVD2_SFT            24
+       __le32  valid_tx_lpi_timer_high;
+       #define PORT_PHY_QCAPS_RESP_TX_LPI_TIMER_HIGH_MASK 0xffffffUL
+       #define PORT_PHY_QCAPS_RESP_TX_LPI_TIMER_HIGH_SFT 0
+       #define PORT_PHY_QCAPS_RESP_VALID_MASK            0xff000000UL
+       #define PORT_PHY_QCAPS_RESP_VALID_SFT             24
+};
+
+/* hwrm_port_phy_i2c_write_input (size:832b/104B) */
+struct hwrm_port_phy_i2c_write_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le32  flags;
+       __le32  enables;
+       #define PORT_PHY_I2C_WRITE_REQ_ENABLES_PAGE_OFFSET     0x1UL
+       __le16  port_id;
+       u8      i2c_slave_addr;
+       u8      unused_0;
+       __le16  page_number;
+       __le16  page_offset;
+       u8      data_length;
+       u8      unused_1[7];
+       __le32  data[16];
+};
+
+/* hwrm_port_phy_i2c_write_output (size:128b/16B) */
+struct hwrm_port_phy_i2c_write_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_port_phy_i2c_read_input (size:320b/40B) */
+struct hwrm_port_phy_i2c_read_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le32  flags;
+       __le32  enables;
+       #define PORT_PHY_I2C_READ_REQ_ENABLES_PAGE_OFFSET     0x1UL
+       __le16  port_id;
+       u8      i2c_slave_addr;
+       u8      unused_0;
+       __le16  page_number;
+       __le16  page_offset;
+       u8      data_length;
+       u8      unused_1[7];
+};
+
+/* hwrm_port_phy_i2c_read_output (size:640b/80B) */
+struct hwrm_port_phy_i2c_read_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le32  data[16];
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_port_led_cfg_input (size:512b/64B) */
+struct hwrm_port_led_cfg_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le32  enables;
+       #define PORT_LED_CFG_REQ_ENABLES_LED0_ID            0x1UL
+       #define PORT_LED_CFG_REQ_ENABLES_LED0_STATE         0x2UL
+       #define PORT_LED_CFG_REQ_ENABLES_LED0_COLOR         0x4UL
+       #define PORT_LED_CFG_REQ_ENABLES_LED0_BLINK_ON      0x8UL
+       #define PORT_LED_CFG_REQ_ENABLES_LED0_BLINK_OFF     0x10UL
+       #define PORT_LED_CFG_REQ_ENABLES_LED0_GROUP_ID      0x20UL
+       #define PORT_LED_CFG_REQ_ENABLES_LED1_ID            0x40UL
+       #define PORT_LED_CFG_REQ_ENABLES_LED1_STATE         0x80UL
+       #define PORT_LED_CFG_REQ_ENABLES_LED1_COLOR         0x100UL
+       #define PORT_LED_CFG_REQ_ENABLES_LED1_BLINK_ON      0x200UL
+       #define PORT_LED_CFG_REQ_ENABLES_LED1_BLINK_OFF     0x400UL
+       #define PORT_LED_CFG_REQ_ENABLES_LED1_GROUP_ID      0x800UL
+       #define PORT_LED_CFG_REQ_ENABLES_LED2_ID            0x1000UL
+       #define PORT_LED_CFG_REQ_ENABLES_LED2_STATE         0x2000UL
+       #define PORT_LED_CFG_REQ_ENABLES_LED2_COLOR         0x4000UL
+       #define PORT_LED_CFG_REQ_ENABLES_LED2_BLINK_ON      0x8000UL
+       #define PORT_LED_CFG_REQ_ENABLES_LED2_BLINK_OFF     0x10000UL
+       #define PORT_LED_CFG_REQ_ENABLES_LED2_GROUP_ID      0x20000UL
+       #define PORT_LED_CFG_REQ_ENABLES_LED3_ID            0x40000UL
+       #define PORT_LED_CFG_REQ_ENABLES_LED3_STATE         0x80000UL
+       #define PORT_LED_CFG_REQ_ENABLES_LED3_COLOR         0x100000UL
+       #define PORT_LED_CFG_REQ_ENABLES_LED3_BLINK_ON      0x200000UL
+       #define PORT_LED_CFG_REQ_ENABLES_LED3_BLINK_OFF     0x400000UL
+       #define PORT_LED_CFG_REQ_ENABLES_LED3_GROUP_ID      0x800000UL
+       __le16  port_id;
+       u8      num_leds;
+       u8      rsvd;
+       u8      led0_id;
+       u8      led0_state;
+       #define PORT_LED_CFG_REQ_LED0_STATE_DEFAULT  0x0UL
+       #define PORT_LED_CFG_REQ_LED0_STATE_OFF      0x1UL
+       #define PORT_LED_CFG_REQ_LED0_STATE_ON       0x2UL
+       #define PORT_LED_CFG_REQ_LED0_STATE_BLINK    0x3UL
+       #define PORT_LED_CFG_REQ_LED0_STATE_BLINKALT 0x4UL
+       #define PORT_LED_CFG_REQ_LED0_STATE_LAST    PORT_LED_CFG_REQ_LED0_STATE_BLINKALT
+       u8      led0_color;
+       #define PORT_LED_CFG_REQ_LED0_COLOR_DEFAULT    0x0UL
+       #define PORT_LED_CFG_REQ_LED0_COLOR_AMBER      0x1UL
+       #define PORT_LED_CFG_REQ_LED0_COLOR_GREEN      0x2UL
+       #define PORT_LED_CFG_REQ_LED0_COLOR_GREENAMBER 0x3UL
+       #define PORT_LED_CFG_REQ_LED0_COLOR_LAST      PORT_LED_CFG_REQ_LED0_COLOR_GREENAMBER
+       u8      unused_0;
+       __le16  led0_blink_on;
+       __le16  led0_blink_off;
+       u8      led0_group_id;
+       u8      rsvd0;
+       u8      led1_id;
+       u8      led1_state;
+       #define PORT_LED_CFG_REQ_LED1_STATE_DEFAULT  0x0UL
+       #define PORT_LED_CFG_REQ_LED1_STATE_OFF      0x1UL
+       #define PORT_LED_CFG_REQ_LED1_STATE_ON       0x2UL
+       #define PORT_LED_CFG_REQ_LED1_STATE_BLINK    0x3UL
+       #define PORT_LED_CFG_REQ_LED1_STATE_BLINKALT 0x4UL
+       #define PORT_LED_CFG_REQ_LED1_STATE_LAST    PORT_LED_CFG_REQ_LED1_STATE_BLINKALT
+       u8      led1_color;
+       #define PORT_LED_CFG_REQ_LED1_COLOR_DEFAULT    0x0UL
+       #define PORT_LED_CFG_REQ_LED1_COLOR_AMBER      0x1UL
+       #define PORT_LED_CFG_REQ_LED1_COLOR_GREEN      0x2UL
+       #define PORT_LED_CFG_REQ_LED1_COLOR_GREENAMBER 0x3UL
+       #define PORT_LED_CFG_REQ_LED1_COLOR_LAST      PORT_LED_CFG_REQ_LED1_COLOR_GREENAMBER
+       u8      unused_1;
+       __le16  led1_blink_on;
+       __le16  led1_blink_off;
+       u8      led1_group_id;
+       u8      rsvd1;
+       u8      led2_id;
+       u8      led2_state;
+       #define PORT_LED_CFG_REQ_LED2_STATE_DEFAULT  0x0UL
+       #define PORT_LED_CFG_REQ_LED2_STATE_OFF      0x1UL
+       #define PORT_LED_CFG_REQ_LED2_STATE_ON       0x2UL
+       #define PORT_LED_CFG_REQ_LED2_STATE_BLINK    0x3UL
+       #define PORT_LED_CFG_REQ_LED2_STATE_BLINKALT 0x4UL
+       #define PORT_LED_CFG_REQ_LED2_STATE_LAST    PORT_LED_CFG_REQ_LED2_STATE_BLINKALT
+       u8      led2_color;
+       #define PORT_LED_CFG_REQ_LED2_COLOR_DEFAULT    0x0UL
+       #define PORT_LED_CFG_REQ_LED2_COLOR_AMBER      0x1UL
+       #define PORT_LED_CFG_REQ_LED2_COLOR_GREEN      0x2UL
+       #define PORT_LED_CFG_REQ_LED2_COLOR_GREENAMBER 0x3UL
+       #define PORT_LED_CFG_REQ_LED2_COLOR_LAST      PORT_LED_CFG_REQ_LED2_COLOR_GREENAMBER
+       u8      unused_2;
+       __le16  led2_blink_on;
+       __le16  led2_blink_off;
+       u8      led2_group_id;
+       u8      rsvd2;
+       u8      led3_id;
+       u8      led3_state;
+       #define PORT_LED_CFG_REQ_LED3_STATE_DEFAULT  0x0UL
+       #define PORT_LED_CFG_REQ_LED3_STATE_OFF      0x1UL
+       #define PORT_LED_CFG_REQ_LED3_STATE_ON       0x2UL
+       #define PORT_LED_CFG_REQ_LED3_STATE_BLINK    0x3UL
+       #define PORT_LED_CFG_REQ_LED3_STATE_BLINKALT 0x4UL
+       #define PORT_LED_CFG_REQ_LED3_STATE_LAST    PORT_LED_CFG_REQ_LED3_STATE_BLINKALT
+       u8      led3_color;
+       #define PORT_LED_CFG_REQ_LED3_COLOR_DEFAULT    0x0UL
+       #define PORT_LED_CFG_REQ_LED3_COLOR_AMBER      0x1UL
+       #define PORT_LED_CFG_REQ_LED3_COLOR_GREEN      0x2UL
+       #define PORT_LED_CFG_REQ_LED3_COLOR_GREENAMBER 0x3UL
+       #define PORT_LED_CFG_REQ_LED3_COLOR_LAST      PORT_LED_CFG_REQ_LED3_COLOR_GREENAMBER
+       u8      unused_3;
+       __le16  led3_blink_on;
+       __le16  led3_blink_off;
+       u8      led3_group_id;
+       u8      rsvd3;
+};
+
+/* hwrm_port_led_cfg_output (size:128b/16B) */
+struct hwrm_port_led_cfg_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_port_led_qcfg_input (size:192b/24B) */
+struct hwrm_port_led_qcfg_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le16  port_id;
+       u8      unused_0[6];
+};
+
+/* hwrm_port_led_qcfg_output (size:448b/56B) */
+struct hwrm_port_led_qcfg_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      num_leds;
+       u8      led0_id;
+       u8      led0_type;
+       #define PORT_LED_QCFG_RESP_LED0_TYPE_SPEED    0x0UL
+       #define PORT_LED_QCFG_RESP_LED0_TYPE_ACTIVITY 0x1UL
+       #define PORT_LED_QCFG_RESP_LED0_TYPE_INVALID  0xffUL
+       #define PORT_LED_QCFG_RESP_LED0_TYPE_LAST    PORT_LED_QCFG_RESP_LED0_TYPE_INVALID
+       u8      led0_state;
+       #define PORT_LED_QCFG_RESP_LED0_STATE_DEFAULT  0x0UL
+       #define PORT_LED_QCFG_RESP_LED0_STATE_OFF      0x1UL
+       #define PORT_LED_QCFG_RESP_LED0_STATE_ON       0x2UL
+       #define PORT_LED_QCFG_RESP_LED0_STATE_BLINK    0x3UL
+       #define PORT_LED_QCFG_RESP_LED0_STATE_BLINKALT 0x4UL
+       #define PORT_LED_QCFG_RESP_LED0_STATE_LAST    PORT_LED_QCFG_RESP_LED0_STATE_BLINKALT
+       u8      led0_color;
+       #define PORT_LED_QCFG_RESP_LED0_COLOR_DEFAULT    0x0UL
+       #define PORT_LED_QCFG_RESP_LED0_COLOR_AMBER      0x1UL
+       #define PORT_LED_QCFG_RESP_LED0_COLOR_GREEN      0x2UL
+       #define PORT_LED_QCFG_RESP_LED0_COLOR_GREENAMBER 0x3UL
+       #define PORT_LED_QCFG_RESP_LED0_COLOR_LAST      PORT_LED_QCFG_RESP_LED0_COLOR_GREENAMBER
+       u8      unused_0;
+       __le16  led0_blink_on;
+       __le16  led0_blink_off;
+       u8      led0_group_id;
+       u8      led1_id;
+       u8      led1_type;
+       #define PORT_LED_QCFG_RESP_LED1_TYPE_SPEED    0x0UL
+       #define PORT_LED_QCFG_RESP_LED1_TYPE_ACTIVITY 0x1UL
+       #define PORT_LED_QCFG_RESP_LED1_TYPE_INVALID  0xffUL
+       #define PORT_LED_QCFG_RESP_LED1_TYPE_LAST    PORT_LED_QCFG_RESP_LED1_TYPE_INVALID
+       u8      led1_state;
+       #define PORT_LED_QCFG_RESP_LED1_STATE_DEFAULT  0x0UL
+       #define PORT_LED_QCFG_RESP_LED1_STATE_OFF      0x1UL
+       #define PORT_LED_QCFG_RESP_LED1_STATE_ON       0x2UL
+       #define PORT_LED_QCFG_RESP_LED1_STATE_BLINK    0x3UL
+       #define PORT_LED_QCFG_RESP_LED1_STATE_BLINKALT 0x4UL
+       #define PORT_LED_QCFG_RESP_LED1_STATE_LAST    PORT_LED_QCFG_RESP_LED1_STATE_BLINKALT
+       u8      led1_color;
+       #define PORT_LED_QCFG_RESP_LED1_COLOR_DEFAULT    0x0UL
+       #define PORT_LED_QCFG_RESP_LED1_COLOR_AMBER      0x1UL
+       #define PORT_LED_QCFG_RESP_LED1_COLOR_GREEN      0x2UL
+       #define PORT_LED_QCFG_RESP_LED1_COLOR_GREENAMBER 0x3UL
+       #define PORT_LED_QCFG_RESP_LED1_COLOR_LAST      PORT_LED_QCFG_RESP_LED1_COLOR_GREENAMBER
+       u8      unused_1;
+       __le16  led1_blink_on;
+       __le16  led1_blink_off;
+       u8      led1_group_id;
+       u8      led2_id;
+       u8      led2_type;
+       #define PORT_LED_QCFG_RESP_LED2_TYPE_SPEED    0x0UL
+       #define PORT_LED_QCFG_RESP_LED2_TYPE_ACTIVITY 0x1UL
+       #define PORT_LED_QCFG_RESP_LED2_TYPE_INVALID  0xffUL
+       #define PORT_LED_QCFG_RESP_LED2_TYPE_LAST    PORT_LED_QCFG_RESP_LED2_TYPE_INVALID
+       u8      led2_state;
+       #define PORT_LED_QCFG_RESP_LED2_STATE_DEFAULT  0x0UL
+       #define PORT_LED_QCFG_RESP_LED2_STATE_OFF      0x1UL
+       #define PORT_LED_QCFG_RESP_LED2_STATE_ON       0x2UL
+       #define PORT_LED_QCFG_RESP_LED2_STATE_BLINK    0x3UL
+       #define PORT_LED_QCFG_RESP_LED2_STATE_BLINKALT 0x4UL
+       #define PORT_LED_QCFG_RESP_LED2_STATE_LAST    PORT_LED_QCFG_RESP_LED2_STATE_BLINKALT
+       u8      led2_color;
+       #define PORT_LED_QCFG_RESP_LED2_COLOR_DEFAULT    0x0UL
+       #define PORT_LED_QCFG_RESP_LED2_COLOR_AMBER      0x1UL
+       #define PORT_LED_QCFG_RESP_LED2_COLOR_GREEN      0x2UL
+       #define PORT_LED_QCFG_RESP_LED2_COLOR_GREENAMBER 0x3UL
+       #define PORT_LED_QCFG_RESP_LED2_COLOR_LAST      PORT_LED_QCFG_RESP_LED2_COLOR_GREENAMBER
+       u8      unused_2;
+       __le16  led2_blink_on;
+       __le16  led2_blink_off;
+       u8      led2_group_id;
+       u8      led3_id;
+       u8      led3_type;
+       #define PORT_LED_QCFG_RESP_LED3_TYPE_SPEED    0x0UL
+       #define PORT_LED_QCFG_RESP_LED3_TYPE_ACTIVITY 0x1UL
+       #define PORT_LED_QCFG_RESP_LED3_TYPE_INVALID  0xffUL
+       #define PORT_LED_QCFG_RESP_LED3_TYPE_LAST    PORT_LED_QCFG_RESP_LED3_TYPE_INVALID
+       u8      led3_state;
+       #define PORT_LED_QCFG_RESP_LED3_STATE_DEFAULT  0x0UL
+       #define PORT_LED_QCFG_RESP_LED3_STATE_OFF      0x1UL
+       #define PORT_LED_QCFG_RESP_LED3_STATE_ON       0x2UL
+       #define PORT_LED_QCFG_RESP_LED3_STATE_BLINK    0x3UL
+       #define PORT_LED_QCFG_RESP_LED3_STATE_BLINKALT 0x4UL
+       #define PORT_LED_QCFG_RESP_LED3_STATE_LAST    PORT_LED_QCFG_RESP_LED3_STATE_BLINKALT
+       u8      led3_color;
+       #define PORT_LED_QCFG_RESP_LED3_COLOR_DEFAULT    0x0UL
+       #define PORT_LED_QCFG_RESP_LED3_COLOR_AMBER      0x1UL
+       #define PORT_LED_QCFG_RESP_LED3_COLOR_GREEN      0x2UL
+       #define PORT_LED_QCFG_RESP_LED3_COLOR_GREENAMBER 0x3UL
+       #define PORT_LED_QCFG_RESP_LED3_COLOR_LAST      PORT_LED_QCFG_RESP_LED3_COLOR_GREENAMBER
+       u8      unused_3;
+       __le16  led3_blink_on;
+       __le16  led3_blink_off;
+       u8      led3_group_id;
+       u8      unused_4[6];
+       u8      valid;
+};
+
+/* hwrm_port_led_qcaps_input (size:192b/24B) */
+struct hwrm_port_led_qcaps_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le16  port_id;
+       u8      unused_0[6];
+};
+
+/* hwrm_port_led_qcaps_output (size:384b/48B) */
+struct hwrm_port_led_qcaps_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      num_leds;
+       u8      unused[3];
+       u8      led0_id;
+       u8      led0_type;
+       #define PORT_LED_QCAPS_RESP_LED0_TYPE_SPEED    0x0UL
+       #define PORT_LED_QCAPS_RESP_LED0_TYPE_ACTIVITY 0x1UL
+       #define PORT_LED_QCAPS_RESP_LED0_TYPE_INVALID  0xffUL
+       #define PORT_LED_QCAPS_RESP_LED0_TYPE_LAST    PORT_LED_QCAPS_RESP_LED0_TYPE_INVALID
+       u8      led0_group_id;
+       u8      unused_0;
+       __le16  led0_state_caps;
+       #define PORT_LED_QCAPS_RESP_LED0_STATE_CAPS_ENABLED                 0x1UL
+       #define PORT_LED_QCAPS_RESP_LED0_STATE_CAPS_OFF_SUPPORTED           0x2UL
+       #define PORT_LED_QCAPS_RESP_LED0_STATE_CAPS_ON_SUPPORTED            0x4UL
+       #define PORT_LED_QCAPS_RESP_LED0_STATE_CAPS_BLINK_SUPPORTED         0x8UL
+       #define PORT_LED_QCAPS_RESP_LED0_STATE_CAPS_BLINK_ALT_SUPPORTED     0x10UL
+       __le16  led0_color_caps;
+       #define PORT_LED_QCAPS_RESP_LED0_COLOR_CAPS_RSVD                0x1UL
+       #define PORT_LED_QCAPS_RESP_LED0_COLOR_CAPS_AMBER_SUPPORTED     0x2UL
+       #define PORT_LED_QCAPS_RESP_LED0_COLOR_CAPS_GREEN_SUPPORTED     0x4UL
+       u8      led1_id;
+       u8      led1_type;
+       #define PORT_LED_QCAPS_RESP_LED1_TYPE_SPEED    0x0UL
+       #define PORT_LED_QCAPS_RESP_LED1_TYPE_ACTIVITY 0x1UL
+       #define PORT_LED_QCAPS_RESP_LED1_TYPE_INVALID  0xffUL
+       #define PORT_LED_QCAPS_RESP_LED1_TYPE_LAST    PORT_LED_QCAPS_RESP_LED1_TYPE_INVALID
+       u8      led1_group_id;
+       u8      unused_1;
+       __le16  led1_state_caps;
+       #define PORT_LED_QCAPS_RESP_LED1_STATE_CAPS_ENABLED                 0x1UL
+       #define PORT_LED_QCAPS_RESP_LED1_STATE_CAPS_OFF_SUPPORTED           0x2UL
+       #define PORT_LED_QCAPS_RESP_LED1_STATE_CAPS_ON_SUPPORTED            0x4UL
+       #define PORT_LED_QCAPS_RESP_LED1_STATE_CAPS_BLINK_SUPPORTED         0x8UL
+       #define PORT_LED_QCAPS_RESP_LED1_STATE_CAPS_BLINK_ALT_SUPPORTED     0x10UL
+       __le16  led1_color_caps;
+       #define PORT_LED_QCAPS_RESP_LED1_COLOR_CAPS_RSVD                0x1UL
+       #define PORT_LED_QCAPS_RESP_LED1_COLOR_CAPS_AMBER_SUPPORTED     0x2UL
+       #define PORT_LED_QCAPS_RESP_LED1_COLOR_CAPS_GREEN_SUPPORTED     0x4UL
+       u8      led2_id;
+       u8      led2_type;
+       #define PORT_LED_QCAPS_RESP_LED2_TYPE_SPEED    0x0UL
+       #define PORT_LED_QCAPS_RESP_LED2_TYPE_ACTIVITY 0x1UL
+       #define PORT_LED_QCAPS_RESP_LED2_TYPE_INVALID  0xffUL
+       #define PORT_LED_QCAPS_RESP_LED2_TYPE_LAST    PORT_LED_QCAPS_RESP_LED2_TYPE_INVALID
+       u8      led2_group_id;
+       u8      unused_2;
+       __le16  led2_state_caps;
+       #define PORT_LED_QCAPS_RESP_LED2_STATE_CAPS_ENABLED                 0x1UL
+       #define PORT_LED_QCAPS_RESP_LED2_STATE_CAPS_OFF_SUPPORTED           0x2UL
+       #define PORT_LED_QCAPS_RESP_LED2_STATE_CAPS_ON_SUPPORTED            0x4UL
+       #define PORT_LED_QCAPS_RESP_LED2_STATE_CAPS_BLINK_SUPPORTED         0x8UL
+       #define PORT_LED_QCAPS_RESP_LED2_STATE_CAPS_BLINK_ALT_SUPPORTED     0x10UL
+       __le16  led2_color_caps;
+       #define PORT_LED_QCAPS_RESP_LED2_COLOR_CAPS_RSVD                0x1UL
+       #define PORT_LED_QCAPS_RESP_LED2_COLOR_CAPS_AMBER_SUPPORTED     0x2UL
+       #define PORT_LED_QCAPS_RESP_LED2_COLOR_CAPS_GREEN_SUPPORTED     0x4UL
+       u8      led3_id;
+       u8      led3_type;
+       #define PORT_LED_QCAPS_RESP_LED3_TYPE_SPEED    0x0UL
+       #define PORT_LED_QCAPS_RESP_LED3_TYPE_ACTIVITY 0x1UL
+       #define PORT_LED_QCAPS_RESP_LED3_TYPE_INVALID  0xffUL
+       #define PORT_LED_QCAPS_RESP_LED3_TYPE_LAST    PORT_LED_QCAPS_RESP_LED3_TYPE_INVALID
+       u8      led3_group_id;
+       u8      unused_3;
+       __le16  led3_state_caps;
+       #define PORT_LED_QCAPS_RESP_LED3_STATE_CAPS_ENABLED                 0x1UL
+       #define PORT_LED_QCAPS_RESP_LED3_STATE_CAPS_OFF_SUPPORTED           0x2UL
+       #define PORT_LED_QCAPS_RESP_LED3_STATE_CAPS_ON_SUPPORTED            0x4UL
+       #define PORT_LED_QCAPS_RESP_LED3_STATE_CAPS_BLINK_SUPPORTED         0x8UL
+       #define PORT_LED_QCAPS_RESP_LED3_STATE_CAPS_BLINK_ALT_SUPPORTED     0x10UL
+       __le16  led3_color_caps;
+       #define PORT_LED_QCAPS_RESP_LED3_COLOR_CAPS_RSVD                0x1UL
+       #define PORT_LED_QCAPS_RESP_LED3_COLOR_CAPS_AMBER_SUPPORTED     0x2UL
+       #define PORT_LED_QCAPS_RESP_LED3_COLOR_CAPS_GREEN_SUPPORTED     0x4UL
+       u8      unused_4[3];
+       u8      valid;
+};
+
+/* hwrm_queue_qportcfg_input (size:192b/24B) */
+struct hwrm_queue_qportcfg_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le32  flags;
+       #define QUEUE_QPORTCFG_REQ_FLAGS_PATH     0x1UL
+       #define QUEUE_QPORTCFG_REQ_FLAGS_PATH_TX    0x0UL
+       #define QUEUE_QPORTCFG_REQ_FLAGS_PATH_RX    0x1UL
+       #define QUEUE_QPORTCFG_REQ_FLAGS_PATH_LAST QUEUE_QPORTCFG_REQ_FLAGS_PATH_RX
+       __le16  port_id;
+       u8      drv_qmap_cap;
+       #define QUEUE_QPORTCFG_REQ_DRV_QMAP_CAP_DISABLED 0x0UL
+       #define QUEUE_QPORTCFG_REQ_DRV_QMAP_CAP_ENABLED  0x1UL
+       #define QUEUE_QPORTCFG_REQ_DRV_QMAP_CAP_LAST    QUEUE_QPORTCFG_REQ_DRV_QMAP_CAP_ENABLED
+       u8      unused_0;
+};
+
+/* hwrm_queue_qportcfg_output (size:256b/32B) */
+struct hwrm_queue_qportcfg_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      max_configurable_queues;
+       u8      max_configurable_lossless_queues;
+       u8      queue_cfg_allowed;
+       u8      queue_cfg_info;
+       #define QUEUE_QPORTCFG_RESP_QUEUE_CFG_INFO_ASYM_CFG     0x1UL
+       u8      queue_pfcenable_cfg_allowed;
+       u8      queue_pri2cos_cfg_allowed;
+       u8      queue_cos2bw_cfg_allowed;
+       u8      queue_id0;
+       u8      queue_id0_service_profile;
+       #define QUEUE_QPORTCFG_RESP_QUEUE_ID0_SERVICE_PROFILE_LOSSY          0x0UL
+       #define QUEUE_QPORTCFG_RESP_QUEUE_ID0_SERVICE_PROFILE_LOSSLESS       0x1UL
+       #define QUEUE_QPORTCFG_RESP_QUEUE_ID0_SERVICE_PROFILE_LOSSLESS_ROCE  0x1UL
+       #define QUEUE_QPORTCFG_RESP_QUEUE_ID0_SERVICE_PROFILE_LOSSY_ROCE_CNP 0x2UL
+       #define QUEUE_QPORTCFG_RESP_QUEUE_ID0_SERVICE_PROFILE_LOSSLESS_NIC   0x3UL
+       #define QUEUE_QPORTCFG_RESP_QUEUE_ID0_SERVICE_PROFILE_UNKNOWN        0xffUL
+       #define QUEUE_QPORTCFG_RESP_QUEUE_ID0_SERVICE_PROFILE_LAST          QUEUE_QPORTCFG_RESP_QUEUE_ID0_SERVICE_PROFILE_UNKNOWN
+       u8      queue_id1;
+       u8      queue_id1_service_profile;
+       #define QUEUE_QPORTCFG_RESP_QUEUE_ID1_SERVICE_PROFILE_LOSSY          0x0UL
+       #define QUEUE_QPORTCFG_RESP_QUEUE_ID1_SERVICE_PROFILE_LOSSLESS       0x1UL
+       #define QUEUE_QPORTCFG_RESP_QUEUE_ID1_SERVICE_PROFILE_LOSSLESS_ROCE  0x1UL
+       #define QUEUE_QPORTCFG_RESP_QUEUE_ID1_SERVICE_PROFILE_LOSSY_ROCE_CNP 0x2UL
+       #define QUEUE_QPORTCFG_RESP_QUEUE_ID1_SERVICE_PROFILE_LOSSLESS_NIC   0x3UL
+       #define QUEUE_QPORTCFG_RESP_QUEUE_ID1_SERVICE_PROFILE_UNKNOWN        0xffUL
+       #define QUEUE_QPORTCFG_RESP_QUEUE_ID1_SERVICE_PROFILE_LAST          QUEUE_QPORTCFG_RESP_QUEUE_ID1_SERVICE_PROFILE_UNKNOWN
+       u8      queue_id2;
+       u8      queue_id2_service_profile;
+       #define QUEUE_QPORTCFG_RESP_QUEUE_ID2_SERVICE_PROFILE_LOSSY          0x0UL
+       #define QUEUE_QPORTCFG_RESP_QUEUE_ID2_SERVICE_PROFILE_LOSSLESS       0x1UL
+       #define QUEUE_QPORTCFG_RESP_QUEUE_ID2_SERVICE_PROFILE_LOSSLESS_ROCE  0x1UL
+       #define QUEUE_QPORTCFG_RESP_QUEUE_ID2_SERVICE_PROFILE_LOSSY_ROCE_CNP 0x2UL
+       #define QUEUE_QPORTCFG_RESP_QUEUE_ID2_SERVICE_PROFILE_LOSSLESS_NIC   0x3UL
+       #define QUEUE_QPORTCFG_RESP_QUEUE_ID2_SERVICE_PROFILE_UNKNOWN        0xffUL
+       #define QUEUE_QPORTCFG_RESP_QUEUE_ID2_SERVICE_PROFILE_LAST          QUEUE_QPORTCFG_RESP_QUEUE_ID2_SERVICE_PROFILE_UNKNOWN
+       u8      queue_id3;
+       u8      queue_id3_service_profile;
+       #define QUEUE_QPORTCFG_RESP_QUEUE_ID3_SERVICE_PROFILE_LOSSY          0x0UL
+       #define QUEUE_QPORTCFG_RESP_QUEUE_ID3_SERVICE_PROFILE_LOSSLESS       0x1UL
+       #define QUEUE_QPORTCFG_RESP_QUEUE_ID3_SERVICE_PROFILE_LOSSLESS_ROCE  0x1UL
+       #define QUEUE_QPORTCFG_RESP_QUEUE_ID3_SERVICE_PROFILE_LOSSY_ROCE_CNP 0x2UL
+       #define QUEUE_QPORTCFG_RESP_QUEUE_ID3_SERVICE_PROFILE_LOSSLESS_NIC   0x3UL
+       #define QUEUE_QPORTCFG_RESP_QUEUE_ID3_SERVICE_PROFILE_UNKNOWN        0xffUL
+       #define QUEUE_QPORTCFG_RESP_QUEUE_ID3_SERVICE_PROFILE_LAST          QUEUE_QPORTCFG_RESP_QUEUE_ID3_SERVICE_PROFILE_UNKNOWN
+       u8      queue_id4;
+       u8      queue_id4_service_profile;
+       #define QUEUE_QPORTCFG_RESP_QUEUE_ID4_SERVICE_PROFILE_LOSSY          0x0UL
+       #define QUEUE_QPORTCFG_RESP_QUEUE_ID4_SERVICE_PROFILE_LOSSLESS       0x1UL
+       #define QUEUE_QPORTCFG_RESP_QUEUE_ID4_SERVICE_PROFILE_LOSSLESS_ROCE  0x1UL
+       #define QUEUE_QPORTCFG_RESP_QUEUE_ID4_SERVICE_PROFILE_LOSSY_ROCE_CNP 0x2UL
+       #define QUEUE_QPORTCFG_RESP_QUEUE_ID4_SERVICE_PROFILE_LOSSLESS_NIC   0x3UL
+       #define QUEUE_QPORTCFG_RESP_QUEUE_ID4_SERVICE_PROFILE_UNKNOWN        0xffUL
+       #define QUEUE_QPORTCFG_RESP_QUEUE_ID4_SERVICE_PROFILE_LAST          QUEUE_QPORTCFG_RESP_QUEUE_ID4_SERVICE_PROFILE_UNKNOWN
+       u8      queue_id5;
+       u8      queue_id5_service_profile;
+       #define QUEUE_QPORTCFG_RESP_QUEUE_ID5_SERVICE_PROFILE_LOSSY          0x0UL
+       #define QUEUE_QPORTCFG_RESP_QUEUE_ID5_SERVICE_PROFILE_LOSSLESS       0x1UL
+       #define QUEUE_QPORTCFG_RESP_QUEUE_ID5_SERVICE_PROFILE_LOSSLESS_ROCE  0x1UL
+       #define QUEUE_QPORTCFG_RESP_QUEUE_ID5_SERVICE_PROFILE_LOSSY_ROCE_CNP 0x2UL
+       #define QUEUE_QPORTCFG_RESP_QUEUE_ID5_SERVICE_PROFILE_LOSSLESS_NIC   0x3UL
+       #define QUEUE_QPORTCFG_RESP_QUEUE_ID5_SERVICE_PROFILE_UNKNOWN        0xffUL
+       #define QUEUE_QPORTCFG_RESP_QUEUE_ID5_SERVICE_PROFILE_LAST          QUEUE_QPORTCFG_RESP_QUEUE_ID5_SERVICE_PROFILE_UNKNOWN
+       u8      queue_id6;
+       u8      queue_id6_service_profile;
+       #define QUEUE_QPORTCFG_RESP_QUEUE_ID6_SERVICE_PROFILE_LOSSY          0x0UL
+       #define QUEUE_QPORTCFG_RESP_QUEUE_ID6_SERVICE_PROFILE_LOSSLESS       0x1UL
+       #define QUEUE_QPORTCFG_RESP_QUEUE_ID6_SERVICE_PROFILE_LOSSLESS_ROCE  0x1UL
+       #define QUEUE_QPORTCFG_RESP_QUEUE_ID6_SERVICE_PROFILE_LOSSY_ROCE_CNP 0x2UL
+       #define QUEUE_QPORTCFG_RESP_QUEUE_ID6_SERVICE_PROFILE_LOSSLESS_NIC   0x3UL
+       #define QUEUE_QPORTCFG_RESP_QUEUE_ID6_SERVICE_PROFILE_UNKNOWN        0xffUL
+       #define QUEUE_QPORTCFG_RESP_QUEUE_ID6_SERVICE_PROFILE_LAST          QUEUE_QPORTCFG_RESP_QUEUE_ID6_SERVICE_PROFILE_UNKNOWN
+       u8      queue_id7;
+       u8      queue_id7_service_profile;
+       #define QUEUE_QPORTCFG_RESP_QUEUE_ID7_SERVICE_PROFILE_LOSSY          0x0UL
+       #define QUEUE_QPORTCFG_RESP_QUEUE_ID7_SERVICE_PROFILE_LOSSLESS       0x1UL
+       #define QUEUE_QPORTCFG_RESP_QUEUE_ID7_SERVICE_PROFILE_LOSSLESS_ROCE  0x1UL
+       #define QUEUE_QPORTCFG_RESP_QUEUE_ID7_SERVICE_PROFILE_LOSSY_ROCE_CNP 0x2UL
+       #define QUEUE_QPORTCFG_RESP_QUEUE_ID7_SERVICE_PROFILE_LOSSLESS_NIC   0x3UL
+       #define QUEUE_QPORTCFG_RESP_QUEUE_ID7_SERVICE_PROFILE_UNKNOWN        0xffUL
+       #define QUEUE_QPORTCFG_RESP_QUEUE_ID7_SERVICE_PROFILE_LAST          QUEUE_QPORTCFG_RESP_QUEUE_ID7_SERVICE_PROFILE_UNKNOWN
+       u8      valid;
+};
+
+/* hwrm_queue_qcfg_input (size:192b/24B) */
+struct hwrm_queue_qcfg_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le32  flags;
+       #define QUEUE_QCFG_REQ_FLAGS_PATH     0x1UL
+       #define QUEUE_QCFG_REQ_FLAGS_PATH_TX    0x0UL
+       #define QUEUE_QCFG_REQ_FLAGS_PATH_RX    0x1UL
+       #define QUEUE_QCFG_REQ_FLAGS_PATH_LAST QUEUE_QCFG_REQ_FLAGS_PATH_RX
+       __le32  queue_id;
+};
+
+/* hwrm_queue_qcfg_output (size:128b/16B) */
+struct hwrm_queue_qcfg_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le32  queue_len;
+       u8      service_profile;
+       #define QUEUE_QCFG_RESP_SERVICE_PROFILE_LOSSY    0x0UL
+       #define QUEUE_QCFG_RESP_SERVICE_PROFILE_LOSSLESS 0x1UL
+       #define QUEUE_QCFG_RESP_SERVICE_PROFILE_UNKNOWN  0xffUL
+       #define QUEUE_QCFG_RESP_SERVICE_PROFILE_LAST    QUEUE_QCFG_RESP_SERVICE_PROFILE_UNKNOWN
+       u8      queue_cfg_info;
+       #define QUEUE_QCFG_RESP_QUEUE_CFG_INFO_ASYM_CFG     0x1UL
+       u8      unused_0;
+       u8      valid;
+};
+
+/* hwrm_queue_cfg_input (size:320b/40B) */
+struct hwrm_queue_cfg_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le32  flags;
+       #define QUEUE_CFG_REQ_FLAGS_PATH_MASK 0x3UL
+       #define QUEUE_CFG_REQ_FLAGS_PATH_SFT  0
+       #define QUEUE_CFG_REQ_FLAGS_PATH_TX     0x0UL
+       #define QUEUE_CFG_REQ_FLAGS_PATH_RX     0x1UL
+       #define QUEUE_CFG_REQ_FLAGS_PATH_BIDIR  0x2UL
+       #define QUEUE_CFG_REQ_FLAGS_PATH_LAST  QUEUE_CFG_REQ_FLAGS_PATH_BIDIR
+       __le32  enables;
+       #define QUEUE_CFG_REQ_ENABLES_DFLT_LEN            0x1UL
+       #define QUEUE_CFG_REQ_ENABLES_SERVICE_PROFILE     0x2UL
+       __le32  queue_id;
+       __le32  dflt_len;
+       u8      service_profile;
+       #define QUEUE_CFG_REQ_SERVICE_PROFILE_LOSSY    0x0UL
+       #define QUEUE_CFG_REQ_SERVICE_PROFILE_LOSSLESS 0x1UL
+       #define QUEUE_CFG_REQ_SERVICE_PROFILE_UNKNOWN  0xffUL
+       #define QUEUE_CFG_REQ_SERVICE_PROFILE_LAST    QUEUE_CFG_REQ_SERVICE_PROFILE_UNKNOWN
+       u8      unused_0[7];
+};
+
+/* hwrm_queue_cfg_output (size:128b/16B) */
+struct hwrm_queue_cfg_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_queue_pfcenable_qcfg_input (size:192b/24B) */
+struct hwrm_queue_pfcenable_qcfg_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le16  port_id;
+       u8      unused_0[6];
+};
+
+/* hwrm_queue_pfcenable_qcfg_output (size:128b/16B) */
+struct hwrm_queue_pfcenable_qcfg_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le32  flags;
+       #define QUEUE_PFCENABLE_QCFG_RESP_FLAGS_PRI0_PFC_ENABLED     0x1UL
+       #define QUEUE_PFCENABLE_QCFG_RESP_FLAGS_PRI1_PFC_ENABLED     0x2UL
+       #define QUEUE_PFCENABLE_QCFG_RESP_FLAGS_PRI2_PFC_ENABLED     0x4UL
+       #define QUEUE_PFCENABLE_QCFG_RESP_FLAGS_PRI3_PFC_ENABLED     0x8UL
+       #define QUEUE_PFCENABLE_QCFG_RESP_FLAGS_PRI4_PFC_ENABLED     0x10UL
+       #define QUEUE_PFCENABLE_QCFG_RESP_FLAGS_PRI5_PFC_ENABLED     0x20UL
+       #define QUEUE_PFCENABLE_QCFG_RESP_FLAGS_PRI6_PFC_ENABLED     0x40UL
+       #define QUEUE_PFCENABLE_QCFG_RESP_FLAGS_PRI7_PFC_ENABLED     0x80UL
+       u8      unused_0[3];
+       u8      valid;
+};
+
+/* hwrm_queue_pfcenable_cfg_input (size:192b/24B) */
+struct hwrm_queue_pfcenable_cfg_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le32  flags;
+       #define QUEUE_PFCENABLE_CFG_REQ_FLAGS_PRI0_PFC_ENABLED     0x1UL
+       #define QUEUE_PFCENABLE_CFG_REQ_FLAGS_PRI1_PFC_ENABLED     0x2UL
+       #define QUEUE_PFCENABLE_CFG_REQ_FLAGS_PRI2_PFC_ENABLED     0x4UL
+       #define QUEUE_PFCENABLE_CFG_REQ_FLAGS_PRI3_PFC_ENABLED     0x8UL
+       #define QUEUE_PFCENABLE_CFG_REQ_FLAGS_PRI4_PFC_ENABLED     0x10UL
+       #define QUEUE_PFCENABLE_CFG_REQ_FLAGS_PRI5_PFC_ENABLED     0x20UL
+       #define QUEUE_PFCENABLE_CFG_REQ_FLAGS_PRI6_PFC_ENABLED     0x40UL
+       #define QUEUE_PFCENABLE_CFG_REQ_FLAGS_PRI7_PFC_ENABLED     0x80UL
+       __le16  port_id;
+       u8      unused_0[2];
+};
+
+/* hwrm_queue_pfcenable_cfg_output (size:128b/16B) */
+struct hwrm_queue_pfcenable_cfg_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_queue_pri2cos_qcfg_input (size:192b/24B) */
+struct hwrm_queue_pri2cos_qcfg_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le32  flags;
+       #define QUEUE_PRI2COS_QCFG_REQ_FLAGS_PATH      0x1UL
+       #define QUEUE_PRI2COS_QCFG_REQ_FLAGS_PATH_TX     0x0UL
+       #define QUEUE_PRI2COS_QCFG_REQ_FLAGS_PATH_RX     0x1UL
+       #define QUEUE_PRI2COS_QCFG_REQ_FLAGS_PATH_LAST  QUEUE_PRI2COS_QCFG_REQ_FLAGS_PATH_RX
+       #define QUEUE_PRI2COS_QCFG_REQ_FLAGS_IVLAN     0x2UL
+       u8      port_id;
+       u8      unused_0[3];
+};
+
+/* hwrm_queue_pri2cos_qcfg_output (size:192b/24B) */
+struct hwrm_queue_pri2cos_qcfg_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      pri0_cos_queue_id;
+       u8      pri1_cos_queue_id;
+       u8      pri2_cos_queue_id;
+       u8      pri3_cos_queue_id;
+       u8      pri4_cos_queue_id;
+       u8      pri5_cos_queue_id;
+       u8      pri6_cos_queue_id;
+       u8      pri7_cos_queue_id;
+       u8      queue_cfg_info;
+       #define QUEUE_PRI2COS_QCFG_RESP_QUEUE_CFG_INFO_ASYM_CFG     0x1UL
+       u8      unused_0[6];
+       u8      valid;
+};
+
+/* hwrm_queue_pri2cos_cfg_input (size:320b/40B) */
+struct hwrm_queue_pri2cos_cfg_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le32  flags;
+       #define QUEUE_PRI2COS_CFG_REQ_FLAGS_PATH_MASK 0x3UL
+       #define QUEUE_PRI2COS_CFG_REQ_FLAGS_PATH_SFT  0
+       #define QUEUE_PRI2COS_CFG_REQ_FLAGS_PATH_TX     0x0UL
+       #define QUEUE_PRI2COS_CFG_REQ_FLAGS_PATH_RX     0x1UL
+       #define QUEUE_PRI2COS_CFG_REQ_FLAGS_PATH_BIDIR  0x2UL
+       #define QUEUE_PRI2COS_CFG_REQ_FLAGS_PATH_LAST  QUEUE_PRI2COS_CFG_REQ_FLAGS_PATH_BIDIR
+       #define QUEUE_PRI2COS_CFG_REQ_FLAGS_IVLAN     0x4UL
+       __le32  enables;
+       #define QUEUE_PRI2COS_CFG_REQ_ENABLES_PRI0_COS_QUEUE_ID     0x1UL
+       #define QUEUE_PRI2COS_CFG_REQ_ENABLES_PRI1_COS_QUEUE_ID     0x2UL
+       #define QUEUE_PRI2COS_CFG_REQ_ENABLES_PRI2_COS_QUEUE_ID     0x4UL
+       #define QUEUE_PRI2COS_CFG_REQ_ENABLES_PRI3_COS_QUEUE_ID     0x8UL
+       #define QUEUE_PRI2COS_CFG_REQ_ENABLES_PRI4_COS_QUEUE_ID     0x10UL
+       #define QUEUE_PRI2COS_CFG_REQ_ENABLES_PRI5_COS_QUEUE_ID     0x20UL
+       #define QUEUE_PRI2COS_CFG_REQ_ENABLES_PRI6_COS_QUEUE_ID     0x40UL
+       #define QUEUE_PRI2COS_CFG_REQ_ENABLES_PRI7_COS_QUEUE_ID     0x80UL
+       u8      port_id;
+       u8      pri0_cos_queue_id;
+       u8      pri1_cos_queue_id;
+       u8      pri2_cos_queue_id;
+       u8      pri3_cos_queue_id;
+       u8      pri4_cos_queue_id;
+       u8      pri5_cos_queue_id;
+       u8      pri6_cos_queue_id;
+       u8      pri7_cos_queue_id;
+       u8      unused_0[7];
+};
+
+/* hwrm_queue_pri2cos_cfg_output (size:128b/16B) */
+struct hwrm_queue_pri2cos_cfg_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_queue_cos2bw_qcfg_input (size:192b/24B) */
+struct hwrm_queue_cos2bw_qcfg_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le16  port_id;
+       u8      unused_0[6];
+};
+
+/* hwrm_queue_cos2bw_qcfg_output (size:896b/112B) */
+struct hwrm_queue_cos2bw_qcfg_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      queue_id0;
+       u8      unused_0;
+       __le16  unused_1;
+       __le32  queue_id0_min_bw;
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MIN_BW_BW_VALUE_MASK             0xfffffffUL
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MIN_BW_BW_VALUE_SFT              0
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MIN_BW_SCALE                     0x10000000UL
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MIN_BW_SCALE_BITS                  (0x0UL << 28)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MIN_BW_SCALE_BYTES                 (0x1UL << 28)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MIN_BW_SCALE_LAST                 QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MIN_BW_SCALE_BYTES
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_MASK        0xe0000000UL
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_SFT         29
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_MEGA          (0x0UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_KILO          (0x2UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_BASE          (0x4UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_GIGA          (0x6UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_INVALID       (0x7UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_LAST         QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_INVALID
+       __le32  queue_id0_max_bw;
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MAX_BW_BW_VALUE_MASK             0xfffffffUL
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MAX_BW_BW_VALUE_SFT              0
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MAX_BW_SCALE                     0x10000000UL
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MAX_BW_SCALE_BITS                  (0x0UL << 28)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MAX_BW_SCALE_BYTES                 (0x1UL << 28)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MAX_BW_SCALE_LAST                 QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MAX_BW_SCALE_BYTES
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_MASK        0xe0000000UL
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_SFT         29
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_MEGA          (0x0UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_KILO          (0x2UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_BASE          (0x4UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_GIGA          (0x6UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_INVALID       (0x7UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_LAST         QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_INVALID
+       u8      queue_id0_tsa_assign;
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_TSA_ASSIGN_SP             0x0UL
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_TSA_ASSIGN_ETS            0x1UL
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_TSA_ASSIGN_RESERVED_FIRST 0x2UL
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_TSA_ASSIGN_RESERVED_LAST  0xffUL
+       u8      queue_id0_pri_lvl;
+       u8      queue_id0_bw_weight;
+       u8      queue_id1;
+       __le32  queue_id1_min_bw;
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MIN_BW_BW_VALUE_MASK             0xfffffffUL
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MIN_BW_BW_VALUE_SFT              0
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MIN_BW_SCALE                     0x10000000UL
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MIN_BW_SCALE_BITS                  (0x0UL << 28)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MIN_BW_SCALE_BYTES                 (0x1UL << 28)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MIN_BW_SCALE_LAST                 QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MIN_BW_SCALE_BYTES
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MIN_BW_BW_VALUE_UNIT_MASK        0xe0000000UL
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MIN_BW_BW_VALUE_UNIT_SFT         29
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MIN_BW_BW_VALUE_UNIT_MEGA          (0x0UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MIN_BW_BW_VALUE_UNIT_KILO          (0x2UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MIN_BW_BW_VALUE_UNIT_BASE          (0x4UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MIN_BW_BW_VALUE_UNIT_GIGA          (0x6UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MIN_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MIN_BW_BW_VALUE_UNIT_INVALID       (0x7UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MIN_BW_BW_VALUE_UNIT_LAST         QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MIN_BW_BW_VALUE_UNIT_INVALID
+       __le32  queue_id1_max_bw;
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MAX_BW_BW_VALUE_MASK             0xfffffffUL
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MAX_BW_BW_VALUE_SFT              0
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MAX_BW_SCALE                     0x10000000UL
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MAX_BW_SCALE_BITS                  (0x0UL << 28)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MAX_BW_SCALE_BYTES                 (0x1UL << 28)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MAX_BW_SCALE_LAST                 QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MAX_BW_SCALE_BYTES
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MAX_BW_BW_VALUE_UNIT_MASK        0xe0000000UL
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MAX_BW_BW_VALUE_UNIT_SFT         29
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MAX_BW_BW_VALUE_UNIT_MEGA          (0x0UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MAX_BW_BW_VALUE_UNIT_KILO          (0x2UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MAX_BW_BW_VALUE_UNIT_BASE          (0x4UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MAX_BW_BW_VALUE_UNIT_GIGA          (0x6UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MAX_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MAX_BW_BW_VALUE_UNIT_INVALID       (0x7UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MAX_BW_BW_VALUE_UNIT_LAST         QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MAX_BW_BW_VALUE_UNIT_INVALID
+       u8      queue_id1_tsa_assign;
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_TSA_ASSIGN_SP             0x0UL
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_TSA_ASSIGN_ETS            0x1UL
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_TSA_ASSIGN_RESERVED_FIRST 0x2UL
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_TSA_ASSIGN_RESERVED_LAST  0xffUL
+       u8      queue_id1_pri_lvl;
+       u8      queue_id1_bw_weight;
+       u8      queue_id2;
+       __le32  queue_id2_min_bw;
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MIN_BW_BW_VALUE_MASK             0xfffffffUL
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MIN_BW_BW_VALUE_SFT              0
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MIN_BW_SCALE                     0x10000000UL
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MIN_BW_SCALE_BITS                  (0x0UL << 28)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MIN_BW_SCALE_BYTES                 (0x1UL << 28)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MIN_BW_SCALE_LAST                 QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MIN_BW_SCALE_BYTES
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MIN_BW_BW_VALUE_UNIT_MASK        0xe0000000UL
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MIN_BW_BW_VALUE_UNIT_SFT         29
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MIN_BW_BW_VALUE_UNIT_MEGA          (0x0UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MIN_BW_BW_VALUE_UNIT_KILO          (0x2UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MIN_BW_BW_VALUE_UNIT_BASE          (0x4UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MIN_BW_BW_VALUE_UNIT_GIGA          (0x6UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MIN_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MIN_BW_BW_VALUE_UNIT_INVALID       (0x7UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MIN_BW_BW_VALUE_UNIT_LAST         QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MIN_BW_BW_VALUE_UNIT_INVALID
+       __le32  queue_id2_max_bw;
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MAX_BW_BW_VALUE_MASK             0xfffffffUL
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MAX_BW_BW_VALUE_SFT              0
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MAX_BW_SCALE                     0x10000000UL
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MAX_BW_SCALE_BITS                  (0x0UL << 28)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MAX_BW_SCALE_BYTES                 (0x1UL << 28)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MAX_BW_SCALE_LAST                 QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MAX_BW_SCALE_BYTES
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MAX_BW_BW_VALUE_UNIT_MASK        0xe0000000UL
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MAX_BW_BW_VALUE_UNIT_SFT         29
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MAX_BW_BW_VALUE_UNIT_MEGA          (0x0UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MAX_BW_BW_VALUE_UNIT_KILO          (0x2UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MAX_BW_BW_VALUE_UNIT_BASE          (0x4UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MAX_BW_BW_VALUE_UNIT_GIGA          (0x6UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MAX_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MAX_BW_BW_VALUE_UNIT_INVALID       (0x7UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MAX_BW_BW_VALUE_UNIT_LAST         QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MAX_BW_BW_VALUE_UNIT_INVALID
+       u8      queue_id2_tsa_assign;
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_TSA_ASSIGN_SP             0x0UL
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_TSA_ASSIGN_ETS            0x1UL
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_TSA_ASSIGN_RESERVED_FIRST 0x2UL
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_TSA_ASSIGN_RESERVED_LAST  0xffUL
+       u8      queue_id2_pri_lvl;
+       u8      queue_id2_bw_weight;
+       u8      queue_id3;
+       __le32  queue_id3_min_bw;
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MIN_BW_BW_VALUE_MASK             0xfffffffUL
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MIN_BW_BW_VALUE_SFT              0
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MIN_BW_SCALE                     0x10000000UL
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MIN_BW_SCALE_BITS                  (0x0UL << 28)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MIN_BW_SCALE_BYTES                 (0x1UL << 28)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MIN_BW_SCALE_LAST                 QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MIN_BW_SCALE_BYTES
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MIN_BW_BW_VALUE_UNIT_MASK        0xe0000000UL
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MIN_BW_BW_VALUE_UNIT_SFT         29
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MIN_BW_BW_VALUE_UNIT_MEGA          (0x0UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MIN_BW_BW_VALUE_UNIT_KILO          (0x2UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MIN_BW_BW_VALUE_UNIT_BASE          (0x4UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MIN_BW_BW_VALUE_UNIT_GIGA          (0x6UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MIN_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MIN_BW_BW_VALUE_UNIT_INVALID       (0x7UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MIN_BW_BW_VALUE_UNIT_LAST         QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MIN_BW_BW_VALUE_UNIT_INVALID
+       __le32  queue_id3_max_bw;
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MAX_BW_BW_VALUE_MASK             0xfffffffUL
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MAX_BW_BW_VALUE_SFT              0
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MAX_BW_SCALE                     0x10000000UL
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MAX_BW_SCALE_BITS                  (0x0UL << 28)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MAX_BW_SCALE_BYTES                 (0x1UL << 28)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MAX_BW_SCALE_LAST                 QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MAX_BW_SCALE_BYTES
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MAX_BW_BW_VALUE_UNIT_MASK        0xe0000000UL
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MAX_BW_BW_VALUE_UNIT_SFT         29
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MAX_BW_BW_VALUE_UNIT_MEGA          (0x0UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MAX_BW_BW_VALUE_UNIT_KILO          (0x2UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MAX_BW_BW_VALUE_UNIT_BASE          (0x4UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MAX_BW_BW_VALUE_UNIT_GIGA          (0x6UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MAX_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MAX_BW_BW_VALUE_UNIT_INVALID       (0x7UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MAX_BW_BW_VALUE_UNIT_LAST         QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MAX_BW_BW_VALUE_UNIT_INVALID
+       u8      queue_id3_tsa_assign;
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_TSA_ASSIGN_SP             0x0UL
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_TSA_ASSIGN_ETS            0x1UL
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_TSA_ASSIGN_RESERVED_FIRST 0x2UL
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_TSA_ASSIGN_RESERVED_LAST  0xffUL
+       u8      queue_id3_pri_lvl;
+       u8      queue_id3_bw_weight;
+       u8      queue_id4;
+       __le32  queue_id4_min_bw;
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MIN_BW_BW_VALUE_MASK             0xfffffffUL
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MIN_BW_BW_VALUE_SFT              0
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MIN_BW_SCALE                     0x10000000UL
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MIN_BW_SCALE_BITS                  (0x0UL << 28)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MIN_BW_SCALE_BYTES                 (0x1UL << 28)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MIN_BW_SCALE_LAST                 QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MIN_BW_SCALE_BYTES
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MIN_BW_BW_VALUE_UNIT_MASK        0xe0000000UL
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MIN_BW_BW_VALUE_UNIT_SFT         29
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MIN_BW_BW_VALUE_UNIT_MEGA          (0x0UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MIN_BW_BW_VALUE_UNIT_KILO          (0x2UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MIN_BW_BW_VALUE_UNIT_BASE          (0x4UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MIN_BW_BW_VALUE_UNIT_GIGA          (0x6UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MIN_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MIN_BW_BW_VALUE_UNIT_INVALID       (0x7UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MIN_BW_BW_VALUE_UNIT_LAST         QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MIN_BW_BW_VALUE_UNIT_INVALID
+       __le32  queue_id4_max_bw;
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MAX_BW_BW_VALUE_MASK             0xfffffffUL
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MAX_BW_BW_VALUE_SFT              0
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MAX_BW_SCALE                     0x10000000UL
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MAX_BW_SCALE_BITS                  (0x0UL << 28)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MAX_BW_SCALE_BYTES                 (0x1UL << 28)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MAX_BW_SCALE_LAST                 QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MAX_BW_SCALE_BYTES
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MAX_BW_BW_VALUE_UNIT_MASK        0xe0000000UL
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MAX_BW_BW_VALUE_UNIT_SFT         29
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MAX_BW_BW_VALUE_UNIT_MEGA          (0x0UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MAX_BW_BW_VALUE_UNIT_KILO          (0x2UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MAX_BW_BW_VALUE_UNIT_BASE          (0x4UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MAX_BW_BW_VALUE_UNIT_GIGA          (0x6UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MAX_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MAX_BW_BW_VALUE_UNIT_INVALID       (0x7UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MAX_BW_BW_VALUE_UNIT_LAST         QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MAX_BW_BW_VALUE_UNIT_INVALID
+       u8      queue_id4_tsa_assign;
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_TSA_ASSIGN_SP             0x0UL
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_TSA_ASSIGN_ETS            0x1UL
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_TSA_ASSIGN_RESERVED_FIRST 0x2UL
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_TSA_ASSIGN_RESERVED_LAST  0xffUL
+       u8      queue_id4_pri_lvl;
+       u8      queue_id4_bw_weight;
+       u8      queue_id5;
+       __le32  queue_id5_min_bw;
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MIN_BW_BW_VALUE_MASK             0xfffffffUL
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MIN_BW_BW_VALUE_SFT              0
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MIN_BW_SCALE                     0x10000000UL
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MIN_BW_SCALE_BITS                  (0x0UL << 28)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MIN_BW_SCALE_BYTES                 (0x1UL << 28)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MIN_BW_SCALE_LAST                 QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MIN_BW_SCALE_BYTES
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MIN_BW_BW_VALUE_UNIT_MASK        0xe0000000UL
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MIN_BW_BW_VALUE_UNIT_SFT         29
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MIN_BW_BW_VALUE_UNIT_MEGA          (0x0UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MIN_BW_BW_VALUE_UNIT_KILO          (0x2UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MIN_BW_BW_VALUE_UNIT_BASE          (0x4UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MIN_BW_BW_VALUE_UNIT_GIGA          (0x6UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MIN_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MIN_BW_BW_VALUE_UNIT_INVALID       (0x7UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MIN_BW_BW_VALUE_UNIT_LAST         QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MIN_BW_BW_VALUE_UNIT_INVALID
+       __le32  queue_id5_max_bw;
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MAX_BW_BW_VALUE_MASK             0xfffffffUL
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MAX_BW_BW_VALUE_SFT              0
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MAX_BW_SCALE                     0x10000000UL
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MAX_BW_SCALE_BITS                  (0x0UL << 28)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MAX_BW_SCALE_BYTES                 (0x1UL << 28)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MAX_BW_SCALE_LAST                 QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MAX_BW_SCALE_BYTES
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MAX_BW_BW_VALUE_UNIT_MASK        0xe0000000UL
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MAX_BW_BW_VALUE_UNIT_SFT         29
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MAX_BW_BW_VALUE_UNIT_MEGA          (0x0UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MAX_BW_BW_VALUE_UNIT_KILO          (0x2UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MAX_BW_BW_VALUE_UNIT_BASE          (0x4UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MAX_BW_BW_VALUE_UNIT_GIGA          (0x6UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MAX_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MAX_BW_BW_VALUE_UNIT_INVALID       (0x7UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MAX_BW_BW_VALUE_UNIT_LAST         QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MAX_BW_BW_VALUE_UNIT_INVALID
+       u8      queue_id5_tsa_assign;
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_TSA_ASSIGN_SP             0x0UL
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_TSA_ASSIGN_ETS            0x1UL
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_TSA_ASSIGN_RESERVED_FIRST 0x2UL
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_TSA_ASSIGN_RESERVED_LAST  0xffUL
+       u8      queue_id5_pri_lvl;
+       u8      queue_id5_bw_weight;
+       u8      queue_id6;
+       __le32  queue_id6_min_bw;
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MIN_BW_BW_VALUE_MASK             0xfffffffUL
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MIN_BW_BW_VALUE_SFT              0
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MIN_BW_SCALE                     0x10000000UL
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MIN_BW_SCALE_BITS                  (0x0UL << 28)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MIN_BW_SCALE_BYTES                 (0x1UL << 28)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MIN_BW_SCALE_LAST                 QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MIN_BW_SCALE_BYTES
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MIN_BW_BW_VALUE_UNIT_MASK        0xe0000000UL
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MIN_BW_BW_VALUE_UNIT_SFT         29
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MIN_BW_BW_VALUE_UNIT_MEGA          (0x0UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MIN_BW_BW_VALUE_UNIT_KILO          (0x2UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MIN_BW_BW_VALUE_UNIT_BASE          (0x4UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MIN_BW_BW_VALUE_UNIT_GIGA          (0x6UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MIN_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MIN_BW_BW_VALUE_UNIT_INVALID       (0x7UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MIN_BW_BW_VALUE_UNIT_LAST         QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MIN_BW_BW_VALUE_UNIT_INVALID
+       __le32  queue_id6_max_bw;
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MAX_BW_BW_VALUE_MASK             0xfffffffUL
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MAX_BW_BW_VALUE_SFT              0
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MAX_BW_SCALE                     0x10000000UL
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MAX_BW_SCALE_BITS                  (0x0UL << 28)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MAX_BW_SCALE_BYTES                 (0x1UL << 28)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MAX_BW_SCALE_LAST                 QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MAX_BW_SCALE_BYTES
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MAX_BW_BW_VALUE_UNIT_MASK        0xe0000000UL
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MAX_BW_BW_VALUE_UNIT_SFT         29
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MAX_BW_BW_VALUE_UNIT_MEGA          (0x0UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MAX_BW_BW_VALUE_UNIT_KILO          (0x2UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MAX_BW_BW_VALUE_UNIT_BASE          (0x4UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MAX_BW_BW_VALUE_UNIT_GIGA          (0x6UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MAX_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MAX_BW_BW_VALUE_UNIT_INVALID       (0x7UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MAX_BW_BW_VALUE_UNIT_LAST         QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MAX_BW_BW_VALUE_UNIT_INVALID
+       u8      queue_id6_tsa_assign;
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_TSA_ASSIGN_SP             0x0UL
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_TSA_ASSIGN_ETS            0x1UL
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_TSA_ASSIGN_RESERVED_FIRST 0x2UL
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_TSA_ASSIGN_RESERVED_LAST  0xffUL
+       u8      queue_id6_pri_lvl;
+       u8      queue_id6_bw_weight;
+       u8      queue_id7;
+       __le32  queue_id7_min_bw;
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MIN_BW_BW_VALUE_MASK             0xfffffffUL
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MIN_BW_BW_VALUE_SFT              0
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MIN_BW_SCALE                     0x10000000UL
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MIN_BW_SCALE_BITS                  (0x0UL << 28)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MIN_BW_SCALE_BYTES                 (0x1UL << 28)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MIN_BW_SCALE_LAST                 QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MIN_BW_SCALE_BYTES
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MIN_BW_BW_VALUE_UNIT_MASK        0xe0000000UL
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MIN_BW_BW_VALUE_UNIT_SFT         29
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MIN_BW_BW_VALUE_UNIT_MEGA          (0x0UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MIN_BW_BW_VALUE_UNIT_KILO          (0x2UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MIN_BW_BW_VALUE_UNIT_BASE          (0x4UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MIN_BW_BW_VALUE_UNIT_GIGA          (0x6UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MIN_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MIN_BW_BW_VALUE_UNIT_INVALID       (0x7UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MIN_BW_BW_VALUE_UNIT_LAST         QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MIN_BW_BW_VALUE_UNIT_INVALID
+       __le32  queue_id7_max_bw;
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MAX_BW_BW_VALUE_MASK             0xfffffffUL
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MAX_BW_BW_VALUE_SFT              0
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MAX_BW_SCALE                     0x10000000UL
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MAX_BW_SCALE_BITS                  (0x0UL << 28)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MAX_BW_SCALE_BYTES                 (0x1UL << 28)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MAX_BW_SCALE_LAST                 QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MAX_BW_SCALE_BYTES
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MAX_BW_BW_VALUE_UNIT_MASK        0xe0000000UL
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MAX_BW_BW_VALUE_UNIT_SFT         29
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MAX_BW_BW_VALUE_UNIT_MEGA          (0x0UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MAX_BW_BW_VALUE_UNIT_KILO          (0x2UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MAX_BW_BW_VALUE_UNIT_BASE          (0x4UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MAX_BW_BW_VALUE_UNIT_GIGA          (0x6UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MAX_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MAX_BW_BW_VALUE_UNIT_INVALID       (0x7UL << 29)
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MAX_BW_BW_VALUE_UNIT_LAST         QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MAX_BW_BW_VALUE_UNIT_INVALID
+       u8      queue_id7_tsa_assign;
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_TSA_ASSIGN_SP             0x0UL
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_TSA_ASSIGN_ETS            0x1UL
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_TSA_ASSIGN_RESERVED_FIRST 0x2UL
+       #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_TSA_ASSIGN_RESERVED_LAST  0xffUL
+       u8      queue_id7_pri_lvl;
+       u8      queue_id7_bw_weight;
+       u8      unused_2[4];
+       u8      valid;
+};
+
+/* hwrm_queue_cos2bw_cfg_input (size:1024b/128B) */
+struct hwrm_queue_cos2bw_cfg_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le32  flags;
+       __le32  enables;
+       #define QUEUE_COS2BW_CFG_REQ_ENABLES_COS_QUEUE_ID0_VALID     0x1UL
+       #define QUEUE_COS2BW_CFG_REQ_ENABLES_COS_QUEUE_ID1_VALID     0x2UL
+       #define QUEUE_COS2BW_CFG_REQ_ENABLES_COS_QUEUE_ID2_VALID     0x4UL
+       #define QUEUE_COS2BW_CFG_REQ_ENABLES_COS_QUEUE_ID3_VALID     0x8UL
+       #define QUEUE_COS2BW_CFG_REQ_ENABLES_COS_QUEUE_ID4_VALID     0x10UL
+       #define QUEUE_COS2BW_CFG_REQ_ENABLES_COS_QUEUE_ID5_VALID     0x20UL
+       #define QUEUE_COS2BW_CFG_REQ_ENABLES_COS_QUEUE_ID6_VALID     0x40UL
+       #define QUEUE_COS2BW_CFG_REQ_ENABLES_COS_QUEUE_ID7_VALID     0x80UL
+       __le16  port_id;
+       u8      queue_id0;
+       u8      unused_0;
+       __le32  queue_id0_min_bw;
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_BW_VALUE_MASK             0xfffffffUL
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_BW_VALUE_SFT              0
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_SCALE                     0x10000000UL
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_SCALE_BITS                  (0x0UL << 28)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_SCALE_BYTES                 (0x1UL << 28)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_SCALE_LAST                 QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_SCALE_BYTES
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_MASK        0xe0000000UL
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_SFT         29
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_MEGA          (0x0UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_KILO          (0x2UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_BASE          (0x4UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_GIGA          (0x6UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_INVALID       (0x7UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_LAST         QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_INVALID
+       __le32  queue_id0_max_bw;
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_BW_VALUE_MASK             0xfffffffUL
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_BW_VALUE_SFT              0
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_SCALE                     0x10000000UL
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_SCALE_BITS                  (0x0UL << 28)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_SCALE_BYTES                 (0x1UL << 28)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_SCALE_LAST                 QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_SCALE_BYTES
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_MASK        0xe0000000UL
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_SFT         29
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_MEGA          (0x0UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_KILO          (0x2UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_BASE          (0x4UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_GIGA          (0x6UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_INVALID       (0x7UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_LAST         QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_INVALID
+       u8      queue_id0_tsa_assign;
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_TSA_ASSIGN_SP             0x0UL
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_TSA_ASSIGN_ETS            0x1UL
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_TSA_ASSIGN_RESERVED_FIRST 0x2UL
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_TSA_ASSIGN_RESERVED_LAST  0xffUL
+       u8      queue_id0_pri_lvl;
+       u8      queue_id0_bw_weight;
+       u8      queue_id1;
+       __le32  queue_id1_min_bw;
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MIN_BW_BW_VALUE_MASK             0xfffffffUL
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MIN_BW_BW_VALUE_SFT              0
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MIN_BW_SCALE                     0x10000000UL
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MIN_BW_SCALE_BITS                  (0x0UL << 28)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MIN_BW_SCALE_BYTES                 (0x1UL << 28)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MIN_BW_SCALE_LAST                 QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MIN_BW_SCALE_BYTES
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MIN_BW_BW_VALUE_UNIT_MASK        0xe0000000UL
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MIN_BW_BW_VALUE_UNIT_SFT         29
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MIN_BW_BW_VALUE_UNIT_MEGA          (0x0UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MIN_BW_BW_VALUE_UNIT_KILO          (0x2UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MIN_BW_BW_VALUE_UNIT_BASE          (0x4UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MIN_BW_BW_VALUE_UNIT_GIGA          (0x6UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MIN_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MIN_BW_BW_VALUE_UNIT_INVALID       (0x7UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MIN_BW_BW_VALUE_UNIT_LAST         QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MIN_BW_BW_VALUE_UNIT_INVALID
+       __le32  queue_id1_max_bw;
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MAX_BW_BW_VALUE_MASK             0xfffffffUL
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MAX_BW_BW_VALUE_SFT              0
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MAX_BW_SCALE                     0x10000000UL
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MAX_BW_SCALE_BITS                  (0x0UL << 28)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MAX_BW_SCALE_BYTES                 (0x1UL << 28)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MAX_BW_SCALE_LAST                 QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MAX_BW_SCALE_BYTES
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MAX_BW_BW_VALUE_UNIT_MASK        0xe0000000UL
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MAX_BW_BW_VALUE_UNIT_SFT         29
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MAX_BW_BW_VALUE_UNIT_MEGA          (0x0UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MAX_BW_BW_VALUE_UNIT_KILO          (0x2UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MAX_BW_BW_VALUE_UNIT_BASE          (0x4UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MAX_BW_BW_VALUE_UNIT_GIGA          (0x6UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MAX_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MAX_BW_BW_VALUE_UNIT_INVALID       (0x7UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MAX_BW_BW_VALUE_UNIT_LAST         QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MAX_BW_BW_VALUE_UNIT_INVALID
+       u8      queue_id1_tsa_assign;
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_TSA_ASSIGN_SP             0x0UL
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_TSA_ASSIGN_ETS            0x1UL
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_TSA_ASSIGN_RESERVED_FIRST 0x2UL
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_TSA_ASSIGN_RESERVED_LAST  0xffUL
+       u8      queue_id1_pri_lvl;
+       u8      queue_id1_bw_weight;
+       u8      queue_id2;
+       __le32  queue_id2_min_bw;
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MIN_BW_BW_VALUE_MASK             0xfffffffUL
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MIN_BW_BW_VALUE_SFT              0
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MIN_BW_SCALE                     0x10000000UL
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MIN_BW_SCALE_BITS                  (0x0UL << 28)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MIN_BW_SCALE_BYTES                 (0x1UL << 28)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MIN_BW_SCALE_LAST                 QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MIN_BW_SCALE_BYTES
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MIN_BW_BW_VALUE_UNIT_MASK        0xe0000000UL
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MIN_BW_BW_VALUE_UNIT_SFT         29
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MIN_BW_BW_VALUE_UNIT_MEGA          (0x0UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MIN_BW_BW_VALUE_UNIT_KILO          (0x2UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MIN_BW_BW_VALUE_UNIT_BASE          (0x4UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MIN_BW_BW_VALUE_UNIT_GIGA          (0x6UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MIN_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MIN_BW_BW_VALUE_UNIT_INVALID       (0x7UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MIN_BW_BW_VALUE_UNIT_LAST         QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MIN_BW_BW_VALUE_UNIT_INVALID
+       __le32  queue_id2_max_bw;
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MAX_BW_BW_VALUE_MASK             0xfffffffUL
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MAX_BW_BW_VALUE_SFT              0
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MAX_BW_SCALE                     0x10000000UL
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MAX_BW_SCALE_BITS                  (0x0UL << 28)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MAX_BW_SCALE_BYTES                 (0x1UL << 28)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MAX_BW_SCALE_LAST                 QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MAX_BW_SCALE_BYTES
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MAX_BW_BW_VALUE_UNIT_MASK        0xe0000000UL
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MAX_BW_BW_VALUE_UNIT_SFT         29
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MAX_BW_BW_VALUE_UNIT_MEGA          (0x0UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MAX_BW_BW_VALUE_UNIT_KILO          (0x2UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MAX_BW_BW_VALUE_UNIT_BASE          (0x4UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MAX_BW_BW_VALUE_UNIT_GIGA          (0x6UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MAX_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MAX_BW_BW_VALUE_UNIT_INVALID       (0x7UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MAX_BW_BW_VALUE_UNIT_LAST         QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MAX_BW_BW_VALUE_UNIT_INVALID
+       u8      queue_id2_tsa_assign;
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_TSA_ASSIGN_SP             0x0UL
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_TSA_ASSIGN_ETS            0x1UL
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_TSA_ASSIGN_RESERVED_FIRST 0x2UL
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_TSA_ASSIGN_RESERVED_LAST  0xffUL
+       u8      queue_id2_pri_lvl;
+       u8      queue_id2_bw_weight;
+       u8      queue_id3;
+       __le32  queue_id3_min_bw;
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MIN_BW_BW_VALUE_MASK             0xfffffffUL
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MIN_BW_BW_VALUE_SFT              0
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MIN_BW_SCALE                     0x10000000UL
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MIN_BW_SCALE_BITS                  (0x0UL << 28)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MIN_BW_SCALE_BYTES                 (0x1UL << 28)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MIN_BW_SCALE_LAST                 QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MIN_BW_SCALE_BYTES
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MIN_BW_BW_VALUE_UNIT_MASK        0xe0000000UL
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MIN_BW_BW_VALUE_UNIT_SFT         29
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MIN_BW_BW_VALUE_UNIT_MEGA          (0x0UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MIN_BW_BW_VALUE_UNIT_KILO          (0x2UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MIN_BW_BW_VALUE_UNIT_BASE          (0x4UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MIN_BW_BW_VALUE_UNIT_GIGA          (0x6UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MIN_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MIN_BW_BW_VALUE_UNIT_INVALID       (0x7UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MIN_BW_BW_VALUE_UNIT_LAST         QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MIN_BW_BW_VALUE_UNIT_INVALID
+       __le32  queue_id3_max_bw;
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MAX_BW_BW_VALUE_MASK             0xfffffffUL
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MAX_BW_BW_VALUE_SFT              0
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MAX_BW_SCALE                     0x10000000UL
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MAX_BW_SCALE_BITS                  (0x0UL << 28)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MAX_BW_SCALE_BYTES                 (0x1UL << 28)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MAX_BW_SCALE_LAST                 QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MAX_BW_SCALE_BYTES
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MAX_BW_BW_VALUE_UNIT_MASK        0xe0000000UL
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MAX_BW_BW_VALUE_UNIT_SFT         29
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MAX_BW_BW_VALUE_UNIT_MEGA          (0x0UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MAX_BW_BW_VALUE_UNIT_KILO          (0x2UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MAX_BW_BW_VALUE_UNIT_BASE          (0x4UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MAX_BW_BW_VALUE_UNIT_GIGA          (0x6UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MAX_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MAX_BW_BW_VALUE_UNIT_INVALID       (0x7UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MAX_BW_BW_VALUE_UNIT_LAST         QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MAX_BW_BW_VALUE_UNIT_INVALID
+       u8      queue_id3_tsa_assign;
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_TSA_ASSIGN_SP             0x0UL
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_TSA_ASSIGN_ETS            0x1UL
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_TSA_ASSIGN_RESERVED_FIRST 0x2UL
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_TSA_ASSIGN_RESERVED_LAST  0xffUL
+       u8      queue_id3_pri_lvl;
+       u8      queue_id3_bw_weight;
+       u8      queue_id4;
+       __le32  queue_id4_min_bw;
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MIN_BW_BW_VALUE_MASK             0xfffffffUL
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MIN_BW_BW_VALUE_SFT              0
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MIN_BW_SCALE                     0x10000000UL
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MIN_BW_SCALE_BITS                  (0x0UL << 28)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MIN_BW_SCALE_BYTES                 (0x1UL << 28)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MIN_BW_SCALE_LAST                 QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MIN_BW_SCALE_BYTES
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MIN_BW_BW_VALUE_UNIT_MASK        0xe0000000UL
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MIN_BW_BW_VALUE_UNIT_SFT         29
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MIN_BW_BW_VALUE_UNIT_MEGA          (0x0UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MIN_BW_BW_VALUE_UNIT_KILO          (0x2UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MIN_BW_BW_VALUE_UNIT_BASE          (0x4UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MIN_BW_BW_VALUE_UNIT_GIGA          (0x6UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MIN_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MIN_BW_BW_VALUE_UNIT_INVALID       (0x7UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MIN_BW_BW_VALUE_UNIT_LAST         QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MIN_BW_BW_VALUE_UNIT_INVALID
+       __le32  queue_id4_max_bw;
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MAX_BW_BW_VALUE_MASK             0xfffffffUL
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MAX_BW_BW_VALUE_SFT              0
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MAX_BW_SCALE                     0x10000000UL
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MAX_BW_SCALE_BITS                  (0x0UL << 28)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MAX_BW_SCALE_BYTES                 (0x1UL << 28)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MAX_BW_SCALE_LAST                 QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MAX_BW_SCALE_BYTES
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MAX_BW_BW_VALUE_UNIT_MASK        0xe0000000UL
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MAX_BW_BW_VALUE_UNIT_SFT         29
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MAX_BW_BW_VALUE_UNIT_MEGA          (0x0UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MAX_BW_BW_VALUE_UNIT_KILO          (0x2UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MAX_BW_BW_VALUE_UNIT_BASE          (0x4UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MAX_BW_BW_VALUE_UNIT_GIGA          (0x6UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MAX_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MAX_BW_BW_VALUE_UNIT_INVALID       (0x7UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MAX_BW_BW_VALUE_UNIT_LAST         QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MAX_BW_BW_VALUE_UNIT_INVALID
+       u8      queue_id4_tsa_assign;
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_TSA_ASSIGN_SP             0x0UL
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_TSA_ASSIGN_ETS            0x1UL
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_TSA_ASSIGN_RESERVED_FIRST 0x2UL
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_TSA_ASSIGN_RESERVED_LAST  0xffUL
+       u8      queue_id4_pri_lvl;
+       u8      queue_id4_bw_weight;
+       u8      queue_id5;
+       __le32  queue_id5_min_bw;
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MIN_BW_BW_VALUE_MASK             0xfffffffUL
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MIN_BW_BW_VALUE_SFT              0
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MIN_BW_SCALE                     0x10000000UL
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MIN_BW_SCALE_BITS                  (0x0UL << 28)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MIN_BW_SCALE_BYTES                 (0x1UL << 28)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MIN_BW_SCALE_LAST                 QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MIN_BW_SCALE_BYTES
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MIN_BW_BW_VALUE_UNIT_MASK        0xe0000000UL
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MIN_BW_BW_VALUE_UNIT_SFT         29
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MIN_BW_BW_VALUE_UNIT_MEGA          (0x0UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MIN_BW_BW_VALUE_UNIT_KILO          (0x2UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MIN_BW_BW_VALUE_UNIT_BASE          (0x4UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MIN_BW_BW_VALUE_UNIT_GIGA          (0x6UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MIN_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MIN_BW_BW_VALUE_UNIT_INVALID       (0x7UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MIN_BW_BW_VALUE_UNIT_LAST         QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MIN_BW_BW_VALUE_UNIT_INVALID
+       __le32  queue_id5_max_bw;
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MAX_BW_BW_VALUE_MASK             0xfffffffUL
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MAX_BW_BW_VALUE_SFT              0
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MAX_BW_SCALE                     0x10000000UL
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MAX_BW_SCALE_BITS                  (0x0UL << 28)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MAX_BW_SCALE_BYTES                 (0x1UL << 28)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MAX_BW_SCALE_LAST                 QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MAX_BW_SCALE_BYTES
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MAX_BW_BW_VALUE_UNIT_MASK        0xe0000000UL
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MAX_BW_BW_VALUE_UNIT_SFT         29
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MAX_BW_BW_VALUE_UNIT_MEGA          (0x0UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MAX_BW_BW_VALUE_UNIT_KILO          (0x2UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MAX_BW_BW_VALUE_UNIT_BASE          (0x4UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MAX_BW_BW_VALUE_UNIT_GIGA          (0x6UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MAX_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MAX_BW_BW_VALUE_UNIT_INVALID       (0x7UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MAX_BW_BW_VALUE_UNIT_LAST         QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MAX_BW_BW_VALUE_UNIT_INVALID
+       u8      queue_id5_tsa_assign;
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_TSA_ASSIGN_SP             0x0UL
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_TSA_ASSIGN_ETS            0x1UL
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_TSA_ASSIGN_RESERVED_FIRST 0x2UL
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_TSA_ASSIGN_RESERVED_LAST  0xffUL
+       u8      queue_id5_pri_lvl;
+       u8      queue_id5_bw_weight;
+       u8      queue_id6;
+       __le32  queue_id6_min_bw;
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MIN_BW_BW_VALUE_MASK             0xfffffffUL
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MIN_BW_BW_VALUE_SFT              0
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MIN_BW_SCALE                     0x10000000UL
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MIN_BW_SCALE_BITS                  (0x0UL << 28)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MIN_BW_SCALE_BYTES                 (0x1UL << 28)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MIN_BW_SCALE_LAST                 QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MIN_BW_SCALE_BYTES
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MIN_BW_BW_VALUE_UNIT_MASK        0xe0000000UL
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MIN_BW_BW_VALUE_UNIT_SFT         29
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MIN_BW_BW_VALUE_UNIT_MEGA          (0x0UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MIN_BW_BW_VALUE_UNIT_KILO          (0x2UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MIN_BW_BW_VALUE_UNIT_BASE          (0x4UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MIN_BW_BW_VALUE_UNIT_GIGA          (0x6UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MIN_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MIN_BW_BW_VALUE_UNIT_INVALID       (0x7UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MIN_BW_BW_VALUE_UNIT_LAST         QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MIN_BW_BW_VALUE_UNIT_INVALID
+       __le32  queue_id6_max_bw;
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MAX_BW_BW_VALUE_MASK             0xfffffffUL
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MAX_BW_BW_VALUE_SFT              0
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MAX_BW_SCALE                     0x10000000UL
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MAX_BW_SCALE_BITS                  (0x0UL << 28)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MAX_BW_SCALE_BYTES                 (0x1UL << 28)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MAX_BW_SCALE_LAST                 QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MAX_BW_SCALE_BYTES
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MAX_BW_BW_VALUE_UNIT_MASK        0xe0000000UL
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MAX_BW_BW_VALUE_UNIT_SFT         29
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MAX_BW_BW_VALUE_UNIT_MEGA          (0x0UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MAX_BW_BW_VALUE_UNIT_KILO          (0x2UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MAX_BW_BW_VALUE_UNIT_BASE          (0x4UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MAX_BW_BW_VALUE_UNIT_GIGA          (0x6UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MAX_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MAX_BW_BW_VALUE_UNIT_INVALID       (0x7UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MAX_BW_BW_VALUE_UNIT_LAST         QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MAX_BW_BW_VALUE_UNIT_INVALID
+       u8      queue_id6_tsa_assign;
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_TSA_ASSIGN_SP             0x0UL
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_TSA_ASSIGN_ETS            0x1UL
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_TSA_ASSIGN_RESERVED_FIRST 0x2UL
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_TSA_ASSIGN_RESERVED_LAST  0xffUL
+       u8      queue_id6_pri_lvl;
+       u8      queue_id6_bw_weight;
+       u8      queue_id7;
+       __le32  queue_id7_min_bw;
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MIN_BW_BW_VALUE_MASK             0xfffffffUL
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MIN_BW_BW_VALUE_SFT              0
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MIN_BW_SCALE                     0x10000000UL
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MIN_BW_SCALE_BITS                  (0x0UL << 28)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MIN_BW_SCALE_BYTES                 (0x1UL << 28)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MIN_BW_SCALE_LAST                 QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MIN_BW_SCALE_BYTES
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MIN_BW_BW_VALUE_UNIT_MASK        0xe0000000UL
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MIN_BW_BW_VALUE_UNIT_SFT         29
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MIN_BW_BW_VALUE_UNIT_MEGA          (0x0UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MIN_BW_BW_VALUE_UNIT_KILO          (0x2UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MIN_BW_BW_VALUE_UNIT_BASE          (0x4UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MIN_BW_BW_VALUE_UNIT_GIGA          (0x6UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MIN_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MIN_BW_BW_VALUE_UNIT_INVALID       (0x7UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MIN_BW_BW_VALUE_UNIT_LAST         QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MIN_BW_BW_VALUE_UNIT_INVALID
+       __le32  queue_id7_max_bw;
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MAX_BW_BW_VALUE_MASK             0xfffffffUL
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MAX_BW_BW_VALUE_SFT              0
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MAX_BW_SCALE                     0x10000000UL
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MAX_BW_SCALE_BITS                  (0x0UL << 28)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MAX_BW_SCALE_BYTES                 (0x1UL << 28)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MAX_BW_SCALE_LAST                 QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MAX_BW_SCALE_BYTES
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MAX_BW_BW_VALUE_UNIT_MASK        0xe0000000UL
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MAX_BW_BW_VALUE_UNIT_SFT         29
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MAX_BW_BW_VALUE_UNIT_MEGA          (0x0UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MAX_BW_BW_VALUE_UNIT_KILO          (0x2UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MAX_BW_BW_VALUE_UNIT_BASE          (0x4UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MAX_BW_BW_VALUE_UNIT_GIGA          (0x6UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MAX_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MAX_BW_BW_VALUE_UNIT_INVALID       (0x7UL << 29)
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MAX_BW_BW_VALUE_UNIT_LAST         QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MAX_BW_BW_VALUE_UNIT_INVALID
+       u8      queue_id7_tsa_assign;
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_TSA_ASSIGN_SP             0x0UL
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_TSA_ASSIGN_ETS            0x1UL
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_TSA_ASSIGN_RESERVED_FIRST 0x2UL
+       #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_TSA_ASSIGN_RESERVED_LAST  0xffUL
+       u8      queue_id7_pri_lvl;
+       u8      queue_id7_bw_weight;
+       u8      unused_1[5];
+};
+
+/* hwrm_queue_cos2bw_cfg_output (size:128b/16B) */
+struct hwrm_queue_cos2bw_cfg_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_queue_dscp_qcaps_input (size:192b/24B) */
+struct hwrm_queue_dscp_qcaps_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       u8      port_id;
+       u8      unused_0[7];
+};
+
+/* hwrm_queue_dscp_qcaps_output (size:128b/16B) */
+struct hwrm_queue_dscp_qcaps_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      num_dscp_bits;
+       u8      unused_0;
+       __le16  max_entries;
+       u8      unused_1[3];
+       u8      valid;
+};
+
+/* hwrm_queue_dscp2pri_qcfg_input (size:256b/32B) */
+struct hwrm_queue_dscp2pri_qcfg_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le64  dest_data_addr;
+       u8      port_id;
+       u8      unused_0;
+       __le16  dest_data_buffer_size;
+       u8      unused_1[4];
+};
+
+/* hwrm_queue_dscp2pri_qcfg_output (size:128b/16B) */
+struct hwrm_queue_dscp2pri_qcfg_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le16  entry_cnt;
+       u8      default_pri;
+       u8      unused_0[4];
+       u8      valid;
+};
+
+/* hwrm_queue_dscp2pri_cfg_input (size:320b/40B) */
+struct hwrm_queue_dscp2pri_cfg_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le64  src_data_addr;
+       __le32  flags;
+       #define QUEUE_DSCP2PRI_CFG_REQ_FLAGS_USE_HW_DEFAULT_PRI     0x1UL
+       __le32  enables;
+       #define QUEUE_DSCP2PRI_CFG_REQ_ENABLES_DEFAULT_PRI     0x1UL
+       u8      port_id;
+       u8      default_pri;
+       __le16  entry_cnt;
+       u8      unused_0[4];
+};
+
+/* hwrm_queue_dscp2pri_cfg_output (size:128b/16B) */
+struct hwrm_queue_dscp2pri_cfg_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_vnic_alloc_input (size:192b/24B) */
+struct hwrm_vnic_alloc_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le32  flags;
+       #define VNIC_ALLOC_REQ_FLAGS_DEFAULT     0x1UL
+       u8      unused_0[4];
+};
+
+/* hwrm_vnic_alloc_output (size:128b/16B) */
+struct hwrm_vnic_alloc_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le32  vnic_id;
+       u8      unused_0[3];
+       u8      valid;
+};
+
+/* hwrm_vnic_free_input (size:192b/24B) */
+struct hwrm_vnic_free_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le32  vnic_id;
+       u8      unused_0[4];
+};
+
+/* hwrm_vnic_free_output (size:128b/16B) */
+struct hwrm_vnic_free_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_vnic_cfg_input (size:320b/40B) */
+struct hwrm_vnic_cfg_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le32  flags;
+       #define VNIC_CFG_REQ_FLAGS_DEFAULT                              0x1UL
+       #define VNIC_CFG_REQ_FLAGS_VLAN_STRIP_MODE                      0x2UL
+       #define VNIC_CFG_REQ_FLAGS_BD_STALL_MODE                        0x4UL
+       #define VNIC_CFG_REQ_FLAGS_ROCE_DUAL_VNIC_MODE                  0x8UL
+       #define VNIC_CFG_REQ_FLAGS_ROCE_ONLY_VNIC_MODE                  0x10UL
+       #define VNIC_CFG_REQ_FLAGS_RSS_DFLT_CR_MODE                     0x20UL
+       #define VNIC_CFG_REQ_FLAGS_ROCE_MIRRORING_CAPABLE_VNIC_MODE     0x40UL
+       __le32  enables;
+       #define VNIC_CFG_REQ_ENABLES_DFLT_RING_GRP            0x1UL
+       #define VNIC_CFG_REQ_ENABLES_RSS_RULE                 0x2UL
+       #define VNIC_CFG_REQ_ENABLES_COS_RULE                 0x4UL
+       #define VNIC_CFG_REQ_ENABLES_LB_RULE                  0x8UL
+       #define VNIC_CFG_REQ_ENABLES_MRU                      0x10UL
+       #define VNIC_CFG_REQ_ENABLES_DEFAULT_RX_RING_ID       0x20UL
+       #define VNIC_CFG_REQ_ENABLES_DEFAULT_CMPL_RING_ID     0x40UL
+       __le16  vnic_id;
+       __le16  dflt_ring_grp;
+       __le16  rss_rule;
+       __le16  cos_rule;
+       __le16  lb_rule;
+       __le16  mru;
+       __le16  default_rx_ring_id;
+       __le16  default_cmpl_ring_id;
+};
+
+/* hwrm_vnic_cfg_output (size:128b/16B) */
+struct hwrm_vnic_cfg_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_vnic_qcfg_input (size:256b/32B) */
+struct hwrm_vnic_qcfg_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le32  enables;
+       #define VNIC_QCFG_REQ_ENABLES_VF_ID_VALID     0x1UL
+       __le32  vnic_id;
+       __le16  vf_id;
+       u8      unused_0[6];
+};
+
+/* hwrm_vnic_qcfg_output (size:256b/32B) */
+struct hwrm_vnic_qcfg_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le16  dflt_ring_grp;
+       __le16  rss_rule;
+       __le16  cos_rule;
+       __le16  lb_rule;
+       __le16  mru;
+       u8      unused_0[2];
+       __le32  flags;
+       #define VNIC_QCFG_RESP_FLAGS_DEFAULT                              0x1UL
+       #define VNIC_QCFG_RESP_FLAGS_VLAN_STRIP_MODE                      0x2UL
+       #define VNIC_QCFG_RESP_FLAGS_BD_STALL_MODE                        0x4UL
+       #define VNIC_QCFG_RESP_FLAGS_ROCE_DUAL_VNIC_MODE                  0x8UL
+       #define VNIC_QCFG_RESP_FLAGS_ROCE_ONLY_VNIC_MODE                  0x10UL
+       #define VNIC_QCFG_RESP_FLAGS_RSS_DFLT_CR_MODE                     0x20UL
+       #define VNIC_QCFG_RESP_FLAGS_ROCE_MIRRORING_CAPABLE_VNIC_MODE     0x40UL
+       u8      unused_1[7];
+       u8      valid;
+};
+
+/* hwrm_vnic_qcaps_input (size:192b/24B) */
+struct hwrm_vnic_qcaps_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le32  enables;
+       u8      unused_0[4];
+};
+
+/* hwrm_vnic_qcaps_output (size:192b/24B) */
+struct hwrm_vnic_qcaps_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le16  mru;
+       u8      unused_0[2];
+       __le32  flags;
+       #define VNIC_QCAPS_RESP_FLAGS_UNUSED                              0x1UL
+       #define VNIC_QCAPS_RESP_FLAGS_VLAN_STRIP_CAP                      0x2UL
+       #define VNIC_QCAPS_RESP_FLAGS_BD_STALL_CAP                        0x4UL
+       #define VNIC_QCAPS_RESP_FLAGS_ROCE_DUAL_VNIC_CAP                  0x8UL
+       #define VNIC_QCAPS_RESP_FLAGS_ROCE_ONLY_VNIC_CAP                  0x10UL
+       #define VNIC_QCAPS_RESP_FLAGS_RSS_DFLT_CR_CAP                     0x20UL
+       #define VNIC_QCAPS_RESP_FLAGS_ROCE_MIRRORING_CAPABLE_VNIC_CAP     0x40UL
+       #define VNIC_QCAPS_RESP_FLAGS_OUTERMOST_RSS_CAP                   0x80UL
+       u8      unused_1[7];
+       u8      valid;
+};
+
+/* hwrm_vnic_tpa_cfg_input (size:320b/40B) */
+struct hwrm_vnic_tpa_cfg_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le32  flags;
+       #define VNIC_TPA_CFG_REQ_FLAGS_TPA                       0x1UL
+       #define VNIC_TPA_CFG_REQ_FLAGS_ENCAP_TPA                 0x2UL
+       #define VNIC_TPA_CFG_REQ_FLAGS_RSC_WND_UPDATE            0x4UL
+       #define VNIC_TPA_CFG_REQ_FLAGS_GRO                       0x8UL
+       #define VNIC_TPA_CFG_REQ_FLAGS_AGG_WITH_ECN              0x10UL
+       #define VNIC_TPA_CFG_REQ_FLAGS_AGG_WITH_SAME_GRE_SEQ     0x20UL
+       #define VNIC_TPA_CFG_REQ_FLAGS_GRO_IPID_CHECK            0x40UL
+       #define VNIC_TPA_CFG_REQ_FLAGS_GRO_TTL_CHECK             0x80UL
+       __le32  enables;
+       #define VNIC_TPA_CFG_REQ_ENABLES_MAX_AGG_SEGS      0x1UL
+       #define VNIC_TPA_CFG_REQ_ENABLES_MAX_AGGS          0x2UL
+       #define VNIC_TPA_CFG_REQ_ENABLES_MAX_AGG_TIMER     0x4UL
+       #define VNIC_TPA_CFG_REQ_ENABLES_MIN_AGG_LEN       0x8UL
+       __le16  vnic_id;
+       __le16  max_agg_segs;
+       #define VNIC_TPA_CFG_REQ_MAX_AGG_SEGS_1   0x0UL
+       #define VNIC_TPA_CFG_REQ_MAX_AGG_SEGS_2   0x1UL
+       #define VNIC_TPA_CFG_REQ_MAX_AGG_SEGS_4   0x2UL
+       #define VNIC_TPA_CFG_REQ_MAX_AGG_SEGS_8   0x3UL
+       #define VNIC_TPA_CFG_REQ_MAX_AGG_SEGS_MAX 0x1fUL
+       #define VNIC_TPA_CFG_REQ_MAX_AGG_SEGS_LAST VNIC_TPA_CFG_REQ_MAX_AGG_SEGS_MAX
+       __le16  max_aggs;
+       #define VNIC_TPA_CFG_REQ_MAX_AGGS_1   0x0UL
+       #define VNIC_TPA_CFG_REQ_MAX_AGGS_2   0x1UL
+       #define VNIC_TPA_CFG_REQ_MAX_AGGS_4   0x2UL
+       #define VNIC_TPA_CFG_REQ_MAX_AGGS_8   0x3UL
+       #define VNIC_TPA_CFG_REQ_MAX_AGGS_16  0x4UL
+       #define VNIC_TPA_CFG_REQ_MAX_AGGS_MAX 0x7UL
+       #define VNIC_TPA_CFG_REQ_MAX_AGGS_LAST VNIC_TPA_CFG_REQ_MAX_AGGS_MAX
+       u8      unused_0[2];
+       __le32  max_agg_timer;
+       __le32  min_agg_len;
+};
+
+/* hwrm_vnic_tpa_cfg_output (size:128b/16B) */
+struct hwrm_vnic_tpa_cfg_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_vnic_tpa_qcfg_input (size:192b/24B) */
+struct hwrm_vnic_tpa_qcfg_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le16  vnic_id;
+       u8      unused_0[6];
+};
+
+/* hwrm_vnic_tpa_qcfg_output (size:256b/32B) */
+struct hwrm_vnic_tpa_qcfg_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le32  flags;
+       #define VNIC_TPA_QCFG_RESP_FLAGS_TPA                       0x1UL
+       #define VNIC_TPA_QCFG_RESP_FLAGS_ENCAP_TPA                 0x2UL
+       #define VNIC_TPA_QCFG_RESP_FLAGS_RSC_WND_UPDATE            0x4UL
+       #define VNIC_TPA_QCFG_RESP_FLAGS_GRO                       0x8UL
+       #define VNIC_TPA_QCFG_RESP_FLAGS_AGG_WITH_ECN              0x10UL
+       #define VNIC_TPA_QCFG_RESP_FLAGS_AGG_WITH_SAME_GRE_SEQ     0x20UL
+       #define VNIC_TPA_QCFG_RESP_FLAGS_GRO_IPID_CHECK            0x40UL
+       #define VNIC_TPA_QCFG_RESP_FLAGS_GRO_TTL_CHECK             0x80UL
+       __le16  max_agg_segs;
+       #define VNIC_TPA_QCFG_RESP_MAX_AGG_SEGS_1   0x0UL
+       #define VNIC_TPA_QCFG_RESP_MAX_AGG_SEGS_2   0x1UL
+       #define VNIC_TPA_QCFG_RESP_MAX_AGG_SEGS_4   0x2UL
+       #define VNIC_TPA_QCFG_RESP_MAX_AGG_SEGS_8   0x3UL
+       #define VNIC_TPA_QCFG_RESP_MAX_AGG_SEGS_MAX 0x1fUL
+       #define VNIC_TPA_QCFG_RESP_MAX_AGG_SEGS_LAST VNIC_TPA_QCFG_RESP_MAX_AGG_SEGS_MAX
+       __le16  max_aggs;
+       #define VNIC_TPA_QCFG_RESP_MAX_AGGS_1   0x0UL
+       #define VNIC_TPA_QCFG_RESP_MAX_AGGS_2   0x1UL
+       #define VNIC_TPA_QCFG_RESP_MAX_AGGS_4   0x2UL
+       #define VNIC_TPA_QCFG_RESP_MAX_AGGS_8   0x3UL
+       #define VNIC_TPA_QCFG_RESP_MAX_AGGS_16  0x4UL
+       #define VNIC_TPA_QCFG_RESP_MAX_AGGS_MAX 0x7UL
+       #define VNIC_TPA_QCFG_RESP_MAX_AGGS_LAST VNIC_TPA_QCFG_RESP_MAX_AGGS_MAX
+       __le32  max_agg_timer;
+       __le32  min_agg_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_vnic_rss_cfg_input (size:384b/48B) */
+struct hwrm_vnic_rss_cfg_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le32  hash_type;
+       #define VNIC_RSS_CFG_REQ_HASH_TYPE_IPV4         0x1UL
+       #define VNIC_RSS_CFG_REQ_HASH_TYPE_TCP_IPV4     0x2UL
+       #define VNIC_RSS_CFG_REQ_HASH_TYPE_UDP_IPV4     0x4UL
+       #define VNIC_RSS_CFG_REQ_HASH_TYPE_IPV6         0x8UL
+       #define VNIC_RSS_CFG_REQ_HASH_TYPE_TCP_IPV6     0x10UL
+       #define VNIC_RSS_CFG_REQ_HASH_TYPE_UDP_IPV6     0x20UL
+       __le16  vnic_id;
+       u8      ring_table_pair_index;
+       u8      hash_mode_flags;
+       #define VNIC_RSS_CFG_REQ_HASH_MODE_FLAGS_DEFAULT         0x1UL
+       #define VNIC_RSS_CFG_REQ_HASH_MODE_FLAGS_INNERMOST_4     0x2UL
+       #define VNIC_RSS_CFG_REQ_HASH_MODE_FLAGS_INNERMOST_2     0x4UL
+       #define VNIC_RSS_CFG_REQ_HASH_MODE_FLAGS_OUTERMOST_4     0x8UL
+       #define VNIC_RSS_CFG_REQ_HASH_MODE_FLAGS_OUTERMOST_2     0x10UL
+       __le64  ring_grp_tbl_addr;
+       __le64  hash_key_tbl_addr;
+       __le16  rss_ctx_idx;
+       u8      unused_1[6];
+};
+
+/* hwrm_vnic_rss_cfg_output (size:128b/16B) */
+struct hwrm_vnic_rss_cfg_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_vnic_rss_qcfg_input (size:192b/24B) */
+struct hwrm_vnic_rss_qcfg_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le16  rss_ctx_idx;
+       u8      unused_0[6];
+};
+
+/* hwrm_vnic_rss_qcfg_output (size:512b/64B) */
+struct hwrm_vnic_rss_qcfg_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le32  hash_type;
+       #define VNIC_RSS_QCFG_RESP_HASH_TYPE_IPV4         0x1UL
+       #define VNIC_RSS_QCFG_RESP_HASH_TYPE_TCP_IPV4     0x2UL
+       #define VNIC_RSS_QCFG_RESP_HASH_TYPE_UDP_IPV4     0x4UL
+       #define VNIC_RSS_QCFG_RESP_HASH_TYPE_IPV6         0x8UL
+       #define VNIC_RSS_QCFG_RESP_HASH_TYPE_TCP_IPV6     0x10UL
+       #define VNIC_RSS_QCFG_RESP_HASH_TYPE_UDP_IPV6     0x20UL
+       u8      unused_0[4];
+       __le32  hash_key[10];
+       u8      hash_mode_flags;
+       #define VNIC_RSS_QCFG_RESP_HASH_MODE_FLAGS_DEFAULT         0x1UL
+       #define VNIC_RSS_QCFG_RESP_HASH_MODE_FLAGS_INNERMOST_4     0x2UL
+       #define VNIC_RSS_QCFG_RESP_HASH_MODE_FLAGS_INNERMOST_2     0x4UL
+       #define VNIC_RSS_QCFG_RESP_HASH_MODE_FLAGS_OUTERMOST_4     0x8UL
+       #define VNIC_RSS_QCFG_RESP_HASH_MODE_FLAGS_OUTERMOST_2     0x10UL
+       u8      unused_1[6];
+       u8      valid;
+};
+
+/* hwrm_vnic_plcmodes_cfg_input (size:320b/40B) */
+struct hwrm_vnic_plcmodes_cfg_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le32  flags;
+       #define VNIC_PLCMODES_CFG_REQ_FLAGS_REGULAR_PLACEMENT     0x1UL
+       #define VNIC_PLCMODES_CFG_REQ_FLAGS_JUMBO_PLACEMENT       0x2UL
+       #define VNIC_PLCMODES_CFG_REQ_FLAGS_HDS_IPV4              0x4UL
+       #define VNIC_PLCMODES_CFG_REQ_FLAGS_HDS_IPV6              0x8UL
+       #define VNIC_PLCMODES_CFG_REQ_FLAGS_HDS_FCOE              0x10UL
+       #define VNIC_PLCMODES_CFG_REQ_FLAGS_HDS_ROCE              0x20UL
+       __le32  enables;
+       #define VNIC_PLCMODES_CFG_REQ_ENABLES_JUMBO_THRESH_VALID      0x1UL
+       #define VNIC_PLCMODES_CFG_REQ_ENABLES_HDS_OFFSET_VALID        0x2UL
+       #define VNIC_PLCMODES_CFG_REQ_ENABLES_HDS_THRESHOLD_VALID     0x4UL
+       __le32  vnic_id;
+       __le16  jumbo_thresh;
+       __le16  hds_offset;
+       __le16  hds_threshold;
+       u8      unused_0[6];
+};
+
+/* hwrm_vnic_plcmodes_cfg_output (size:128b/16B) */
+struct hwrm_vnic_plcmodes_cfg_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_vnic_plcmodes_qcfg_input (size:192b/24B) */
+struct hwrm_vnic_plcmodes_qcfg_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le32  vnic_id;
+       u8      unused_0[4];
+};
+
+/* hwrm_vnic_plcmodes_qcfg_output (size:192b/24B) */
+struct hwrm_vnic_plcmodes_qcfg_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le32  flags;
+       #define VNIC_PLCMODES_QCFG_RESP_FLAGS_REGULAR_PLACEMENT     0x1UL
+       #define VNIC_PLCMODES_QCFG_RESP_FLAGS_JUMBO_PLACEMENT       0x2UL
+       #define VNIC_PLCMODES_QCFG_RESP_FLAGS_HDS_IPV4              0x4UL
+       #define VNIC_PLCMODES_QCFG_RESP_FLAGS_HDS_IPV6              0x8UL
+       #define VNIC_PLCMODES_QCFG_RESP_FLAGS_HDS_FCOE              0x10UL
+       #define VNIC_PLCMODES_QCFG_RESP_FLAGS_HDS_ROCE              0x20UL
+       #define VNIC_PLCMODES_QCFG_RESP_FLAGS_DFLT_VNIC             0x40UL
+       __le16  jumbo_thresh;
+       __le16  hds_offset;
+       __le16  hds_threshold;
+       u8      unused_0[5];
+       u8      valid;
+};
+
+/* hwrm_vnic_rss_cos_lb_ctx_alloc_input (size:128b/16B) */
+struct hwrm_vnic_rss_cos_lb_ctx_alloc_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+};
+
+/* hwrm_vnic_rss_cos_lb_ctx_alloc_output (size:128b/16B) */
+struct hwrm_vnic_rss_cos_lb_ctx_alloc_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le16  rss_cos_lb_ctx_id;
+       u8      unused_0[5];
+       u8      valid;
+};
+
+/* hwrm_vnic_rss_cos_lb_ctx_free_input (size:192b/24B) */
+struct hwrm_vnic_rss_cos_lb_ctx_free_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le16  rss_cos_lb_ctx_id;
+       u8      unused_0[6];
+};
+
+/* hwrm_vnic_rss_cos_lb_ctx_free_output (size:128b/16B) */
+struct hwrm_vnic_rss_cos_lb_ctx_free_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_ring_alloc_input (size:704b/88B) */
+struct hwrm_ring_alloc_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le32  enables;
+       #define RING_ALLOC_REQ_ENABLES_RING_ARB_CFG          0x2UL
+       #define RING_ALLOC_REQ_ENABLES_STAT_CTX_ID_VALID     0x8UL
+       #define RING_ALLOC_REQ_ENABLES_MAX_BW_VALID          0x20UL
+       #define RING_ALLOC_REQ_ENABLES_RX_RING_ID_VALID      0x40UL
+       #define RING_ALLOC_REQ_ENABLES_NQ_RING_ID_VALID      0x80UL
+       #define RING_ALLOC_REQ_ENABLES_RX_BUF_SIZE_VALID     0x100UL
+       u8      ring_type;
+       #define RING_ALLOC_REQ_RING_TYPE_L2_CMPL   0x0UL
+       #define RING_ALLOC_REQ_RING_TYPE_TX        0x1UL
+       #define RING_ALLOC_REQ_RING_TYPE_RX        0x2UL
+       #define RING_ALLOC_REQ_RING_TYPE_ROCE_CMPL 0x3UL
+       #define RING_ALLOC_REQ_RING_TYPE_RX_AGG    0x4UL
+       #define RING_ALLOC_REQ_RING_TYPE_NQ        0x5UL
+       #define RING_ALLOC_REQ_RING_TYPE_LAST     RING_ALLOC_REQ_RING_TYPE_NQ
+       u8      unused_0;
+       __le16  flags;
+       #define RING_ALLOC_REQ_FLAGS_RX_SOP_PAD     0x1UL
+       __le64  page_tbl_addr;
+       __le32  fbo;
+       u8      page_size;
+       u8      page_tbl_depth;
+       u8      unused_1[2];
+       __le32  length;
+       __le16  logical_id;
+       __le16  cmpl_ring_id;
+       __le16  queue_id;
+       __le16  rx_buf_size;
+       __le16  rx_ring_id;
+       __le16  nq_ring_id;
+       __le16  ring_arb_cfg;
+       #define RING_ALLOC_REQ_RING_ARB_CFG_ARB_POLICY_MASK      0xfUL
+       #define RING_ALLOC_REQ_RING_ARB_CFG_ARB_POLICY_SFT       0
+       #define RING_ALLOC_REQ_RING_ARB_CFG_ARB_POLICY_SP          0x1UL
+       #define RING_ALLOC_REQ_RING_ARB_CFG_ARB_POLICY_WFQ         0x2UL
+       #define RING_ALLOC_REQ_RING_ARB_CFG_ARB_POLICY_LAST       RING_ALLOC_REQ_RING_ARB_CFG_ARB_POLICY_WFQ
+       #define RING_ALLOC_REQ_RING_ARB_CFG_RSVD_MASK            0xf0UL
+       #define RING_ALLOC_REQ_RING_ARB_CFG_RSVD_SFT             4
+       #define RING_ALLOC_REQ_RING_ARB_CFG_ARB_POLICY_PARAM_MASK 0xff00UL
+       #define RING_ALLOC_REQ_RING_ARB_CFG_ARB_POLICY_PARAM_SFT 8
+       __le16  unused_3;
+       __le32  reserved3;
+       __le32  stat_ctx_id;
+       __le32  reserved4;
+       __le32  max_bw;
+       #define RING_ALLOC_REQ_MAX_BW_BW_VALUE_MASK             0xfffffffUL
+       #define RING_ALLOC_REQ_MAX_BW_BW_VALUE_SFT              0
+       #define RING_ALLOC_REQ_MAX_BW_SCALE                     0x10000000UL
+       #define RING_ALLOC_REQ_MAX_BW_SCALE_BITS                  (0x0UL << 28)
+       #define RING_ALLOC_REQ_MAX_BW_SCALE_BYTES                 (0x1UL << 28)
+       #define RING_ALLOC_REQ_MAX_BW_SCALE_LAST                 RING_ALLOC_REQ_MAX_BW_SCALE_BYTES
+       #define RING_ALLOC_REQ_MAX_BW_BW_VALUE_UNIT_MASK        0xe0000000UL
+       #define RING_ALLOC_REQ_MAX_BW_BW_VALUE_UNIT_SFT         29
+       #define RING_ALLOC_REQ_MAX_BW_BW_VALUE_UNIT_MEGA          (0x0UL << 29)
+       #define RING_ALLOC_REQ_MAX_BW_BW_VALUE_UNIT_KILO          (0x2UL << 29)
+       #define RING_ALLOC_REQ_MAX_BW_BW_VALUE_UNIT_BASE          (0x4UL << 29)
+       #define RING_ALLOC_REQ_MAX_BW_BW_VALUE_UNIT_GIGA          (0x6UL << 29)
+       #define RING_ALLOC_REQ_MAX_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL << 29)
+       #define RING_ALLOC_REQ_MAX_BW_BW_VALUE_UNIT_INVALID       (0x7UL << 29)
+       #define RING_ALLOC_REQ_MAX_BW_BW_VALUE_UNIT_LAST         RING_ALLOC_REQ_MAX_BW_BW_VALUE_UNIT_INVALID
+       u8      int_mode;
+       #define RING_ALLOC_REQ_INT_MODE_LEGACY 0x0UL
+       #define RING_ALLOC_REQ_INT_MODE_RSVD   0x1UL
+       #define RING_ALLOC_REQ_INT_MODE_MSIX   0x2UL
+       #define RING_ALLOC_REQ_INT_MODE_POLL   0x3UL
+       #define RING_ALLOC_REQ_INT_MODE_LAST  RING_ALLOC_REQ_INT_MODE_POLL
+       u8      unused_4[3];
+       __le64  cq_handle;
+};
+
+/* hwrm_ring_alloc_output (size:128b/16B) */
+struct hwrm_ring_alloc_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le16  ring_id;
+       __le16  logical_ring_id;
+       u8      unused_0[3];
+       u8      valid;
+};
+
+/* hwrm_ring_free_input (size:192b/24B) */
+struct hwrm_ring_free_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       u8      ring_type;
+       #define RING_FREE_REQ_RING_TYPE_L2_CMPL   0x0UL
+       #define RING_FREE_REQ_RING_TYPE_TX        0x1UL
+       #define RING_FREE_REQ_RING_TYPE_RX        0x2UL
+       #define RING_FREE_REQ_RING_TYPE_ROCE_CMPL 0x3UL
+       #define RING_FREE_REQ_RING_TYPE_RX_AGG    0x4UL
+       #define RING_FREE_REQ_RING_TYPE_NQ        0x5UL
+       #define RING_FREE_REQ_RING_TYPE_LAST     RING_FREE_REQ_RING_TYPE_NQ
+       u8      unused_0;
+       __le16  ring_id;
+       u8      unused_1[4];
+};
+
+/* hwrm_ring_free_output (size:128b/16B) */
+struct hwrm_ring_free_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_ring_reset_input (size:192b/24B) */
+struct hwrm_ring_reset_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       u8      ring_type;
+       #define RING_RESET_REQ_RING_TYPE_L2_CMPL   0x0UL
+       #define RING_RESET_REQ_RING_TYPE_TX        0x1UL
+       #define RING_RESET_REQ_RING_TYPE_RX        0x2UL
+       #define RING_RESET_REQ_RING_TYPE_ROCE_CMPL 0x3UL
+       #define RING_RESET_REQ_RING_TYPE_LAST     RING_RESET_REQ_RING_TYPE_ROCE_CMPL
+       u8      unused_0;
+       __le16  ring_id;
+       u8      unused_1[4];
+};
+
+/* hwrm_ring_reset_output (size:128b/16B) */
+struct hwrm_ring_reset_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_ring_aggint_qcaps_input (size:128b/16B) */
+struct hwrm_ring_aggint_qcaps_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+};
+
+/* hwrm_ring_aggint_qcaps_output (size:384b/48B) */
+struct hwrm_ring_aggint_qcaps_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le32  cmpl_params;
+       #define RING_AGGINT_QCAPS_RESP_CMPL_PARAMS_INT_LAT_TMR_MIN                  0x1UL
+       #define RING_AGGINT_QCAPS_RESP_CMPL_PARAMS_INT_LAT_TMR_MAX                  0x2UL
+       #define RING_AGGINT_QCAPS_RESP_CMPL_PARAMS_TIMER_RESET                      0x4UL
+       #define RING_AGGINT_QCAPS_RESP_CMPL_PARAMS_RING_IDLE                        0x8UL
+       #define RING_AGGINT_QCAPS_RESP_CMPL_PARAMS_NUM_CMPL_DMA_AGGR                0x10UL
+       #define RING_AGGINT_QCAPS_RESP_CMPL_PARAMS_NUM_CMPL_DMA_AGGR_DURING_INT     0x20UL
+       #define RING_AGGINT_QCAPS_RESP_CMPL_PARAMS_CMPL_AGGR_DMA_TMR                0x40UL
+       #define RING_AGGINT_QCAPS_RESP_CMPL_PARAMS_CMPL_AGGR_DMA_TMR_DURING_INT     0x80UL
+       #define RING_AGGINT_QCAPS_RESP_CMPL_PARAMS_NUM_CMPL_AGGR_INT                0x100UL
+       __le32  nq_params;
+       #define RING_AGGINT_QCAPS_RESP_NQ_PARAMS_INT_LAT_TMR_MIN     0x1UL
+       __le16  num_cmpl_dma_aggr_min;
+       __le16  num_cmpl_dma_aggr_max;
+       __le16  num_cmpl_dma_aggr_during_int_min;
+       __le16  num_cmpl_dma_aggr_during_int_max;
+       __le16  cmpl_aggr_dma_tmr_min;
+       __le16  cmpl_aggr_dma_tmr_max;
+       __le16  cmpl_aggr_dma_tmr_during_int_min;
+       __le16  cmpl_aggr_dma_tmr_during_int_max;
+       __le16  int_lat_tmr_min_min;
+       __le16  int_lat_tmr_min_max;
+       __le16  int_lat_tmr_max_min;
+       __le16  int_lat_tmr_max_max;
+       __le16  num_cmpl_aggr_int_min;
+       __le16  num_cmpl_aggr_int_max;
+       __le16  timer_units;
+       u8      unused_0[1];
+       u8      valid;
+};
+
+/* hwrm_ring_cmpl_ring_qaggint_params_input (size:192b/24B) */
+struct hwrm_ring_cmpl_ring_qaggint_params_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le16  ring_id;
+       u8      unused_0[6];
+};
+
+/* hwrm_ring_cmpl_ring_qaggint_params_output (size:256b/32B) */
+struct hwrm_ring_cmpl_ring_qaggint_params_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le16  flags;
+       #define RING_CMPL_RING_QAGGINT_PARAMS_RESP_FLAGS_TIMER_RESET     0x1UL
+       #define RING_CMPL_RING_QAGGINT_PARAMS_RESP_FLAGS_RING_IDLE       0x2UL
+       __le16  num_cmpl_dma_aggr;
+       __le16  num_cmpl_dma_aggr_during_int;
+       __le16  cmpl_aggr_dma_tmr;
+       __le16  cmpl_aggr_dma_tmr_during_int;
+       __le16  int_lat_tmr_min;
+       __le16  int_lat_tmr_max;
+       __le16  num_cmpl_aggr_int;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_ring_cmpl_ring_cfg_aggint_params_input (size:320b/40B) */
+struct hwrm_ring_cmpl_ring_cfg_aggint_params_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le16  ring_id;
+       __le16  flags;
+       #define RING_CMPL_RING_CFG_AGGINT_PARAMS_REQ_FLAGS_TIMER_RESET     0x1UL
+       #define RING_CMPL_RING_CFG_AGGINT_PARAMS_REQ_FLAGS_RING_IDLE       0x2UL
+       #define RING_CMPL_RING_CFG_AGGINT_PARAMS_REQ_FLAGS_IS_NQ           0x4UL
+       __le16  num_cmpl_dma_aggr;
+       __le16  num_cmpl_dma_aggr_during_int;
+       __le16  cmpl_aggr_dma_tmr;
+       __le16  cmpl_aggr_dma_tmr_during_int;
+       __le16  int_lat_tmr_min;
+       __le16  int_lat_tmr_max;
+       __le16  num_cmpl_aggr_int;
+       __le16  enables;
+       #define RING_CMPL_RING_CFG_AGGINT_PARAMS_REQ_ENABLES_NUM_CMPL_DMA_AGGR                0x1UL
+       #define RING_CMPL_RING_CFG_AGGINT_PARAMS_REQ_ENABLES_NUM_CMPL_DMA_AGGR_DURING_INT     0x2UL
+       #define RING_CMPL_RING_CFG_AGGINT_PARAMS_REQ_ENABLES_CMPL_AGGR_DMA_TMR                0x4UL
+       #define RING_CMPL_RING_CFG_AGGINT_PARAMS_REQ_ENABLES_INT_LAT_TMR_MIN                  0x8UL
+       #define RING_CMPL_RING_CFG_AGGINT_PARAMS_REQ_ENABLES_INT_LAT_TMR_MAX                  0x10UL
+       #define RING_CMPL_RING_CFG_AGGINT_PARAMS_REQ_ENABLES_NUM_CMPL_AGGR_INT                0x20UL
+       u8      unused_0[4];
+};
+
+/* hwrm_ring_cmpl_ring_cfg_aggint_params_output (size:128b/16B) */
+struct hwrm_ring_cmpl_ring_cfg_aggint_params_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_ring_grp_alloc_input (size:192b/24B) */
+struct hwrm_ring_grp_alloc_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le16  cr;
+       __le16  rr;
+       __le16  ar;
+       __le16  sc;
+};
+
+/* hwrm_ring_grp_alloc_output (size:128b/16B) */
+struct hwrm_ring_grp_alloc_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le32  ring_group_id;
+       u8      unused_0[3];
+       u8      valid;
+};
+
+/* hwrm_ring_grp_free_input (size:192b/24B) */
+struct hwrm_ring_grp_free_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le32  ring_group_id;
+       u8      unused_0[4];
+};
+
+/* hwrm_ring_grp_free_output (size:128b/16B) */
+struct hwrm_ring_grp_free_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_cfa_l2_filter_alloc_input (size:768b/96B) */
+struct hwrm_cfa_l2_filter_alloc_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le32  flags;
+       #define CFA_L2_FILTER_ALLOC_REQ_FLAGS_PATH              0x1UL
+       #define CFA_L2_FILTER_ALLOC_REQ_FLAGS_PATH_TX             0x0UL
+       #define CFA_L2_FILTER_ALLOC_REQ_FLAGS_PATH_RX             0x1UL
+       #define CFA_L2_FILTER_ALLOC_REQ_FLAGS_PATH_LAST          CFA_L2_FILTER_ALLOC_REQ_FLAGS_PATH_RX
+       #define CFA_L2_FILTER_ALLOC_REQ_FLAGS_LOOPBACK          0x2UL
+       #define CFA_L2_FILTER_ALLOC_REQ_FLAGS_DROP              0x4UL
+       #define CFA_L2_FILTER_ALLOC_REQ_FLAGS_OUTERMOST         0x8UL
+       #define CFA_L2_FILTER_ALLOC_REQ_FLAGS_TRAFFIC_MASK      0x30UL
+       #define CFA_L2_FILTER_ALLOC_REQ_FLAGS_TRAFFIC_SFT       4
+       #define CFA_L2_FILTER_ALLOC_REQ_FLAGS_TRAFFIC_NO_ROCE_L2  (0x0UL << 4)
+       #define CFA_L2_FILTER_ALLOC_REQ_FLAGS_TRAFFIC_L2          (0x1UL << 4)
+       #define CFA_L2_FILTER_ALLOC_REQ_FLAGS_TRAFFIC_ROCE        (0x2UL << 4)
+       #define CFA_L2_FILTER_ALLOC_REQ_FLAGS_TRAFFIC_LAST       CFA_L2_FILTER_ALLOC_REQ_FLAGS_TRAFFIC_ROCE
+       __le32  enables;
+       #define CFA_L2_FILTER_ALLOC_REQ_ENABLES_L2_ADDR             0x1UL
+       #define CFA_L2_FILTER_ALLOC_REQ_ENABLES_L2_ADDR_MASK        0x2UL
+       #define CFA_L2_FILTER_ALLOC_REQ_ENABLES_L2_OVLAN            0x4UL
+       #define CFA_L2_FILTER_ALLOC_REQ_ENABLES_L2_OVLAN_MASK       0x8UL
+       #define CFA_L2_FILTER_ALLOC_REQ_ENABLES_L2_IVLAN            0x10UL
+       #define CFA_L2_FILTER_ALLOC_REQ_ENABLES_L2_IVLAN_MASK       0x20UL
+       #define CFA_L2_FILTER_ALLOC_REQ_ENABLES_T_L2_ADDR           0x40UL
+       #define CFA_L2_FILTER_ALLOC_REQ_ENABLES_T_L2_ADDR_MASK      0x80UL
+       #define CFA_L2_FILTER_ALLOC_REQ_ENABLES_T_L2_OVLAN          0x100UL
+       #define CFA_L2_FILTER_ALLOC_REQ_ENABLES_T_L2_OVLAN_MASK     0x200UL
+       #define CFA_L2_FILTER_ALLOC_REQ_ENABLES_T_L2_IVLAN          0x400UL
+       #define CFA_L2_FILTER_ALLOC_REQ_ENABLES_T_L2_IVLAN_MASK     0x800UL
+       #define CFA_L2_FILTER_ALLOC_REQ_ENABLES_SRC_TYPE            0x1000UL
+       #define CFA_L2_FILTER_ALLOC_REQ_ENABLES_SRC_ID              0x2000UL
+       #define CFA_L2_FILTER_ALLOC_REQ_ENABLES_TUNNEL_TYPE         0x4000UL
+       #define CFA_L2_FILTER_ALLOC_REQ_ENABLES_DST_ID              0x8000UL
+       #define CFA_L2_FILTER_ALLOC_REQ_ENABLES_MIRROR_VNIC_ID      0x10000UL
+       u8      l2_addr[6];
+       u8      unused_0[2];
+       u8      l2_addr_mask[6];
+       __le16  l2_ovlan;
+       __le16  l2_ovlan_mask;
+       __le16  l2_ivlan;
+       __le16  l2_ivlan_mask;
+       u8      unused_1[2];
+       u8      t_l2_addr[6];
+       u8      unused_2[2];
+       u8      t_l2_addr_mask[6];
+       __le16  t_l2_ovlan;
+       __le16  t_l2_ovlan_mask;
+       __le16  t_l2_ivlan;
+       __le16  t_l2_ivlan_mask;
+       u8      src_type;
+       #define CFA_L2_FILTER_ALLOC_REQ_SRC_TYPE_NPORT 0x0UL
+       #define CFA_L2_FILTER_ALLOC_REQ_SRC_TYPE_PF    0x1UL
+       #define CFA_L2_FILTER_ALLOC_REQ_SRC_TYPE_VF    0x2UL
+       #define CFA_L2_FILTER_ALLOC_REQ_SRC_TYPE_VNIC  0x3UL
+       #define CFA_L2_FILTER_ALLOC_REQ_SRC_TYPE_KONG  0x4UL
+       #define CFA_L2_FILTER_ALLOC_REQ_SRC_TYPE_APE   0x5UL
+       #define CFA_L2_FILTER_ALLOC_REQ_SRC_TYPE_BONO  0x6UL
+       #define CFA_L2_FILTER_ALLOC_REQ_SRC_TYPE_TANG  0x7UL
+       #define CFA_L2_FILTER_ALLOC_REQ_SRC_TYPE_LAST CFA_L2_FILTER_ALLOC_REQ_SRC_TYPE_TANG
+       u8      unused_3;
+       __le32  src_id;
+       u8      tunnel_type;
+       #define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_NONTUNNEL 0x0UL
+       #define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_VXLAN     0x1UL
+       #define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_NVGRE     0x2UL
+       #define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_L2GRE     0x3UL
+       #define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_IPIP      0x4UL
+       #define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_GENEVE    0x5UL
+       #define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_MPLS      0x6UL
+       #define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_STT       0x7UL
+       #define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_IPGRE     0x8UL
+       #define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_VXLAN_V4  0x9UL
+       #define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_IPGRE_V1  0xaUL
+       #define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_L2_ETYPE  0xbUL
+       #define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_ANYTUNNEL 0xffUL
+       #define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_LAST     CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_ANYTUNNEL
+       u8      unused_4;
+       __le16  dst_id;
+       __le16  mirror_vnic_id;
+       u8      pri_hint;
+       #define CFA_L2_FILTER_ALLOC_REQ_PRI_HINT_NO_PREFER    0x0UL
+       #define CFA_L2_FILTER_ALLOC_REQ_PRI_HINT_ABOVE_FILTER 0x1UL
+       #define CFA_L2_FILTER_ALLOC_REQ_PRI_HINT_BELOW_FILTER 0x2UL
+       #define CFA_L2_FILTER_ALLOC_REQ_PRI_HINT_MAX          0x3UL
+       #define CFA_L2_FILTER_ALLOC_REQ_PRI_HINT_MIN          0x4UL
+       #define CFA_L2_FILTER_ALLOC_REQ_PRI_HINT_LAST        CFA_L2_FILTER_ALLOC_REQ_PRI_HINT_MIN
+       u8      unused_5;
+       __le32  unused_6;
+       __le64  l2_filter_id_hint;
+};
+
+/* hwrm_cfa_l2_filter_alloc_output (size:192b/24B) */
+struct hwrm_cfa_l2_filter_alloc_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le64  l2_filter_id;
+       __le32  flow_id;
+       u8      unused_0[3];
+       u8      valid;
+};
+
+/* hwrm_cfa_l2_filter_free_input (size:192b/24B) */
+struct hwrm_cfa_l2_filter_free_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le64  l2_filter_id;
+};
+
+/* hwrm_cfa_l2_filter_free_output (size:128b/16B) */
+struct hwrm_cfa_l2_filter_free_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_cfa_l2_filter_cfg_input (size:320b/40B) */
+struct hwrm_cfa_l2_filter_cfg_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le32  flags;
+       #define CFA_L2_FILTER_CFG_REQ_FLAGS_PATH              0x1UL
+       #define CFA_L2_FILTER_CFG_REQ_FLAGS_PATH_TX             0x0UL
+       #define CFA_L2_FILTER_CFG_REQ_FLAGS_PATH_RX             0x1UL
+       #define CFA_L2_FILTER_CFG_REQ_FLAGS_PATH_LAST          CFA_L2_FILTER_CFG_REQ_FLAGS_PATH_RX
+       #define CFA_L2_FILTER_CFG_REQ_FLAGS_DROP              0x2UL
+       #define CFA_L2_FILTER_CFG_REQ_FLAGS_TRAFFIC_MASK      0xcUL
+       #define CFA_L2_FILTER_CFG_REQ_FLAGS_TRAFFIC_SFT       2
+       #define CFA_L2_FILTER_CFG_REQ_FLAGS_TRAFFIC_NO_ROCE_L2  (0x0UL << 2)
+       #define CFA_L2_FILTER_CFG_REQ_FLAGS_TRAFFIC_L2          (0x1UL << 2)
+       #define CFA_L2_FILTER_CFG_REQ_FLAGS_TRAFFIC_ROCE        (0x2UL << 2)
+       #define CFA_L2_FILTER_CFG_REQ_FLAGS_TRAFFIC_LAST       CFA_L2_FILTER_CFG_REQ_FLAGS_TRAFFIC_ROCE
+       __le32  enables;
+       #define CFA_L2_FILTER_CFG_REQ_ENABLES_DST_ID                 0x1UL
+       #define CFA_L2_FILTER_CFG_REQ_ENABLES_NEW_MIRROR_VNIC_ID     0x2UL
+       __le64  l2_filter_id;
+       __le32  dst_id;
+       __le32  new_mirror_vnic_id;
+};
+
+/* hwrm_cfa_l2_filter_cfg_output (size:128b/16B) */
+struct hwrm_cfa_l2_filter_cfg_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_cfa_l2_set_rx_mask_input (size:448b/56B) */
+struct hwrm_cfa_l2_set_rx_mask_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le32  vnic_id;
+       __le32  mask;
+       #define CFA_L2_SET_RX_MASK_REQ_MASK_MCAST               0x2UL
+       #define CFA_L2_SET_RX_MASK_REQ_MASK_ALL_MCAST           0x4UL
+       #define CFA_L2_SET_RX_MASK_REQ_MASK_BCAST               0x8UL
+       #define CFA_L2_SET_RX_MASK_REQ_MASK_PROMISCUOUS         0x10UL
+       #define CFA_L2_SET_RX_MASK_REQ_MASK_OUTERMOST           0x20UL
+       #define CFA_L2_SET_RX_MASK_REQ_MASK_VLANONLY            0x40UL
+       #define CFA_L2_SET_RX_MASK_REQ_MASK_VLAN_NONVLAN        0x80UL
+       #define CFA_L2_SET_RX_MASK_REQ_MASK_ANYVLAN_NONVLAN     0x100UL
+       __le64  mc_tbl_addr;
+       __le32  num_mc_entries;
+       u8      unused_0[4];
+       __le64  vlan_tag_tbl_addr;
+       __le32  num_vlan_tags;
+       u8      unused_1[4];
+};
+
+/* hwrm_cfa_l2_set_rx_mask_output (size:128b/16B) */
+struct hwrm_cfa_l2_set_rx_mask_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_cfa_l2_set_rx_mask_cmd_err (size:64b/8B) */
+struct hwrm_cfa_l2_set_rx_mask_cmd_err {
+       u8      code;
+       #define CFA_L2_SET_RX_MASK_CMD_ERR_CODE_UNKNOWN                    0x0UL
+       #define CFA_L2_SET_RX_MASK_CMD_ERR_CODE_NTUPLE_FILTER_CONFLICT_ERR 0x1UL
+       #define CFA_L2_SET_RX_MASK_CMD_ERR_CODE_LAST                      CFA_L2_SET_RX_MASK_CMD_ERR_CODE_NTUPLE_FILTER_CONFLICT_ERR
+       u8      unused_0[7];
+};
+
+/* hwrm_cfa_vlan_antispoof_cfg_input (size:256b/32B) */
+struct hwrm_cfa_vlan_antispoof_cfg_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le16  fid;
+       u8      unused_0[2];
+       __le32  num_vlan_entries;
+       __le64  vlan_tag_mask_tbl_addr;
+};
+
+/* hwrm_cfa_vlan_antispoof_cfg_output (size:128b/16B) */
+struct hwrm_cfa_vlan_antispoof_cfg_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_cfa_vlan_antispoof_qcfg_input (size:256b/32B) */
+struct hwrm_cfa_vlan_antispoof_qcfg_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le16  fid;
+       u8      unused_0[2];
+       __le32  max_vlan_entries;
+       __le64  vlan_tag_mask_tbl_addr;
+};
+
+/* hwrm_cfa_vlan_antispoof_qcfg_output (size:128b/16B) */
+struct hwrm_cfa_vlan_antispoof_qcfg_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le32  num_vlan_entries;
+       u8      unused_0[3];
+       u8      valid;
+};
+
+/* hwrm_cfa_tunnel_filter_alloc_input (size:704b/88B) */
+struct hwrm_cfa_tunnel_filter_alloc_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le32  flags;
+       #define CFA_TUNNEL_FILTER_ALLOC_REQ_FLAGS_LOOPBACK     0x1UL
+       __le32  enables;
+       #define CFA_TUNNEL_FILTER_ALLOC_REQ_ENABLES_L2_FILTER_ID       0x1UL
+       #define CFA_TUNNEL_FILTER_ALLOC_REQ_ENABLES_L2_ADDR            0x2UL
+       #define CFA_TUNNEL_FILTER_ALLOC_REQ_ENABLES_L2_IVLAN           0x4UL
+       #define CFA_TUNNEL_FILTER_ALLOC_REQ_ENABLES_L3_ADDR            0x8UL
+       #define CFA_TUNNEL_FILTER_ALLOC_REQ_ENABLES_L3_ADDR_TYPE       0x10UL
+       #define CFA_TUNNEL_FILTER_ALLOC_REQ_ENABLES_T_L3_ADDR_TYPE     0x20UL
+       #define CFA_TUNNEL_FILTER_ALLOC_REQ_ENABLES_T_L3_ADDR          0x40UL
+       #define CFA_TUNNEL_FILTER_ALLOC_REQ_ENABLES_TUNNEL_TYPE        0x80UL
+       #define CFA_TUNNEL_FILTER_ALLOC_REQ_ENABLES_VNI                0x100UL
+       #define CFA_TUNNEL_FILTER_ALLOC_REQ_ENABLES_DST_VNIC_ID        0x200UL
+       #define CFA_TUNNEL_FILTER_ALLOC_REQ_ENABLES_MIRROR_VNIC_ID     0x400UL
+       __le64  l2_filter_id;
+       u8      l2_addr[6];
+       __le16  l2_ivlan;
+       __le32  l3_addr[4];
+       __le32  t_l3_addr[4];
+       u8      l3_addr_type;
+       u8      t_l3_addr_type;
+       u8      tunnel_type;
+       #define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_NONTUNNEL 0x0UL
+       #define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_VXLAN     0x1UL
+       #define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_NVGRE     0x2UL
+       #define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_L2GRE     0x3UL
+       #define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_IPIP      0x4UL
+       #define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_GENEVE    0x5UL
+       #define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_MPLS      0x6UL
+       #define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_STT       0x7UL
+       #define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_IPGRE     0x8UL
+       #define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_VXLAN_V4  0x9UL
+       #define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_IPGRE_V1  0xaUL
+       #define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_L2_ETYPE  0xbUL
+       #define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_ANYTUNNEL 0xffUL
+       #define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_LAST     CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_ANYTUNNEL
+       u8      tunnel_flags;
+       #define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_FLAGS_TUN_FLAGS_OAM_CHECKSUM_EXPLHDR     0x1UL
+       #define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_FLAGS_TUN_FLAGS_CRITICAL_OPT_S1          0x2UL
+       #define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_FLAGS_TUN_FLAGS_EXTHDR_SEQNUM_S0         0x4UL
+       __le32  vni;
+       __le32  dst_vnic_id;
+       __le32  mirror_vnic_id;
+};
+
+/* hwrm_cfa_tunnel_filter_alloc_output (size:192b/24B) */
+struct hwrm_cfa_tunnel_filter_alloc_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le64  tunnel_filter_id;
+       __le32  flow_id;
+       u8      unused_0[3];
+       u8      valid;
+};
+
+/* hwrm_cfa_tunnel_filter_free_input (size:192b/24B) */
+struct hwrm_cfa_tunnel_filter_free_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le64  tunnel_filter_id;
+};
+
+/* hwrm_cfa_tunnel_filter_free_output (size:128b/16B) */
+struct hwrm_cfa_tunnel_filter_free_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_cfa_redirect_tunnel_type_alloc_input (size:192b/24B) */
+struct hwrm_cfa_redirect_tunnel_type_alloc_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le16  dest_fid;
+       u8      tunnel_type;
+       #define CFA_REDIRECT_TUNNEL_TYPE_ALLOC_REQ_TUNNEL_TYPE_NONTUNNEL 0x0UL
+       #define CFA_REDIRECT_TUNNEL_TYPE_ALLOC_REQ_TUNNEL_TYPE_VXLAN     0x1UL
+       #define CFA_REDIRECT_TUNNEL_TYPE_ALLOC_REQ_TUNNEL_TYPE_NVGRE     0x2UL
+       #define CFA_REDIRECT_TUNNEL_TYPE_ALLOC_REQ_TUNNEL_TYPE_L2GRE     0x3UL
+       #define CFA_REDIRECT_TUNNEL_TYPE_ALLOC_REQ_TUNNEL_TYPE_IPIP      0x4UL
+       #define CFA_REDIRECT_TUNNEL_TYPE_ALLOC_REQ_TUNNEL_TYPE_GENEVE    0x5UL
+       #define CFA_REDIRECT_TUNNEL_TYPE_ALLOC_REQ_TUNNEL_TYPE_MPLS      0x6UL
+       #define CFA_REDIRECT_TUNNEL_TYPE_ALLOC_REQ_TUNNEL_TYPE_STT       0x7UL
+       #define CFA_REDIRECT_TUNNEL_TYPE_ALLOC_REQ_TUNNEL_TYPE_IPGRE     0x8UL
+       #define CFA_REDIRECT_TUNNEL_TYPE_ALLOC_REQ_TUNNEL_TYPE_VXLAN_V4  0x9UL
+       #define CFA_REDIRECT_TUNNEL_TYPE_ALLOC_REQ_TUNNEL_TYPE_IPGRE_V1  0xaUL
+       #define CFA_REDIRECT_TUNNEL_TYPE_ALLOC_REQ_TUNNEL_TYPE_L2_ETYPE  0xbUL
+       #define CFA_REDIRECT_TUNNEL_TYPE_ALLOC_REQ_TUNNEL_TYPE_ANYTUNNEL 0xffUL
+       #define CFA_REDIRECT_TUNNEL_TYPE_ALLOC_REQ_TUNNEL_TYPE_LAST     CFA_REDIRECT_TUNNEL_TYPE_ALLOC_REQ_TUNNEL_TYPE_ANYTUNNEL
+       u8      flags;
+       #define CFA_REDIRECT_TUNNEL_TYPE_ALLOC_REQ_FLAGS_MODIFY_DST     0x1UL
+       u8      unused_0[4];
+};
+
+/* hwrm_cfa_redirect_tunnel_type_alloc_output (size:128b/16B) */
+struct hwrm_cfa_redirect_tunnel_type_alloc_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_cfa_redirect_tunnel_type_free_input (size:192b/24B) */
+struct hwrm_cfa_redirect_tunnel_type_free_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le16  dest_fid;
+       u8      tunnel_type;
+       #define CFA_REDIRECT_TUNNEL_TYPE_FREE_REQ_TUNNEL_TYPE_NONTUNNEL 0x0UL
+       #define CFA_REDIRECT_TUNNEL_TYPE_FREE_REQ_TUNNEL_TYPE_VXLAN     0x1UL
+       #define CFA_REDIRECT_TUNNEL_TYPE_FREE_REQ_TUNNEL_TYPE_NVGRE     0x2UL
+       #define CFA_REDIRECT_TUNNEL_TYPE_FREE_REQ_TUNNEL_TYPE_L2GRE     0x3UL
+       #define CFA_REDIRECT_TUNNEL_TYPE_FREE_REQ_TUNNEL_TYPE_IPIP      0x4UL
+       #define CFA_REDIRECT_TUNNEL_TYPE_FREE_REQ_TUNNEL_TYPE_GENEVE    0x5UL
+       #define CFA_REDIRECT_TUNNEL_TYPE_FREE_REQ_TUNNEL_TYPE_MPLS      0x6UL
+       #define CFA_REDIRECT_TUNNEL_TYPE_FREE_REQ_TUNNEL_TYPE_STT       0x7UL
+       #define CFA_REDIRECT_TUNNEL_TYPE_FREE_REQ_TUNNEL_TYPE_IPGRE     0x8UL
+       #define CFA_REDIRECT_TUNNEL_TYPE_FREE_REQ_TUNNEL_TYPE_VXLAN_V4  0x9UL
+       #define CFA_REDIRECT_TUNNEL_TYPE_FREE_REQ_TUNNEL_TYPE_IPGRE_V1  0xaUL
+       #define CFA_REDIRECT_TUNNEL_TYPE_FREE_REQ_TUNNEL_TYPE_L2_ETYPE  0xbUL
+       #define CFA_REDIRECT_TUNNEL_TYPE_FREE_REQ_TUNNEL_TYPE_ANYTUNNEL 0xffUL
+       #define CFA_REDIRECT_TUNNEL_TYPE_FREE_REQ_TUNNEL_TYPE_LAST     CFA_REDIRECT_TUNNEL_TYPE_FREE_REQ_TUNNEL_TYPE_ANYTUNNEL
+       u8      unused_0[5];
+};
+
+/* hwrm_cfa_redirect_tunnel_type_free_output (size:128b/16B) */
+struct hwrm_cfa_redirect_tunnel_type_free_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_cfa_redirect_tunnel_type_info_input (size:192b/24B) */
+struct hwrm_cfa_redirect_tunnel_type_info_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le16  src_fid;
+       u8      tunnel_type;
+       #define CFA_REDIRECT_TUNNEL_TYPE_INFO_REQ_TUNNEL_TYPE_NONTUNNEL 0x0UL
+       #define CFA_REDIRECT_TUNNEL_TYPE_INFO_REQ_TUNNEL_TYPE_VXLAN     0x1UL
+       #define CFA_REDIRECT_TUNNEL_TYPE_INFO_REQ_TUNNEL_TYPE_NVGRE     0x2UL
+       #define CFA_REDIRECT_TUNNEL_TYPE_INFO_REQ_TUNNEL_TYPE_L2GRE     0x3UL
+       #define CFA_REDIRECT_TUNNEL_TYPE_INFO_REQ_TUNNEL_TYPE_IPIP      0x4UL
+       #define CFA_REDIRECT_TUNNEL_TYPE_INFO_REQ_TUNNEL_TYPE_GENEVE    0x5UL
+       #define CFA_REDIRECT_TUNNEL_TYPE_INFO_REQ_TUNNEL_TYPE_MPLS      0x6UL
+       #define CFA_REDIRECT_TUNNEL_TYPE_INFO_REQ_TUNNEL_TYPE_STT       0x7UL
+       #define CFA_REDIRECT_TUNNEL_TYPE_INFO_REQ_TUNNEL_TYPE_IPGRE     0x8UL
+       #define CFA_REDIRECT_TUNNEL_TYPE_INFO_REQ_TUNNEL_TYPE_VXLAN_V4  0x9UL
+       #define CFA_REDIRECT_TUNNEL_TYPE_INFO_REQ_TUNNEL_TYPE_IPGRE_V1  0xaUL
+       #define CFA_REDIRECT_TUNNEL_TYPE_INFO_REQ_TUNNEL_TYPE_L2_ETYPE  0xbUL
+       #define CFA_REDIRECT_TUNNEL_TYPE_INFO_REQ_TUNNEL_TYPE_ANYTUNNEL 0xffUL
+       #define CFA_REDIRECT_TUNNEL_TYPE_INFO_REQ_TUNNEL_TYPE_LAST     CFA_REDIRECT_TUNNEL_TYPE_INFO_REQ_TUNNEL_TYPE_ANYTUNNEL
+       u8      unused_0[5];
+};
+
+/* hwrm_cfa_redirect_tunnel_type_info_output (size:128b/16B) */
+struct hwrm_cfa_redirect_tunnel_type_info_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le16  dest_fid;
+       u8      unused_0[5];
+       u8      valid;
+};
+
+/* hwrm_vxlan_ipv4_hdr (size:128b/16B) */
+struct hwrm_vxlan_ipv4_hdr {
+       u8      ver_hlen;
+       #define VXLAN_IPV4_HDR_VER_HLEN_HEADER_LENGTH_MASK 0xfUL
+       #define VXLAN_IPV4_HDR_VER_HLEN_HEADER_LENGTH_SFT 0
+       #define VXLAN_IPV4_HDR_VER_HLEN_VERSION_MASK      0xf0UL
+       #define VXLAN_IPV4_HDR_VER_HLEN_VERSION_SFT       4
+       u8      tos;
+       __be16  ip_id;
+       __be16  flags_frag_offset;
+       u8      ttl;
+       u8      protocol;
+       __be32  src_ip_addr;
+       __be32  dest_ip_addr;
+};
+
+/* hwrm_vxlan_ipv6_hdr (size:320b/40B) */
+struct hwrm_vxlan_ipv6_hdr {
+       __be32  ver_tc_flow_label;
+       #define VXLAN_IPV6_HDR_VER_TC_FLOW_LABEL_VER_SFT         0x1cUL
+       #define VXLAN_IPV6_HDR_VER_TC_FLOW_LABEL_VER_MASK        0xf0000000UL
+       #define VXLAN_IPV6_HDR_VER_TC_FLOW_LABEL_TC_SFT          0x14UL
+       #define VXLAN_IPV6_HDR_VER_TC_FLOW_LABEL_TC_MASK         0xff00000UL
+       #define VXLAN_IPV6_HDR_VER_TC_FLOW_LABEL_FLOW_LABEL_SFT  0x0UL
+       #define VXLAN_IPV6_HDR_VER_TC_FLOW_LABEL_FLOW_LABEL_MASK 0xfffffUL
+       #define VXLAN_IPV6_HDR_VER_TC_FLOW_LABEL_LAST           VXLAN_IPV6_HDR_VER_TC_FLOW_LABEL_FLOW_LABEL_MASK
+       __be16  payload_len;
+       u8      next_hdr;
+       u8      ttl;
+       __be32  src_ip_addr[4];
+       __be32  dest_ip_addr[4];
+};
+
+/* hwrm_cfa_encap_data_vxlan (size:640b/80B) */
+struct hwrm_cfa_encap_data_vxlan {
+       u8      src_mac_addr[6];
+       __le16  unused_0;
+       u8      dst_mac_addr[6];
+       u8      num_vlan_tags;
+       u8      unused_1;
+       __be16  ovlan_tpid;
+       __be16  ovlan_tci;
+       __be16  ivlan_tpid;
+       __be16  ivlan_tci;
+       __le32  l3[10];
+       #define CFA_ENCAP_DATA_VXLAN_L3_VER_MASK 0xfUL
+       #define CFA_ENCAP_DATA_VXLAN_L3_VER_IPV4 0x4UL
+       #define CFA_ENCAP_DATA_VXLAN_L3_VER_IPV6 0x6UL
+       #define CFA_ENCAP_DATA_VXLAN_L3_LAST    CFA_ENCAP_DATA_VXLAN_L3_VER_IPV6
+       __be16  src_port;
+       __be16  dst_port;
+       __be32  vni;
+       u8      hdr_rsvd0[3];
+       u8      hdr_rsvd1;
+       u8      hdr_flags;
+       u8      unused[3];
+};
+
+/* hwrm_cfa_encap_record_alloc_input (size:832b/104B) */
+struct hwrm_cfa_encap_record_alloc_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le32  flags;
+       #define CFA_ENCAP_RECORD_ALLOC_REQ_FLAGS_LOOPBACK     0x1UL
+       u8      encap_type;
+       #define CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_VXLAN    0x1UL
+       #define CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_NVGRE    0x2UL
+       #define CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_L2GRE    0x3UL
+       #define CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_IPIP     0x4UL
+       #define CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_GENEVE   0x5UL
+       #define CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_MPLS     0x6UL
+       #define CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_VLAN     0x7UL
+       #define CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_IPGRE    0x8UL
+       #define CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_VXLAN_V4 0x9UL
+       #define CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_IPGRE_V1 0xaUL
+       #define CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_L2_ETYPE 0xbUL
+       #define CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_LAST    CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_L2_ETYPE
+       u8      unused_0[3];
+       __le32  encap_data[20];
+};
+
+/* hwrm_cfa_encap_record_alloc_output (size:128b/16B) */
+struct hwrm_cfa_encap_record_alloc_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le32  encap_record_id;
+       u8      unused_0[3];
+       u8      valid;
+};
+
+/* hwrm_cfa_encap_record_free_input (size:192b/24B) */
+struct hwrm_cfa_encap_record_free_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le32  encap_record_id;
+       u8      unused_0[4];
+};
+
+/* hwrm_cfa_encap_record_free_output (size:128b/16B) */
+struct hwrm_cfa_encap_record_free_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_cfa_ntuple_filter_alloc_input (size:1024b/128B) */
+struct hwrm_cfa_ntuple_filter_alloc_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le32  flags;
+       #define CFA_NTUPLE_FILTER_ALLOC_REQ_FLAGS_LOOPBACK     0x1UL
+       #define CFA_NTUPLE_FILTER_ALLOC_REQ_FLAGS_DROP         0x2UL
+       #define CFA_NTUPLE_FILTER_ALLOC_REQ_FLAGS_METER        0x4UL
+       __le32  enables;
+       #define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_L2_FILTER_ID         0x1UL
+       #define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_ETHERTYPE            0x2UL
+       #define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_TUNNEL_TYPE          0x4UL
+       #define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_SRC_MACADDR          0x8UL
+       #define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_IPADDR_TYPE          0x10UL
+       #define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_SRC_IPADDR           0x20UL
+       #define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_SRC_IPADDR_MASK      0x40UL
+       #define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_DST_IPADDR           0x80UL
+       #define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_DST_IPADDR_MASK      0x100UL
+       #define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_IP_PROTOCOL          0x200UL
+       #define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_SRC_PORT             0x400UL
+       #define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_SRC_PORT_MASK        0x800UL
+       #define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_DST_PORT             0x1000UL
+       #define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_DST_PORT_MASK        0x2000UL
+       #define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_PRI_HINT             0x4000UL
+       #define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_NTUPLE_FILTER_ID     0x8000UL
+       #define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_DST_ID               0x10000UL
+       #define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_MIRROR_VNIC_ID       0x20000UL
+       #define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_DST_MACADDR          0x40000UL
+       __le64  l2_filter_id;
+       u8      src_macaddr[6];
+       __be16  ethertype;
+       u8      ip_addr_type;
+       #define CFA_NTUPLE_FILTER_ALLOC_REQ_IP_ADDR_TYPE_UNKNOWN 0x0UL
+       #define CFA_NTUPLE_FILTER_ALLOC_REQ_IP_ADDR_TYPE_IPV4    0x4UL
+       #define CFA_NTUPLE_FILTER_ALLOC_REQ_IP_ADDR_TYPE_IPV6    0x6UL
+       #define CFA_NTUPLE_FILTER_ALLOC_REQ_IP_ADDR_TYPE_LAST   CFA_NTUPLE_FILTER_ALLOC_REQ_IP_ADDR_TYPE_IPV6
+       u8      ip_protocol;
+       #define CFA_NTUPLE_FILTER_ALLOC_REQ_IP_PROTOCOL_UNKNOWN 0x0UL
+       #define CFA_NTUPLE_FILTER_ALLOC_REQ_IP_PROTOCOL_TCP     0x6UL
+       #define CFA_NTUPLE_FILTER_ALLOC_REQ_IP_PROTOCOL_UDP     0x11UL
+       #define CFA_NTUPLE_FILTER_ALLOC_REQ_IP_PROTOCOL_LAST   CFA_NTUPLE_FILTER_ALLOC_REQ_IP_PROTOCOL_UDP
+       __le16  dst_id;
+       __le16  mirror_vnic_id;
+       u8      tunnel_type;
+       #define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_NONTUNNEL 0x0UL
+       #define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_VXLAN     0x1UL
+       #define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_NVGRE     0x2UL
+       #define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_L2GRE     0x3UL
+       #define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_IPIP      0x4UL
+       #define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_GENEVE    0x5UL
+       #define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_MPLS      0x6UL
+       #define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_STT       0x7UL
+       #define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_IPGRE     0x8UL
+       #define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_VXLAN_V4  0x9UL
+       #define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_IPGRE_V1  0xaUL
+       #define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_L2_ETYPE  0xbUL
+       #define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_ANYTUNNEL 0xffUL
+       #define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_LAST     CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_ANYTUNNEL
+       u8      pri_hint;
+       #define CFA_NTUPLE_FILTER_ALLOC_REQ_PRI_HINT_NO_PREFER 0x0UL
+       #define CFA_NTUPLE_FILTER_ALLOC_REQ_PRI_HINT_ABOVE     0x1UL
+       #define CFA_NTUPLE_FILTER_ALLOC_REQ_PRI_HINT_BELOW     0x2UL
+       #define CFA_NTUPLE_FILTER_ALLOC_REQ_PRI_HINT_HIGHEST   0x3UL
+       #define CFA_NTUPLE_FILTER_ALLOC_REQ_PRI_HINT_LOWEST    0x4UL
+       #define CFA_NTUPLE_FILTER_ALLOC_REQ_PRI_HINT_LAST     CFA_NTUPLE_FILTER_ALLOC_REQ_PRI_HINT_LOWEST
+       __be32  src_ipaddr[4];
+       __be32  src_ipaddr_mask[4];
+       __be32  dst_ipaddr[4];
+       __be32  dst_ipaddr_mask[4];
+       __be16  src_port;
+       __be16  src_port_mask;
+       __be16  dst_port;
+       __be16  dst_port_mask;
+       __le64  ntuple_filter_id_hint;
+};
+
+/* hwrm_cfa_ntuple_filter_alloc_output (size:192b/24B) */
+struct hwrm_cfa_ntuple_filter_alloc_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le64  ntuple_filter_id;
+       __le32  flow_id;
+       u8      unused_0[3];
+       u8      valid;
+};
+
+/* hwrm_cfa_ntuple_filter_alloc_cmd_err (size:64b/8B) */
+struct hwrm_cfa_ntuple_filter_alloc_cmd_err {
+       u8      code;
+       #define CFA_NTUPLE_FILTER_ALLOC_CMD_ERR_CODE_UNKNOWN                   0x0UL
+       #define CFA_NTUPLE_FILTER_ALLOC_CMD_ERR_CODE_RX_MASK_VLAN_CONFLICT_ERR 0x1UL
+       #define CFA_NTUPLE_FILTER_ALLOC_CMD_ERR_CODE_LAST                     CFA_NTUPLE_FILTER_ALLOC_CMD_ERR_CODE_RX_MASK_VLAN_CONFLICT_ERR
+       u8      unused_0[7];
+};
+
+/* hwrm_cfa_ntuple_filter_free_input (size:192b/24B) */
+struct hwrm_cfa_ntuple_filter_free_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le64  ntuple_filter_id;
+};
+
+/* hwrm_cfa_ntuple_filter_free_output (size:128b/16B) */
+struct hwrm_cfa_ntuple_filter_free_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_cfa_ntuple_filter_cfg_input (size:384b/48B) */
+struct hwrm_cfa_ntuple_filter_cfg_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le32  enables;
+       #define CFA_NTUPLE_FILTER_CFG_REQ_ENABLES_NEW_DST_ID                0x1UL
+       #define CFA_NTUPLE_FILTER_CFG_REQ_ENABLES_NEW_MIRROR_VNIC_ID        0x2UL
+       #define CFA_NTUPLE_FILTER_CFG_REQ_ENABLES_NEW_METER_INSTANCE_ID     0x4UL
+       u8      unused_0[4];
+       __le64  ntuple_filter_id;
+       __le32  new_dst_id;
+       __le32  new_mirror_vnic_id;
+       __le16  new_meter_instance_id;
+       #define CFA_NTUPLE_FILTER_CFG_REQ_NEW_METER_INSTANCE_ID_INVALID 0xffffUL
+       #define CFA_NTUPLE_FILTER_CFG_REQ_NEW_METER_INSTANCE_ID_LAST   CFA_NTUPLE_FILTER_CFG_REQ_NEW_METER_INSTANCE_ID_INVALID
+       u8      unused_1[6];
+};
+
+/* hwrm_cfa_ntuple_filter_cfg_output (size:128b/16B) */
+struct hwrm_cfa_ntuple_filter_cfg_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_cfa_em_flow_alloc_input (size:896b/112B) */
+struct hwrm_cfa_em_flow_alloc_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le32  flags;
+       #define CFA_EM_FLOW_ALLOC_REQ_FLAGS_PATH         0x1UL
+       #define CFA_EM_FLOW_ALLOC_REQ_FLAGS_PATH_TX        0x0UL
+       #define CFA_EM_FLOW_ALLOC_REQ_FLAGS_PATH_RX        0x1UL
+       #define CFA_EM_FLOW_ALLOC_REQ_FLAGS_PATH_LAST     CFA_EM_FLOW_ALLOC_REQ_FLAGS_PATH_RX
+       #define CFA_EM_FLOW_ALLOC_REQ_FLAGS_BYTE_CTR     0x2UL
+       #define CFA_EM_FLOW_ALLOC_REQ_FLAGS_PKT_CTR      0x4UL
+       #define CFA_EM_FLOW_ALLOC_REQ_FLAGS_DECAP        0x8UL
+       #define CFA_EM_FLOW_ALLOC_REQ_FLAGS_ENCAP        0x10UL
+       #define CFA_EM_FLOW_ALLOC_REQ_FLAGS_DROP         0x20UL
+       #define CFA_EM_FLOW_ALLOC_REQ_FLAGS_METER        0x40UL
+       __le32  enables;
+       #define CFA_EM_FLOW_ALLOC_REQ_ENABLES_L2_FILTER_ID          0x1UL
+       #define CFA_EM_FLOW_ALLOC_REQ_ENABLES_TUNNEL_TYPE           0x2UL
+       #define CFA_EM_FLOW_ALLOC_REQ_ENABLES_TUNNEL_ID             0x4UL
+       #define CFA_EM_FLOW_ALLOC_REQ_ENABLES_SRC_MACADDR           0x8UL
+       #define CFA_EM_FLOW_ALLOC_REQ_ENABLES_DST_MACADDR           0x10UL
+       #define CFA_EM_FLOW_ALLOC_REQ_ENABLES_OVLAN_VID             0x20UL
+       #define CFA_EM_FLOW_ALLOC_REQ_ENABLES_IVLAN_VID             0x40UL
+       #define CFA_EM_FLOW_ALLOC_REQ_ENABLES_ETHERTYPE             0x80UL
+       #define CFA_EM_FLOW_ALLOC_REQ_ENABLES_SRC_IPADDR            0x100UL
+       #define CFA_EM_FLOW_ALLOC_REQ_ENABLES_DST_IPADDR            0x200UL
+       #define CFA_EM_FLOW_ALLOC_REQ_ENABLES_IPADDR_TYPE           0x400UL
+       #define CFA_EM_FLOW_ALLOC_REQ_ENABLES_IP_PROTOCOL           0x800UL
+       #define CFA_EM_FLOW_ALLOC_REQ_ENABLES_SRC_PORT              0x1000UL
+       #define CFA_EM_FLOW_ALLOC_REQ_ENABLES_DST_PORT              0x2000UL
+       #define CFA_EM_FLOW_ALLOC_REQ_ENABLES_DST_ID                0x4000UL
+       #define CFA_EM_FLOW_ALLOC_REQ_ENABLES_MIRROR_VNIC_ID        0x8000UL
+       #define CFA_EM_FLOW_ALLOC_REQ_ENABLES_ENCAP_RECORD_ID       0x10000UL
+       #define CFA_EM_FLOW_ALLOC_REQ_ENABLES_METER_INSTANCE_ID     0x20000UL
+       __le64  l2_filter_id;
+       u8      tunnel_type;
+       #define CFA_EM_FLOW_ALLOC_REQ_TUNNEL_TYPE_NONTUNNEL 0x0UL
+       #define CFA_EM_FLOW_ALLOC_REQ_TUNNEL_TYPE_VXLAN     0x1UL
+       #define CFA_EM_FLOW_ALLOC_REQ_TUNNEL_TYPE_NVGRE     0x2UL
+       #define CFA_EM_FLOW_ALLOC_REQ_TUNNEL_TYPE_L2GRE     0x3UL
+       #define CFA_EM_FLOW_ALLOC_REQ_TUNNEL_TYPE_IPIP      0x4UL
+       #define CFA_EM_FLOW_ALLOC_REQ_TUNNEL_TYPE_GENEVE    0x5UL
+       #define CFA_EM_FLOW_ALLOC_REQ_TUNNEL_TYPE_MPLS      0x6UL
+       #define CFA_EM_FLOW_ALLOC_REQ_TUNNEL_TYPE_STT       0x7UL
+       #define CFA_EM_FLOW_ALLOC_REQ_TUNNEL_TYPE_IPGRE     0x8UL
+       #define CFA_EM_FLOW_ALLOC_REQ_TUNNEL_TYPE_VXLAN_V4  0x9UL
+       #define CFA_EM_FLOW_ALLOC_REQ_TUNNEL_TYPE_IPGRE_V1  0xaUL
+       #define CFA_EM_FLOW_ALLOC_REQ_TUNNEL_TYPE_L2_ETYPE  0xbUL
+       #define CFA_EM_FLOW_ALLOC_REQ_TUNNEL_TYPE_ANYTUNNEL 0xffUL
+       #define CFA_EM_FLOW_ALLOC_REQ_TUNNEL_TYPE_LAST     CFA_EM_FLOW_ALLOC_REQ_TUNNEL_TYPE_ANYTUNNEL
+       u8      unused_0[3];
+       __le32  tunnel_id;
+       u8      src_macaddr[6];
+       __le16  meter_instance_id;
+       #define CFA_EM_FLOW_ALLOC_REQ_METER_INSTANCE_ID_INVALID 0xffffUL
+       #define CFA_EM_FLOW_ALLOC_REQ_METER_INSTANCE_ID_LAST   CFA_EM_FLOW_ALLOC_REQ_METER_INSTANCE_ID_INVALID
+       u8      dst_macaddr[6];
+       __le16  ovlan_vid;
+       __le16  ivlan_vid;
+       __be16  ethertype;
+       u8      ip_addr_type;
+       #define CFA_EM_FLOW_ALLOC_REQ_IP_ADDR_TYPE_UNKNOWN 0x0UL
+       #define CFA_EM_FLOW_ALLOC_REQ_IP_ADDR_TYPE_IPV4    0x4UL
+       #define CFA_EM_FLOW_ALLOC_REQ_IP_ADDR_TYPE_IPV6    0x6UL
+       #define CFA_EM_FLOW_ALLOC_REQ_IP_ADDR_TYPE_LAST   CFA_EM_FLOW_ALLOC_REQ_IP_ADDR_TYPE_IPV6
+       u8      ip_protocol;
+       #define CFA_EM_FLOW_ALLOC_REQ_IP_PROTOCOL_UNKNOWN 0x0UL
+       #define CFA_EM_FLOW_ALLOC_REQ_IP_PROTOCOL_TCP     0x6UL
+       #define CFA_EM_FLOW_ALLOC_REQ_IP_PROTOCOL_UDP     0x11UL
+       #define CFA_EM_FLOW_ALLOC_REQ_IP_PROTOCOL_LAST   CFA_EM_FLOW_ALLOC_REQ_IP_PROTOCOL_UDP
+       u8      unused_1[2];
+       __be32  src_ipaddr[4];
+       __be32  dst_ipaddr[4];
+       __be16  src_port;
+       __be16  dst_port;
+       __le16  dst_id;
+       __le16  mirror_vnic_id;
+       __le32  encap_record_id;
+       u8      unused_2[4];
+};
+
+/* hwrm_cfa_em_flow_alloc_output (size:192b/24B) */
+struct hwrm_cfa_em_flow_alloc_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le64  em_filter_id;
+       __le32  flow_id;
+       u8      unused_0[3];
+       u8      valid;
+};
+
+/* hwrm_cfa_em_flow_free_input (size:192b/24B) */
+struct hwrm_cfa_em_flow_free_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le64  em_filter_id;
+};
+
+/* hwrm_cfa_em_flow_free_output (size:128b/16B) */
+struct hwrm_cfa_em_flow_free_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_cfa_em_flow_cfg_input (size:384b/48B) */
+struct hwrm_cfa_em_flow_cfg_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le32  enables;
+       #define CFA_EM_FLOW_CFG_REQ_ENABLES_NEW_DST_ID                0x1UL
+       #define CFA_EM_FLOW_CFG_REQ_ENABLES_NEW_MIRROR_VNIC_ID        0x2UL
+       #define CFA_EM_FLOW_CFG_REQ_ENABLES_NEW_METER_INSTANCE_ID     0x4UL
+       u8      unused_0[4];
+       __le64  em_filter_id;
+       __le32  new_dst_id;
+       __le32  new_mirror_vnic_id;
+       __le16  new_meter_instance_id;
+       #define CFA_EM_FLOW_CFG_REQ_NEW_METER_INSTANCE_ID_INVALID 0xffffUL
+       #define CFA_EM_FLOW_CFG_REQ_NEW_METER_INSTANCE_ID_LAST   CFA_EM_FLOW_CFG_REQ_NEW_METER_INSTANCE_ID_INVALID
+       u8      unused_1[6];
+};
+
+/* hwrm_cfa_em_flow_cfg_output (size:128b/16B) */
+struct hwrm_cfa_em_flow_cfg_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_cfa_meter_profile_alloc_input (size:320b/40B) */
+struct hwrm_cfa_meter_profile_alloc_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       u8      flags;
+       #define CFA_METER_PROFILE_ALLOC_REQ_FLAGS_PATH     0x1UL
+       #define CFA_METER_PROFILE_ALLOC_REQ_FLAGS_PATH_TX    0x0UL
+       #define CFA_METER_PROFILE_ALLOC_REQ_FLAGS_PATH_RX    0x1UL
+       #define CFA_METER_PROFILE_ALLOC_REQ_FLAGS_PATH_LAST CFA_METER_PROFILE_ALLOC_REQ_FLAGS_PATH_RX
+       u8      meter_type;
+       #define CFA_METER_PROFILE_ALLOC_REQ_METER_TYPE_RFC2697 0x0UL
+       #define CFA_METER_PROFILE_ALLOC_REQ_METER_TYPE_RFC2698 0x1UL
+       #define CFA_METER_PROFILE_ALLOC_REQ_METER_TYPE_RFC4115 0x2UL
+       #define CFA_METER_PROFILE_ALLOC_REQ_METER_TYPE_LAST   CFA_METER_PROFILE_ALLOC_REQ_METER_TYPE_RFC4115
+       __le16  reserved1;
+       __le32  reserved2;
+       __le32  commit_rate;
+       #define CFA_METER_PROFILE_ALLOC_REQ_COMMIT_RATE_BW_VALUE_MASK             0xfffffffUL
+       #define CFA_METER_PROFILE_ALLOC_REQ_COMMIT_RATE_BW_VALUE_SFT              0
+       #define CFA_METER_PROFILE_ALLOC_REQ_COMMIT_RATE_SCALE                     0x10000000UL
+       #define CFA_METER_PROFILE_ALLOC_REQ_COMMIT_RATE_SCALE_BITS                  (0x0UL << 28)
+       #define CFA_METER_PROFILE_ALLOC_REQ_COMMIT_RATE_SCALE_BYTES                 (0x1UL << 28)
+       #define CFA_METER_PROFILE_ALLOC_REQ_COMMIT_RATE_SCALE_LAST                 CFA_METER_PROFILE_ALLOC_REQ_COMMIT_RATE_SCALE_BYTES
+       #define CFA_METER_PROFILE_ALLOC_REQ_COMMIT_RATE_BW_VALUE_UNIT_MASK        0xe0000000UL
+       #define CFA_METER_PROFILE_ALLOC_REQ_COMMIT_RATE_BW_VALUE_UNIT_SFT         29
+       #define CFA_METER_PROFILE_ALLOC_REQ_COMMIT_RATE_BW_VALUE_UNIT_MEGA          (0x0UL << 29)
+       #define CFA_METER_PROFILE_ALLOC_REQ_COMMIT_RATE_BW_VALUE_UNIT_KILO          (0x2UL << 29)
+       #define CFA_METER_PROFILE_ALLOC_REQ_COMMIT_RATE_BW_VALUE_UNIT_BASE          (0x4UL << 29)
+       #define CFA_METER_PROFILE_ALLOC_REQ_COMMIT_RATE_BW_VALUE_UNIT_GIGA          (0x6UL << 29)
+       #define CFA_METER_PROFILE_ALLOC_REQ_COMMIT_RATE_BW_VALUE_UNIT_PERCENT1_100  (0x1UL << 29)
+       #define CFA_METER_PROFILE_ALLOC_REQ_COMMIT_RATE_BW_VALUE_UNIT_INVALID       (0x7UL << 29)
+       #define CFA_METER_PROFILE_ALLOC_REQ_COMMIT_RATE_BW_VALUE_UNIT_LAST         CFA_METER_PROFILE_ALLOC_REQ_COMMIT_RATE_BW_VALUE_UNIT_INVALID
+       __le32  commit_burst;
+       #define CFA_METER_PROFILE_ALLOC_REQ_COMMIT_BURST_BW_VALUE_MASK             0xfffffffUL
+       #define CFA_METER_PROFILE_ALLOC_REQ_COMMIT_BURST_BW_VALUE_SFT              0
+       #define CFA_METER_PROFILE_ALLOC_REQ_COMMIT_BURST_SCALE                     0x10000000UL
+       #define CFA_METER_PROFILE_ALLOC_REQ_COMMIT_BURST_SCALE_BITS                  (0x0UL << 28)
+       #define CFA_METER_PROFILE_ALLOC_REQ_COMMIT_BURST_SCALE_BYTES                 (0x1UL << 28)
+       #define CFA_METER_PROFILE_ALLOC_REQ_COMMIT_BURST_SCALE_LAST                 CFA_METER_PROFILE_ALLOC_REQ_COMMIT_BURST_SCALE_BYTES
+       #define CFA_METER_PROFILE_ALLOC_REQ_COMMIT_BURST_BW_VALUE_UNIT_MASK        0xe0000000UL
+       #define CFA_METER_PROFILE_ALLOC_REQ_COMMIT_BURST_BW_VALUE_UNIT_SFT         29
+       #define CFA_METER_PROFILE_ALLOC_REQ_COMMIT_BURST_BW_VALUE_UNIT_MEGA          (0x0UL << 29)
+       #define CFA_METER_PROFILE_ALLOC_REQ_COMMIT_BURST_BW_VALUE_UNIT_KILO          (0x2UL << 29)
+       #define CFA_METER_PROFILE_ALLOC_REQ_COMMIT_BURST_BW_VALUE_UNIT_BASE          (0x4UL << 29)
+       #define CFA_METER_PROFILE_ALLOC_REQ_COMMIT_BURST_BW_VALUE_UNIT_GIGA          (0x6UL << 29)
+       #define CFA_METER_PROFILE_ALLOC_REQ_COMMIT_BURST_BW_VALUE_UNIT_PERCENT1_100  (0x1UL << 29)
+       #define CFA_METER_PROFILE_ALLOC_REQ_COMMIT_BURST_BW_VALUE_UNIT_INVALID       (0x7UL << 29)
+       #define CFA_METER_PROFILE_ALLOC_REQ_COMMIT_BURST_BW_VALUE_UNIT_LAST         CFA_METER_PROFILE_ALLOC_REQ_COMMIT_BURST_BW_VALUE_UNIT_INVALID
+       __le32  excess_peak_rate;
+       #define CFA_METER_PROFILE_ALLOC_REQ_EXCESS_PEAK_RATE_BW_VALUE_MASK             0xfffffffUL
+       #define CFA_METER_PROFILE_ALLOC_REQ_EXCESS_PEAK_RATE_BW_VALUE_SFT              0
+       #define CFA_METER_PROFILE_ALLOC_REQ_EXCESS_PEAK_RATE_SCALE                     0x10000000UL
+       #define CFA_METER_PROFILE_ALLOC_REQ_EXCESS_PEAK_RATE_SCALE_BITS                  (0x0UL << 28)
+       #define CFA_METER_PROFILE_ALLOC_REQ_EXCESS_PEAK_RATE_SCALE_BYTES                 (0x1UL << 28)
+       #define CFA_METER_PROFILE_ALLOC_REQ_EXCESS_PEAK_RATE_SCALE_LAST                 CFA_METER_PROFILE_ALLOC_REQ_EXCESS_PEAK_RATE_SCALE_BYTES
+       #define CFA_METER_PROFILE_ALLOC_REQ_EXCESS_PEAK_RATE_BW_VALUE_UNIT_MASK        0xe0000000UL
+       #define CFA_METER_PROFILE_ALLOC_REQ_EXCESS_PEAK_RATE_BW_VALUE_UNIT_SFT         29
+       #define CFA_METER_PROFILE_ALLOC_REQ_EXCESS_PEAK_RATE_BW_VALUE_UNIT_MEGA          (0x0UL << 29)
+       #define CFA_METER_PROFILE_ALLOC_REQ_EXCESS_PEAK_RATE_BW_VALUE_UNIT_KILO          (0x2UL << 29)
+       #define CFA_METER_PROFILE_ALLOC_REQ_EXCESS_PEAK_RATE_BW_VALUE_UNIT_BASE          (0x4UL << 29)
+       #define CFA_METER_PROFILE_ALLOC_REQ_EXCESS_PEAK_RATE_BW_VALUE_UNIT_GIGA          (0x6UL << 29)
+       #define CFA_METER_PROFILE_ALLOC_REQ_EXCESS_PEAK_RATE_BW_VALUE_UNIT_PERCENT1_100  (0x1UL << 29)
+       #define CFA_METER_PROFILE_ALLOC_REQ_EXCESS_PEAK_RATE_BW_VALUE_UNIT_INVALID       (0x7UL << 29)
+       #define CFA_METER_PROFILE_ALLOC_REQ_EXCESS_PEAK_RATE_BW_VALUE_UNIT_LAST         CFA_METER_PROFILE_ALLOC_REQ_EXCESS_PEAK_RATE_BW_VALUE_UNIT_INVALID
+       __le32  excess_peak_burst;
+       #define CFA_METER_PROFILE_ALLOC_REQ_EXCESS_PEAK_BURST_BW_VALUE_MASK             0xfffffffUL
+       #define CFA_METER_PROFILE_ALLOC_REQ_EXCESS_PEAK_BURST_BW_VALUE_SFT              0
+       #define CFA_METER_PROFILE_ALLOC_REQ_EXCESS_PEAK_BURST_SCALE                     0x10000000UL
+       #define CFA_METER_PROFILE_ALLOC_REQ_EXCESS_PEAK_BURST_SCALE_BITS                  (0x0UL << 28)
+       #define CFA_METER_PROFILE_ALLOC_REQ_EXCESS_PEAK_BURST_SCALE_BYTES                 (0x1UL << 28)
+       #define CFA_METER_PROFILE_ALLOC_REQ_EXCESS_PEAK_BURST_SCALE_LAST                 CFA_METER_PROFILE_ALLOC_REQ_EXCESS_PEAK_BURST_SCALE_BYTES
+       #define CFA_METER_PROFILE_ALLOC_REQ_EXCESS_PEAK_BURST_BW_VALUE_UNIT_MASK        0xe0000000UL
+       #define CFA_METER_PROFILE_ALLOC_REQ_EXCESS_PEAK_BURST_BW_VALUE_UNIT_SFT         29
+       #define CFA_METER_PROFILE_ALLOC_REQ_EXCESS_PEAK_BURST_BW_VALUE_UNIT_MEGA          (0x0UL << 29)
+       #define CFA_METER_PROFILE_ALLOC_REQ_EXCESS_PEAK_BURST_BW_VALUE_UNIT_KILO          (0x2UL << 29)
+       #define CFA_METER_PROFILE_ALLOC_REQ_EXCESS_PEAK_BURST_BW_VALUE_UNIT_BASE          (0x4UL << 29)
+       #define CFA_METER_PROFILE_ALLOC_REQ_EXCESS_PEAK_BURST_BW_VALUE_UNIT_GIGA          (0x6UL << 29)
+       #define CFA_METER_PROFILE_ALLOC_REQ_EXCESS_PEAK_BURST_BW_VALUE_UNIT_PERCENT1_100  (0x1UL << 29)
+       #define CFA_METER_PROFILE_ALLOC_REQ_EXCESS_PEAK_BURST_BW_VALUE_UNIT_INVALID       (0x7UL << 29)
+       #define CFA_METER_PROFILE_ALLOC_REQ_EXCESS_PEAK_BURST_BW_VALUE_UNIT_LAST         CFA_METER_PROFILE_ALLOC_REQ_EXCESS_PEAK_BURST_BW_VALUE_UNIT_INVALID
+};
+
+/* hwrm_cfa_meter_profile_alloc_output (size:128b/16B) */
+struct hwrm_cfa_meter_profile_alloc_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le16  meter_profile_id;
+       #define CFA_METER_PROFILE_ALLOC_RESP_METER_PROFILE_ID_INVALID 0xffffUL
+       #define CFA_METER_PROFILE_ALLOC_RESP_METER_PROFILE_ID_LAST   CFA_METER_PROFILE_ALLOC_RESP_METER_PROFILE_ID_INVALID
+       u8      unused_0[5];
+       u8      valid;
+};
+
+/* hwrm_cfa_meter_profile_free_input (size:192b/24B) */
+struct hwrm_cfa_meter_profile_free_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       u8      flags;
+       #define CFA_METER_PROFILE_FREE_REQ_FLAGS_PATH     0x1UL
+       #define CFA_METER_PROFILE_FREE_REQ_FLAGS_PATH_TX    0x0UL
+       #define CFA_METER_PROFILE_FREE_REQ_FLAGS_PATH_RX    0x1UL
+       #define CFA_METER_PROFILE_FREE_REQ_FLAGS_PATH_LAST CFA_METER_PROFILE_FREE_REQ_FLAGS_PATH_RX
+       u8      unused_0;
+       __le16  meter_profile_id;
+       #define CFA_METER_PROFILE_FREE_REQ_METER_PROFILE_ID_INVALID 0xffffUL
+       #define CFA_METER_PROFILE_FREE_REQ_METER_PROFILE_ID_LAST   CFA_METER_PROFILE_FREE_REQ_METER_PROFILE_ID_INVALID
+       u8      unused_1[4];
+};
+
+/* hwrm_cfa_meter_profile_free_output (size:128b/16B) */
+struct hwrm_cfa_meter_profile_free_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_cfa_meter_profile_cfg_input (size:320b/40B) */
+struct hwrm_cfa_meter_profile_cfg_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       u8      flags;
+       #define CFA_METER_PROFILE_CFG_REQ_FLAGS_PATH     0x1UL
+       #define CFA_METER_PROFILE_CFG_REQ_FLAGS_PATH_TX    0x0UL
+       #define CFA_METER_PROFILE_CFG_REQ_FLAGS_PATH_RX    0x1UL
+       #define CFA_METER_PROFILE_CFG_REQ_FLAGS_PATH_LAST CFA_METER_PROFILE_CFG_REQ_FLAGS_PATH_RX
+       u8      meter_type;
+       #define CFA_METER_PROFILE_CFG_REQ_METER_TYPE_RFC2697 0x0UL
+       #define CFA_METER_PROFILE_CFG_REQ_METER_TYPE_RFC2698 0x1UL
+       #define CFA_METER_PROFILE_CFG_REQ_METER_TYPE_RFC4115 0x2UL
+       #define CFA_METER_PROFILE_CFG_REQ_METER_TYPE_LAST   CFA_METER_PROFILE_CFG_REQ_METER_TYPE_RFC4115
+       __le16  meter_profile_id;
+       #define CFA_METER_PROFILE_CFG_REQ_METER_PROFILE_ID_INVALID 0xffffUL
+       #define CFA_METER_PROFILE_CFG_REQ_METER_PROFILE_ID_LAST   CFA_METER_PROFILE_CFG_REQ_METER_PROFILE_ID_INVALID
+       __le32  reserved;
+       __le32  commit_rate;
+       #define CFA_METER_PROFILE_CFG_REQ_COMMIT_RATE_BW_VALUE_MASK             0xfffffffUL
+       #define CFA_METER_PROFILE_CFG_REQ_COMMIT_RATE_BW_VALUE_SFT              0
+       #define CFA_METER_PROFILE_CFG_REQ_COMMIT_RATE_SCALE                     0x10000000UL
+       #define CFA_METER_PROFILE_CFG_REQ_COMMIT_RATE_SCALE_BITS                  (0x0UL << 28)
+       #define CFA_METER_PROFILE_CFG_REQ_COMMIT_RATE_SCALE_BYTES                 (0x1UL << 28)
+       #define CFA_METER_PROFILE_CFG_REQ_COMMIT_RATE_SCALE_LAST                 CFA_METER_PROFILE_CFG_REQ_COMMIT_RATE_SCALE_BYTES
+       #define CFA_METER_PROFILE_CFG_REQ_COMMIT_RATE_BW_VALUE_UNIT_MASK        0xe0000000UL
+       #define CFA_METER_PROFILE_CFG_REQ_COMMIT_RATE_BW_VALUE_UNIT_SFT         29
+       #define CFA_METER_PROFILE_CFG_REQ_COMMIT_RATE_BW_VALUE_UNIT_MEGA          (0x0UL << 29)
+       #define CFA_METER_PROFILE_CFG_REQ_COMMIT_RATE_BW_VALUE_UNIT_KILO          (0x2UL << 29)
+       #define CFA_METER_PROFILE_CFG_REQ_COMMIT_RATE_BW_VALUE_UNIT_BASE          (0x4UL << 29)
+       #define CFA_METER_PROFILE_CFG_REQ_COMMIT_RATE_BW_VALUE_UNIT_GIGA          (0x6UL << 29)
+       #define CFA_METER_PROFILE_CFG_REQ_COMMIT_RATE_BW_VALUE_UNIT_PERCENT1_100  (0x1UL << 29)
+       #define CFA_METER_PROFILE_CFG_REQ_COMMIT_RATE_BW_VALUE_UNIT_INVALID       (0x7UL << 29)
+       #define CFA_METER_PROFILE_CFG_REQ_COMMIT_RATE_BW_VALUE_UNIT_LAST         CFA_METER_PROFILE_CFG_REQ_COMMIT_RATE_BW_VALUE_UNIT_INVALID
+       __le32  commit_burst;
+       #define CFA_METER_PROFILE_CFG_REQ_COMMIT_BURST_BW_VALUE_MASK             0xfffffffUL
+       #define CFA_METER_PROFILE_CFG_REQ_COMMIT_BURST_BW_VALUE_SFT              0
+       #define CFA_METER_PROFILE_CFG_REQ_COMMIT_BURST_SCALE                     0x10000000UL
+       #define CFA_METER_PROFILE_CFG_REQ_COMMIT_BURST_SCALE_BITS                  (0x0UL << 28)
+       #define CFA_METER_PROFILE_CFG_REQ_COMMIT_BURST_SCALE_BYTES                 (0x1UL << 28)
+       #define CFA_METER_PROFILE_CFG_REQ_COMMIT_BURST_SCALE_LAST                 CFA_METER_PROFILE_CFG_REQ_COMMIT_BURST_SCALE_BYTES
+       #define CFA_METER_PROFILE_CFG_REQ_COMMIT_BURST_BW_VALUE_UNIT_MASK        0xe0000000UL
+       #define CFA_METER_PROFILE_CFG_REQ_COMMIT_BURST_BW_VALUE_UNIT_SFT         29
+       #define CFA_METER_PROFILE_CFG_REQ_COMMIT_BURST_BW_VALUE_UNIT_MEGA          (0x0UL << 29)
+       #define CFA_METER_PROFILE_CFG_REQ_COMMIT_BURST_BW_VALUE_UNIT_KILO          (0x2UL << 29)
+       #define CFA_METER_PROFILE_CFG_REQ_COMMIT_BURST_BW_VALUE_UNIT_BASE          (0x4UL << 29)
+       #define CFA_METER_PROFILE_CFG_REQ_COMMIT_BURST_BW_VALUE_UNIT_GIGA          (0x6UL << 29)
+       #define CFA_METER_PROFILE_CFG_REQ_COMMIT_BURST_BW_VALUE_UNIT_PERCENT1_100  (0x1UL << 29)
+       #define CFA_METER_PROFILE_CFG_REQ_COMMIT_BURST_BW_VALUE_UNIT_INVALID       (0x7UL << 29)
+       #define CFA_METER_PROFILE_CFG_REQ_COMMIT_BURST_BW_VALUE_UNIT_LAST         CFA_METER_PROFILE_CFG_REQ_COMMIT_BURST_BW_VALUE_UNIT_INVALID
+       __le32  excess_peak_rate;
+       #define CFA_METER_PROFILE_CFG_REQ_EXCESS_PEAK_RATE_BW_VALUE_MASK             0xfffffffUL
+       #define CFA_METER_PROFILE_CFG_REQ_EXCESS_PEAK_RATE_BW_VALUE_SFT              0
+       #define CFA_METER_PROFILE_CFG_REQ_EXCESS_PEAK_RATE_SCALE                     0x10000000UL
+       #define CFA_METER_PROFILE_CFG_REQ_EXCESS_PEAK_RATE_SCALE_BITS                  (0x0UL << 28)
+       #define CFA_METER_PROFILE_CFG_REQ_EXCESS_PEAK_RATE_SCALE_BYTES                 (0x1UL << 28)
+       #define CFA_METER_PROFILE_CFG_REQ_EXCESS_PEAK_RATE_SCALE_LAST                 CFA_METER_PROFILE_CFG_REQ_EXCESS_PEAK_RATE_SCALE_BYTES
+       #define CFA_METER_PROFILE_CFG_REQ_EXCESS_PEAK_RATE_BW_VALUE_UNIT_MASK        0xe0000000UL
+       #define CFA_METER_PROFILE_CFG_REQ_EXCESS_PEAK_RATE_BW_VALUE_UNIT_SFT         29
+       #define CFA_METER_PROFILE_CFG_REQ_EXCESS_PEAK_RATE_BW_VALUE_UNIT_MEGA          (0x0UL << 29)
+       #define CFA_METER_PROFILE_CFG_REQ_EXCESS_PEAK_RATE_BW_VALUE_UNIT_KILO          (0x2UL << 29)
+       #define CFA_METER_PROFILE_CFG_REQ_EXCESS_PEAK_RATE_BW_VALUE_UNIT_BASE          (0x4UL << 29)
+       #define CFA_METER_PROFILE_CFG_REQ_EXCESS_PEAK_RATE_BW_VALUE_UNIT_GIGA          (0x6UL << 29)
+       #define CFA_METER_PROFILE_CFG_REQ_EXCESS_PEAK_RATE_BW_VALUE_UNIT_PERCENT1_100  (0x1UL << 29)
+       #define CFA_METER_PROFILE_CFG_REQ_EXCESS_PEAK_RATE_BW_VALUE_UNIT_INVALID       (0x7UL << 29)
+       #define CFA_METER_PROFILE_CFG_REQ_EXCESS_PEAK_RATE_BW_VALUE_UNIT_LAST         CFA_METER_PROFILE_CFG_REQ_EXCESS_PEAK_RATE_BW_VALUE_UNIT_INVALID
+       __le32  excess_peak_burst;
+       #define CFA_METER_PROFILE_CFG_REQ_EXCESS_PEAK_BURST_BW_VALUE_MASK             0xfffffffUL
+       #define CFA_METER_PROFILE_CFG_REQ_EXCESS_PEAK_BURST_BW_VALUE_SFT              0
+       #define CFA_METER_PROFILE_CFG_REQ_EXCESS_PEAK_BURST_SCALE                     0x10000000UL
+       #define CFA_METER_PROFILE_CFG_REQ_EXCESS_PEAK_BURST_SCALE_BITS                  (0x0UL << 28)
+       #define CFA_METER_PROFILE_CFG_REQ_EXCESS_PEAK_BURST_SCALE_BYTES                 (0x1UL << 28)
+       #define CFA_METER_PROFILE_CFG_REQ_EXCESS_PEAK_BURST_SCALE_LAST                 CFA_METER_PROFILE_CFG_REQ_EXCESS_PEAK_BURST_SCALE_BYTES
+       #define CFA_METER_PROFILE_CFG_REQ_EXCESS_PEAK_BURST_BW_VALUE_UNIT_MASK        0xe0000000UL
+       #define CFA_METER_PROFILE_CFG_REQ_EXCESS_PEAK_BURST_BW_VALUE_UNIT_SFT         29
+       #define CFA_METER_PROFILE_CFG_REQ_EXCESS_PEAK_BURST_BW_VALUE_UNIT_MEGA          (0x0UL << 29)
+       #define CFA_METER_PROFILE_CFG_REQ_EXCESS_PEAK_BURST_BW_VALUE_UNIT_KILO          (0x2UL << 29)
+       #define CFA_METER_PROFILE_CFG_REQ_EXCESS_PEAK_BURST_BW_VALUE_UNIT_BASE          (0x4UL << 29)
+       #define CFA_METER_PROFILE_CFG_REQ_EXCESS_PEAK_BURST_BW_VALUE_UNIT_GIGA          (0x6UL << 29)
+       #define CFA_METER_PROFILE_CFG_REQ_EXCESS_PEAK_BURST_BW_VALUE_UNIT_PERCENT1_100  (0x1UL << 29)
+       #define CFA_METER_PROFILE_CFG_REQ_EXCESS_PEAK_BURST_BW_VALUE_UNIT_INVALID       (0x7UL << 29)
+       #define CFA_METER_PROFILE_CFG_REQ_EXCESS_PEAK_BURST_BW_VALUE_UNIT_LAST         CFA_METER_PROFILE_CFG_REQ_EXCESS_PEAK_BURST_BW_VALUE_UNIT_INVALID
+};
+
+/* hwrm_cfa_meter_profile_cfg_output (size:128b/16B) */
+struct hwrm_cfa_meter_profile_cfg_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_cfa_meter_instance_alloc_input (size:192b/24B) */
+struct hwrm_cfa_meter_instance_alloc_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       u8      flags;
+       #define CFA_METER_INSTANCE_ALLOC_REQ_FLAGS_PATH     0x1UL
+       #define CFA_METER_INSTANCE_ALLOC_REQ_FLAGS_PATH_TX    0x0UL
+       #define CFA_METER_INSTANCE_ALLOC_REQ_FLAGS_PATH_RX    0x1UL
+       #define CFA_METER_INSTANCE_ALLOC_REQ_FLAGS_PATH_LAST CFA_METER_INSTANCE_ALLOC_REQ_FLAGS_PATH_RX
+       u8      unused_0;
+       __le16  meter_profile_id;
+       #define CFA_METER_INSTANCE_ALLOC_REQ_METER_PROFILE_ID_INVALID 0xffffUL
+       #define CFA_METER_INSTANCE_ALLOC_REQ_METER_PROFILE_ID_LAST   CFA_METER_INSTANCE_ALLOC_REQ_METER_PROFILE_ID_INVALID
+       u8      unused_1[4];
+};
+
+/* hwrm_cfa_meter_instance_alloc_output (size:128b/16B) */
+struct hwrm_cfa_meter_instance_alloc_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le16  meter_instance_id;
+       #define CFA_METER_INSTANCE_ALLOC_RESP_METER_INSTANCE_ID_INVALID 0xffffUL
+       #define CFA_METER_INSTANCE_ALLOC_RESP_METER_INSTANCE_ID_LAST   CFA_METER_INSTANCE_ALLOC_RESP_METER_INSTANCE_ID_INVALID
+       u8      unused_0[5];
+       u8      valid;
+};
+
+/* hwrm_cfa_meter_instance_free_input (size:192b/24B) */
+struct hwrm_cfa_meter_instance_free_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       u8      flags;
+       #define CFA_METER_INSTANCE_FREE_REQ_FLAGS_PATH     0x1UL
+       #define CFA_METER_INSTANCE_FREE_REQ_FLAGS_PATH_TX    0x0UL
+       #define CFA_METER_INSTANCE_FREE_REQ_FLAGS_PATH_RX    0x1UL
+       #define CFA_METER_INSTANCE_FREE_REQ_FLAGS_PATH_LAST CFA_METER_INSTANCE_FREE_REQ_FLAGS_PATH_RX
+       u8      unused_0;
+       __le16  meter_instance_id;
+       #define CFA_METER_INSTANCE_FREE_REQ_METER_INSTANCE_ID_INVALID 0xffffUL
+       #define CFA_METER_INSTANCE_FREE_REQ_METER_INSTANCE_ID_LAST   CFA_METER_INSTANCE_FREE_REQ_METER_INSTANCE_ID_INVALID
+       u8      unused_1[4];
+};
+
+/* hwrm_cfa_meter_instance_free_output (size:128b/16B) */
+struct hwrm_cfa_meter_instance_free_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_cfa_decap_filter_alloc_input (size:832b/104B) */
+struct hwrm_cfa_decap_filter_alloc_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le32  flags;
+       #define CFA_DECAP_FILTER_ALLOC_REQ_FLAGS_OVS_TUNNEL     0x1UL
+       __le32  enables;
+       #define CFA_DECAP_FILTER_ALLOC_REQ_ENABLES_TUNNEL_TYPE        0x1UL
+       #define CFA_DECAP_FILTER_ALLOC_REQ_ENABLES_TUNNEL_ID          0x2UL
+       #define CFA_DECAP_FILTER_ALLOC_REQ_ENABLES_SRC_MACADDR        0x4UL
+       #define CFA_DECAP_FILTER_ALLOC_REQ_ENABLES_DST_MACADDR        0x8UL
+       #define CFA_DECAP_FILTER_ALLOC_REQ_ENABLES_OVLAN_VID          0x10UL
+       #define CFA_DECAP_FILTER_ALLOC_REQ_ENABLES_IVLAN_VID          0x20UL
+       #define CFA_DECAP_FILTER_ALLOC_REQ_ENABLES_T_OVLAN_VID        0x40UL
+       #define CFA_DECAP_FILTER_ALLOC_REQ_ENABLES_T_IVLAN_VID        0x80UL
+       #define CFA_DECAP_FILTER_ALLOC_REQ_ENABLES_ETHERTYPE          0x100UL
+       #define CFA_DECAP_FILTER_ALLOC_REQ_ENABLES_SRC_IPADDR         0x200UL
+       #define CFA_DECAP_FILTER_ALLOC_REQ_ENABLES_DST_IPADDR         0x400UL
+       #define CFA_DECAP_FILTER_ALLOC_REQ_ENABLES_IPADDR_TYPE        0x800UL
+       #define CFA_DECAP_FILTER_ALLOC_REQ_ENABLES_IP_PROTOCOL        0x1000UL
+       #define CFA_DECAP_FILTER_ALLOC_REQ_ENABLES_SRC_PORT           0x2000UL
+       #define CFA_DECAP_FILTER_ALLOC_REQ_ENABLES_DST_PORT           0x4000UL
+       #define CFA_DECAP_FILTER_ALLOC_REQ_ENABLES_DST_ID             0x8000UL
+       #define CFA_DECAP_FILTER_ALLOC_REQ_ENABLES_MIRROR_VNIC_ID     0x10000UL
+       __be32  tunnel_id;
+       u8      tunnel_type;
+       #define CFA_DECAP_FILTER_ALLOC_REQ_TUNNEL_TYPE_NONTUNNEL 0x0UL
+       #define CFA_DECAP_FILTER_ALLOC_REQ_TUNNEL_TYPE_VXLAN     0x1UL
+       #define CFA_DECAP_FILTER_ALLOC_REQ_TUNNEL_TYPE_NVGRE     0x2UL
+       #define CFA_DECAP_FILTER_ALLOC_REQ_TUNNEL_TYPE_L2GRE     0x3UL
+       #define CFA_DECAP_FILTER_ALLOC_REQ_TUNNEL_TYPE_IPIP      0x4UL
+       #define CFA_DECAP_FILTER_ALLOC_REQ_TUNNEL_TYPE_GENEVE    0x5UL
+       #define CFA_DECAP_FILTER_ALLOC_REQ_TUNNEL_TYPE_MPLS      0x6UL
+       #define CFA_DECAP_FILTER_ALLOC_REQ_TUNNEL_TYPE_STT       0x7UL
+       #define CFA_DECAP_FILTER_ALLOC_REQ_TUNNEL_TYPE_IPGRE     0x8UL
+       #define CFA_DECAP_FILTER_ALLOC_REQ_TUNNEL_TYPE_VXLAN_V4  0x9UL
+       #define CFA_DECAP_FILTER_ALLOC_REQ_TUNNEL_TYPE_IPGRE_V1  0xaUL
+       #define CFA_DECAP_FILTER_ALLOC_REQ_TUNNEL_TYPE_L2_ETYPE  0xbUL
+       #define CFA_DECAP_FILTER_ALLOC_REQ_TUNNEL_TYPE_ANYTUNNEL 0xffUL
+       #define CFA_DECAP_FILTER_ALLOC_REQ_TUNNEL_TYPE_LAST     CFA_DECAP_FILTER_ALLOC_REQ_TUNNEL_TYPE_ANYTUNNEL
+       u8      unused_0;
+       __le16  unused_1;
+       u8      src_macaddr[6];
+       u8      unused_2[2];
+       u8      dst_macaddr[6];
+       __be16  ovlan_vid;
+       __be16  ivlan_vid;
+       __be16  t_ovlan_vid;
+       __be16  t_ivlan_vid;
+       __be16  ethertype;
+       u8      ip_addr_type;
+       #define CFA_DECAP_FILTER_ALLOC_REQ_IP_ADDR_TYPE_UNKNOWN 0x0UL
+       #define CFA_DECAP_FILTER_ALLOC_REQ_IP_ADDR_TYPE_IPV4    0x4UL
+       #define CFA_DECAP_FILTER_ALLOC_REQ_IP_ADDR_TYPE_IPV6    0x6UL
+       #define CFA_DECAP_FILTER_ALLOC_REQ_IP_ADDR_TYPE_LAST   CFA_DECAP_FILTER_ALLOC_REQ_IP_ADDR_TYPE_IPV6
+       u8      ip_protocol;
+       #define CFA_DECAP_FILTER_ALLOC_REQ_IP_PROTOCOL_UNKNOWN 0x0UL
+       #define CFA_DECAP_FILTER_ALLOC_REQ_IP_PROTOCOL_TCP     0x6UL
+       #define CFA_DECAP_FILTER_ALLOC_REQ_IP_PROTOCOL_UDP     0x11UL
+       #define CFA_DECAP_FILTER_ALLOC_REQ_IP_PROTOCOL_LAST   CFA_DECAP_FILTER_ALLOC_REQ_IP_PROTOCOL_UDP
+       __le16  unused_3;
+       __le32  unused_4;
+       __be32  src_ipaddr[4];
+       __be32  dst_ipaddr[4];
+       __be16  src_port;
+       __be16  dst_port;
+       __le16  dst_id;
+       __le16  l2_ctxt_ref_id;
+};
+
+/* hwrm_cfa_decap_filter_alloc_output (size:128b/16B) */
+struct hwrm_cfa_decap_filter_alloc_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le32  decap_filter_id;
+       u8      unused_0[3];
+       u8      valid;
+};
+
+/* hwrm_cfa_decap_filter_free_input (size:192b/24B) */
+struct hwrm_cfa_decap_filter_free_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le32  decap_filter_id;
+       u8      unused_0[4];
+};
+
+/* hwrm_cfa_decap_filter_free_output (size:128b/16B) */
+struct hwrm_cfa_decap_filter_free_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_cfa_flow_alloc_input (size:1024b/128B) */
+struct hwrm_cfa_flow_alloc_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le16  flags;
+       #define CFA_FLOW_ALLOC_REQ_FLAGS_TUNNEL                 0x1UL
+       #define CFA_FLOW_ALLOC_REQ_FLAGS_NUM_VLAN_MASK          0x6UL
+       #define CFA_FLOW_ALLOC_REQ_FLAGS_NUM_VLAN_SFT           1
+       #define CFA_FLOW_ALLOC_REQ_FLAGS_NUM_VLAN_NONE            (0x0UL << 1)
+       #define CFA_FLOW_ALLOC_REQ_FLAGS_NUM_VLAN_ONE             (0x1UL << 1)
+       #define CFA_FLOW_ALLOC_REQ_FLAGS_NUM_VLAN_TWO             (0x2UL << 1)
+       #define CFA_FLOW_ALLOC_REQ_FLAGS_NUM_VLAN_LAST           CFA_FLOW_ALLOC_REQ_FLAGS_NUM_VLAN_TWO
+       #define CFA_FLOW_ALLOC_REQ_FLAGS_FLOWTYPE_MASK          0x38UL
+       #define CFA_FLOW_ALLOC_REQ_FLAGS_FLOWTYPE_SFT           3
+       #define CFA_FLOW_ALLOC_REQ_FLAGS_FLOWTYPE_L2              (0x0UL << 3)
+       #define CFA_FLOW_ALLOC_REQ_FLAGS_FLOWTYPE_IPV4            (0x1UL << 3)
+       #define CFA_FLOW_ALLOC_REQ_FLAGS_FLOWTYPE_IPV6            (0x2UL << 3)
+       #define CFA_FLOW_ALLOC_REQ_FLAGS_FLOWTYPE_LAST           CFA_FLOW_ALLOC_REQ_FLAGS_FLOWTYPE_IPV6
+       #define CFA_FLOW_ALLOC_REQ_FLAGS_PATH_TX                0x40UL
+       #define CFA_FLOW_ALLOC_REQ_FLAGS_PATH_RX                0x80UL
+       #define CFA_FLOW_ALLOC_REQ_FLAGS_MATCH_VXLAN_IP_VNI     0x100UL
+       __le16  src_fid;
+       __le32  tunnel_handle;
+       __le16  action_flags;
+       #define CFA_FLOW_ALLOC_REQ_ACTION_FLAGS_FWD                    0x1UL
+       #define CFA_FLOW_ALLOC_REQ_ACTION_FLAGS_RECYCLE                0x2UL
+       #define CFA_FLOW_ALLOC_REQ_ACTION_FLAGS_DROP                   0x4UL
+       #define CFA_FLOW_ALLOC_REQ_ACTION_FLAGS_METER                  0x8UL
+       #define CFA_FLOW_ALLOC_REQ_ACTION_FLAGS_TUNNEL                 0x10UL
+       #define CFA_FLOW_ALLOC_REQ_ACTION_FLAGS_NAT_SRC                0x20UL
+       #define CFA_FLOW_ALLOC_REQ_ACTION_FLAGS_NAT_DEST               0x40UL
+       #define CFA_FLOW_ALLOC_REQ_ACTION_FLAGS_NAT_IPV4_ADDRESS       0x80UL
+       #define CFA_FLOW_ALLOC_REQ_ACTION_FLAGS_L2_HEADER_REWRITE      0x100UL
+       #define CFA_FLOW_ALLOC_REQ_ACTION_FLAGS_TTL_DECREMENT          0x200UL
+       #define CFA_FLOW_ALLOC_REQ_ACTION_FLAGS_TUNNEL_IP              0x400UL
+       #define CFA_FLOW_ALLOC_REQ_ACTION_FLAGS_FLOW_AGING_ENABLED     0x800UL
+       __le16  dst_fid;
+       __be16  l2_rewrite_vlan_tpid;
+       __be16  l2_rewrite_vlan_tci;
+       __le16  act_meter_id;
+       __le16  ref_flow_handle;
+       __be16  ethertype;
+       __be16  outer_vlan_tci;
+       __be16  dmac[3];
+       __be16  inner_vlan_tci;
+       __be16  smac[3];
+       u8      ip_dst_mask_len;
+       u8      ip_src_mask_len;
+       __be32  ip_dst[4];
+       __be32  ip_src[4];
+       __be16  l4_src_port;
+       __be16  l4_src_port_mask;
+       __be16  l4_dst_port;
+       __be16  l4_dst_port_mask;
+       __be32  nat_ip_address[4];
+       __be16  l2_rewrite_dmac[3];
+       __be16  nat_port;
+       __be16  l2_rewrite_smac[3];
+       u8      ip_proto;
+       u8      tunnel_type;
+       #define CFA_FLOW_ALLOC_REQ_TUNNEL_TYPE_NONTUNNEL 0x0UL
+       #define CFA_FLOW_ALLOC_REQ_TUNNEL_TYPE_VXLAN     0x1UL
+       #define CFA_FLOW_ALLOC_REQ_TUNNEL_TYPE_NVGRE     0x2UL
+       #define CFA_FLOW_ALLOC_REQ_TUNNEL_TYPE_L2GRE     0x3UL
+       #define CFA_FLOW_ALLOC_REQ_TUNNEL_TYPE_IPIP      0x4UL
+       #define CFA_FLOW_ALLOC_REQ_TUNNEL_TYPE_GENEVE    0x5UL
+       #define CFA_FLOW_ALLOC_REQ_TUNNEL_TYPE_MPLS      0x6UL
+       #define CFA_FLOW_ALLOC_REQ_TUNNEL_TYPE_STT       0x7UL
+       #define CFA_FLOW_ALLOC_REQ_TUNNEL_TYPE_IPGRE     0x8UL
+       #define CFA_FLOW_ALLOC_REQ_TUNNEL_TYPE_VXLAN_V4  0x9UL
+       #define CFA_FLOW_ALLOC_REQ_TUNNEL_TYPE_IPGRE_V1  0xaUL
+       #define CFA_FLOW_ALLOC_REQ_TUNNEL_TYPE_L2_ETYPE  0xbUL
+       #define CFA_FLOW_ALLOC_REQ_TUNNEL_TYPE_ANYTUNNEL 0xffUL
+       #define CFA_FLOW_ALLOC_REQ_TUNNEL_TYPE_LAST     CFA_FLOW_ALLOC_REQ_TUNNEL_TYPE_ANYTUNNEL
+};
+
+/* hwrm_cfa_flow_alloc_output (size:256b/32B) */
+struct hwrm_cfa_flow_alloc_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le16  flow_handle;
+       u8      unused_0[2];
+       __le32  flow_id;
+       __le64  ext_flow_handle;
+       u8      unused_1[7];
+       u8      valid;
+};
+
+/* hwrm_cfa_flow_free_input (size:256b/32B) */
+struct hwrm_cfa_flow_free_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le16  flow_handle;
+       u8      unused_0[6];
+       __le64  ext_flow_handle;
+};
+
+/* hwrm_cfa_flow_free_output (size:256b/32B) */
+struct hwrm_cfa_flow_free_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le64  packet;
+       __le64  byte;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_cfa_flow_info_input (size:256b/32B) */
+struct hwrm_cfa_flow_info_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le16  flow_handle;
+       #define CFA_FLOW_INFO_REQ_FLOW_HANDLE_MAX_MASK       0xfffUL
+       #define CFA_FLOW_INFO_REQ_FLOW_HANDLE_MAX_SFT        0
+       #define CFA_FLOW_INFO_REQ_FLOW_HANDLE_CNP_CNT        0x1000UL
+       #define CFA_FLOW_INFO_REQ_FLOW_HANDLE_ROCEV1_CNT     0x2000UL
+       #define CFA_FLOW_INFO_REQ_FLOW_HANDLE_ROCEV2_CNT     0x4000UL
+       #define CFA_FLOW_INFO_REQ_FLOW_HANDLE_DIR_RX         0x8000UL
+       u8      unused_0[6];
+       __le64  ext_flow_handle;
+};
+
+/* hwrm_cfa_flow_info_output (size:448b/56B) */
+struct hwrm_cfa_flow_info_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      flags;
+       u8      profile;
+       __le16  src_fid;
+       __le16  dst_fid;
+       __le16  l2_ctxt_id;
+       __le64  em_info;
+       __le64  tcam_info;
+       __le64  vfp_tcam_info;
+       __le16  ar_id;
+       __le16  flow_handle;
+       __le32  tunnel_handle;
+       __le16  flow_timer;
+       u8      unused_0[5];
+       u8      valid;
+};
+
+/* hwrm_cfa_flow_flush_input (size:192b/24B) */
+struct hwrm_cfa_flow_flush_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le32  flags;
+       u8      unused_0[4];
+};
+
+/* hwrm_cfa_flow_flush_output (size:128b/16B) */
+struct hwrm_cfa_flow_flush_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_cfa_flow_stats_input (size:640b/80B) */
+struct hwrm_cfa_flow_stats_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le16  num_flows;
+       __le16  flow_handle_0;
+       __le16  flow_handle_1;
+       __le16  flow_handle_2;
+       __le16  flow_handle_3;
+       __le16  flow_handle_4;
+       __le16  flow_handle_5;
+       __le16  flow_handle_6;
+       __le16  flow_handle_7;
+       __le16  flow_handle_8;
+       __le16  flow_handle_9;
+       u8      unused_0[2];
+       __le32  flow_id_0;
+       __le32  flow_id_1;
+       __le32  flow_id_2;
+       __le32  flow_id_3;
+       __le32  flow_id_4;
+       __le32  flow_id_5;
+       __le32  flow_id_6;
+       __le32  flow_id_7;
+       __le32  flow_id_8;
+       __le32  flow_id_9;
+};
+
+/* hwrm_cfa_flow_stats_output (size:1408b/176B) */
+struct hwrm_cfa_flow_stats_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le64  packet_0;
+       __le64  packet_1;
+       __le64  packet_2;
+       __le64  packet_3;
+       __le64  packet_4;
+       __le64  packet_5;
+       __le64  packet_6;
+       __le64  packet_7;
+       __le64  packet_8;
+       __le64  packet_9;
+       __le64  byte_0;
+       __le64  byte_1;
+       __le64  byte_2;
+       __le64  byte_3;
+       __le64  byte_4;
+       __le64  byte_5;
+       __le64  byte_6;
+       __le64  byte_7;
+       __le64  byte_8;
+       __le64  byte_9;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_cfa_flow_aging_timer_reset_input (size:256b/32B) */
+struct hwrm_cfa_flow_aging_timer_reset_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le16  flow_handle;
+       u8      unused_0[6];
+       __le64  ext_flow_handle;
+};
+
+/* hwrm_cfa_flow_aging_timer_reset_output (size:128b/16B) */
+struct hwrm_cfa_flow_aging_timer_reset_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_cfa_flow_aging_cfg_input (size:256b/32B) */
+struct hwrm_cfa_flow_aging_cfg_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le16  enables;
+       #define CFA_FLOW_AGING_CFG_REQ_ENABLES_TCP_FLOW_TIMER     0x1UL
+       #define CFA_FLOW_AGING_CFG_REQ_ENABLES_TCP_FIN_TIMER      0x2UL
+       #define CFA_FLOW_AGING_CFG_REQ_ENABLES_UDP_FLOW_TIMER     0x4UL
+       u8      flags;
+       #define CFA_FLOW_AGING_CFG_REQ_FLAGS_PATH     0x1UL
+       #define CFA_FLOW_AGING_CFG_REQ_FLAGS_PATH_TX    0x0UL
+       #define CFA_FLOW_AGING_CFG_REQ_FLAGS_PATH_RX    0x1UL
+       #define CFA_FLOW_AGING_CFG_REQ_FLAGS_PATH_LAST CFA_FLOW_AGING_CFG_REQ_FLAGS_PATH_RX
+       u8      unused_0;
+       __le32  tcp_flow_timer;
+       __le32  tcp_fin_timer;
+       __le32  udp_flow_timer;
+};
+
+/* hwrm_cfa_flow_aging_cfg_output (size:128b/16B) */
+struct hwrm_cfa_flow_aging_cfg_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_cfa_flow_aging_qcfg_input (size:192b/24B) */
+struct hwrm_cfa_flow_aging_qcfg_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       u8      flags;
+       #define CFA_FLOW_AGING_QCFG_REQ_FLAGS_PATH     0x1UL
+       #define CFA_FLOW_AGING_QCFG_REQ_FLAGS_PATH_TX    0x0UL
+       #define CFA_FLOW_AGING_QCFG_REQ_FLAGS_PATH_RX    0x1UL
+       #define CFA_FLOW_AGING_QCFG_REQ_FLAGS_PATH_LAST CFA_FLOW_AGING_QCFG_REQ_FLAGS_PATH_RX
+       u8      unused_0[7];
+};
+
+/* hwrm_cfa_flow_aging_qcfg_output (size:192b/24B) */
+struct hwrm_cfa_flow_aging_qcfg_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le32  tcp_flow_timer;
+       __le32  tcp_fin_timer;
+       __le32  udp_flow_timer;
+       u8      unused_0[3];
+       u8      valid;
+};
+
+/* hwrm_cfa_flow_aging_qcaps_input (size:192b/24B) */
+struct hwrm_cfa_flow_aging_qcaps_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       u8      flags;
+       #define CFA_FLOW_AGING_QCAPS_REQ_FLAGS_PATH     0x1UL
+       #define CFA_FLOW_AGING_QCAPS_REQ_FLAGS_PATH_TX    0x0UL
+       #define CFA_FLOW_AGING_QCAPS_REQ_FLAGS_PATH_RX    0x1UL
+       #define CFA_FLOW_AGING_QCAPS_REQ_FLAGS_PATH_LAST CFA_FLOW_AGING_QCAPS_REQ_FLAGS_PATH_RX
+       u8      unused_0[7];
+};
+
+/* hwrm_cfa_flow_aging_qcaps_output (size:256b/32B) */
+struct hwrm_cfa_flow_aging_qcaps_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le32  max_tcp_flow_timer;
+       __le32  max_tcp_fin_timer;
+       __le32  max_udp_flow_timer;
+       __le32  max_aging_flows;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_cfa_vf_pair_alloc_input (size:448b/56B) */
+struct hwrm_cfa_vf_pair_alloc_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le16  vf_a_id;
+       __le16  vf_b_id;
+       u8      unused_0[4];
+       char    pair_name[32];
+};
+
+/* hwrm_cfa_vf_pair_alloc_output (size:128b/16B) */
+struct hwrm_cfa_vf_pair_alloc_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_cfa_vf_pair_free_input (size:384b/48B) */
+struct hwrm_cfa_vf_pair_free_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       char    pair_name[32];
+};
+
+/* hwrm_cfa_vf_pair_free_output (size:128b/16B) */
+struct hwrm_cfa_vf_pair_free_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_cfa_vf_pair_info_input (size:448b/56B) */
+struct hwrm_cfa_vf_pair_info_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le32  flags;
+       #define CFA_VF_PAIR_INFO_REQ_FLAGS_LOOKUP_TYPE     0x1UL
+       __le16  vf_pair_index;
+       u8      unused_0[2];
+       char    vf_pair_name[32];
+};
+
+/* hwrm_cfa_vf_pair_info_output (size:512b/64B) */
+struct hwrm_cfa_vf_pair_info_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le16  next_vf_pair_index;
+       __le16  vf_a_fid;
+       __le16  vf_a_index;
+       __le16  vf_b_fid;
+       __le16  vf_b_index;
+       u8      pair_state;
+       #define CFA_VF_PAIR_INFO_RESP_PAIR_STATE_ALLOCATED 0x1UL
+       #define CFA_VF_PAIR_INFO_RESP_PAIR_STATE_ACTIVE    0x2UL
+       #define CFA_VF_PAIR_INFO_RESP_PAIR_STATE_LAST     CFA_VF_PAIR_INFO_RESP_PAIR_STATE_ACTIVE
+       u8      unused_0[5];
+       char    pair_name[32];
+       u8      unused_1[7];
+       u8      valid;
+};
+
+/* hwrm_cfa_pair_alloc_input (size:576b/72B) */
+struct hwrm_cfa_pair_alloc_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       u8      pair_mode;
+       #define CFA_PAIR_ALLOC_REQ_PAIR_MODE_VF2FN         0x0UL
+       #define CFA_PAIR_ALLOC_REQ_PAIR_MODE_REP2FN        0x1UL
+       #define CFA_PAIR_ALLOC_REQ_PAIR_MODE_REP2REP       0x2UL
+       #define CFA_PAIR_ALLOC_REQ_PAIR_MODE_PROXY         0x3UL
+       #define CFA_PAIR_ALLOC_REQ_PAIR_MODE_PFPAIR        0x4UL
+       #define CFA_PAIR_ALLOC_REQ_PAIR_MODE_REP2FN_MOD    0x5UL
+       #define CFA_PAIR_ALLOC_REQ_PAIR_MODE_REP2FN_MODALL 0x6UL
+       #define CFA_PAIR_ALLOC_REQ_PAIR_MODE_LAST         CFA_PAIR_ALLOC_REQ_PAIR_MODE_REP2FN_MODALL
+       u8      unused_0;
+       __le16  vf_a_id;
+       u8      host_b_id;
+       u8      pf_b_id;
+       __le16  vf_b_id;
+       u8      port_id;
+       u8      pri;
+       __le16  new_pf_fid;
+       __le32  enables;
+       #define CFA_PAIR_ALLOC_REQ_ENABLES_Q_AB_VALID      0x1UL
+       #define CFA_PAIR_ALLOC_REQ_ENABLES_Q_BA_VALID      0x2UL
+       #define CFA_PAIR_ALLOC_REQ_ENABLES_FC_AB_VALID     0x4UL
+       #define CFA_PAIR_ALLOC_REQ_ENABLES_FC_BA_VALID     0x8UL
+       char    pair_name[32];
+       u8      q_ab;
+       u8      q_ba;
+       u8      fc_ab;
+       u8      fc_ba;
+       u8      unused_1[4];
+};
+
+/* hwrm_cfa_pair_alloc_output (size:192b/24B) */
+struct hwrm_cfa_pair_alloc_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le16  rx_cfa_code_a;
+       __le16  tx_cfa_action_a;
+       __le16  rx_cfa_code_b;
+       __le16  tx_cfa_action_b;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_cfa_pair_free_input (size:384b/48B) */
+struct hwrm_cfa_pair_free_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       char    pair_name[32];
+};
+
+/* hwrm_cfa_pair_free_output (size:128b/16B) */
+struct hwrm_cfa_pair_free_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_cfa_pair_info_input (size:448b/56B) */
+struct hwrm_cfa_pair_info_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le32  flags;
+       #define CFA_PAIR_INFO_REQ_FLAGS_LOOKUP_TYPE      0x1UL
+       #define CFA_PAIR_INFO_REQ_FLAGS_LOOKUP_REPRE     0x2UL
+       __le16  pair_index;
+       u8      pair_pfid;
+       u8      pair_vfid;
+       char    pair_name[32];
+};
+
+/* hwrm_cfa_pair_info_output (size:576b/72B) */
+struct hwrm_cfa_pair_info_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le16  next_pair_index;
+       __le16  a_fid;
+       u8      host_a_index;
+       u8      pf_a_index;
+       __le16  vf_a_index;
+       __le16  rx_cfa_code_a;
+       __le16  tx_cfa_action_a;
+       __le16  b_fid;
+       u8      host_b_index;
+       u8      pf_b_index;
+       __le16  vf_b_index;
+       __le16  rx_cfa_code_b;
+       __le16  tx_cfa_action_b;
+       u8      pair_mode;
+       #define CFA_PAIR_INFO_RESP_PAIR_MODE_VF2FN   0x0UL
+       #define CFA_PAIR_INFO_RESP_PAIR_MODE_REP2FN  0x1UL
+       #define CFA_PAIR_INFO_RESP_PAIR_MODE_REP2REP 0x2UL
+       #define CFA_PAIR_INFO_RESP_PAIR_MODE_PROXY   0x3UL
+       #define CFA_PAIR_INFO_RESP_PAIR_MODE_PFPAIR  0x4UL
+       #define CFA_PAIR_INFO_RESP_PAIR_MODE_LAST   CFA_PAIR_INFO_RESP_PAIR_MODE_PFPAIR
+       u8      pair_state;
+       #define CFA_PAIR_INFO_RESP_PAIR_STATE_ALLOCATED 0x1UL
+       #define CFA_PAIR_INFO_RESP_PAIR_STATE_ACTIVE    0x2UL
+       #define CFA_PAIR_INFO_RESP_PAIR_STATE_LAST     CFA_PAIR_INFO_RESP_PAIR_STATE_ACTIVE
+       char    pair_name[32];
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_cfa_vfr_alloc_input (size:448b/56B) */
+struct hwrm_cfa_vfr_alloc_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le16  vf_id;
+       __le16  reserved;
+       u8      unused_0[4];
+       char    vfr_name[32];
+};
+
+/* hwrm_cfa_vfr_alloc_output (size:128b/16B) */
+struct hwrm_cfa_vfr_alloc_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le16  rx_cfa_code;
+       __le16  tx_cfa_action;
+       u8      unused_0[3];
+       u8      valid;
+};
+
+/* hwrm_cfa_vfr_free_input (size:384b/48B) */
+struct hwrm_cfa_vfr_free_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       char    vfr_name[32];
+};
+
+/* hwrm_cfa_vfr_free_output (size:128b/16B) */
+struct hwrm_cfa_vfr_free_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_cfa_redirect_query_tunnel_type_input (size:192b/24B) */
+struct hwrm_cfa_redirect_query_tunnel_type_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le16  src_fid;
+       u8      unused_0[6];
+};
+
+/* hwrm_cfa_redirect_query_tunnel_type_output (size:128b/16B) */
+struct hwrm_cfa_redirect_query_tunnel_type_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le32  tunnel_mask;
+       #define CFA_REDIRECT_QUERY_TUNNEL_TYPE_RESP_TUNNEL_MASK_NONTUNNEL     0x1UL
+       #define CFA_REDIRECT_QUERY_TUNNEL_TYPE_RESP_TUNNEL_MASK_VXLAN         0x2UL
+       #define CFA_REDIRECT_QUERY_TUNNEL_TYPE_RESP_TUNNEL_MASK_NVGRE         0x4UL
+       #define CFA_REDIRECT_QUERY_TUNNEL_TYPE_RESP_TUNNEL_MASK_L2GRE         0x8UL
+       #define CFA_REDIRECT_QUERY_TUNNEL_TYPE_RESP_TUNNEL_MASK_IPIP          0x10UL
+       #define CFA_REDIRECT_QUERY_TUNNEL_TYPE_RESP_TUNNEL_MASK_GENEVE        0x20UL
+       #define CFA_REDIRECT_QUERY_TUNNEL_TYPE_RESP_TUNNEL_MASK_MPLS          0x40UL
+       #define CFA_REDIRECT_QUERY_TUNNEL_TYPE_RESP_TUNNEL_MASK_STT           0x80UL
+       #define CFA_REDIRECT_QUERY_TUNNEL_TYPE_RESP_TUNNEL_MASK_IPGRE         0x100UL
+       #define CFA_REDIRECT_QUERY_TUNNEL_TYPE_RESP_TUNNEL_MASK_VXLAN_V4      0x200UL
+       #define CFA_REDIRECT_QUERY_TUNNEL_TYPE_RESP_TUNNEL_MASK_IPGRE_V1      0x400UL
+       #define CFA_REDIRECT_QUERY_TUNNEL_TYPE_RESP_TUNNEL_MASK_ANYTUNNEL     0x800UL
+       #define CFA_REDIRECT_QUERY_TUNNEL_TYPE_RESP_TUNNEL_MASK_L2_ETYPE      0x1000UL
+       u8      unused_0[3];
+       u8      valid;
+};
+
+/* hwrm_tunnel_dst_port_query_input (size:192b/24B) */
+struct hwrm_tunnel_dst_port_query_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       u8      tunnel_type;
+       #define TUNNEL_DST_PORT_QUERY_REQ_TUNNEL_TYPE_VXLAN    0x1UL
+       #define TUNNEL_DST_PORT_QUERY_REQ_TUNNEL_TYPE_GENEVE   0x5UL
+       #define TUNNEL_DST_PORT_QUERY_REQ_TUNNEL_TYPE_VXLAN_V4 0x9UL
+       #define TUNNEL_DST_PORT_QUERY_REQ_TUNNEL_TYPE_IPGRE_V1 0xaUL
+       #define TUNNEL_DST_PORT_QUERY_REQ_TUNNEL_TYPE_L2_ETYPE 0xbUL
+       #define TUNNEL_DST_PORT_QUERY_REQ_TUNNEL_TYPE_LAST    TUNNEL_DST_PORT_QUERY_REQ_TUNNEL_TYPE_L2_ETYPE
+       u8      unused_0[7];
+};
+
+/* hwrm_tunnel_dst_port_query_output (size:128b/16B) */
+struct hwrm_tunnel_dst_port_query_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le16  tunnel_dst_port_id;
+       __be16  tunnel_dst_port_val;
+       u8      unused_0[3];
+       u8      valid;
+};
+
+/* hwrm_tunnel_dst_port_alloc_input (size:192b/24B) */
+struct hwrm_tunnel_dst_port_alloc_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       u8      tunnel_type;
+       #define TUNNEL_DST_PORT_ALLOC_REQ_TUNNEL_TYPE_VXLAN    0x1UL
+       #define TUNNEL_DST_PORT_ALLOC_REQ_TUNNEL_TYPE_GENEVE   0x5UL
+       #define TUNNEL_DST_PORT_ALLOC_REQ_TUNNEL_TYPE_VXLAN_V4 0x9UL
+       #define TUNNEL_DST_PORT_ALLOC_REQ_TUNNEL_TYPE_IPGRE_V1 0xaUL
+       #define TUNNEL_DST_PORT_ALLOC_REQ_TUNNEL_TYPE_L2_ETYPE 0xbUL
+       #define TUNNEL_DST_PORT_ALLOC_REQ_TUNNEL_TYPE_LAST    TUNNEL_DST_PORT_ALLOC_REQ_TUNNEL_TYPE_L2_ETYPE
+       u8      unused_0;
+       __be16  tunnel_dst_port_val;
+       u8      unused_1[4];
+};
+
+/* hwrm_tunnel_dst_port_alloc_output (size:128b/16B) */
+struct hwrm_tunnel_dst_port_alloc_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le16  tunnel_dst_port_id;
+       u8      unused_0[5];
+       u8      valid;
+};
+
+/* hwrm_tunnel_dst_port_free_input (size:192b/24B) */
+struct hwrm_tunnel_dst_port_free_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       u8      tunnel_type;
+       #define TUNNEL_DST_PORT_FREE_REQ_TUNNEL_TYPE_VXLAN    0x1UL
+       #define TUNNEL_DST_PORT_FREE_REQ_TUNNEL_TYPE_GENEVE   0x5UL
+       #define TUNNEL_DST_PORT_FREE_REQ_TUNNEL_TYPE_VXLAN_V4 0x9UL
+       #define TUNNEL_DST_PORT_FREE_REQ_TUNNEL_TYPE_IPGRE_V1 0xaUL
+       #define TUNNEL_DST_PORT_FREE_REQ_TUNNEL_TYPE_L2_ETYPE 0xbUL
+       #define TUNNEL_DST_PORT_FREE_REQ_TUNNEL_TYPE_LAST    TUNNEL_DST_PORT_FREE_REQ_TUNNEL_TYPE_L2_ETYPE
+       u8      unused_0;
+       __le16  tunnel_dst_port_id;
+       u8      unused_1[4];
+};
+
+/* hwrm_tunnel_dst_port_free_output (size:128b/16B) */
+struct hwrm_tunnel_dst_port_free_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_1[7];
+       u8      valid;
+};
+
+/* ctx_hw_stats (size:1280b/160B) */
+struct ctx_hw_stats {
+       __le64  rx_ucast_pkts;
+       __le64  rx_mcast_pkts;
+       __le64  rx_bcast_pkts;
+       __le64  rx_discard_pkts;
+       __le64  rx_drop_pkts;
+       __le64  rx_ucast_bytes;
+       __le64  rx_mcast_bytes;
+       __le64  rx_bcast_bytes;
+       __le64  tx_ucast_pkts;
+       __le64  tx_mcast_pkts;
+       __le64  tx_bcast_pkts;
+       __le64  tx_discard_pkts;
+       __le64  tx_drop_pkts;
+       __le64  tx_ucast_bytes;
+       __le64  tx_mcast_bytes;
+       __le64  tx_bcast_bytes;
+       __le64  tpa_pkts;
+       __le64  tpa_bytes;
+       __le64  tpa_events;
+       __le64  tpa_aborts;
+};
+
+/* ctx_eng_stats (size:512b/64B) */
+struct ctx_eng_stats {
+       __le64  eng_bytes_in;
+       __le64  eng_bytes_out;
+       __le64  aux_bytes_in;
+       __le64  aux_bytes_out;
+       __le64  commands;
+       __le64  error_commands;
+       __le64  cce_engine_usage;
+       __le64  cdd_engine_usage;
+};
+
+/* hwrm_stat_ctx_alloc_input (size:256b/32B) */
+struct hwrm_stat_ctx_alloc_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le64  stats_dma_addr;
+       __le32  update_period_ms;
+       u8      stat_ctx_flags;
+       #define STAT_CTX_ALLOC_REQ_STAT_CTX_FLAGS_ROCE     0x1UL
+       u8      unused_0[3];
+};
+
+/* hwrm_stat_ctx_alloc_output (size:128b/16B) */
+struct hwrm_stat_ctx_alloc_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le32  stat_ctx_id;
+       u8      unused_0[3];
+       u8      valid;
+};
+
+/* hwrm_stat_ctx_free_input (size:192b/24B) */
+struct hwrm_stat_ctx_free_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le32  stat_ctx_id;
+       u8      unused_0[4];
+};
+
+/* hwrm_stat_ctx_free_output (size:128b/16B) */
+struct hwrm_stat_ctx_free_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le32  stat_ctx_id;
+       u8      unused_0[3];
+       u8      valid;
+};
+
+/* hwrm_stat_ctx_query_input (size:192b/24B) */
+struct hwrm_stat_ctx_query_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le32  stat_ctx_id;
+       u8      unused_0[4];
+};
+
+/* hwrm_stat_ctx_query_output (size:1408b/176B) */
+struct hwrm_stat_ctx_query_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le64  tx_ucast_pkts;
+       __le64  tx_mcast_pkts;
+       __le64  tx_bcast_pkts;
+       __le64  tx_err_pkts;
+       __le64  tx_drop_pkts;
+       __le64  tx_ucast_bytes;
+       __le64  tx_mcast_bytes;
+       __le64  tx_bcast_bytes;
+       __le64  rx_ucast_pkts;
+       __le64  rx_mcast_pkts;
+       __le64  rx_bcast_pkts;
+       __le64  rx_err_pkts;
+       __le64  rx_drop_pkts;
+       __le64  rx_ucast_bytes;
+       __le64  rx_mcast_bytes;
+       __le64  rx_bcast_bytes;
+       __le64  rx_agg_pkts;
+       __le64  rx_agg_bytes;
+       __le64  rx_agg_events;
+       __le64  rx_agg_aborts;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_stat_ctx_eng_query_input (size:192b/24B) */
+struct hwrm_stat_ctx_eng_query_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le32  stat_ctx_id;
+       u8      unused_0[4];
+};
+
+/* hwrm_stat_ctx_eng_query_output (size:640b/80B) */
+struct hwrm_stat_ctx_eng_query_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le64  eng_bytes_in;
+       __le64  eng_bytes_out;
+       __le64  aux_bytes_in;
+       __le64  aux_bytes_out;
+       __le64  commands;
+       __le64  error_commands;
+       __le64  cce_engine_usage;
+       __le64  cdd_engine_usage;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_stat_ctx_clr_stats_input (size:192b/24B) */
+struct hwrm_stat_ctx_clr_stats_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le32  stat_ctx_id;
+       u8      unused_0[4];
+};
+
+/* hwrm_stat_ctx_clr_stats_output (size:128b/16B) */
+struct hwrm_stat_ctx_clr_stats_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_pcie_qstats_input (size:256b/32B) */
+struct hwrm_pcie_qstats_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le16  pcie_stat_size;
+       u8      unused_0[6];
+       __le64  pcie_stat_host_addr;
+};
+
+/* hwrm_pcie_qstats_output (size:128b/16B) */
+struct hwrm_pcie_qstats_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le16  pcie_stat_size;
+       u8      unused_0[5];
+       u8      valid;
+};
+
+/* pcie_ctx_hw_stats (size:768b/96B) */
+struct pcie_ctx_hw_stats {
+       __le64  pcie_pl_signal_integrity;
+       __le64  pcie_dl_signal_integrity;
+       __le64  pcie_tl_signal_integrity;
+       __le64  pcie_link_integrity;
+       __le64  pcie_tx_traffic_rate;
+       __le64  pcie_rx_traffic_rate;
+       __le64  pcie_tx_dllp_statistics;
+       __le64  pcie_rx_dllp_statistics;
+       __le64  pcie_equalization_time;
+       __le32  pcie_ltssm_histogram[4];
+       __le64  pcie_recovery_histogram;
+};
+
+/* hwrm_fw_reset_input (size:192b/24B) */
+struct hwrm_fw_reset_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       u8      embedded_proc_type;
+       #define FW_RESET_REQ_EMBEDDED_PROC_TYPE_BOOT                 0x0UL
+       #define FW_RESET_REQ_EMBEDDED_PROC_TYPE_MGMT                 0x1UL
+       #define FW_RESET_REQ_EMBEDDED_PROC_TYPE_NETCTRL              0x2UL
+       #define FW_RESET_REQ_EMBEDDED_PROC_TYPE_ROCE                 0x3UL
+       #define FW_RESET_REQ_EMBEDDED_PROC_TYPE_HOST                 0x4UL
+       #define FW_RESET_REQ_EMBEDDED_PROC_TYPE_AP                   0x5UL
+       #define FW_RESET_REQ_EMBEDDED_PROC_TYPE_CHIP                 0x6UL
+       #define FW_RESET_REQ_EMBEDDED_PROC_TYPE_HOST_RESOURCE_REINIT 0x7UL
+       #define FW_RESET_REQ_EMBEDDED_PROC_TYPE_LAST                FW_RESET_REQ_EMBEDDED_PROC_TYPE_HOST_RESOURCE_REINIT
+       u8      selfrst_status;
+       #define FW_RESET_REQ_SELFRST_STATUS_SELFRSTNONE      0x0UL
+       #define FW_RESET_REQ_SELFRST_STATUS_SELFRSTASAP      0x1UL
+       #define FW_RESET_REQ_SELFRST_STATUS_SELFRSTPCIERST   0x2UL
+       #define FW_RESET_REQ_SELFRST_STATUS_SELFRSTIMMEDIATE 0x3UL
+       #define FW_RESET_REQ_SELFRST_STATUS_LAST            FW_RESET_REQ_SELFRST_STATUS_SELFRSTIMMEDIATE
+       u8      host_idx;
+       u8      flags;
+       #define FW_RESET_REQ_FLAGS_RESET_GRACEFUL     0x1UL
+       u8      unused_0[4];
+};
+
+/* hwrm_fw_reset_output (size:128b/16B) */
+struct hwrm_fw_reset_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      selfrst_status;
+       #define FW_RESET_RESP_SELFRST_STATUS_SELFRSTNONE      0x0UL
+       #define FW_RESET_RESP_SELFRST_STATUS_SELFRSTASAP      0x1UL
+       #define FW_RESET_RESP_SELFRST_STATUS_SELFRSTPCIERST   0x2UL
+       #define FW_RESET_RESP_SELFRST_STATUS_SELFRSTIMMEDIATE 0x3UL
+       #define FW_RESET_RESP_SELFRST_STATUS_LAST            FW_RESET_RESP_SELFRST_STATUS_SELFRSTIMMEDIATE
+       u8      unused_0[6];
+       u8      valid;
+};
+
+/* hwrm_fw_qstatus_input (size:192b/24B) */
+struct hwrm_fw_qstatus_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       u8      embedded_proc_type;
+       #define FW_QSTATUS_REQ_EMBEDDED_PROC_TYPE_BOOT    0x0UL
+       #define FW_QSTATUS_REQ_EMBEDDED_PROC_TYPE_MGMT    0x1UL
+       #define FW_QSTATUS_REQ_EMBEDDED_PROC_TYPE_NETCTRL 0x2UL
+       #define FW_QSTATUS_REQ_EMBEDDED_PROC_TYPE_ROCE    0x3UL
+       #define FW_QSTATUS_REQ_EMBEDDED_PROC_TYPE_HOST    0x4UL
+       #define FW_QSTATUS_REQ_EMBEDDED_PROC_TYPE_AP      0x5UL
+       #define FW_QSTATUS_REQ_EMBEDDED_PROC_TYPE_CHIP    0x6UL
+       #define FW_QSTATUS_REQ_EMBEDDED_PROC_TYPE_LAST   FW_QSTATUS_REQ_EMBEDDED_PROC_TYPE_CHIP
+       u8      unused_0[7];
+};
+
+/* hwrm_fw_qstatus_output (size:128b/16B) */
+struct hwrm_fw_qstatus_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      selfrst_status;
+       #define FW_QSTATUS_RESP_SELFRST_STATUS_SELFRSTNONE    0x0UL
+       #define FW_QSTATUS_RESP_SELFRST_STATUS_SELFRSTASAP    0x1UL
+       #define FW_QSTATUS_RESP_SELFRST_STATUS_SELFRSTPCIERST 0x2UL
+       #define FW_QSTATUS_RESP_SELFRST_STATUS_LAST          FW_QSTATUS_RESP_SELFRST_STATUS_SELFRSTPCIERST
+       u8      unused_0[6];
+       u8      valid;
+};
+
+/* hwrm_fw_set_time_input (size:256b/32B) */
+struct hwrm_fw_set_time_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le16  year;
+       #define FW_SET_TIME_REQ_YEAR_UNKNOWN 0x0UL
+       #define FW_SET_TIME_REQ_YEAR_LAST   FW_SET_TIME_REQ_YEAR_UNKNOWN
+       u8      month;
+       u8      day;
+       u8      hour;
+       u8      minute;
+       u8      second;
+       u8      unused_0;
+       __le16  millisecond;
+       __le16  zone;
+       #define FW_SET_TIME_REQ_ZONE_UTC     0x0UL
+       #define FW_SET_TIME_REQ_ZONE_UNKNOWN 0xffffUL
+       #define FW_SET_TIME_REQ_ZONE_LAST   FW_SET_TIME_REQ_ZONE_UNKNOWN
+       u8      unused_1[4];
+};
+
+/* hwrm_fw_set_time_output (size:128b/16B) */
+struct hwrm_fw_set_time_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_fw_get_time_input (size:128b/16B) */
+struct hwrm_fw_get_time_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+};
+
+/* hwrm_fw_get_time_output (size:192b/24B) */
+struct hwrm_fw_get_time_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le16  year;
+       #define FW_GET_TIME_RESP_YEAR_UNKNOWN 0x0UL
+       #define FW_GET_TIME_RESP_YEAR_LAST   FW_GET_TIME_RESP_YEAR_UNKNOWN
+       u8      month;
+       u8      day;
+       u8      hour;
+       u8      minute;
+       u8      second;
+       u8      unused_0;
+       __le16  millisecond;
+       __le16  zone;
+       #define FW_GET_TIME_RESP_ZONE_UTC     0x0UL
+       #define FW_GET_TIME_RESP_ZONE_UNKNOWN 0xffffUL
+       #define FW_GET_TIME_RESP_ZONE_LAST   FW_GET_TIME_RESP_ZONE_UNKNOWN
+       u8      unused_1[3];
+       u8      valid;
+};
+
+/* hwrm_struct_hdr (size:128b/16B) */
+struct hwrm_struct_hdr {
+       __le16  struct_id;
+       #define STRUCT_HDR_STRUCT_ID_LLDP_CFG           0x41bUL
+       #define STRUCT_HDR_STRUCT_ID_DCBX_ETS           0x41dUL
+       #define STRUCT_HDR_STRUCT_ID_DCBX_PFC           0x41fUL
+       #define STRUCT_HDR_STRUCT_ID_DCBX_APP           0x421UL
+       #define STRUCT_HDR_STRUCT_ID_DCBX_FEATURE_STATE 0x422UL
+       #define STRUCT_HDR_STRUCT_ID_LLDP_GENERIC       0x424UL
+       #define STRUCT_HDR_STRUCT_ID_LLDP_DEVICE        0x426UL
+       #define STRUCT_HDR_STRUCT_ID_POWER_BKUP         0x427UL
+       #define STRUCT_HDR_STRUCT_ID_AFM_OPAQUE         0x1UL
+       #define STRUCT_HDR_STRUCT_ID_PORT_DESCRIPTION   0xaUL
+       #define STRUCT_HDR_STRUCT_ID_RSS_V2             0x64UL
+       #define STRUCT_HDR_STRUCT_ID_LAST              STRUCT_HDR_STRUCT_ID_RSS_V2
+       __le16  len;
+       u8      version;
+       u8      count;
+       __le16  subtype;
+       __le16  next_offset;
+       #define STRUCT_HDR_NEXT_OFFSET_LAST 0x0UL
+       u8      unused_0[6];
+};
+
+/* hwrm_struct_data_dcbx_ets (size:256b/32B) */
+struct hwrm_struct_data_dcbx_ets {
+       u8      destination;
+       #define STRUCT_DATA_DCBX_ETS_DESTINATION_CONFIGURATION   0x1UL
+       #define STRUCT_DATA_DCBX_ETS_DESTINATION_RECOMMMENDATION 0x2UL
+       #define STRUCT_DATA_DCBX_ETS_DESTINATION_LAST           STRUCT_DATA_DCBX_ETS_DESTINATION_RECOMMMENDATION
+       u8      max_tcs;
+       __le16  unused1;
+       u8      pri0_to_tc_map;
+       u8      pri1_to_tc_map;
+       u8      pri2_to_tc_map;
+       u8      pri3_to_tc_map;
+       u8      pri4_to_tc_map;
+       u8      pri5_to_tc_map;
+       u8      pri6_to_tc_map;
+       u8      pri7_to_tc_map;
+       u8      tc0_to_bw_map;
+       u8      tc1_to_bw_map;
+       u8      tc2_to_bw_map;
+       u8      tc3_to_bw_map;
+       u8      tc4_to_bw_map;
+       u8      tc5_to_bw_map;
+       u8      tc6_to_bw_map;
+       u8      tc7_to_bw_map;
+       u8      tc0_to_tsa_map;
+       #define STRUCT_DATA_DCBX_ETS_TC0_TO_TSA_MAP_TSA_TYPE_SP              0x0UL
+       #define STRUCT_DATA_DCBX_ETS_TC0_TO_TSA_MAP_TSA_TYPE_CBS             0x1UL
+       #define STRUCT_DATA_DCBX_ETS_TC0_TO_TSA_MAP_TSA_TYPE_ETS             0x2UL
+       #define STRUCT_DATA_DCBX_ETS_TC0_TO_TSA_MAP_TSA_TYPE_VENDOR_SPECIFIC 0xffUL
+       #define STRUCT_DATA_DCBX_ETS_TC0_TO_TSA_MAP_LAST                    STRUCT_DATA_DCBX_ETS_TC0_TO_TSA_MAP_TSA_TYPE_VENDOR_SPECIFIC
+       u8      tc1_to_tsa_map;
+       u8      tc2_to_tsa_map;
+       u8      tc3_to_tsa_map;
+       u8      tc4_to_tsa_map;
+       u8      tc5_to_tsa_map;
+       u8      tc6_to_tsa_map;
+       u8      tc7_to_tsa_map;
+       u8      unused_0[4];
+};
+
+/* hwrm_struct_data_dcbx_pfc (size:64b/8B) */
+struct hwrm_struct_data_dcbx_pfc {
+       u8      pfc_priority_bitmap;
+       u8      max_pfc_tcs;
+       u8      mbc;
+       u8      unused_0[5];
+};
+
+/* hwrm_struct_data_dcbx_app (size:64b/8B) */
+struct hwrm_struct_data_dcbx_app {
+       __be16  protocol_id;
+       u8      protocol_selector;
+       #define STRUCT_DATA_DCBX_APP_PROTOCOL_SELECTOR_ETHER_TYPE   0x1UL
+       #define STRUCT_DATA_DCBX_APP_PROTOCOL_SELECTOR_TCP_PORT     0x2UL
+       #define STRUCT_DATA_DCBX_APP_PROTOCOL_SELECTOR_UDP_PORT     0x3UL
+       #define STRUCT_DATA_DCBX_APP_PROTOCOL_SELECTOR_TCP_UDP_PORT 0x4UL
+       #define STRUCT_DATA_DCBX_APP_PROTOCOL_SELECTOR_LAST        STRUCT_DATA_DCBX_APP_PROTOCOL_SELECTOR_TCP_UDP_PORT
+       u8      priority;
+       u8      valid;
+       u8      unused_0[3];
+};
+
+/* hwrm_struct_data_dcbx_feature_state (size:64b/8B) */
+struct hwrm_struct_data_dcbx_feature_state {
+       u8      dcbx_mode;
+       #define STRUCT_DATA_DCBX_FEATURE_STATE_DCBX_MODE_DCBX_DISABLED 0x0UL
+       #define STRUCT_DATA_DCBX_FEATURE_STATE_DCBX_MODE_DCBX_IEEE     0x1UL
+       #define STRUCT_DATA_DCBX_FEATURE_STATE_DCBX_MODE_DCBX_CEE      0x2UL
+       #define STRUCT_DATA_DCBX_FEATURE_STATE_DCBX_MODE_LAST         STRUCT_DATA_DCBX_FEATURE_STATE_DCBX_MODE_DCBX_CEE
+       u8      ets_state;
+       u8      pfc_state;
+       u8      app_state;
+       #define STRUCT_DATA_DCBX_FEATURE_STATE_APP_STATE_ENABLE_BIT_POS    0x7UL
+       #define STRUCT_DATA_DCBX_FEATURE_STATE_APP_STATE_WILLING_BIT_POS   0x6UL
+       #define STRUCT_DATA_DCBX_FEATURE_STATE_APP_STATE_ADVERTISE_BIT_POS 0x5UL
+       #define STRUCT_DATA_DCBX_FEATURE_STATE_APP_STATE_LAST             STRUCT_DATA_DCBX_FEATURE_STATE_APP_STATE_ADVERTISE_BIT_POS
+       u8      unused[3];
+       u8      resets;
+       #define STRUCT_DATA_DCBX_FEATURE_STATE_RESETS_RESET_ETS   0x1UL
+       #define STRUCT_DATA_DCBX_FEATURE_STATE_RESETS_RESET_PFC   0x2UL
+       #define STRUCT_DATA_DCBX_FEATURE_STATE_RESETS_RESET_APP   0x4UL
+       #define STRUCT_DATA_DCBX_FEATURE_STATE_RESETS_RESET_STATE 0x8UL
+       #define STRUCT_DATA_DCBX_FEATURE_STATE_RESETS_LAST       STRUCT_DATA_DCBX_FEATURE_STATE_RESETS_RESET_STATE
+};
+
+/* hwrm_struct_data_lldp (size:64b/8B) */
+struct hwrm_struct_data_lldp {
+       u8      admin_state;
+       #define STRUCT_DATA_LLDP_ADMIN_STATE_DISABLE 0x0UL
+       #define STRUCT_DATA_LLDP_ADMIN_STATE_TX      0x1UL
+       #define STRUCT_DATA_LLDP_ADMIN_STATE_RX      0x2UL
+       #define STRUCT_DATA_LLDP_ADMIN_STATE_ENABLE  0x3UL
+       #define STRUCT_DATA_LLDP_ADMIN_STATE_LAST   STRUCT_DATA_LLDP_ADMIN_STATE_ENABLE
+       u8      port_description_state;
+       #define STRUCT_DATA_LLDP_PORT_DESCRIPTION_STATE_DISABLE 0x0UL
+       #define STRUCT_DATA_LLDP_PORT_DESCRIPTION_STATE_ENABLE  0x1UL
+       #define STRUCT_DATA_LLDP_PORT_DESCRIPTION_STATE_LAST   STRUCT_DATA_LLDP_PORT_DESCRIPTION_STATE_ENABLE
+       u8      system_name_state;
+       #define STRUCT_DATA_LLDP_SYSTEM_NAME_STATE_DISABLE 0x0UL
+       #define STRUCT_DATA_LLDP_SYSTEM_NAME_STATE_ENABLE  0x1UL
+       #define STRUCT_DATA_LLDP_SYSTEM_NAME_STATE_LAST   STRUCT_DATA_LLDP_SYSTEM_NAME_STATE_ENABLE
+       u8      system_desc_state;
+       #define STRUCT_DATA_LLDP_SYSTEM_DESC_STATE_DISABLE 0x0UL
+       #define STRUCT_DATA_LLDP_SYSTEM_DESC_STATE_ENABLE  0x1UL
+       #define STRUCT_DATA_LLDP_SYSTEM_DESC_STATE_LAST   STRUCT_DATA_LLDP_SYSTEM_DESC_STATE_ENABLE
+       u8      system_cap_state;
+       #define STRUCT_DATA_LLDP_SYSTEM_CAP_STATE_DISABLE 0x0UL
+       #define STRUCT_DATA_LLDP_SYSTEM_CAP_STATE_ENABLE  0x1UL
+       #define STRUCT_DATA_LLDP_SYSTEM_CAP_STATE_LAST   STRUCT_DATA_LLDP_SYSTEM_CAP_STATE_ENABLE
+       u8      mgmt_addr_state;
+       #define STRUCT_DATA_LLDP_MGMT_ADDR_STATE_DISABLE 0x0UL
+       #define STRUCT_DATA_LLDP_MGMT_ADDR_STATE_ENABLE  0x1UL
+       #define STRUCT_DATA_LLDP_MGMT_ADDR_STATE_LAST   STRUCT_DATA_LLDP_MGMT_ADDR_STATE_ENABLE
+       u8      async_event_notification_state;
+       #define STRUCT_DATA_LLDP_ASYNC_EVENT_NOTIFICATION_STATE_DISABLE 0x0UL
+       #define STRUCT_DATA_LLDP_ASYNC_EVENT_NOTIFICATION_STATE_ENABLE  0x1UL
+       #define STRUCT_DATA_LLDP_ASYNC_EVENT_NOTIFICATION_STATE_LAST   STRUCT_DATA_LLDP_ASYNC_EVENT_NOTIFICATION_STATE_ENABLE
+       u8      unused_0;
+};
+
+/* hwrm_struct_data_lldp_generic (size:2112b/264B) */
+struct hwrm_struct_data_lldp_generic {
+       u8      tlv_type;
+       #define STRUCT_DATA_LLDP_GENERIC_TLV_TYPE_CHASSIS            0x1UL
+       #define STRUCT_DATA_LLDP_GENERIC_TLV_TYPE_PORT               0x2UL
+       #define STRUCT_DATA_LLDP_GENERIC_TLV_TYPE_SYSTEM_NAME        0x3UL
+       #define STRUCT_DATA_LLDP_GENERIC_TLV_TYPE_SYSTEM_DESCRIPTION 0x4UL
+       #define STRUCT_DATA_LLDP_GENERIC_TLV_TYPE_PORT_NAME          0x5UL
+       #define STRUCT_DATA_LLDP_GENERIC_TLV_TYPE_PORT_DESCRIPTION   0x6UL
+       #define STRUCT_DATA_LLDP_GENERIC_TLV_TYPE_LAST              STRUCT_DATA_LLDP_GENERIC_TLV_TYPE_PORT_DESCRIPTION
+       u8      subtype;
+       u8      length;
+       u8      unused1[5];
+       __le32  tlv_value[64];
+};
+
+/* hwrm_struct_data_lldp_device (size:1472b/184B) */
+struct hwrm_struct_data_lldp_device {
+       __le16  ttl;
+       u8      mgmt_addr_len;
+       u8      mgmt_addr_type;
+       u8      unused_3[4];
+       __le32  mgmt_addr[8];
+       __le32  system_caps;
+       u8      intf_num_type;
+       u8      mgmt_addr_oid_length;
+       u8      unused_4[2];
+       __le32  intf_num;
+       u8      unused_5[4];
+       __le32  mgmt_addr_oid[32];
+};
+
+/* hwrm_struct_data_port_description (size:64b/8B) */
+struct hwrm_struct_data_port_description {
+       u8      port_id;
+       u8      unused_0[7];
+};
+
+/* hwrm_struct_data_rss_v2 (size:128b/16B) */
+struct hwrm_struct_data_rss_v2 {
+       __le16  flags;
+       #define STRUCT_DATA_RSS_V2_FLAGS_HASH_VALID     0x1UL
+       __le16  rss_ctx_id;
+       __le16  num_ring_groups;
+       __le16  hash_type;
+       #define STRUCT_DATA_RSS_V2_HASH_TYPE_IPV4         0x1UL
+       #define STRUCT_DATA_RSS_V2_HASH_TYPE_TCP_IPV4     0x2UL
+       #define STRUCT_DATA_RSS_V2_HASH_TYPE_UDP_IPV4     0x4UL
+       #define STRUCT_DATA_RSS_V2_HASH_TYPE_IPV6         0x8UL
+       #define STRUCT_DATA_RSS_V2_HASH_TYPE_TCP_IPV6     0x10UL
+       #define STRUCT_DATA_RSS_V2_HASH_TYPE_UDP_IPV6     0x20UL
+       __le64  hash_key_ring_group_ids;
+};
+
+/* hwrm_struct_data_power_information (size:192b/24B) */
+struct hwrm_struct_data_power_information {
+       __le32  bkup_power_info_ver;
+       __le32  platform_bkup_power_count;
+       __le32  load_milli_watt;
+       __le32  bkup_time_milli_seconds;
+       __le32  bkup_power_status;
+       __le32  bkup_power_charge_time;
+};
+
+/* hwrm_fw_set_structured_data_input (size:256b/32B) */
+struct hwrm_fw_set_structured_data_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le64  src_data_addr;
+       __le16  data_len;
+       u8      hdr_cnt;
+       u8      unused_0[5];
+};
+
+/* hwrm_fw_set_structured_data_output (size:128b/16B) */
+struct hwrm_fw_set_structured_data_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_fw_set_structured_data_cmd_err (size:64b/8B) */
+struct hwrm_fw_set_structured_data_cmd_err {
+       u8      code;
+       #define FW_SET_STRUCTURED_DATA_CMD_ERR_CODE_UNKNOWN     0x0UL
+       #define FW_SET_STRUCTURED_DATA_CMD_ERR_CODE_BAD_HDR_CNT 0x1UL
+       #define FW_SET_STRUCTURED_DATA_CMD_ERR_CODE_BAD_FMT     0x2UL
+       #define FW_SET_STRUCTURED_DATA_CMD_ERR_CODE_BAD_ID      0x3UL
+       #define FW_SET_STRUCTURED_DATA_CMD_ERR_CODE_LAST       FW_SET_STRUCTURED_DATA_CMD_ERR_CODE_BAD_ID
+       u8      unused_0[7];
+};
+
+/* hwrm_fw_get_structured_data_input (size:256b/32B) */
+struct hwrm_fw_get_structured_data_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le64  dest_data_addr;
+       __le16  data_len;
+       __le16  structure_id;
+       __le16  subtype;
+       #define FW_GET_STRUCTURED_DATA_REQ_SUBTYPE_UNUSED                  0x0UL
+       #define FW_GET_STRUCTURED_DATA_REQ_SUBTYPE_ALL                     0xffffUL
+       #define FW_GET_STRUCTURED_DATA_REQ_SUBTYPE_NEAR_BRIDGE_ADMIN       0x100UL
+       #define FW_GET_STRUCTURED_DATA_REQ_SUBTYPE_NEAR_BRIDGE_PEER        0x101UL
+       #define FW_GET_STRUCTURED_DATA_REQ_SUBTYPE_NEAR_BRIDGE_OPERATIONAL 0x102UL
+       #define FW_GET_STRUCTURED_DATA_REQ_SUBTYPE_NON_TPMR_ADMIN          0x200UL
+       #define FW_GET_STRUCTURED_DATA_REQ_SUBTYPE_NON_TPMR_PEER           0x201UL
+       #define FW_GET_STRUCTURED_DATA_REQ_SUBTYPE_NON_TPMR_OPERATIONAL    0x202UL
+       #define FW_GET_STRUCTURED_DATA_REQ_SUBTYPE_HOST_OPERATIONAL        0x300UL
+       #define FW_GET_STRUCTURED_DATA_REQ_SUBTYPE_LAST                   FW_GET_STRUCTURED_DATA_REQ_SUBTYPE_HOST_OPERATIONAL
+       u8      count;
+       u8      unused_0;
+};
+
+/* hwrm_fw_get_structured_data_output (size:128b/16B) */
+struct hwrm_fw_get_structured_data_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      hdr_cnt;
+       u8      unused_0[6];
+       u8      valid;
+};
+
+/* hwrm_fw_get_structured_data_cmd_err (size:64b/8B) */
+struct hwrm_fw_get_structured_data_cmd_err {
+       u8      code;
+       #define FW_GET_STRUCTURED_DATA_CMD_ERR_CODE_UNKNOWN 0x0UL
+       #define FW_GET_STRUCTURED_DATA_CMD_ERR_CODE_BAD_ID  0x3UL
+       #define FW_GET_STRUCTURED_DATA_CMD_ERR_CODE_LAST   FW_GET_STRUCTURED_DATA_CMD_ERR_CODE_BAD_ID
+       u8      unused_0[7];
+};
+
+/* hwrm_fw_ipc_msg_input (size:320b/40B) */
+struct hwrm_fw_ipc_msg_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le32  enables;
+       #define FW_IPC_MSG_REQ_ENABLES_COMMAND_ID        0x1UL
+       #define FW_IPC_MSG_REQ_ENABLES_SRC_PROCESSOR     0x2UL
+       #define FW_IPC_MSG_REQ_ENABLES_DATA_OFFSET       0x4UL
+       #define FW_IPC_MSG_REQ_ENABLES_LENGTH            0x8UL
+       __le16  command_id;
+       #define FW_IPC_MSG_REQ_COMMAND_ID_ROCE_LAG 0x1UL
+       #define FW_IPC_MSG_REQ_COMMAND_ID_LAST    FW_IPC_MSG_REQ_COMMAND_ID_ROCE_LAG
+       u8      src_processor;
+       #define FW_IPC_MSG_REQ_SRC_PROCESSOR_CFW  0x1UL
+       #define FW_IPC_MSG_REQ_SRC_PROCESSOR_BONO 0x2UL
+       #define FW_IPC_MSG_REQ_SRC_PROCESSOR_APE  0x3UL
+       #define FW_IPC_MSG_REQ_SRC_PROCESSOR_KONG 0x4UL
+       #define FW_IPC_MSG_REQ_SRC_PROCESSOR_LAST FW_IPC_MSG_REQ_SRC_PROCESSOR_KONG
+       u8      unused_0;
+       __le32  data_offset;
+       __le16  length;
+       u8      unused_1[2];
+       __le64  opaque;
+};
+
+/* hwrm_fw_ipc_msg_output (size:128b/16B) */
+struct hwrm_fw_ipc_msg_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_fw_ipc_mailbox_input (size:256b/32B) */
+struct hwrm_fw_ipc_mailbox_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       u8      flags;
+       u8      unused;
+       u8      event_id;
+       u8      port_id;
+       __le32  event_data1;
+       __le32  event_data2;
+       u8      unused_0[4];
+};
+
+/* hwrm_fw_ipc_mailbox_output (size:128b/16B) */
+struct hwrm_fw_ipc_mailbox_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_fw_ipc_mailbox_cmd_err (size:64b/8B) */
+struct hwrm_fw_ipc_mailbox_cmd_err {
+       u8      code;
+       #define FW_IPC_MAILBOX_CMD_ERR_CODE_UNKNOWN 0x0UL
+       #define FW_IPC_MAILBOX_CMD_ERR_CODE_BAD_ID  0x3UL
+       #define FW_IPC_MAILBOX_CMD_ERR_CODE_LAST   FW_IPC_MAILBOX_CMD_ERR_CODE_BAD_ID
+       u8      unused_0[7];
+};
+
+/* hwrm_fw_health_check_input (size:128b/16B) */
+struct hwrm_fw_health_check_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+};
+
+/* hwrm_fw_health_check_output (size:128b/16B) */
+struct hwrm_fw_health_check_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le32  fw_status;
+       #define FW_HEALTH_CHECK_RESP_FW_STATUS_SBI_BOOTED       0x1UL
+       #define FW_HEALTH_CHECK_RESP_FW_STATUS_SBI_MISMATCH     0x2UL
+       #define FW_HEALTH_CHECK_RESP_FW_STATUS_SRT_BOOTED       0x4UL
+       #define FW_HEALTH_CHECK_RESP_FW_STATUS_SRT_MISMATCH     0x8UL
+       #define FW_HEALTH_CHECK_RESP_FW_STATUS_CRT_BOOTED       0x10UL
+       #define FW_HEALTH_CHECK_RESP_FW_STATUS_CRT_MISMATCH     0x20UL
+       #define FW_HEALTH_CHECK_RESP_FW_STATUS_SECOND_RT        0x40UL
+       u8      unused_0[3];
+       u8      valid;
+};
+
+/* hwrm_fw_sync_input (size:192b/24B) */
+struct hwrm_fw_sync_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le32  sync_action;
+       #define FW_SYNC_REQ_SYNC_ACTION_SYNC_SBI     0x1UL
+       #define FW_SYNC_REQ_SYNC_ACTION_SYNC_SRT     0x2UL
+       #define FW_SYNC_REQ_SYNC_ACTION_SYNC_CRT     0x4UL
+       #define FW_SYNC_REQ_SYNC_ACTION_ACTION       0x80000000UL
+       u8      unused_0[4];
+};
+
+/* hwrm_fw_sync_output (size:128b/16B) */
+struct hwrm_fw_sync_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le32  sync_status;
+       #define FW_SYNC_RESP_SYNC_STATUS_ERR_CODE_MASK       0xffUL
+       #define FW_SYNC_RESP_SYNC_STATUS_ERR_CODE_SFT        0
+       #define FW_SYNC_RESP_SYNC_STATUS_ERR_CODE_SUCCESS      0x0UL
+       #define FW_SYNC_RESP_SYNC_STATUS_ERR_CODE_IN_PROGRESS  0x1UL
+       #define FW_SYNC_RESP_SYNC_STATUS_ERR_CODE_TIMEOUT      0x2UL
+       #define FW_SYNC_RESP_SYNC_STATUS_ERR_CODE_GENERAL      0x3UL
+       #define FW_SYNC_RESP_SYNC_STATUS_ERR_CODE_LAST        FW_SYNC_RESP_SYNC_STATUS_ERR_CODE_GENERAL
+       #define FW_SYNC_RESP_SYNC_STATUS_SYNC_ERR            0x40000000UL
+       #define FW_SYNC_RESP_SYNC_STATUS_SYNC_COMPLETE       0x80000000UL
+       u8      unused_0[3];
+       u8      valid;
+};
+
+/* hwrm_exec_fwd_resp_input (size:1024b/128B) */
+struct hwrm_exec_fwd_resp_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le32  encap_request[26];
+       __le16  encap_resp_target_id;
+       u8      unused_0[6];
+};
+
+/* hwrm_exec_fwd_resp_output (size:128b/16B) */
+struct hwrm_exec_fwd_resp_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_reject_fwd_resp_input (size:1024b/128B) */
+struct hwrm_reject_fwd_resp_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le32  encap_request[26];
+       __le16  encap_resp_target_id;
+       u8      unused_0[6];
+};
+
+/* hwrm_reject_fwd_resp_output (size:128b/16B) */
+struct hwrm_reject_fwd_resp_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_fwd_resp_input (size:1024b/128B) */
+struct hwrm_fwd_resp_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le16  encap_resp_target_id;
+       __le16  encap_resp_cmpl_ring;
+       __le16  encap_resp_len;
+       u8      unused_0;
+       u8      unused_1;
+       __le64  encap_resp_addr;
+       __le32  encap_resp[24];
+};
+
+/* hwrm_fwd_resp_output (size:128b/16B) */
+struct hwrm_fwd_resp_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_fwd_async_event_cmpl_input (size:320b/40B) */
+struct hwrm_fwd_async_event_cmpl_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le16  encap_async_event_target_id;
+       u8      unused_0[6];
+       __le32  encap_async_event_cmpl[4];
+};
+
+/* hwrm_fwd_async_event_cmpl_output (size:128b/16B) */
+struct hwrm_fwd_async_event_cmpl_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_temp_monitor_query_input (size:128b/16B) */
+struct hwrm_temp_monitor_query_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+};
+
+/* hwrm_temp_monitor_query_output (size:128b/16B) */
+struct hwrm_temp_monitor_query_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      temp;
+       u8      unused_0[6];
+       u8      valid;
+};
+
+/* hwrm_wol_filter_alloc_input (size:512b/64B) */
+struct hwrm_wol_filter_alloc_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le32  flags;
+       __le32  enables;
+       #define WOL_FILTER_ALLOC_REQ_ENABLES_MAC_ADDRESS           0x1UL
+       #define WOL_FILTER_ALLOC_REQ_ENABLES_PATTERN_OFFSET        0x2UL
+       #define WOL_FILTER_ALLOC_REQ_ENABLES_PATTERN_BUF_SIZE      0x4UL
+       #define WOL_FILTER_ALLOC_REQ_ENABLES_PATTERN_BUF_ADDR      0x8UL
+       #define WOL_FILTER_ALLOC_REQ_ENABLES_PATTERN_MASK_ADDR     0x10UL
+       #define WOL_FILTER_ALLOC_REQ_ENABLES_PATTERN_MASK_SIZE     0x20UL
+       __le16  port_id;
+       u8      wol_type;
+       #define WOL_FILTER_ALLOC_REQ_WOL_TYPE_MAGICPKT 0x0UL
+       #define WOL_FILTER_ALLOC_REQ_WOL_TYPE_BMP      0x1UL
+       #define WOL_FILTER_ALLOC_REQ_WOL_TYPE_INVALID  0xffUL
+       #define WOL_FILTER_ALLOC_REQ_WOL_TYPE_LAST    WOL_FILTER_ALLOC_REQ_WOL_TYPE_INVALID
+       u8      unused_0[5];
+       u8      mac_address[6];
+       __le16  pattern_offset;
+       __le16  pattern_buf_size;
+       __le16  pattern_mask_size;
+       u8      unused_1[4];
+       __le64  pattern_buf_addr;
+       __le64  pattern_mask_addr;
+};
+
+/* hwrm_wol_filter_alloc_output (size:128b/16B) */
+struct hwrm_wol_filter_alloc_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      wol_filter_id;
+       u8      unused_0[6];
+       u8      valid;
+};
+
+/* hwrm_wol_filter_free_input (size:256b/32B) */
+struct hwrm_wol_filter_free_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le32  flags;
+       #define WOL_FILTER_FREE_REQ_FLAGS_FREE_ALL_WOL_FILTERS     0x1UL
+       __le32  enables;
+       #define WOL_FILTER_FREE_REQ_ENABLES_WOL_FILTER_ID     0x1UL
+       __le16  port_id;
+       u8      wol_filter_id;
+       u8      unused_0[5];
+};
+
+/* hwrm_wol_filter_free_output (size:128b/16B) */
+struct hwrm_wol_filter_free_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_wol_filter_qcfg_input (size:448b/56B) */
+struct hwrm_wol_filter_qcfg_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le16  port_id;
+       __le16  handle;
+       u8      unused_0[4];
+       __le64  pattern_buf_addr;
+       __le16  pattern_buf_size;
+       u8      unused_1[6];
+       __le64  pattern_mask_addr;
+       __le16  pattern_mask_size;
+       u8      unused_2[6];
+};
+
+/* hwrm_wol_filter_qcfg_output (size:256b/32B) */
+struct hwrm_wol_filter_qcfg_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le16  next_handle;
+       u8      wol_filter_id;
+       u8      wol_type;
+       #define WOL_FILTER_QCFG_RESP_WOL_TYPE_MAGICPKT 0x0UL
+       #define WOL_FILTER_QCFG_RESP_WOL_TYPE_BMP      0x1UL
+       #define WOL_FILTER_QCFG_RESP_WOL_TYPE_INVALID  0xffUL
+       #define WOL_FILTER_QCFG_RESP_WOL_TYPE_LAST    WOL_FILTER_QCFG_RESP_WOL_TYPE_INVALID
+       __le32  unused_0;
+       u8      mac_address[6];
+       __le16  pattern_offset;
+       __le16  pattern_size;
+       __le16  pattern_mask_size;
+       u8      unused_1[3];
+       u8      valid;
+};
+
+/* hwrm_wol_reason_qcfg_input (size:320b/40B) */
+struct hwrm_wol_reason_qcfg_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le16  port_id;
+       u8      unused_0[6];
+       __le64  wol_pkt_buf_addr;
+       __le16  wol_pkt_buf_size;
+       u8      unused_1[6];
+};
+
+/* hwrm_wol_reason_qcfg_output (size:128b/16B) */
+struct hwrm_wol_reason_qcfg_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      wol_filter_id;
+       u8      wol_reason;
+       #define WOL_REASON_QCFG_RESP_WOL_REASON_MAGICPKT 0x0UL
+       #define WOL_REASON_QCFG_RESP_WOL_REASON_BMP      0x1UL
+       #define WOL_REASON_QCFG_RESP_WOL_REASON_INVALID  0xffUL
+       #define WOL_REASON_QCFG_RESP_WOL_REASON_LAST    WOL_REASON_QCFG_RESP_WOL_REASON_INVALID
+       u8      wol_pkt_len;
+       u8      unused_0[4];
+       u8      valid;
+};
+
+/* hwrm_dbg_read_direct_input (size:256b/32B) */
+struct hwrm_dbg_read_direct_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le64  host_dest_addr;
+       __le32  read_addr;
+       __le32  read_len32;
+};
+
+/* hwrm_dbg_read_direct_output (size:128b/16B) */
+struct hwrm_dbg_read_direct_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_dbg_write_direct_input (size:448b/56B) */
+struct hwrm_dbg_write_direct_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le32  write_addr;
+       __le32  write_len32;
+       __le32  write_data[8];
+};
+
+/* hwrm_dbg_write_direct_output (size:128b/16B) */
+struct hwrm_dbg_write_direct_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_dbg_read_indirect_input (size:320b/40B) */
+struct hwrm_dbg_read_indirect_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le64  host_dest_addr;
+       __le32  host_dest_addr_len;
+       u8      indirect_access_type;
+       #define DBG_READ_INDIRECT_REQ_INDIRECT_ACCESS_TYPE_TE_MGMT_FILTERS_L2         0x0UL
+       #define DBG_READ_INDIRECT_REQ_INDIRECT_ACCESS_TYPE_TE_MGMT_FILTERS_L3L4       0x1UL
+       #define DBG_READ_INDIRECT_REQ_INDIRECT_ACCESS_TYPE_RE_MGMT_FILTERS_L2         0x2UL
+       #define DBG_READ_INDIRECT_REQ_INDIRECT_ACCESS_TYPE_RE_MGMT_FILTERS_L3L4       0x3UL
+       #define DBG_READ_INDIRECT_REQ_INDIRECT_ACCESS_TYPE_STAT_CTXS                  0x4UL
+       #define DBG_READ_INDIRECT_REQ_INDIRECT_ACCESS_TYPE_CFA_TX_L2_TCAM             0x5UL
+       #define DBG_READ_INDIRECT_REQ_INDIRECT_ACCESS_TYPE_CFA_RX_L2_TCAM             0x6UL
+       #define DBG_READ_INDIRECT_REQ_INDIRECT_ACCESS_TYPE_CFA_TX_IPV6_SUBNET_TCAM    0x7UL
+       #define DBG_READ_INDIRECT_REQ_INDIRECT_ACCESS_TYPE_CFA_RX_IPV6_SUBNET_TCAM    0x8UL
+       #define DBG_READ_INDIRECT_REQ_INDIRECT_ACCESS_TYPE_CFA_TX_SRC_PROPERTIES_TCAM 0x9UL
+       #define DBG_READ_INDIRECT_REQ_INDIRECT_ACCESS_TYPE_CFA_RX_SRC_PROPERTIES_TCAM 0xaUL
+       #define DBG_READ_INDIRECT_REQ_INDIRECT_ACCESS_TYPE_CFA_VEB_LOOKUP_TCAM        0xbUL
+       #define DBG_READ_INDIRECT_REQ_INDIRECT_ACCESS_TYPE_CFA_TX_PROFILE_LOOKUP_TCAM 0xcUL
+       #define DBG_READ_INDIRECT_REQ_INDIRECT_ACCESS_TYPE_CFA_RX_PROFILE_LOOKUP_TCAM 0xdUL
+       #define DBG_READ_INDIRECT_REQ_INDIRECT_ACCESS_TYPE_CFA_TX_LOOKUP_TCAM         0xeUL
+       #define DBG_READ_INDIRECT_REQ_INDIRECT_ACCESS_TYPE_CFA_RX_LOOKUP_TCAM         0xfUL
+       #define DBG_READ_INDIRECT_REQ_INDIRECT_ACCESS_TYPE_MHB                        0x10UL
+       #define DBG_READ_INDIRECT_REQ_INDIRECT_ACCESS_TYPE_PCIE_GBL                   0x11UL
+       #define DBG_READ_INDIRECT_REQ_INDIRECT_ACCESS_TYPE_MULTI_HOST_SOC             0x12UL
+       #define DBG_READ_INDIRECT_REQ_INDIRECT_ACCESS_TYPE_LAST                      DBG_READ_INDIRECT_REQ_INDIRECT_ACCESS_TYPE_MULTI_HOST_SOC
+       u8      unused_0[3];
+       __le32  start_index;
+       __le32  num_of_entries;
+};
+
+/* hwrm_dbg_read_indirect_output (size:128b/16B) */
+struct hwrm_dbg_read_indirect_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_dbg_write_indirect_input (size:512b/64B) */
+struct hwrm_dbg_write_indirect_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       u8      indirect_access_type;
+       #define DBG_WRITE_INDIRECT_REQ_INDIRECT_ACCESS_TYPE_TE_MGMT_FILTERS_L2         0x0UL
+       #define DBG_WRITE_INDIRECT_REQ_INDIRECT_ACCESS_TYPE_TE_MGMT_FILTERS_L3L4       0x1UL
+       #define DBG_WRITE_INDIRECT_REQ_INDIRECT_ACCESS_TYPE_RE_MGMT_FILTERS_L2         0x2UL
+       #define DBG_WRITE_INDIRECT_REQ_INDIRECT_ACCESS_TYPE_RE_MGMT_FILTERS_L3L4       0x3UL
+       #define DBG_WRITE_INDIRECT_REQ_INDIRECT_ACCESS_TYPE_STAT_CTXS                  0x4UL
+       #define DBG_WRITE_INDIRECT_REQ_INDIRECT_ACCESS_TYPE_CFA_TX_L2_TCAM             0x5UL
+       #define DBG_WRITE_INDIRECT_REQ_INDIRECT_ACCESS_TYPE_CFA_RX_L2_TCAM             0x6UL
+       #define DBG_WRITE_INDIRECT_REQ_INDIRECT_ACCESS_TYPE_CFA_TX_IPV6_SUBNET_TCAM    0x7UL
+       #define DBG_WRITE_INDIRECT_REQ_INDIRECT_ACCESS_TYPE_CFA_RX_IPV6_SUBNET_TCAM    0x8UL
+       #define DBG_WRITE_INDIRECT_REQ_INDIRECT_ACCESS_TYPE_CFA_TX_SRC_PROPERTIES_TCAM 0x9UL
+       #define DBG_WRITE_INDIRECT_REQ_INDIRECT_ACCESS_TYPE_CFA_RX_SRC_PROPERTIES_TCAM 0xaUL
+       #define DBG_WRITE_INDIRECT_REQ_INDIRECT_ACCESS_TYPE_CFA_VEB_LOOKUP_TCAM        0xbUL
+       #define DBG_WRITE_INDIRECT_REQ_INDIRECT_ACCESS_TYPE_CFA_TX_PROFILE_LOOKUP_TCAM 0xcUL
+       #define DBG_WRITE_INDIRECT_REQ_INDIRECT_ACCESS_TYPE_CFA_RX_PROFILE_LOOKUP_TCAM 0xdUL
+       #define DBG_WRITE_INDIRECT_REQ_INDIRECT_ACCESS_TYPE_CFA_TX_LOOKUP_TCAM         0xeUL
+       #define DBG_WRITE_INDIRECT_REQ_INDIRECT_ACCESS_TYPE_CFA_RX_LOOKUP_TCAM         0xfUL
+       #define DBG_WRITE_INDIRECT_REQ_INDIRECT_ACCESS_TYPE_MHB                        0x10UL
+       #define DBG_WRITE_INDIRECT_REQ_INDIRECT_ACCESS_TYPE_PCIE_GBL                   0x11UL
+       #define DBG_WRITE_INDIRECT_REQ_INDIRECT_ACCESS_TYPE_MULTI_HOST_SOC             0x12UL
+       #define DBG_WRITE_INDIRECT_REQ_INDIRECT_ACCESS_TYPE_LAST                      DBG_WRITE_INDIRECT_REQ_INDIRECT_ACCESS_TYPE_MULTI_HOST_SOC
+       u8      unused_0[3];
+       __le32  start_index;
+       __le32  num_of_entries;
+       u8      unused_1[4];
+       __le32  write_data[8];
+};
+
+/* hwrm_dbg_write_indirect_output (size:128b/16B) */
+struct hwrm_dbg_write_indirect_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_dbg_dump_input (size:320b/40B) */
+struct hwrm_dbg_dump_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le32  handle;
+       u8      unused_0[4];
+       __le64  host_dbg_dump_addr;
+       __le64  host_dbg_dump_addr_len;
+};
+
+/* hwrm_dbg_dump_output (size:192b/24B) */
+struct hwrm_dbg_dump_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le32  nexthandle;
+       __le32  dbg_data_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_dbg_erase_nvm_input (size:192b/24B) */
+struct hwrm_dbg_erase_nvm_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le16  flags;
+       #define DBG_ERASE_NVM_REQ_FLAGS_ERASE_ALL     0x1UL
+       u8      unused_0[6];
+};
+
+/* hwrm_dbg_erase_nvm_output (size:128b/16B) */
+struct hwrm_dbg_erase_nvm_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_dbg_cfg_input (size:192b/24B) */
+struct hwrm_dbg_cfg_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le32  flags;
+       #define DBG_CFG_REQ_FLAGS_UART_LOG               0x1UL
+       #define DBG_CFG_REQ_FLAGS_UART_LOG_SECONDARY     0x2UL
+       u8      unused_0[4];
+};
+
+/* hwrm_dbg_cfg_output (size:128b/16B) */
+struct hwrm_dbg_cfg_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* coredump_segment_record (size:128b/16B) */
+struct coredump_segment_record {
+       __le16  component_id;
+       __le16  segment_id;
+       __le16  max_instances;
+       u8      version_hi;
+       u8      version_low;
+       u8      seg_flags;
+       u8      unused_0[7];
+};
+
+/* hwrm_dbg_coredump_list_input (size:256b/32B) */
+struct hwrm_dbg_coredump_list_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le64  host_dest_addr;
+       __le32  host_buf_len;
+       __le16  seq_no;
+       u8      unused_0[2];
+};
+
+/* hwrm_dbg_coredump_list_output (size:128b/16B) */
+struct hwrm_dbg_coredump_list_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      flags;
+       #define DBG_COREDUMP_LIST_RESP_FLAGS_MORE     0x1UL
+       u8      unused_0;
+       __le16  total_segments;
+       __le16  data_len;
+       u8      unused_1;
+       u8      valid;
+};
+
+/* hwrm_dbg_coredump_initiate_input (size:256b/32B) */
+struct hwrm_dbg_coredump_initiate_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le16  component_id;
+       __le16  segment_id;
+       __le16  instance;
+       __le16  unused_0;
+       u8      seg_flags;
+       u8      unused_1[7];
+};
+
+/* hwrm_dbg_coredump_initiate_output (size:128b/16B) */
+struct hwrm_dbg_coredump_initiate_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* coredump_data_hdr (size:128b/16B) */
+struct coredump_data_hdr {
+       __le32  address;
+       __le32  flags_length;
+       __le32  instance;
+       __le32  next_offset;
+};
+
+/* hwrm_dbg_coredump_retrieve_input (size:448b/56B) */
+struct hwrm_dbg_coredump_retrieve_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le64  host_dest_addr;
+       __le32  host_buf_len;
+       __le32  unused_0;
+       __le16  component_id;
+       __le16  segment_id;
+       __le16  instance;
+       __le16  unused_1;
+       u8      seg_flags;
+       u8      unused_2;
+       __le16  unused_3;
+       __le32  unused_4;
+       __le32  seq_no;
+       __le32  unused_5;
+};
+
+/* hwrm_dbg_coredump_retrieve_output (size:128b/16B) */
+struct hwrm_dbg_coredump_retrieve_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      flags;
+       #define DBG_COREDUMP_RETRIEVE_RESP_FLAGS_MORE     0x1UL
+       u8      unused_0;
+       __le16  data_len;
+       u8      unused_1[3];
+       u8      valid;
+};
+
+/* hwrm_dbg_i2c_cmd_input (size:320b/40B) */
+struct hwrm_dbg_i2c_cmd_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le64  host_dest_addr;
+       __le16  read_size;
+       __le16  write_size;
+       u8      chnl_id;
+       u8      options;
+       #define DBG_I2C_CMD_REQ_OPTIONS_10_BIT_ADDRESSING     0x1UL
+       #define DBG_I2C_CMD_REQ_OPTIONS_FAST_MODE             0x2UL
+       __le16  slave_addr;
+       u8      xfer_mode;
+       #define DBG_I2C_CMD_REQ_XFER_MODE_MASTER_READ       0x0UL
+       #define DBG_I2C_CMD_REQ_XFER_MODE_MASTER_WRITE      0x1UL
+       #define DBG_I2C_CMD_REQ_XFER_MODE_MASTER_WRITE_READ 0x2UL
+       #define DBG_I2C_CMD_REQ_XFER_MODE_LAST             DBG_I2C_CMD_REQ_XFER_MODE_MASTER_WRITE_READ
+       u8      unused_1[7];
+};
+
+/* hwrm_dbg_i2c_cmd_output (size:128b/16B) */
+struct hwrm_dbg_i2c_cmd_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_dbg_fw_cli_input (size:1024b/128B) */
+struct hwrm_dbg_fw_cli_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le64  host_dest_addr;
+       __le32  host_buf_len;
+       __le16  cli_cmd_len;
+       u8      unused_0[2];
+       u8      cli_cmd[96];
+};
+
+/* hwrm_dbg_fw_cli_output (size:128b/16B) */
+struct hwrm_dbg_fw_cli_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le32  cli_data_len;
+       u8      unused_0[3];
+       u8      valid;
+};
+
+/* hwrm_dbg_ring_info_get_input (size:192b/24B) */
+struct hwrm_dbg_ring_info_get_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       u8      ring_type;
+       #define DBG_RING_INFO_GET_REQ_RING_TYPE_L2_CMPL 0x0UL
+       #define DBG_RING_INFO_GET_REQ_RING_TYPE_TX      0x1UL
+       #define DBG_RING_INFO_GET_REQ_RING_TYPE_RX      0x2UL
+       #define DBG_RING_INFO_GET_REQ_RING_TYPE_LAST   DBG_RING_INFO_GET_REQ_RING_TYPE_RX
+       u8      unused_0[3];
+       __le32  fw_ring_id;
+};
+
+/* hwrm_dbg_ring_info_get_output (size:192b/24B) */
+struct hwrm_dbg_ring_info_get_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le32  producer_index;
+       __le32  consumer_index;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_nvm_raw_write_blk_input (size:256b/32B) */
+struct hwrm_nvm_raw_write_blk_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le64  host_src_addr;
+       __le32  dest_addr;
+       __le32  len;
+};
+
+/* hwrm_nvm_raw_write_blk_output (size:128b/16B) */
+struct hwrm_nvm_raw_write_blk_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_nvm_read_input (size:320b/40B) */
+struct hwrm_nvm_read_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le64  host_dest_addr;
+       __le16  dir_idx;
+       u8      unused_0[2];
+       __le32  offset;
+       __le32  len;
+       u8      unused_1[4];
+};
+
+/* hwrm_nvm_read_output (size:128b/16B) */
+struct hwrm_nvm_read_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_nvm_raw_dump_input (size:256b/32B) */
+struct hwrm_nvm_raw_dump_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le64  host_dest_addr;
+       __le32  offset;
+       __le32  len;
+};
+
+/* hwrm_nvm_raw_dump_output (size:128b/16B) */
+struct hwrm_nvm_raw_dump_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_nvm_get_dir_entries_input (size:192b/24B) */
+struct hwrm_nvm_get_dir_entries_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le64  host_dest_addr;
+};
+
+/* hwrm_nvm_get_dir_entries_output (size:128b/16B) */
+struct hwrm_nvm_get_dir_entries_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_nvm_get_dir_info_input (size:128b/16B) */
+struct hwrm_nvm_get_dir_info_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+};
+
+/* hwrm_nvm_get_dir_info_output (size:192b/24B) */
+struct hwrm_nvm_get_dir_info_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le32  entries;
+       __le32  entry_length;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_nvm_write_input (size:384b/48B) */
+struct hwrm_nvm_write_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le64  host_src_addr;
+       __le16  dir_type;
+       __le16  dir_ordinal;
+       __le16  dir_ext;
+       __le16  dir_attr;
+       __le32  dir_data_length;
+       __le16  option;
+       __le16  flags;
+       #define NVM_WRITE_REQ_FLAGS_KEEP_ORIG_ACTIVE_IMG     0x1UL
+       __le32  dir_item_length;
+       __le32  unused_0;
+};
+
+/* hwrm_nvm_write_output (size:128b/16B) */
+struct hwrm_nvm_write_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le32  dir_item_length;
+       __le16  dir_idx;
+       u8      unused_0;
+       u8      valid;
+};
+
+/* hwrm_nvm_write_cmd_err (size:64b/8B) */
+struct hwrm_nvm_write_cmd_err {
+       u8      code;
+       #define NVM_WRITE_CMD_ERR_CODE_UNKNOWN  0x0UL
+       #define NVM_WRITE_CMD_ERR_CODE_FRAG_ERR 0x1UL
+       #define NVM_WRITE_CMD_ERR_CODE_NO_SPACE 0x2UL
+       #define NVM_WRITE_CMD_ERR_CODE_LAST    NVM_WRITE_CMD_ERR_CODE_NO_SPACE
+       u8      unused_0[7];
+};
+
+/* hwrm_nvm_modify_input (size:320b/40B) */
+struct hwrm_nvm_modify_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le64  host_src_addr;
+       __le16  dir_idx;
+       u8      unused_0[2];
+       __le32  offset;
+       __le32  len;
+       u8      unused_1[4];
+};
+
+/* hwrm_nvm_modify_output (size:128b/16B) */
+struct hwrm_nvm_modify_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_nvm_find_dir_entry_input (size:256b/32B) */
+struct hwrm_nvm_find_dir_entry_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le32  enables;
+       #define NVM_FIND_DIR_ENTRY_REQ_ENABLES_DIR_IDX_VALID     0x1UL
+       __le16  dir_idx;
+       __le16  dir_type;
+       __le16  dir_ordinal;
+       __le16  dir_ext;
+       u8      opt_ordinal;
+       #define NVM_FIND_DIR_ENTRY_REQ_OPT_ORDINAL_MASK 0x3UL
+       #define NVM_FIND_DIR_ENTRY_REQ_OPT_ORDINAL_SFT 0
+       #define NVM_FIND_DIR_ENTRY_REQ_OPT_ORDINAL_EQ    0x0UL
+       #define NVM_FIND_DIR_ENTRY_REQ_OPT_ORDINAL_GE    0x1UL
+       #define NVM_FIND_DIR_ENTRY_REQ_OPT_ORDINAL_GT    0x2UL
+       #define NVM_FIND_DIR_ENTRY_REQ_OPT_ORDINAL_LAST NVM_FIND_DIR_ENTRY_REQ_OPT_ORDINAL_GT
+       u8      unused_0[3];
+};
+
+/* hwrm_nvm_find_dir_entry_output (size:256b/32B) */
+struct hwrm_nvm_find_dir_entry_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le32  dir_item_length;
+       __le32  dir_data_length;
+       __le32  fw_ver;
+       __le16  dir_ordinal;
+       __le16  dir_idx;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_nvm_erase_dir_entry_input (size:192b/24B) */
+struct hwrm_nvm_erase_dir_entry_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le16  dir_idx;
+       u8      unused_0[6];
+};
+
+/* hwrm_nvm_erase_dir_entry_output (size:128b/16B) */
+struct hwrm_nvm_erase_dir_entry_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_nvm_get_dev_info_input (size:128b/16B) */
+struct hwrm_nvm_get_dev_info_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+};
+
+/* hwrm_nvm_get_dev_info_output (size:256b/32B) */
+struct hwrm_nvm_get_dev_info_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le16  manufacturer_id;
+       __le16  device_id;
+       __le32  sector_size;
+       __le32  nvram_size;
+       __le32  reserved_size;
+       __le32  available_size;
+       u8      unused_0[3];
+       u8      valid;
+};
+
+/* hwrm_nvm_mod_dir_entry_input (size:256b/32B) */
+struct hwrm_nvm_mod_dir_entry_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le32  enables;
+       #define NVM_MOD_DIR_ENTRY_REQ_ENABLES_CHECKSUM     0x1UL
+       __le16  dir_idx;
+       __le16  dir_ordinal;
+       __le16  dir_ext;
+       __le16  dir_attr;
+       __le32  checksum;
+};
+
+/* hwrm_nvm_mod_dir_entry_output (size:128b/16B) */
+struct hwrm_nvm_mod_dir_entry_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_nvm_verify_update_input (size:192b/24B) */
+struct hwrm_nvm_verify_update_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le16  dir_type;
+       __le16  dir_ordinal;
+       __le16  dir_ext;
+       u8      unused_0[2];
+};
+
+/* hwrm_nvm_verify_update_output (size:128b/16B) */
+struct hwrm_nvm_verify_update_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_nvm_install_update_input (size:192b/24B) */
+struct hwrm_nvm_install_update_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le32  install_type;
+       #define NVM_INSTALL_UPDATE_REQ_INSTALL_TYPE_NORMAL 0x0UL
+       #define NVM_INSTALL_UPDATE_REQ_INSTALL_TYPE_ALL    0xffffffffUL
+       #define NVM_INSTALL_UPDATE_REQ_INSTALL_TYPE_LAST  NVM_INSTALL_UPDATE_REQ_INSTALL_TYPE_ALL
+       __le16  flags;
+       #define NVM_INSTALL_UPDATE_REQ_FLAGS_ERASE_UNUSED_SPACE     0x1UL
+       #define NVM_INSTALL_UPDATE_REQ_FLAGS_REMOVE_UNUSED_PKG      0x2UL
+       #define NVM_INSTALL_UPDATE_REQ_FLAGS_ALLOWED_TO_DEFRAG      0x4UL
+       u8      unused_0[2];
+};
+
+/* hwrm_nvm_install_update_output (size:192b/24B) */
+struct hwrm_nvm_install_update_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le64  installed_items;
+       u8      result;
+       #define NVM_INSTALL_UPDATE_RESP_RESULT_SUCCESS 0x0UL
+       #define NVM_INSTALL_UPDATE_RESP_RESULT_LAST   NVM_INSTALL_UPDATE_RESP_RESULT_SUCCESS
+       u8      problem_item;
+       #define NVM_INSTALL_UPDATE_RESP_PROBLEM_ITEM_NONE    0x0UL
+       #define NVM_INSTALL_UPDATE_RESP_PROBLEM_ITEM_PACKAGE 0xffUL
+       #define NVM_INSTALL_UPDATE_RESP_PROBLEM_ITEM_LAST   NVM_INSTALL_UPDATE_RESP_PROBLEM_ITEM_PACKAGE
+       u8      reset_required;
+       #define NVM_INSTALL_UPDATE_RESP_RESET_REQUIRED_NONE  0x0UL
+       #define NVM_INSTALL_UPDATE_RESP_RESET_REQUIRED_PCI   0x1UL
+       #define NVM_INSTALL_UPDATE_RESP_RESET_REQUIRED_POWER 0x2UL
+       #define NVM_INSTALL_UPDATE_RESP_RESET_REQUIRED_LAST NVM_INSTALL_UPDATE_RESP_RESET_REQUIRED_POWER
+       u8      unused_0[4];
+       u8      valid;
+};
+
+/* hwrm_nvm_install_update_cmd_err (size:64b/8B) */
+struct hwrm_nvm_install_update_cmd_err {
+       u8      code;
+       #define NVM_INSTALL_UPDATE_CMD_ERR_CODE_UNKNOWN  0x0UL
+       #define NVM_INSTALL_UPDATE_CMD_ERR_CODE_FRAG_ERR 0x1UL
+       #define NVM_INSTALL_UPDATE_CMD_ERR_CODE_NO_SPACE 0x2UL
+       #define NVM_INSTALL_UPDATE_CMD_ERR_CODE_LAST    NVM_INSTALL_UPDATE_CMD_ERR_CODE_NO_SPACE
+       u8      unused_0[7];
+};
+
+/* hwrm_nvm_flush_input (size:128b/16B) */
+struct hwrm_nvm_flush_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+};
+
+/* hwrm_nvm_flush_output (size:128b/16B) */
+struct hwrm_nvm_flush_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_nvm_flush_cmd_err (size:64b/8B) */
+struct hwrm_nvm_flush_cmd_err {
+       u8      code;
+       #define NVM_FLUSH_CMD_ERR_CODE_UNKNOWN 0x0UL
+       #define NVM_FLUSH_CMD_ERR_CODE_FAIL    0x1UL
+       #define NVM_FLUSH_CMD_ERR_CODE_LAST   NVM_FLUSH_CMD_ERR_CODE_FAIL
+       u8      unused_0[7];
+};
+
+/* hwrm_nvm_get_variable_input (size:320b/40B) */
+struct hwrm_nvm_get_variable_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le64  dest_data_addr;
+       __le16  data_len;
+       __le16  option_num;
+       #define NVM_GET_VARIABLE_REQ_OPTION_NUM_RSVD_0    0x0UL
+       #define NVM_GET_VARIABLE_REQ_OPTION_NUM_RSVD_FFFF 0xffffUL
+       #define NVM_GET_VARIABLE_REQ_OPTION_NUM_LAST     NVM_GET_VARIABLE_REQ_OPTION_NUM_RSVD_FFFF
+       __le16  dimensions;
+       __le16  index_0;
+       __le16  index_1;
+       __le16  index_2;
+       __le16  index_3;
+       u8      flags;
+       #define NVM_GET_VARIABLE_REQ_FLAGS_FACTORY_DFLT     0x1UL
+       u8      unused_0;
+};
+
+/* hwrm_nvm_get_variable_output (size:128b/16B) */
+struct hwrm_nvm_get_variable_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le16  data_len;
+       __le16  option_num;
+       #define NVM_GET_VARIABLE_RESP_OPTION_NUM_RSVD_0    0x0UL
+       #define NVM_GET_VARIABLE_RESP_OPTION_NUM_RSVD_FFFF 0xffffUL
+       #define NVM_GET_VARIABLE_RESP_OPTION_NUM_LAST     NVM_GET_VARIABLE_RESP_OPTION_NUM_RSVD_FFFF
+       u8      unused_0[3];
+       u8      valid;
+};
+
+/* hwrm_nvm_get_variable_cmd_err (size:64b/8B) */
+struct hwrm_nvm_get_variable_cmd_err {
+       u8      code;
+       #define NVM_GET_VARIABLE_CMD_ERR_CODE_UNKNOWN       0x0UL
+       #define NVM_GET_VARIABLE_CMD_ERR_CODE_VAR_NOT_EXIST 0x1UL
+       #define NVM_GET_VARIABLE_CMD_ERR_CODE_CORRUPT_VAR   0x2UL
+       #define NVM_GET_VARIABLE_CMD_ERR_CODE_LEN_TOO_SHORT 0x3UL
+       #define NVM_GET_VARIABLE_CMD_ERR_CODE_LAST         NVM_GET_VARIABLE_CMD_ERR_CODE_LEN_TOO_SHORT
+       u8      unused_0[7];
+};
+
+/* hwrm_nvm_set_variable_input (size:320b/40B) */
+struct hwrm_nvm_set_variable_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le64  src_data_addr;
+       __le16  data_len;
+       __le16  option_num;
+       #define NVM_SET_VARIABLE_REQ_OPTION_NUM_RSVD_0    0x0UL
+       #define NVM_SET_VARIABLE_REQ_OPTION_NUM_RSVD_FFFF 0xffffUL
+       #define NVM_SET_VARIABLE_REQ_OPTION_NUM_LAST     NVM_SET_VARIABLE_REQ_OPTION_NUM_RSVD_FFFF
+       __le16  dimensions;
+       __le16  index_0;
+       __le16  index_1;
+       __le16  index_2;
+       __le16  index_3;
+       u8      flags;
+       #define NVM_SET_VARIABLE_REQ_FLAGS_FORCE_FLUSH                0x1UL
+       #define NVM_SET_VARIABLE_REQ_FLAGS_ENCRYPT_MODE_MASK          0xeUL
+       #define NVM_SET_VARIABLE_REQ_FLAGS_ENCRYPT_MODE_SFT           1
+       #define NVM_SET_VARIABLE_REQ_FLAGS_ENCRYPT_MODE_NONE            (0x0UL << 1)
+       #define NVM_SET_VARIABLE_REQ_FLAGS_ENCRYPT_MODE_HMAC_SHA1       (0x1UL << 1)
+       #define NVM_SET_VARIABLE_REQ_FLAGS_ENCRYPT_MODE_AES256          (0x2UL << 1)
+       #define NVM_SET_VARIABLE_REQ_FLAGS_ENCRYPT_MODE_HMAC_SHA1_AUTH  (0x3UL << 1)
+       #define NVM_SET_VARIABLE_REQ_FLAGS_ENCRYPT_MODE_LAST           NVM_SET_VARIABLE_REQ_FLAGS_ENCRYPT_MODE_HMAC_SHA1_AUTH
+       u8      unused_0;
+};
+
+/* hwrm_nvm_set_variable_output (size:128b/16B) */
+struct hwrm_nvm_set_variable_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_nvm_set_variable_cmd_err (size:64b/8B) */
+struct hwrm_nvm_set_variable_cmd_err {
+       u8      code;
+       #define NVM_SET_VARIABLE_CMD_ERR_CODE_UNKNOWN       0x0UL
+       #define NVM_SET_VARIABLE_CMD_ERR_CODE_VAR_NOT_EXIST 0x1UL
+       #define NVM_SET_VARIABLE_CMD_ERR_CODE_CORRUPT_VAR   0x2UL
+       #define NVM_SET_VARIABLE_CMD_ERR_CODE_LAST         NVM_SET_VARIABLE_CMD_ERR_CODE_CORRUPT_VAR
+       u8      unused_0[7];
+};
+
+/* hwrm_nvm_validate_option_input (size:320b/40B) */
+struct hwrm_nvm_validate_option_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le64  src_data_addr;
+       __le16  data_len;
+       __le16  option_num;
+       #define NVM_VALIDATE_OPTION_REQ_OPTION_NUM_RSVD_0    0x0UL
+       #define NVM_VALIDATE_OPTION_REQ_OPTION_NUM_RSVD_FFFF 0xffffUL
+       #define NVM_VALIDATE_OPTION_REQ_OPTION_NUM_LAST     NVM_VALIDATE_OPTION_REQ_OPTION_NUM_RSVD_FFFF
+       __le16  dimensions;
+       __le16  index_0;
+       __le16  index_1;
+       __le16  index_2;
+       __le16  index_3;
+       u8      unused_0[2];
+};
+
+/* hwrm_nvm_validate_option_output (size:128b/16B) */
+struct hwrm_nvm_validate_option_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      result;
+       #define NVM_VALIDATE_OPTION_RESP_RESULT_NOT_MATCH 0x0UL
+       #define NVM_VALIDATE_OPTION_RESP_RESULT_MATCH     0x1UL
+       #define NVM_VALIDATE_OPTION_RESP_RESULT_LAST     NVM_VALIDATE_OPTION_RESP_RESULT_MATCH
+       u8      unused_0[6];
+       u8      valid;
+};
+
+/* hwrm_nvm_validate_option_cmd_err (size:64b/8B) */
+struct hwrm_nvm_validate_option_cmd_err {
+       u8      code;
+       #define NVM_VALIDATE_OPTION_CMD_ERR_CODE_UNKNOWN 0x0UL
+       #define NVM_VALIDATE_OPTION_CMD_ERR_CODE_LAST   NVM_VALIDATE_OPTION_CMD_ERR_CODE_UNKNOWN
+       u8      unused_0[7];
+};
+
+/* hwrm_nvm_factory_defaults_input (size:192b/24B) */
+struct hwrm_nvm_factory_defaults_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       u8      mode;
+       #define NVM_FACTORY_DEFAULTS_REQ_MODE_RESTORE 0x0UL
+       #define NVM_FACTORY_DEFAULTS_REQ_MODE_CREATE  0x1UL
+       #define NVM_FACTORY_DEFAULTS_REQ_MODE_LAST   NVM_FACTORY_DEFAULTS_REQ_MODE_CREATE
+       u8      unused_0[7];
+};
+
+/* hwrm_nvm_factory_defaults_output (size:128b/16B) */
+struct hwrm_nvm_factory_defaults_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      result;
+       #define NVM_FACTORY_DEFAULTS_RESP_RESULT_CREATE_OK      0x0UL
+       #define NVM_FACTORY_DEFAULTS_RESP_RESULT_RESTORE_OK     0x1UL
+       #define NVM_FACTORY_DEFAULTS_RESP_RESULT_CREATE_ALREADY 0x2UL
+       #define NVM_FACTORY_DEFAULTS_RESP_RESULT_LAST          NVM_FACTORY_DEFAULTS_RESP_RESULT_CREATE_ALREADY
+       u8      unused_0[6];
+       u8      valid;
+};
+
+/* hwrm_nvm_factory_defaults_cmd_err (size:64b/8B) */
+struct hwrm_nvm_factory_defaults_cmd_err {
+       u8      code;
+       #define NVM_FACTORY_DEFAULTS_CMD_ERR_CODE_UNKNOWN      0x0UL
+       #define NVM_FACTORY_DEFAULTS_CMD_ERR_CODE_NO_VALID_CFG 0x1UL
+       #define NVM_FACTORY_DEFAULTS_CMD_ERR_CODE_NO_SAVED_CFG 0x2UL
+       #define NVM_FACTORY_DEFAULTS_CMD_ERR_CODE_LAST        NVM_FACTORY_DEFAULTS_CMD_ERR_CODE_NO_SAVED_CFG
+       u8      unused_0[7];
+};
+
+/* hwrm_selftest_qlist_input (size:128b/16B) */
+struct hwrm_selftest_qlist_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+};
+
+/* hwrm_selftest_qlist_output (size:2240b/280B) */
+struct hwrm_selftest_qlist_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      num_tests;
+       u8      available_tests;
+       #define SELFTEST_QLIST_RESP_AVAILABLE_TESTS_NVM_TEST                 0x1UL
+       #define SELFTEST_QLIST_RESP_AVAILABLE_TESTS_LINK_TEST                0x2UL
+       #define SELFTEST_QLIST_RESP_AVAILABLE_TESTS_REGISTER_TEST            0x4UL
+       #define SELFTEST_QLIST_RESP_AVAILABLE_TESTS_MEMORY_TEST              0x8UL
+       #define SELFTEST_QLIST_RESP_AVAILABLE_TESTS_PCIE_SERDES_TEST         0x10UL
+       #define SELFTEST_QLIST_RESP_AVAILABLE_TESTS_ETHERNET_SERDES_TEST     0x20UL
+       u8      offline_tests;
+       #define SELFTEST_QLIST_RESP_OFFLINE_TESTS_NVM_TEST                 0x1UL
+       #define SELFTEST_QLIST_RESP_OFFLINE_TESTS_LINK_TEST                0x2UL
+       #define SELFTEST_QLIST_RESP_OFFLINE_TESTS_REGISTER_TEST            0x4UL
+       #define SELFTEST_QLIST_RESP_OFFLINE_TESTS_MEMORY_TEST              0x8UL
+       #define SELFTEST_QLIST_RESP_OFFLINE_TESTS_PCIE_SERDES_TEST         0x10UL
+       #define SELFTEST_QLIST_RESP_OFFLINE_TESTS_ETHERNET_SERDES_TEST     0x20UL
+       u8      unused_0;
+       __le16  test_timeout;
+       u8      unused_1[2];
+       char    test0_name[32];
+       char    test1_name[32];
+       char    test2_name[32];
+       char    test3_name[32];
+       char    test4_name[32];
+       char    test5_name[32];
+       char    test6_name[32];
+       char    test7_name[32];
+       u8      unused_2[7];
+       u8      valid;
+};
+
+/* hwrm_selftest_exec_input (size:192b/24B) */
+struct hwrm_selftest_exec_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       u8      flags;
+       #define SELFTEST_EXEC_REQ_FLAGS_NVM_TEST                 0x1UL
+       #define SELFTEST_EXEC_REQ_FLAGS_LINK_TEST                0x2UL
+       #define SELFTEST_EXEC_REQ_FLAGS_REGISTER_TEST            0x4UL
+       #define SELFTEST_EXEC_REQ_FLAGS_MEMORY_TEST              0x8UL
+       #define SELFTEST_EXEC_REQ_FLAGS_PCIE_SERDES_TEST         0x10UL
+       #define SELFTEST_EXEC_REQ_FLAGS_ETHERNET_SERDES_TEST     0x20UL
+       u8      unused_0[7];
+};
+
+/* hwrm_selftest_exec_output (size:128b/16B) */
+struct hwrm_selftest_exec_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      requested_tests;
+       #define SELFTEST_EXEC_RESP_REQUESTED_TESTS_NVM_TEST                 0x1UL
+       #define SELFTEST_EXEC_RESP_REQUESTED_TESTS_LINK_TEST                0x2UL
+       #define SELFTEST_EXEC_RESP_REQUESTED_TESTS_REGISTER_TEST            0x4UL
+       #define SELFTEST_EXEC_RESP_REQUESTED_TESTS_MEMORY_TEST              0x8UL
+       #define SELFTEST_EXEC_RESP_REQUESTED_TESTS_PCIE_SERDES_TEST         0x10UL
+       #define SELFTEST_EXEC_RESP_REQUESTED_TESTS_ETHERNET_SERDES_TEST     0x20UL
+       u8      test_success;
+       #define SELFTEST_EXEC_RESP_TEST_SUCCESS_NVM_TEST                 0x1UL
+       #define SELFTEST_EXEC_RESP_TEST_SUCCESS_LINK_TEST                0x2UL
+       #define SELFTEST_EXEC_RESP_TEST_SUCCESS_REGISTER_TEST            0x4UL
+       #define SELFTEST_EXEC_RESP_TEST_SUCCESS_MEMORY_TEST              0x8UL
+       #define SELFTEST_EXEC_RESP_TEST_SUCCESS_PCIE_SERDES_TEST         0x10UL
+       #define SELFTEST_EXEC_RESP_TEST_SUCCESS_ETHERNET_SERDES_TEST     0x20UL
+       u8      unused_0[5];
+       u8      valid;
+};
+
+/* hwrm_selftest_irq_input (size:128b/16B) */
+struct hwrm_selftest_irq_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+};
+
+/* hwrm_selftest_irq_output (size:128b/16B) */
+struct hwrm_selftest_irq_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       u8      unused_0[7];
+       u8      valid;
+};
+
+/* hwrm_selftest_retrieve_serdes_data_input (size:256b/32B) */
+struct hwrm_selftest_retrieve_serdes_data_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le64  resp_data_addr;
+       __le32  resp_data_offset;
+       __le16  data_len;
+       u8      flags;
+       #define SELFTEST_RETRIEVE_SERDES_DATA_REQ_FLAGS_UNUSED_TEST_MASK         0x7UL
+       #define SELFTEST_RETRIEVE_SERDES_DATA_REQ_FLAGS_UNUSED_TEST_SFT          0
+       #define SELFTEST_RETRIEVE_SERDES_DATA_REQ_FLAGS_EYE_PROJECTION           0x8UL
+       #define SELFTEST_RETRIEVE_SERDES_DATA_REQ_FLAGS_PCIE_SERDES_TEST         0x10UL
+       #define SELFTEST_RETRIEVE_SERDES_DATA_REQ_FLAGS_ETHERNET_SERDES_TEST     0x20UL
+       u8      options;
+       #define SELFTEST_RETRIEVE_SERDES_DATA_REQ_OPTIONS_PCIE_LANE_NO_MASK     0xfUL
+       #define SELFTEST_RETRIEVE_SERDES_DATA_REQ_OPTIONS_PCIE_LANE_NO_SFT      0
+       #define SELFTEST_RETRIEVE_SERDES_DATA_REQ_OPTIONS_DIRECTION             0x10UL
+       #define SELFTEST_RETRIEVE_SERDES_DATA_REQ_OPTIONS_DIRECTION_HORIZONTAL    (0x0UL << 4)
+       #define SELFTEST_RETRIEVE_SERDES_DATA_REQ_OPTIONS_DIRECTION_VERTICAL      (0x1UL << 4)
+       #define SELFTEST_RETRIEVE_SERDES_DATA_REQ_OPTIONS_DIRECTION_LAST         SELFTEST_RETRIEVE_SERDES_DATA_REQ_OPTIONS_DIRECTION_VERTICAL
+       #define SELFTEST_RETRIEVE_SERDES_DATA_REQ_OPTIONS_PROJ_TYPE             0x20UL
+       #define SELFTEST_RETRIEVE_SERDES_DATA_REQ_OPTIONS_PROJ_TYPE_LEFT_TOP      (0x0UL << 5)
+       #define SELFTEST_RETRIEVE_SERDES_DATA_REQ_OPTIONS_PROJ_TYPE_RIGHT_BOTTOM  (0x1UL << 5)
+       #define SELFTEST_RETRIEVE_SERDES_DATA_REQ_OPTIONS_PROJ_TYPE_LAST         SELFTEST_RETRIEVE_SERDES_DATA_REQ_OPTIONS_PROJ_TYPE_RIGHT_BOTTOM
+       #define SELFTEST_RETRIEVE_SERDES_DATA_REQ_OPTIONS_RSVD_MASK             0xc0UL
+       #define SELFTEST_RETRIEVE_SERDES_DATA_REQ_OPTIONS_RSVD_SFT              6
+};
+
+/* hwrm_selftest_retrieve_serdes_data_output (size:128b/16B) */
+struct hwrm_selftest_retrieve_serdes_data_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le16  total_data_len;
+       __le16  copied_data_len;
+       u8      unused_0[3];
+       u8      valid;
+};
+
+/* hwrm_oem_cmd_input (size:1024b/128B) */
+struct hwrm_oem_cmd_input {
+       __le16  req_type;
+       __le16  cmpl_ring;
+       __le16  seq_id;
+       __le16  target_id;
+       __le64  resp_addr;
+       __le32  IANA;
+       __le32  unused_0;
+       __le32  oem_data[26];
+};
+
+/* hwrm_oem_cmd_output (size:1344b/168B) */
+struct hwrm_oem_cmd_output {
+       __le16  error_code;
+       __le16  req_type;
+       __le16  seq_id;
+       __le16  resp_len;
+       __le32  IANA;
+       __le32  unused_0;
+       __le32  oem_data[36];
+       u8      unused_1[7];
+       u8      valid;
+};
+
+#endif /* _BNXT_HSI_H_ */