| /* SPDX-License-Identifier: GPL-2.0+ */ |
| /* |
| * Copyright 2019-2021 Broadcom. |
| */ |
| |
| #ifndef _BNXT_HSI_H_ |
| #define _BNXT_HSI_H_ |
| |
| /* 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 |
| __le16 unused_0; |
| __le16 size; |
| __le64 req_addr; |
| }; |
| |
| #define HWRM_VER_GET 0x0UL |
| #define HWRM_FUNC_RESET 0x11UL |
| #define HWRM_FUNC_QCAPS 0x15UL |
| #define HWRM_FUNC_QCFG 0x16UL |
| #define HWRM_FUNC_CFG 0x17UL |
| #define HWRM_FUNC_DRV_UNRGTR 0x1aUL |
| #define HWRM_FUNC_DRV_RGTR 0x1dUL |
| #define HWRM_PORT_PHY_CFG 0x20UL |
| #define HWRM_PORT_MAC_CFG 0x21UL |
| #define HWRM_PORT_PHY_QCFG 0x27UL |
| #define HWRM_VNIC_ALLOC 0x40UL |
| #define HWRM_VNIC_FREE 0x41UL |
| #define HWRM_VNIC_CFG 0x42UL |
| #define HWRM_RING_ALLOC 0x50UL |
| #define HWRM_RING_FREE 0x51UL |
| #define HWRM_RING_GRP_ALLOC 0x60UL |
| #define HWRM_RING_GRP_FREE 0x61UL |
| #define HWRM_CFA_L2_FILTER_ALLOC 0x90UL |
| #define HWRM_CFA_L2_FILTER_FREE 0x91UL |
| #define HWRM_CFA_L2_SET_RX_MASK 0x93UL |
| #define HWRM_STAT_CTX_ALLOC 0xb0UL |
| #define HWRM_STAT_CTX_FREE 0xb1UL |
| #define HWRM_FUNC_RESOURCE_QCAPS 0x190UL |
| #define HWRM_NVM_FLUSH 0xfff0UL |
| #define HWRM_NVM_GET_VARIABLE 0xfff1UL |
| #define HWRM_NVM_SET_VARIABLE 0xfff2UL |
| |
| #define HWRM_NA_SIGNATURE ((__le32)(-1)) |
| #define HWRM_MAX_REQ_LEN 128 |
| #define HWRM_VERSION_MAJOR 1 |
| #define HWRM_VERSION_MINOR 10 |
| #define HWRM_VERSION_UPDATE 0 |
| |
| /* 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_SHORT_CMD_SUPPORTED 0x4UL |
| #define VER_GET_RESP_DEV_CAPS_CFG_SHORT_CMD_REQUIRED 0x8UL |
| 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; |
| __le16 max_req_win_len; |
| __le16 max_resp_len; |
| __le16 def_req_timeout; |
| u8 flags; |
| 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; |
| }; |
| |
| /* hwrm_async_event_cmpl (size:128b/16B) */ |
| struct hwrm_async_event_cmpl { |
| __le16 type; |
| __le16 event_id; |
| #define ASYNC_EVENT_CMPL_EVENT_ID_LINK_STATUS_CHANGE 0x0UL |
| __le32 event_data2; |
| u8 opaque_v; |
| u8 timestamp_lo; |
| __le16 timestamp_hi; |
| __le32 event_data1; |
| }; |
| |
| /* 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; |
| __le16 vf_id; |
| u8 func_reset_level; |
| #define FUNC_RESET_REQ_FUNC_RESET_LEVEL_RESETME 0x1UL |
| u8 unused_0; |
| }; |
| |
| /* 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; |
| 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_MULTI_HOST 0x20UL |
| 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_NPAR1_0 0x2UL |
| u8 port_pf_cnt; |
| __le16 dflt_vnic_id; |
| __le16 max_mtu_configured; |
| __le32 min_bw; |
| __le32 max_bw; |
| u8 evb_mode; |
| u8 options; |
| __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; |
| __le32 enables; |
| #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_STAT_CTXS 0x100UL |
| #define FUNC_CFG_REQ_ENABLES_ASYNC_EVENT_CR 0x4000UL |
| #define FUNC_CFG_REQ_ENABLES_NUM_HW_RING_GRPS 0x80000UL |
| __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; |
| __le32 max_bw; |
| __le16 async_event_cr; |
| u8 vlan_antispoof_mode; |
| u8 allowed_vlan_pris; |
| u8 evb_mode; |
| u8 options; |
| __le16 num_mcast_filters; |
| }; |
| |
| /* 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; |
| __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_ASYNC_EVENT_FWD 0x10UL |
| __le16 os_type; |
| #define FUNC_DRV_RGTR_REQ_OS_TYPE_OTHER 0x1UL |
| 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_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_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; |
| __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; |
| u8 unused_0[5]; |
| 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_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_FORCE 0x4UL |
| __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_MASK 0x10UL |
| __le16 port_id; |
| __le16 force_link_speed; |
| #define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_1GB 0xaUL |
| #define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_10GB 0x64UL |
| #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 |
| u8 auto_mode; |
| #define PORT_PHY_CFG_REQ_AUTO_MODE_SPEED_MASK 0x4UL |
| u8 auto_duplex; |
| #define PORT_PHY_CFG_REQ_AUTO_DUPLEX_BOTH 0x2UL |
| u8 auto_pause; |
| #define PORT_PHY_CFG_REQ_AUTO_PAUSE_TX 0x1UL |
| #define PORT_PHY_CFG_REQ_AUTO_PAUSE_RX 0x2UL |
| u8 unused_0; |
| __le16 auto_link_speed; |
| __le16 auto_link_speed_mask; |
| #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_100MB 0x2UL |
| #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_1GB 0x8UL |
| #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_10GB 0x40UL |
| #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 |
| u8 wirespeed; |
| u8 lpbk; |
| u8 force_pause; |
| u8 unused_1; |
| __le32 preemphasis; |
| __le16 eee_link_speed_mask; |
| u8 unused_2[2]; |
| __le32 tx_lpi_timer; |
| __le32 unused_3; |
| }; |
| |
| /* 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_LINK 0x2UL |
| 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_10MB 0xffffUL |
| u8 duplex_cfg; |
| u8 pause; |
| __le16 support_speeds; |
| #define PORT_QCFG_SUPPORT_SPEEDS_100MBHD 0x1UL |
| #define PORT_QCFG_SUPPORT_SPEEDS_100MB 0x2UL |
| #define PORT_QCFG_SUPPORT_SPEEDS_1GBHD 0x4UL |
| #define PORT_QCFG_SUPPORT_SPEEDS_1GB 0x8UL |
| #define PORT_QCFG_SUPPORT_SPEEDS_2GB 0x10UL |
| #define PORT_QCFG_SUPPORT_SPEEDS_2_5GB 0x20UL |
| #define PORT_QCFG_SUPPORT_SPEEDS_10GB 0x40UL |
| #define PORT_QCFG_SUPPORT_SPEEDS_20GB 0x80UL |
| #define PORT_QCFG_SUPPORT_SPEEDS_25GB 0x100UL |
| #define PORT_QCFG_SUPPORT_SPEEDS_50GB 0x400UL |
| #define PORT_QCFG_SUPPORT_SPEEDS_100GB 0x800UL |
| #define PORT_QCFG_SUPPORT_SPEEDS_200GB 0x4000UL |
| __le16 force_link_speed; |
| u8 auto_mode; |
| u8 auto_pause; |
| __le16 auto_link_speed; |
| __le16 auto_link_speed_mask; |
| u8 wirespeed; |
| u8 lpbk; |
| u8 force_pause; |
| u8 module_status; |
| __le32 preemphasis; |
| u8 phy_maj; |
| u8 phy_min; |
| u8 phy_bld; |
| u8 phy_type; |
| u8 media_type; |
| u8 xcvr_pkg_type; |
| u8 eee_config_phy_addr; |
| u8 parallel_detect; |
| __le16 link_partner_adv_speeds; |
| u8 link_partner_adv_auto_mode; |
| u8 link_partner_adv_pause; |
| __le16 adv_eee_link_speed_mask; |
| __le16 link_partner_adv_eee_link_speed_mask; |
| __le32 xcvr_identifier_type_tx_lpi_timer; |
| __le16 fec_cfg; |
| u8 duplex_state; |
| u8 option_flags; |
| 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; |
| __le32 enables; |
| __le16 port_id; |
| u8 ipg; |
| u8 lpbk; |
| #define PORT_MAC_CFG_REQ_LPBK_NONE 0x0UL |
| 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; |
| u8 unused_0[3]; |
| }; |
| |
| /* 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_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; |
| __le32 enables; |
| #define VNIC_CFG_REQ_ENABLES_DFLT_RING_GRP 0x1UL |
| #define VNIC_CFG_REQ_ENABLES_MRU 0x10UL |
| __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_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_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 |
| u8 unused_0; |
| __le16 flags; |
| __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; |
| __le16 unused_3; |
| __le32 reserved3; |
| __le32 stat_ctx_id; |
| __le32 reserved4; |
| __le32 max_bw; |
| u8 int_mode; |
| #define RING_ALLOC_REQ_INT_MODE_POLL 0x3UL |
| 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 |
| u8 unused_0; |
| __le16 ring_id; |
| u8 unused_1[4]; |
| }; |
| |
| /* 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_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_RX 0x1UL |
| __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_DST_ID 0x8000UL |
| 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 |
| u8 unused_3; |
| __le32 src_id; |
| u8 tunnel_type; |
| u8 unused_4; |
| __le16 dst_id; |
| __le16 mirror_vnic_id; |
| u8 pri_hint; |
| 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_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 |
| __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_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; |
| 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_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_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; |
| __le16 dimensions; |
| __le16 index_0; |
| __le16 index_1; |
| __le16 index_2; |
| __le16 index_3; |
| u8 flags; |
| u8 unused_0; |
| }; |
| |
| /* 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; |
| __le16 dimensions; |
| __le16 index_0; |
| __le16 index_1; |
| __le16 index_2; |
| __le16 index_3; |
| u8 flags; |
| u8 unused_0; |
| }; |
| |
| #endif /* _BNXT_HSI_H_ */ |