#ifndef BNXT_HSI_H
 #define BNXT_HSI_H
 
-/* HSI and HWRM Specification 1.7.6 */
+/* HSI and HWRM Specification 1.8.0 */
 #define HWRM_VERSION_MAJOR     1
-#define HWRM_VERSION_MINOR     7
-#define HWRM_VERSION_UPDATE    6
+#define HWRM_VERSION_MINOR     8
+#define HWRM_VERSION_UPDATE    0
 
-#define HWRM_VERSION_RSVD      2 /* non-zero means beta version */
+#define HWRM_VERSION_RSVD      0 /* non-zero means beta version */
 
-#define HWRM_VERSION_STR       "1.7.6.2"
+#define HWRM_VERSION_STR       "1.8.0.0"
 /*
  * Following is the signature for HWRM message field that indicates not
  * applicable (All F's). Need to cast it the size of the field if needed.
        #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_MULTI_HOST             0x20UL
        u8 mac_address[6];
        __le16 pci_id;
        __le16 alloc_rsscos_ctx;
        u8 port_pf_cnt;
        #define FUNC_QCFG_RESP_PORT_PF_CNT_UNAVAIL                 0x0UL
        __le16 dflt_vnic_id;
-       u8 host_cnt;
-       #define FUNC_QCFG_RESP_HOST_CNT_UNAVAIL            0x0UL
        u8 unused_0;
+       u8 unused_1;
        __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_EVB_MODE_NO_EVB                     0x0UL
        #define FUNC_QCFG_RESP_EVB_MODE_VEB                        0x1UL
        #define FUNC_QCFG_RESP_EVB_MODE_VEPA                       0x2UL
-       u8 unused_1;
+       u8 unused_2;
        __le16 alloc_vfs;
        __le32 alloc_mcast_filters;
        __le32 alloc_hw_ring_grps;
        __le16 alloc_sp_tx_rings;
+       u8 unused_3;
+       u8 valid;
+};
+
+/* hwrm_func_vlan_cfg */
+/* Input (48 bytes) */
+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;
+       u8 unused_1;
+       __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_2;
+       __be16 stag_tpid;
+       __le16 ctag_vid;
+       u8 ctag_pcp;
+       u8 unused_3;
+       __be16 ctag_tpid;
+       __le32 rsvd1;
+       __le32 rsvd2;
+       __le32 unused_4;
+};
+
+/* Output (16 bytes) */
+struct hwrm_func_vlan_cfg_output {
+       __le16 error_code;
+       __le16 req_type;
+       __le16 seq_id;
+       __le16 resp_len;
+       __le32 unused_0;
+       u8 unused_1;
+       u8 unused_2;
+       u8 unused_3;
        u8 valid;
 };
 
        #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
        __le32 enables;
        #define FUNC_CFG_REQ_ENABLES_MTU                            0x1UL
        #define FUNC_CFG_REQ_ENABLES_MRU                            0x2UL
        #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_10MB                 0xffffUL
-       u8 duplex;
-       #define PORT_PHY_QCFG_RESP_DUPLEX_HALF                     0x0UL
-       #define PORT_PHY_QCFG_RESP_DUPLEX_FULL                     0x1UL
+       u8 duplex_cfg;
+       #define PORT_PHY_QCFG_RESP_DUPLEX_CFG_HALF                 0x0UL
+       #define PORT_PHY_QCFG_RESP_DUPLEX_CFG_FULL                 0x1UL
        u8 pause;
        #define PORT_PHY_QCFG_RESP_PAUSE_TX                         0x1UL
        #define PORT_PHY_QCFG_RESP_PAUSE_RX                         0x2UL
        #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
        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_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
        u8 unused_1;
-       u8 unused_2;
        char phy_vendor_name[16];
        char phy_vendor_partnumber[16];
-       __le32 unused_3;
+       __le32 unused_2;
+       u8 unused_3;
        u8 unused_4;
        u8 unused_5;
-       u8 unused_6;
        u8 valid;
 };
 
        u8 valid;
 };
 
+/* hwrm_port_mac_ptp_qcfg */
+/* Input (24 bytes) */
+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;
+       __le16 unused_0[3];
+};
+
+/* Output (80 bytes) */
+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;
+       __le16 unused_1;
+       __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;
+       __le32 unused_2;
+       u8 unused_3;
+       u8 unused_4;
+       u8 unused_5;
+       u8 valid;
+};
+
 /* hwrm_port_qstats */
 /* Input (40 bytes) */
 struct hwrm_port_qstats_input {
        __le16 req_type;
        __le16 seq_id;
        __le16 resp_len;
-       u8 eee_supported;
-       #define PORT_PHY_QCAPS_RESP_EEE_SUPPORTED                   0x1UL
-       #define PORT_PHY_QCAPS_RESP_RSVD1_MASK                      0xfeUL
-       #define PORT_PHY_QCAPS_RESP_RSVD1_SFT                       1
+       u8 flags;
+       #define PORT_PHY_QCAPS_RESP_FLAGS_EEE_SUPPORTED     0x1UL
+       #define PORT_PHY_QCAPS_RESP_FLAGS_RSVD1_MASK                0xfeUL
+       #define PORT_PHY_QCAPS_RESP_FLAGS_RSVD1_SFT                 1
        u8 unused_0;
        __le16 supported_speeds_force_mode;
        #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_100MBHD 0x1UL
        u8 valid;
 };
 
