linux/include/linux/qed/eth_common.h

/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause) */
/* QLogic qed NIC Driver
 * Copyright (c) 2015-2017  QLogic Corporation
 * Copyright (c) 2019-2020 Marvell International Ltd.
 */

#ifndef __ETH_COMMON__
#define __ETH_COMMON__

/********************/
/* ETH FW CONSTANTS */
/********************/

#define ETH_HSI_VER_MAJOR
#define ETH_HSI_VER_MINOR

#define ETH_HSI_VER_NO_PKT_LEN_TUNN
/* Maximum number of pinned L2 connections (CIDs) */
#define ETH_PINNED_CONN_MAX_NUM

#define ETH_CACHE_LINE_SIZE
#define ETH_RX_CQE_GAP
#define ETH_MAX_RAMROD_PER_CON
#define ETH_TX_BD_PAGE_SIZE_BYTES
#define ETH_RX_BD_PAGE_SIZE_BYTES
#define ETH_RX_CQE_PAGE_SIZE_BYTES
#define ETH_RX_NUM_NEXT_PAGE_BDS

#define ETH_MAX_TUNN_LSO_INNER_IPV4_OFFSET
#define ETH_MAX_TUNN_LSO_INNER_IPV6_OFFSET

#define ETH_TX_MIN_BDS_PER_NON_LSO_PKT
#define ETH_TX_MAX_BDS_PER_NON_LSO_PACKET
#define ETH_TX_MAX_BDS_PER_LSO_PACKET
#define ETH_TX_MAX_LSO_HDR_NBD
#define ETH_TX_MIN_BDS_PER_LSO_PKT
#define ETH_TX_MIN_BDS_PER_TUNN_IPV6_WITH_EXT_PKT
#define ETH_TX_MIN_BDS_PER_IPV6_WITH_EXT_PKT
#define ETH_TX_MIN_BDS_PER_PKT_W_LOOPBACK_MODE
#define ETH_TX_MIN_BDS_PER_PKT_W_VPORT_FORWARDING
#define ETH_TX_MAX_NON_LSO_PKT_LEN
#define ETH_TX_MAX_LSO_HDR_BYTES
#define ETH_TX_LSO_WINDOW_BDS_NUM
#define ETH_TX_LSO_WINDOW_MIN_LEN
#define ETH_TX_MAX_LSO_PAYLOAD_LEN
#define ETH_TX_NUM_SAME_AS_LAST_ENTRIES
#define ETH_TX_INACTIVE_SAME_AS_LAST

#define ETH_NUM_STATISTIC_COUNTERS
#define ETH_NUM_STATISTIC_COUNTERS_DOUBLE_VF_ZONE
#define ETH_NUM_STATISTIC_COUNTERS_QUAD_VF_ZONE

#define ETH_RX_MAX_BUFF_PER_PKT
#define ETH_RX_BD_THRESHOLD

/* Num of MAC/VLAN filters */
#define ETH_NUM_MAC_FILTERS
#define ETH_NUM_VLAN_FILTERS

/* Approx. multicast constants */
#define ETH_MULTICAST_BIN_FROM_MAC_SEED
#define ETH_MULTICAST_MAC_BINS
#define ETH_MULTICAST_MAC_BINS_IN_REGS

/* Ethernet vport update constants */
#define ETH_FILTER_RULES_COUNT
#define ETH_RSS_IND_TABLE_ENTRIES_NUM
#define ETH_RSS_IND_TABLE_MASK_SIZE_REGS
#define ETH_RSS_KEY_SIZE_REGS
#define ETH_RSS_ENGINE_NUM_K2
#define ETH_RSS_ENGINE_NUM_BB

/* TPA constants */
#define ETH_TPA_MAX_AGGS_NUM
#define ETH_TPA_CQE_START_BW_LEN_LIST_SIZE
#define ETH_TPA_CQE_CONT_LEN_LIST_SIZE
#define ETH_TPA_CQE_END_LEN_LIST_SIZE

/* Control frame check constants */
#define ETH_CTL_FRAME_ETH_TYPE_NUM

/* GFS constants */
#define ETH_GFT_TRASHCAN_VPORT

/* Destination port mode */
enum dst_port_mode {};

/* Ethernet address type */
enum eth_addr_type {};

struct eth_tx_1st_bd_flags {};

/* The parsing information data fo rthe first tx bd of a given packet */
struct eth_tx_data_1st_bd {};

/* The parsing information data for the second tx bd of a given packet */
struct eth_tx_data_2nd_bd {};

/* Firmware data for L2-EDPM packet */
struct eth_edpm_fw_data {};

/* Tunneling parsing flags */
struct eth_tunnel_parsing_flags {};

/* PMD flow control bits */
struct eth_pmd_flow_flags {};

/* Regular ETH Rx FP CQE */
struct eth_fast_path_rx_reg_cqe {};

/* TPA-continue ETH Rx FP CQE */
struct eth_fast_path_rx_tpa_cont_cqe {};

/* TPA-end ETH Rx FP CQE */
struct eth_fast_path_rx_tpa_end_cqe {};

/* TPA-start ETH Rx FP CQE */
struct eth_fast_path_rx_tpa_start_cqe {};

/* The L4 pseudo checksum mode for Ethernet */
enum eth_l4_pseudo_checksum_mode {};

struct eth_rx_bd {};

/* Regular ETH Rx SP CQE */
struct eth_slow_path_rx_cqe {};

/* Union for all ETH Rx CQE types */
eth_rx_cqe;

/* ETH Rx CQE type */
enum eth_rx_cqe_type {};

struct eth_rx_pmd_cqe {};

enum eth_rx_tunn_type {};

/* Aggregation end reason. */
enum eth_tpa_end_reason {};

/* The first tx bd of a given packet */
struct eth_tx_1st_bd {};

/* The second tx bd of a given packet */
struct eth_tx_2nd_bd {};

/* The parsing information data for the third tx bd of a given packet */
struct eth_tx_data_3rd_bd {};

/* The third tx bd of a given packet */
struct eth_tx_3rd_bd {};

/* The parsing information data for the forth tx bd of a given packet. */
struct eth_tx_data_4th_bd {};

/* The forth tx bd of a given packet */
struct eth_tx_4th_bd {};

/* Complementary information for the regular tx bd of a given packet */
struct eth_tx_data_bd {};

/* The common non-special TX BD ring element */
struct eth_tx_bd {};

eth_tx_bd_types;

/* Mstorm Queue Zone */
enum eth_tx_tunn_type {};

/* Mstorm Queue Zone */
struct mstorm_eth_queue_zone {};

/* Ystorm Queue Zone */
struct xstorm_eth_queue_zone {};

/* ETH doorbell data */
struct eth_db_data {};

/* RSS hash type */
enum rss_hash_type {};

#endif /* __ETH_COMMON__ */