linux/drivers/net/ethernet/broadcom/bnx2x/bnx2x_hsi.h

/* 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 */