+/* hwrm_queue_dscp_qcaps */
+/* Input (24 bytes) */
+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];
+};
+
+/* Output (16 bytes) */
+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;
+       u8 unused_2;
+       u8 unused_3;
+       u8 valid;
+};
+
+/* hwrm_queue_dscp2pri_qcfg */
+/* Input (32 bytes) */
+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;
+       __le32 unused_1;
+};
+
+/* Output (16 bytes) */
+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;
+       u8 unused_1;
+       u8 unused_2;
+       u8 unused_3;
+       u8 valid;
+};
+
+/* hwrm_queue_dscp2pri_cfg */
+/* Input (40 bytes) */
+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;
+       __le32 unused_0;
+};
+
+/* Output (16 bytes) */
+struct hwrm_queue_dscp2pri_cfg_output {
+       __le16 error_code;
+       __le16 req_type;
+       __le16 seq_id;
+       __le16 resp_len;
+       __le32 unused_0;
+       u8 unused_1;
+       u8 unused_2;
+       u8 unused_3;
+       u8 valid;
+};
+
 /* hwrm_vnic_alloc */
 /* Input (24 bytes) */
 struct hwrm_vnic_alloc_input {
        #define CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_IPGRE       0x8UL
        u8 unused_0;
        __le16 unused_1;
-       __le32 encap_data[16];
+       __le32 encap_data[20];
 };
 
 /* Output (16 bytes) */
        #define CFA_NTUPLE_FILTER_ALLOC_REQ_IP_ADDR_TYPE_IPV6     0x6UL
        u8 ip_protocol;
        #define CFA_NTUPLE_FILTER_ALLOC_REQ_IP_PROTOCOL_UNKNOWN   0x0UL
-       #define CFA_NTUPLE_FILTER_ALLOC_REQ_IP_PROTOCOL_UDP       0x6UL
-       #define CFA_NTUPLE_FILTER_ALLOC_REQ_IP_PROTOCOL_TCP       0x11UL
+       #define CFA_NTUPLE_FILTER_ALLOC_REQ_IP_PROTOCOL_TCP       0x6UL
+       #define CFA_NTUPLE_FILTER_ALLOC_REQ_IP_PROTOCOL_UDP       0x11UL
        __le16 dst_id;
        __le16 mirror_vnic_id;
        u8 tunnel_type;
        u8 valid;
 };
 
+/* hwrm_cfa_vfr_alloc */
+/* Input (32 bytes) */
+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;
+       __le32 unused_0;
+       char vfr_name[32];
+};
+
+/* Output (16 bytes) */
+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;
+       u8 unused_1;
+       u8 unused_2;
+       u8 valid;
+};
+
+/* hwrm_cfa_vfr_free */
+/* Input (24 bytes) */
+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];
+};
+
+/* Output (16 bytes) */
+struct hwrm_cfa_vfr_free_output {
+       __le16 error_code;
+       __le16 req_type;
+       __le16 seq_id;
+       __le16 resp_len;
+       __le32 unused_0;
+       u8 unused_1;
+       u8 unused_2;
+       u8 unused_3;
+       u8 valid;
+};
+
 /* hwrm_tunnel_dst_port_query */
 /* Input (24 bytes) */
 struct hwrm_tunnel_dst_port_query_input {
        #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_RSVD               0x4UL
+       #define FW_RESET_REQ_EMBEDDED_PROC_TYPE_HOST               0x4UL
        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
-       __le16 unused_0[3];
+       u8 host_idx;
+       u8 unused_0[5];
 };
 
 /* Output (16 bytes) */
        #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_RSVD             0x4UL
+       #define FW_QSTATUS_REQ_EMBEDDED_PROC_TYPE_HOST             0x4UL
        u8 unused_0[7];
 };
 
        u8 valid;
 };
 
+/* Command specific Error Codes (8 bytes) */
+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
+       u8 unused_0[7];
+};
+
 /* hwrm_fw_get_structured_data */
 /* Input (32 bytes) */
 struct hwrm_fw_get_structured_data_input {
        u8 valid;
 };
 
+/* Command specific Error Codes (8 bytes) */
+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
+       u8 unused_0[7];
+};
+
 /* hwrm_exec_fwd_resp */
 /* Input (128 bytes) */
 struct hwrm_exec_fwd_resp_input {
        #define HWRM_PORT_LPBK_CLR_STATS                           (0x26UL)
        #define HWRM_PORT_PHY_QCFG                                 (0x27UL)
        #define HWRM_PORT_MAC_QCFG                                 (0x28UL)
-       #define RESERVED7                                          (0x29UL)
+       #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_QUEUE_QPORTCFG                                (0x30UL)
        #define HWRM_QUEUE_QCFG                            (0x31UL)
        #define HWRM_QUEUE_CFG                                     (0x32UL)
-       #define RESERVED2                                          (0x33UL)
-       #define RESERVED3                                          (0x34UL)
+       #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_CFA_L2_FILTER_FREE                    (0x91UL)
        #define HWRM_CFA_L2_FILTER_CFG                             (0x92UL)
        #define HWRM_CFA_L2_SET_RX_MASK                    (0x93UL)
-       #define RESERVED4                                          (0x94UL)
+       #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_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_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_SELFTEST_QLIST                                (0x200UL)
        #define HWRM_SELFTEST_EXEC                                 (0x201UL)
        #define HWRM_SELFTEST_IRQ                                  (0x202UL)
        #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_NVM_FACTORY_DEFAULTS                          (0xffeeUL)
        #define HWRM_NVM_VALIDATE_OPTION                           (0xffefUL)
        #define HWRM_NVM_FLUSH                                     (0xfff0UL)