/* bnx2x_hsi.h: Qlogic Everest network driver. * * Copyright (c) 2007-2013 Broadcom Corporation * Copyright (c) 2014 QLogic Corporation * All rights reserved * * 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. */ #ifndef BNX2X_HSI_H #define BNX2X_HSI_H #include "bnx2x_fw_defs.h" #include "bnx2x_mfw_req.h" #define FW_ENCODE_32BIT_PATTERN … struct license_key { … }; /**************************************************************************** * Shared HW configuration * ****************************************************************************/ #define PIN_CFG_NA … #define PIN_CFG_GPIO0_P0 … #define PIN_CFG_GPIO1_P0 … #define PIN_CFG_GPIO2_P0 … #define PIN_CFG_GPIO3_P0 … #define PIN_CFG_GPIO0_P1 … #define PIN_CFG_GPIO1_P1 … #define PIN_CFG_GPIO2_P1 … #define PIN_CFG_GPIO3_P1 … #define PIN_CFG_EPIO0 … #define PIN_CFG_EPIO1 … #define PIN_CFG_EPIO2 … #define PIN_CFG_EPIO3 … #define PIN_CFG_EPIO4 … #define PIN_CFG_EPIO5 … #define PIN_CFG_EPIO6 … #define PIN_CFG_EPIO7 … #define PIN_CFG_EPIO8 … #define PIN_CFG_EPIO9 … #define PIN_CFG_EPIO10 … #define PIN_CFG_EPIO11 … #define PIN_CFG_EPIO12 … #define PIN_CFG_EPIO13 … #define PIN_CFG_EPIO14 … #define PIN_CFG_EPIO15 … #define PIN_CFG_EPIO16 … #define PIN_CFG_EPIO17 … #define PIN_CFG_EPIO18 … #define PIN_CFG_EPIO19 … #define PIN_CFG_EPIO20 … #define PIN_CFG_EPIO21 … #define PIN_CFG_EPIO22 … #define PIN_CFG_EPIO23 … #define PIN_CFG_EPIO24 … #define PIN_CFG_EPIO25 … #define PIN_CFG_EPIO26 … #define PIN_CFG_EPIO27 … #define PIN_CFG_EPIO28 … #define PIN_CFG_EPIO29 … #define PIN_CFG_EPIO30 … #define PIN_CFG_EPIO31 … /* EPIO definition */ #define EPIO_CFG_NA … #define EPIO_CFG_EPIO0 … #define EPIO_CFG_EPIO1 … #define EPIO_CFG_EPIO2 … #define EPIO_CFG_EPIO3 … #define EPIO_CFG_EPIO4 … #define EPIO_CFG_EPIO5 … #define EPIO_CFG_EPIO6 … #define EPIO_CFG_EPIO7 … #define EPIO_CFG_EPIO8 … #define EPIO_CFG_EPIO9 … #define EPIO_CFG_EPIO10 … #define EPIO_CFG_EPIO11 … #define EPIO_CFG_EPIO12 … #define EPIO_CFG_EPIO13 … #define EPIO_CFG_EPIO14 … #define EPIO_CFG_EPIO15 … #define EPIO_CFG_EPIO16 … #define EPIO_CFG_EPIO17 … #define EPIO_CFG_EPIO18 … #define EPIO_CFG_EPIO19 … #define EPIO_CFG_EPIO20 … #define EPIO_CFG_EPIO21 … #define EPIO_CFG_EPIO22 … #define EPIO_CFG_EPIO23 … #define EPIO_CFG_EPIO24 … #define EPIO_CFG_EPIO25 … #define EPIO_CFG_EPIO26 … #define EPIO_CFG_EPIO27 … #define EPIO_CFG_EPIO28 … #define EPIO_CFG_EPIO29 … #define EPIO_CFG_EPIO30 … #define EPIO_CFG_EPIO31 … struct mac_addr { … }; struct shared_hw_cfg { … }; /**************************************************************************** * Port HW configuration * ****************************************************************************/ struct port_hw_cfg { … }; /**************************************************************************** * Shared Feature configuration * ****************************************************************************/ struct shared_feat_cfg { … }; /**************************************************************************** * Port Feature configuration * ****************************************************************************/ struct port_feat_cfg { … }; /**************************************************************************** * Device Information * ****************************************************************************/ struct shm_dev_info { … }; struct extended_dev_info_shared_cfg { … }; #if !defined(__LITTLE_ENDIAN) && !defined(__BIG_ENDIAN) #error "Missing either LITTLE_ENDIAN or BIG_ENDIAN definition." #endif #define FUNC_0 … #define FUNC_1 … #define FUNC_2 … #define FUNC_3 … #define FUNC_4 … #define FUNC_5 … #define FUNC_6 … #define FUNC_7 … #define E1_FUNC_MAX … #define E1H_FUNC_MAX … #define E2_FUNC_MAX … #define VN_0 … #define VN_1 … #define VN_2 … #define VN_3 … #define E1VN_MAX … #define E1HVN_MAX … #define E2_VF_MAX … /* This value (in milliseconds) determines the frequency of the driver * issuing the PULSE message code. The firmware monitors this periodic * pulse to determine when to switch to an OS-absent mode. */ #define DRV_PULSE_PERIOD_MS … /* This value (in milliseconds) determines how long the driver should * wait for an acknowledgement from the firmware before timing out. Once * the firmware has timed out, the driver will assume there is no firmware * running and there won't be any firmware-driver synchronization during a * driver reset. */ #define FW_ACK_TIME_OUT_MS … #define FW_ACK_POLL_TIME_MS … #define FW_ACK_NUM_OF_POLL … #define MFW_TRACE_SIGNATURE … /**************************************************************************** * Driver <-> FW Mailbox * ****************************************************************************/ struct drv_port_mb { … }; struct drv_func_mb { … }; /**************************************************************************** * Management firmware state * ****************************************************************************/ /* Allocate 440 bytes for management firmware */ #define MGMTFW_STATE_WORD_SIZE … struct mgmtfw_state { … }; /**************************************************************************** * Multi-Function configuration * ****************************************************************************/ struct shared_mf_cfg { … }; struct port_mf_cfg { … }; struct func_mf_cfg { … }; enum mf_cfg_afex_vlan_mode { … }; /* This structure is not applicable and should not be accessed on 57711 */ struct func_ext_cfg { … }; struct mf_cfg { … }; /* 0x224 */ /**************************************************************************** * Shared Memory Region * ****************************************************************************/ struct shmem_region { … }; /* 57710 = 0x6dc | 57711 = 0x7E4 | 57712 = 0x734 */ /**************************************************************************** * Shared Memory 2 Region * ****************************************************************************/ /* The fw_flr_ack is actually built in the following way: */ /* 8 bit: PF ack */ /* 64 bit: VF ack */ /* 8 bit: ios_dis_ack */ /* In order to maintain endianity in the mailbox hsi, we want to keep using */ /* u32. The fw must have the VF right after the PF since this is how it */ /* access arrays(it expects always the VF to reside after the PF, and that */ /* makes the calculation much easier for it. ) */ /* In order to answer both limitations, and keep the struct small, the code */ /* will abuse the structure defined here to achieve the actual partition */ /* above */ /****************************************************************************/ struct fw_flr_ack { … }; struct fw_flr_mb { … }; struct eee_remote_vals { … }; /**** SUPPORT FOR SHMEM ARRRAYS *** * The SHMEM HSI is aligned on 32 bit boundaries which makes it difficult to * define arrays with storage types smaller then unsigned dwords. * The macros below add generic support for SHMEM arrays with numeric elements * that can span 2,4,8 or 16 bits. The array underlying type is a 32 bit dword * array with individual bit-filed elements accessed using shifts and masks. * */ /* eb is the bitwidth of a single element */ #define SHMEM_ARRAY_MASK(eb) … #define SHMEM_ARRAY_ENTRY(i, eb) … /* the bit-position macro allows the used to flip the order of the arrays * elements on a per byte or word boundary. * * example: an array with 8 entries each 4 bit wide. This array will fit into * a single dword. The diagrmas below show the array order of the nibbles. * * SHMEM_ARRAY_BITPOS(i, 4, 4) defines the stadard ordering: * * | | | | * 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | * | | | | * * SHMEM_ARRAY_BITPOS(i, 4, 8) defines a flip ordering per byte: * * | | | | * 1 | 0 | 3 | 2 | 5 | 4 | 7 | 6 | * | | | | * * SHMEM_ARRAY_BITPOS(i, 4, 16) defines a flip ordering per word: * * | | | | * 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | * | | | | */ #define SHMEM_ARRAY_BITPOS(i, eb, fb) … #define SHMEM_ARRAY_GET(a, i, eb, fb) … #define SHMEM_ARRAY_SET(a, i, eb, fb, val) … /****START OF DCBX STRUCTURES DECLARATIONS****/ #define DCBX_MAX_NUM_PRI_PG_ENTRIES … #define DCBX_PRI_PG_BITWIDTH … #define DCBX_PRI_PG_FBITS … #define DCBX_PRI_PG_GET(a, i) … #define DCBX_PRI_PG_SET(a, i, val) … #define DCBX_MAX_NUM_PG_BW_ENTRIES … #define DCBX_BW_PG_BITWIDTH … #define DCBX_PG_BW_GET(a, i) … #define DCBX_PG_BW_SET(a, i, val) … #define DCBX_STRICT_PRI_PG … #define DCBX_MAX_APP_PROTOCOL … #define FCOE_APP_IDX … #define ISCSI_APP_IDX … #define PREDEFINED_APP_IDX_MAX … /* Big/Little endian have the same representation. */ struct dcbx_ets_feature { … }; /* Driver structure in LE */ struct dcbx_pfc_feature { … }; struct dcbx_app_priority_entry { … }; /* FW structure in BE */ struct dcbx_app_priority_feature { … }; /* FW structure in BE */ struct dcbx_features { … }; /* LLDP protocol parameters */ /* FW structure in BE */ struct lldp_params { … }; struct lldp_dcbx_stat { … }; /* ADMIN MIB - DCBX local machine default configuration. */ struct lldp_admin_mib { … }; /* REMOTE MIB - remote machine DCBX configuration. */ struct lldp_remote_mib { … }; /* LOCAL MIB - operational DCBX configuration - transmitted on Tx LLDPDU. */ struct lldp_local_mib { … }; /***END OF DCBX STRUCTURES DECLARATIONS***/ /***********************************************************/ /* Elink section */ /***********************************************************/ #define SHMEM_LINK_CONFIG_SIZE … struct shmem_lfa { … }; /* Used to support NSCI get OS driver version * on driver load the version value will be set * on driver unload driver value of 0x0 will be set. */ struct os_drv_ver { … }; struct ncsi_oem_fcoe_features { … }; enum curr_cfg_method_e { … }; #define FC_NPIV_WWPN_SIZE … #define FC_NPIV_WWNN_SIZE … struct bdn_npiv_settings { … }; struct bdn_fc_npiv_cfg { … }; #define MAX_NUMBER_NPIV … struct bdn_fc_npiv_tbl { … }; struct mdump_driver_info { … }; struct ncsi_oem_data { … }; struct shmem2_region { … }; struct emac_stats { … }; struct bmac1_stats { … }; struct bmac2_stats { … }; struct mstat_stats { … }; mac_stats; struct mac_stx { … }; #define MAC_STX_IDX_MAX … struct host_port_stats { … }; struct host_func_stats { … }; /* VIC definitions */ #define VICSTATST_UIF_INDEX … /* stats collected for afex. * NOTE: structure is exactly as expected to be received by the switch. * order must remain exactly as is unless protocol changes ! */ struct afex_stats { … }; #define BCM_5710_FW_MAJOR_VERSION … #define BCM_5710_FW_MINOR_VERSION … #define BCM_5710_FW_REVISION_VERSION … #define BCM_5710_FW_REVISION_VERSION_V15 … #define BCM_5710_FW_ENGINEERING_VERSION … #define BCM_5710_FW_COMPILE_FLAGS … /* * attention bits */ struct atten_sp_status_block { … }; /* * The eth aggregative context of Cstorm */ struct cstorm_eth_ag_context { … }; /* * dmae command structure */ struct dmae_command { … }; /* * common data for all protocols */ struct doorbell_hdr { … }; /* * Ethernet doorbell */ struct eth_tx_doorbell { … }; /* * 3 lines. status block */ struct hc_status_block_e1x { … }; /* * host status block */ struct host_hc_status_block_e1x { … }; /* * 3 lines. status block */ struct hc_status_block_e2 { … }; /* * host status block */ struct host_hc_status_block_e2 { … }; /* * 5 lines. slow-path status block */ struct hc_sp_status_block { … }; /* * host status block */ struct host_sp_status_block { … }; /* * IGU driver acknowledgment register */ struct igu_ack_register { … }; /* * IGU driver acknowledgement register */ struct igu_backward_compatible { … }; /* * IGU driver acknowledgement register */ struct igu_regular { … }; /* * IGU driver acknowledgement register */ igu_consprod_reg; /* * Igu control commands */ enum igu_ctrl_cmd { … }; /* * Control register for the IGU command register */ struct igu_ctrl_reg { … }; /* * Igu interrupt command */ enum igu_int_cmd { … }; /* * Igu segments */ enum igu_seg_access { … }; /* * Parser parsing flags field */ struct parsing_flags { … }; /* * Parsing flags for TCP ACK type */ enum prs_flags_ack_type { … }; /* * Parsing flags for Ethernet address type */ enum prs_flags_eth_addr_type { … }; /* * Parsing flags for over-ethernet protocol */ enum prs_flags_over_eth { … }; /* * Parsing flags for over-IP protocol */ enum prs_flags_over_ip { … }; /* * SDM operation gen command (generate aggregative interrupt) */ struct sdm_op_gen { … }; /* * Timers connection context */ struct timers_block_context { … }; /* * The eth aggregative context of Tstorm */ struct tstorm_eth_ag_context { … }; /* * The eth aggregative context of Ustorm */ struct ustorm_eth_ag_context { … }; /* * The eth aggregative context of Xstorm */ struct xstorm_eth_ag_context { … }; /* * doorbell message sent to the chip */ struct doorbell { … }; /* * doorbell message sent to the chip */ struct doorbell_set_prod { … }; struct regpair { … }; struct regpair_native { … }; /* * Classify rule opcodes in E2/E3 */ enum classify_rule { … }; /* * Classify rule types in E2/E3 */ enum classify_rule_action_type { … }; /* * client init ramrod data */ struct client_init_general_data { … }; /* * client init rx data */ struct client_init_rx_data { … }; /* * client init tx data */ struct client_init_tx_data { … }; /* * client init ramrod data */ struct client_init_ramrod_data { … }; /* * client update ramrod data */ struct client_update_ramrod_data { … }; /* * The eth storm context of Cstorm */ struct cstorm_eth_st_context { … }; struct double_regpair { … }; /* 2nd parse bd type used in ethernet tx BDs */ enum eth_2nd_parse_bd_type { … }; /* * Ethernet address typesm used in ethernet tx BDs */ enum eth_addr_type { … }; /* * */ struct eth_classify_cmd_header { … }; /* * header for eth classification config ramrod */ struct eth_classify_header { … }; /* * Command for adding/removing a Inner-MAC/VNI classification rule */ struct eth_classify_imac_vni_cmd { … }; /* * Command for adding/removing a MAC classification rule */ struct eth_classify_mac_cmd { … }; /* * Command for adding/removing a MAC-VLAN pair classification rule */ struct eth_classify_pair_cmd { … }; /* * Command for adding/removing a VLAN classification rule */ struct eth_classify_vlan_cmd { … }; /* * Command for adding/removing a VXLAN classification rule */ /* * union for eth classification rule */ eth_classify_rule_cmd; /* * parameters for eth classification configuration ramrod */ struct eth_classify_rules_ramrod_data { … }; /* * The data contain client ID need to the ramrod */ struct eth_common_ramrod_data { … }; /* * The eth storm context of Ustorm */ struct ustorm_eth_st_context { … }; /* * The eth storm context of Tstorm */ struct tstorm_eth_st_context { … }; /* * The eth storm context of Xstorm */ struct xstorm_eth_st_context { … }; /* * Ethernet connection context */ struct eth_context { … }; /* * union for sgl and raw data. */ eth_sgl_or_raw_data; /* * eth FP end aggregation CQE parameters struct */ struct eth_end_agg_rx_cqe { … }; /* * regular eth FP CQE parameters struct */ struct eth_fast_path_rx_cqe { … }; /* * Command for setting classification flags for a client */ struct eth_filter_rules_cmd { … }; /* * parameters for eth classification filters ramrod */ struct eth_filter_rules_ramrod_data { … }; /* Hsi version */ enum eth_fp_hsi_ver { … }; /* * parameters for eth classification configuration ramrod */ struct eth_general_rules_ramrod_data { … }; /* * The data for Halt ramrod */ struct eth_halt_ramrod_data { … }; /* * destination and source mac address. */ struct eth_mac_addresses { … }; /* tunneling related data */ struct eth_tunnel_data { … }; /* union for mac addresses and for tunneling data. * considered as tunneling data only if (tunnel_exist == 1). */ eth_mac_addr_or_tunnel_data; /*Command for setting multicast classification for a client */ struct eth_multicast_rules_cmd { … }; /* * parameters for multicast classification ramrod */ struct eth_multicast_rules_ramrod_data { … }; /* * Place holder for ramrods protocol specific data */ struct ramrod_data { … }; /* * union for ramrod data for Ethernet protocol (CQE) (force size of 16 bits) */ eth_ramrod_data; /* * RSS toeplitz hash type, as reported in CQE */ enum eth_rss_hash_type { … }; /* * Ethernet RSS mode */ enum eth_rss_mode { … }; /* * parameters for RSS update ramrod (E2) */ struct eth_rss_update_ramrod_data { … }; /* * The eth Rx Buffer Descriptor */ struct eth_rx_bd { … }; /* * Eth Rx Cqe structure- general structure for ramrods */ struct common_ramrod_eth_rx_cqe { … }; /* * Rx Last CQE in page (in ETH) */ struct eth_rx_cqe_next_page { … }; /* * union for all eth rx cqe types (fix their sizes) */ eth_rx_cqe; /* * Values for RX ETH CQE type field */ enum eth_rx_cqe_type { … }; /* * Type of SGL/Raw field in ETH RX fast path CQE */ enum eth_rx_fp_sel { … }; /* * The eth Rx SGE Descriptor */ struct eth_rx_sge { … }; /* * common data for all protocols */ struct spe_hdr { … }; /* * specific data for ethernet slow path element */ eth_specific_data; /* * Ethernet slow path element */ struct eth_spe { … }; /* * Ethernet command ID for slow path elements */ enum eth_spqe_cmd_id { … }; /* * eth tpa update command */ enum eth_tpa_update_command { … }; /* In case of LSO over IPv4 tunnel, whether to increment * IP ID on external IP header or internal IP header */ enum eth_tunnel_lso_inc_ip_id { … }; /* In case tunnel exist and L4 checksum offload, * the pseudo checksum location, on packet or on BD. */ enum eth_tunnel_non_lso_csum_location { … }; enum eth_tunn_type { … }; /* * Tx regular BD structure */ struct eth_tx_bd { … }; /* * structure for easy accessibility to assembler */ struct eth_tx_bd_flags { … }; /* * The eth Tx Buffer Descriptor */ struct eth_tx_start_bd { … }; /* * Tx parsing BD structure for ETH E1/E1h */ struct eth_tx_parse_bd_e1x { … }; /* * Tx parsing BD structure for ETH E2 */ struct eth_tx_parse_bd_e2 { … }; /* * Tx 2nd parsing BD structure for ETH packet */ struct eth_tx_parse_2nd_bd { … }; /* The last BD in the BD memory will hold a pointer to the next BD memory */ struct eth_tx_next_bd { … }; /* * union for 4 Bd types */ eth_tx_bd_types; /* * array of 13 bds as appears in the eth xstorm context */ struct eth_tx_bds_array { … }; /* * VLAN mode on TX BDs */ enum eth_tx_vlan_type { … }; /* * Ethernet VLAN filtering mode in E1x */ enum eth_vlan_filter_mode { … }; /* * MAC filtering configuration command header */ struct mac_configuration_hdr { … }; /* * MAC address in list for ramrod */ struct mac_configuration_entry { … }; /* * MAC filtering configuration command */ struct mac_configuration_cmd { … }; /* * Set-MAC command type (in E1x) */ enum set_mac_action_type { … }; /* * Ethernet TPA Modes */ enum tpa_mode { … }; /* * tpa update ramrod data */ struct tpa_update_ramrod_data { … }; /* * approximate-match multicast filtering for E1H per function in Tstorm */ struct tstorm_eth_approximate_match_multicast_filtering { … }; /* * Common configuration parameters per function in Tstorm */ struct tstorm_eth_function_common_config { … }; /* * MAC filtering configuration parameters per port in Tstorm */ struct tstorm_eth_mac_filter_config { … }; /* * tx only queue init ramrod data */ struct tx_queue_init_ramrod_data { … }; /* * Three RX producers for ETH */ struct ustorm_eth_rx_producers { … }; /* * FCoE RX statistics parameters section#0 */ struct fcoe_rx_stat_params_section0 { … }; /* * FCoE RX statistics parameters section#1 */ struct fcoe_rx_stat_params_section1 { … }; /* * FCoE RX statistics parameters section#2 */ struct fcoe_rx_stat_params_section2 { … }; /* * FCoE TX statistics parameters */ struct fcoe_tx_stat_params { … }; /* * FCoE statistics parameters */ struct fcoe_statistics_params { … }; /* * The data afex vif list ramrod need */ struct afex_vif_list_ramrod_data { … }; struct c2s_pri_trans_table_entry { … }; /* * cfc delete event data */ struct cfc_del_event_data { … }; /* * per-port SAFC demo variables */ struct cmng_flags_per_port { … }; /* * per-port rate shaping variables */ struct rate_shaping_vars_per_port { … }; /* * per-port fairness variables */ struct fairness_vars_per_port { … }; /* * per-port SAFC variables */ struct safc_struct_per_port { … }; /* * Per-port congestion management variables */ struct cmng_struct_per_port { … }; /* * a single rate shaping counter. can be used as protocol or vnic counter */ struct rate_shaping_counter { … }; /* * per-vnic rate shaping variables */ struct rate_shaping_vars_per_vn { … }; /* * per-vnic fairness variables */ struct fairness_vars_per_vn { … }; /* * cmng port init state */ struct cmng_vnic { … }; /* * cmng port init state */ struct cmng_init { … }; /* * driver parameters for congestion management init, all rates are in Mbps */ struct cmng_init_input { … }; /* * Protocol-common command ID for slow path elements */ enum common_spqe_cmd_id { … }; /* * Per-protocol connection types */ enum connection_type { … }; /* * Cos modes */ enum cos_mode { … }; /* * Dynamic HC counters set by the driver */ struct hc_dynamic_drv_counter { … }; /* * zone A per-queue data */ struct cstorm_queue_zone_data { … }; /* * Vf-PF channel data in cstorm ram (non-triggered zone) */ struct vf_pf_channel_zone_data { … }; /* * zone for VF non-triggered data */ struct non_trigger_vf_zone { … }; /* * Vf-PF channel trigger zone in cstorm ram */ struct vf_pf_channel_zone_trigger { … }; /* * zone that triggers the in-bound interrupt */ struct trigger_vf_zone { … }; /* * zone B per-VF data */ struct cstorm_vf_zone_data { … }; /* * Dynamic host coalescing init parameters, per state machine */ struct dynamic_hc_sm_config { … }; /* * Dynamic host coalescing init parameters */ struct dynamic_hc_config { … }; struct e2_integ_data { … }; /* * set mac event data */ struct eth_event_data { … }; /* * pf-vf event data */ struct vf_pf_event_data { … }; /* * VF FLR event data */ struct vf_flr_event_data { … }; /* * malicious VF event data */ struct malicious_vf_event_data { … }; /* * vif list event data */ struct vif_list_event_data { … }; /* function update event data */ struct function_update_event_data { … }; /* union for all event ring message types */ event_data; /* * per PF event ring data */ struct event_ring_data { … }; /* * event ring message element (each element is 128 bits) */ struct event_ring_msg { … }; /* * event ring next page element (128 bits) */ struct event_ring_next { … }; /* * union for event ring element types (each element is 128 bits) */ event_ring_elem; /* * Common event ring opcodes */ enum event_ring_opcode { … }; /* * Modes for fairness algorithm */ enum fairness_mode { … }; /* * Priority and cos */ struct priority_cos { … }; /* * The data for flow control configuration */ struct flow_control_configuration { … }; /* * */ struct function_start_data { … }; struct function_update_data { … }; /* * FW version stored in the Xstorm RAM */ struct fw_version { … }; /* * Dynamic Host-Coalescing - Driver(host) counters */ struct hc_dynamic_sb_drv_counters { … }; /* * 2 bytes. configuration/state parameters for a single protocol index */ struct hc_index_data { … }; /* * HC state-machine */ struct hc_status_block_sm { … }; /* * hold PCI identification variables- used in various places in firmware */ struct pci_entity { … }; /* * The fast-path status block meta-data, common to all chips */ struct hc_sb_data { … }; /* * Segment types for host coaslescing */ enum hc_segment { … }; /* * The fast-path status block meta-data */ struct hc_sp_status_block_data { … }; /* * The fast-path status block meta-data */ struct hc_status_block_data_e1x { … }; /* * The fast-path status block meta-data */ struct hc_status_block_data_e2 { … }; /* * IGU block operartion modes (in Everest2) */ enum igu_mode { … }; /* * Inner Headers Classification Type */ enum inner_clss_type { … }; /* * IP versions */ enum ip_ver { … }; /* * Malicious VF error ID */ enum malicious_vf_error_id { … }; /* * Multi-function modes */ enum mf_mode { … }; /* * Protocol-common statistics collected by the Tstorm (per pf) */ struct tstorm_per_pf_stats { … }; /* * */ struct per_pf_stats { … }; /* * Protocol-common statistics collected by the Tstorm (per port) */ struct tstorm_per_port_stats { … }; /* * */ struct per_port_stats { … }; /* * Protocol-common statistics collected by the Tstorm (per client) */ struct tstorm_per_queue_stats { … }; /* * Protocol-common statistics collected by the Ustorm (per client) */ struct ustorm_per_queue_stats { … }; /* * Protocol-common statistics collected by the Xstorm (per client) */ struct xstorm_per_queue_stats { … }; /* * */ struct per_queue_stats { … }; /* * FW version stored in first line of pram */ struct pram_fw_version { … }; /* * Ethernet slow path element */ protocol_common_specific_data; /* * The send queue element */ struct protocol_common_spe { … }; /* The data for the Set Timesync Ramrod */ struct set_timesync_ramrod_data { … }; /* * The send queue element */ struct slow_path_element { … }; /* * Protocol-common statistics counter */ struct stats_counter { … }; /* * */ struct stats_query_entry { … }; /* * statistic command */ struct stats_query_cmd_group { … }; /* * statistic command header */ struct stats_query_header { … }; /* * Types of statistcis query entry */ enum stats_query_type { … }; /* * Indicate of the function status block state */ enum status_block_state { … }; /* * Storm IDs (including attentions for IGU related enums) */ enum storm_id { … }; /* * Taffic types used in ETS and flow control algorithms */ enum traffic_type { … }; /* * zone A per-queue data */ struct tstorm_queue_zone_data { … }; /* * zone B per-VF data */ struct tstorm_vf_zone_data { … }; /* Add or Subtract Value for Set Timesync Ramrod */ enum ts_add_sub_value { … }; /* Drift-Adjust Commands for Set Timesync Ramrod */ enum ts_drift_adjust_cmd { … }; /* Offset Commands for Set Timesync Ramrod */ enum ts_offset_cmd { … }; /* zone A per-queue data */ struct ustorm_queue_zone_data { … }; /* * zone B per-VF data */ struct ustorm_vf_zone_data { … }; /* * data per VF-PF channel */ struct vf_pf_channel_data { … }; /* * State of VF-PF channel */ enum vf_pf_channel_state { … }; /* * vif_list_rule_kind */ enum vif_list_rule_kind { … }; /* * zone A per-queue data */ struct xstorm_queue_zone_data { … }; /* * zone B per-VF data */ struct xstorm_vf_zone_data { … }; #endif /* BNX2X_HSI_H */