summaryrefslogtreecommitdiff
path: root/ANDROID_3.4.5/drivers/net/ethernet/brocade/bna/bfi_enet.h
diff options
context:
space:
mode:
Diffstat (limited to 'ANDROID_3.4.5/drivers/net/ethernet/brocade/bna/bfi_enet.h')
-rw-r--r--ANDROID_3.4.5/drivers/net/ethernet/brocade/bna/bfi_enet.h901
1 files changed, 0 insertions, 901 deletions
diff --git a/ANDROID_3.4.5/drivers/net/ethernet/brocade/bna/bfi_enet.h b/ANDROID_3.4.5/drivers/net/ethernet/brocade/bna/bfi_enet.h
deleted file mode 100644
index a90f1cf4..00000000
--- a/ANDROID_3.4.5/drivers/net/ethernet/brocade/bna/bfi_enet.h
+++ /dev/null
@@ -1,901 +0,0 @@
-/*
- * Linux network driver for Brocade Converged Network Adapter.
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License (GPL) Version 2 as
- * published by the Free Software Foundation
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- */
-/*
- * Copyright (c) 2005-2011 Brocade Communications Systems, Inc.
- * All rights reserved
- * www.brocade.com
- */
-
-/**
- * @file bfi_enet.h BNA Hardware and Firmware Interface
- */
-
-/**
- * Skipping statistics collection to avoid clutter.
- * Command is no longer needed:
- * MTU
- * TxQ Stop
- * RxQ Stop
- * RxF Enable/Disable
- *
- * HDS-off request is dynamic
- * keep structures as multiple of 32-bit fields for alignment.
- * All values must be written in big-endian.
- */
-#ifndef __BFI_ENET_H__
-#define __BFI_ENET_H__
-
-#include "bfa_defs.h"
-#include "bfi.h"
-
-#pragma pack(1)
-
-#define BFI_ENET_CFG_MAX 32 /* Max resources per PF */
-
-#define BFI_ENET_TXQ_PRIO_MAX 8
-#define BFI_ENET_RX_QSET_MAX 16
-#define BFI_ENET_TXQ_WI_VECT_MAX 4
-
-#define BFI_ENET_VLAN_ID_MAX 4096
-#define BFI_ENET_VLAN_BLOCK_SIZE 512 /* in bits */
-#define BFI_ENET_VLAN_BLOCKS_MAX \
- (BFI_ENET_VLAN_ID_MAX / BFI_ENET_VLAN_BLOCK_SIZE)
-#define BFI_ENET_VLAN_WORD_SIZE 32 /* in bits */
-#define BFI_ENET_VLAN_WORDS_MAX \
- (BFI_ENET_VLAN_BLOCK_SIZE / BFI_ENET_VLAN_WORD_SIZE)
-
-#define BFI_ENET_RSS_RIT_MAX 64 /* entries */
-#define BFI_ENET_RSS_KEY_LEN 10 /* 32-bit words */
-
-union bfi_addr_be_u {
- struct {
- u32 addr_hi; /* Most Significant 32-bits */
- u32 addr_lo; /* Least Significant 32-Bits */
- } a32;
-};
-
-/**
- * T X Q U E U E D E F I N E S
- */
-/* TxQ Vector (a.k.a. Tx-Buffer Descriptor) */
-/* TxQ Entry Opcodes */
-#define BFI_ENET_TXQ_WI_SEND (0x402) /* Single Frame Transmission */
-#define BFI_ENET_TXQ_WI_SEND_LSO (0x403) /* Multi-Frame Transmission */
-#define BFI_ENET_TXQ_WI_EXTENSION (0x104) /* Extension WI */
-
-/* TxQ Entry Control Flags */
-#define BFI_ENET_TXQ_WI_CF_FCOE_CRC (1 << 8)
-#define BFI_ENET_TXQ_WI_CF_IPID_MODE (1 << 5)
-#define BFI_ENET_TXQ_WI_CF_INS_PRIO (1 << 4)
-#define BFI_ENET_TXQ_WI_CF_INS_VLAN (1 << 3)
-#define BFI_ENET_TXQ_WI_CF_UDP_CKSUM (1 << 2)
-#define BFI_ENET_TXQ_WI_CF_TCP_CKSUM (1 << 1)
-#define BFI_ENET_TXQ_WI_CF_IP_CKSUM (1 << 0)
-
-struct bfi_enet_txq_wi_base {
- u8 reserved;
- u8 num_vectors; /* number of vectors present */
- u16 opcode;
- /* BFI_ENET_TXQ_WI_SEND or BFI_ENET_TXQ_WI_SEND_LSO */
- u16 flags; /* OR of all the flags */
- u16 l4_hdr_size_n_offset;
- u16 vlan_tag;
- u16 lso_mss; /* Only 14 LSB are valid */
- u32 frame_length; /* Only 24 LSB are valid */
-};
-
-struct bfi_enet_txq_wi_ext {
- u16 reserved;
- u16 opcode; /* BFI_ENET_TXQ_WI_EXTENSION */
- u32 reserved2[3];
-};
-
-struct bfi_enet_txq_wi_vector { /* Tx Buffer Descriptor */
- u16 reserved;
- u16 length; /* Only 14 LSB are valid */
- union bfi_addr_be_u addr;
-};
-
-/**
- * TxQ Entry Structure
- *
- */
-struct bfi_enet_txq_entry {
- union {
- struct bfi_enet_txq_wi_base base;
- struct bfi_enet_txq_wi_ext ext;
- } wi;
- struct bfi_enet_txq_wi_vector vector[BFI_ENET_TXQ_WI_VECT_MAX];
-};
-
-#define wi_hdr wi.base
-#define wi_ext_hdr wi.ext
-
-#define BFI_ENET_TXQ_WI_L4_HDR_N_OFFSET(_hdr_size, _offset) \
- (((_hdr_size) << 10) | ((_offset) & 0x3FF))
-
-/**
- * R X Q U E U E D E F I N E S
- */
-struct bfi_enet_rxq_entry {
- union bfi_addr_be_u rx_buffer;
-};
-
-/**
- * R X C O M P L E T I O N Q U E U E D E F I N E S
- */
-/* CQ Entry Flags */
-#define BFI_ENET_CQ_EF_MAC_ERROR (1 << 0)
-#define BFI_ENET_CQ_EF_FCS_ERROR (1 << 1)
-#define BFI_ENET_CQ_EF_TOO_LONG (1 << 2)
-#define BFI_ENET_CQ_EF_FC_CRC_OK (1 << 3)
-
-#define BFI_ENET_CQ_EF_RSVD1 (1 << 4)
-#define BFI_ENET_CQ_EF_L4_CKSUM_OK (1 << 5)
-#define BFI_ENET_CQ_EF_L3_CKSUM_OK (1 << 6)
-#define BFI_ENET_CQ_EF_HDS_HEADER (1 << 7)
-
-#define BFI_ENET_CQ_EF_UDP (1 << 8)
-#define BFI_ENET_CQ_EF_TCP (1 << 9)
-#define BFI_ENET_CQ_EF_IP_OPTIONS (1 << 10)
-#define BFI_ENET_CQ_EF_IPV6 (1 << 11)
-
-#define BFI_ENET_CQ_EF_IPV4 (1 << 12)
-#define BFI_ENET_CQ_EF_VLAN (1 << 13)
-#define BFI_ENET_CQ_EF_RSS (1 << 14)
-#define BFI_ENET_CQ_EF_RSVD2 (1 << 15)
-
-#define BFI_ENET_CQ_EF_MCAST_MATCH (1 << 16)
-#define BFI_ENET_CQ_EF_MCAST (1 << 17)
-#define BFI_ENET_CQ_EF_BCAST (1 << 18)
-#define BFI_ENET_CQ_EF_REMOTE (1 << 19)
-
-#define BFI_ENET_CQ_EF_LOCAL (1 << 20)
-
-/* CQ Entry Structure */
-struct bfi_enet_cq_entry {
- u32 flags;
- u16 vlan_tag;
- u16 length;
- u32 rss_hash;
- u8 valid;
- u8 reserved1;
- u8 reserved2;
- u8 rxq_id;
-};
-
-/**
- * E N E T C O N T R O L P A T H C O M M A N D S
- */
-struct bfi_enet_q {
- union bfi_addr_u pg_tbl;
- union bfi_addr_u first_entry;
- u16 pages; /* # of pages */
- u16 page_sz;
-};
-
-struct bfi_enet_txq {
- struct bfi_enet_q q;
- u8 priority;
- u8 rsvd[3];
-};
-
-struct bfi_enet_rxq {
- struct bfi_enet_q q;
- u16 rx_buffer_size;
- u16 rsvd;
-};
-
-struct bfi_enet_cq {
- struct bfi_enet_q q;
-};
-
-struct bfi_enet_ib_cfg {
- u8 int_pkt_dma;
- u8 int_enabled;
- u8 int_pkt_enabled;
- u8 continuous_coalescing;
- u8 msix;
- u8 rsvd[3];
- u32 coalescing_timeout;
- u32 inter_pkt_timeout;
- u8 inter_pkt_count;
- u8 rsvd1[3];
-};
-
-struct bfi_enet_ib {
- union bfi_addr_u index_addr;
- union {
- u16 msix_index;
- u16 intx_bitmask;
- } intr;
- u16 rsvd;
-};
-
-/**
- * ENET command messages
- */
-enum bfi_enet_h2i_msgs {
- /* Rx Commands */
- BFI_ENET_H2I_RX_CFG_SET_REQ = 1,
- BFI_ENET_H2I_RX_CFG_CLR_REQ = 2,
-
- BFI_ENET_H2I_RIT_CFG_REQ = 3,
- BFI_ENET_H2I_RSS_CFG_REQ = 4,
- BFI_ENET_H2I_RSS_ENABLE_REQ = 5,
- BFI_ENET_H2I_RX_PROMISCUOUS_REQ = 6,
- BFI_ENET_H2I_RX_DEFAULT_REQ = 7,
-
- BFI_ENET_H2I_MAC_UCAST_SET_REQ = 8,
- BFI_ENET_H2I_MAC_UCAST_CLR_REQ = 9,
- BFI_ENET_H2I_MAC_UCAST_ADD_REQ = 10,
- BFI_ENET_H2I_MAC_UCAST_DEL_REQ = 11,
-
- BFI_ENET_H2I_MAC_MCAST_ADD_REQ = 12,
- BFI_ENET_H2I_MAC_MCAST_DEL_REQ = 13,
- BFI_ENET_H2I_MAC_MCAST_FILTER_REQ = 14,
-
- BFI_ENET_H2I_RX_VLAN_SET_REQ = 15,
- BFI_ENET_H2I_RX_VLAN_STRIP_ENABLE_REQ = 16,
-
- /* Tx Commands */
- BFI_ENET_H2I_TX_CFG_SET_REQ = 17,
- BFI_ENET_H2I_TX_CFG_CLR_REQ = 18,
-
- /* Port Commands */
- BFI_ENET_H2I_PORT_ADMIN_UP_REQ = 19,
- BFI_ENET_H2I_SET_PAUSE_REQ = 20,
- BFI_ENET_H2I_DIAG_LOOPBACK_REQ = 21,
-
- /* Get Attributes Command */
- BFI_ENET_H2I_GET_ATTR_REQ = 22,
-
- /* Statistics Commands */
- BFI_ENET_H2I_STATS_GET_REQ = 23,
- BFI_ENET_H2I_STATS_CLR_REQ = 24,
-
- BFI_ENET_H2I_WOL_MAGIC_REQ = 25,
- BFI_ENET_H2I_WOL_FRAME_REQ = 26,
-
- BFI_ENET_H2I_MAX = 27,
-};
-
-enum bfi_enet_i2h_msgs {
- /* Rx Responses */
- BFI_ENET_I2H_RX_CFG_SET_RSP =
- BFA_I2HM(BFI_ENET_H2I_RX_CFG_SET_REQ),
- BFI_ENET_I2H_RX_CFG_CLR_RSP =
- BFA_I2HM(BFI_ENET_H2I_RX_CFG_CLR_REQ),
-
- BFI_ENET_I2H_RIT_CFG_RSP =
- BFA_I2HM(BFI_ENET_H2I_RIT_CFG_REQ),
- BFI_ENET_I2H_RSS_CFG_RSP =
- BFA_I2HM(BFI_ENET_H2I_RSS_CFG_REQ),
- BFI_ENET_I2H_RSS_ENABLE_RSP =
- BFA_I2HM(BFI_ENET_H2I_RSS_ENABLE_REQ),
- BFI_ENET_I2H_RX_PROMISCUOUS_RSP =
- BFA_I2HM(BFI_ENET_H2I_RX_PROMISCUOUS_REQ),
- BFI_ENET_I2H_RX_DEFAULT_RSP =
- BFA_I2HM(BFI_ENET_H2I_RX_DEFAULT_REQ),
-
- BFI_ENET_I2H_MAC_UCAST_SET_RSP =
- BFA_I2HM(BFI_ENET_H2I_MAC_UCAST_SET_REQ),
- BFI_ENET_I2H_MAC_UCAST_CLR_RSP =
- BFA_I2HM(BFI_ENET_H2I_MAC_UCAST_CLR_REQ),
- BFI_ENET_I2H_MAC_UCAST_ADD_RSP =
- BFA_I2HM(BFI_ENET_H2I_MAC_UCAST_ADD_REQ),
- BFI_ENET_I2H_MAC_UCAST_DEL_RSP =
- BFA_I2HM(BFI_ENET_H2I_MAC_UCAST_DEL_REQ),
-
- BFI_ENET_I2H_MAC_MCAST_ADD_RSP =
- BFA_I2HM(BFI_ENET_H2I_MAC_MCAST_ADD_REQ),
- BFI_ENET_I2H_MAC_MCAST_DEL_RSP =
- BFA_I2HM(BFI_ENET_H2I_MAC_MCAST_DEL_REQ),
- BFI_ENET_I2H_MAC_MCAST_FILTER_RSP =
- BFA_I2HM(BFI_ENET_H2I_MAC_MCAST_FILTER_REQ),
-
- BFI_ENET_I2H_RX_VLAN_SET_RSP =
- BFA_I2HM(BFI_ENET_H2I_RX_VLAN_SET_REQ),
-
- BFI_ENET_I2H_RX_VLAN_STRIP_ENABLE_RSP =
- BFA_I2HM(BFI_ENET_H2I_RX_VLAN_STRIP_ENABLE_REQ),
-
- /* Tx Responses */
- BFI_ENET_I2H_TX_CFG_SET_RSP =
- BFA_I2HM(BFI_ENET_H2I_TX_CFG_SET_REQ),
- BFI_ENET_I2H_TX_CFG_CLR_RSP =
- BFA_I2HM(BFI_ENET_H2I_TX_CFG_CLR_REQ),
-
- /* Port Responses */
- BFI_ENET_I2H_PORT_ADMIN_RSP =
- BFA_I2HM(BFI_ENET_H2I_PORT_ADMIN_UP_REQ),
-
- BFI_ENET_I2H_SET_PAUSE_RSP =
- BFA_I2HM(BFI_ENET_H2I_SET_PAUSE_REQ),
- BFI_ENET_I2H_DIAG_LOOPBACK_RSP =
- BFA_I2HM(BFI_ENET_H2I_DIAG_LOOPBACK_REQ),
-
- /* Attributes Response */
- BFI_ENET_I2H_GET_ATTR_RSP =
- BFA_I2HM(BFI_ENET_H2I_GET_ATTR_REQ),
-
- /* Statistics Responses */
- BFI_ENET_I2H_STATS_GET_RSP =
- BFA_I2HM(BFI_ENET_H2I_STATS_GET_REQ),
- BFI_ENET_I2H_STATS_CLR_RSP =
- BFA_I2HM(BFI_ENET_H2I_STATS_CLR_REQ),
-
- BFI_ENET_I2H_WOL_MAGIC_RSP =
- BFA_I2HM(BFI_ENET_H2I_WOL_MAGIC_REQ),
- BFI_ENET_I2H_WOL_FRAME_RSP =
- BFA_I2HM(BFI_ENET_H2I_WOL_FRAME_REQ),
-
- /* AENs */
- BFI_ENET_I2H_LINK_DOWN_AEN = BFA_I2HM(BFI_ENET_H2I_MAX),
- BFI_ENET_I2H_LINK_UP_AEN = BFA_I2HM(BFI_ENET_H2I_MAX + 1),
-
- BFI_ENET_I2H_PORT_ENABLE_AEN = BFA_I2HM(BFI_ENET_H2I_MAX + 2),
- BFI_ENET_I2H_PORT_DISABLE_AEN = BFA_I2HM(BFI_ENET_H2I_MAX + 3),
-
- BFI_ENET_I2H_BW_UPDATE_AEN = BFA_I2HM(BFI_ENET_H2I_MAX + 4),
-};
-
-/**
- * The following error codes can be returned by the enet commands
- */
-enum bfi_enet_err {
- BFI_ENET_CMD_OK = 0,
- BFI_ENET_CMD_FAIL = 1,
- BFI_ENET_CMD_DUP_ENTRY = 2, /* !< Duplicate entry in CAM */
- BFI_ENET_CMD_CAM_FULL = 3, /* !< CAM is full */
- BFI_ENET_CMD_NOT_OWNER = 4, /* !< Not permitted, b'cos not owner */
- BFI_ENET_CMD_NOT_EXEC = 5, /* !< Was not sent to f/w at all */
- BFI_ENET_CMD_WAITING = 6, /* !< Waiting for completion */
- BFI_ENET_CMD_PORT_DISABLED = 7, /* !< port in disabled state */
-};
-
-/**
- * Generic Request
- *
- * bfi_enet_req is used by:
- * BFI_ENET_H2I_RX_CFG_CLR_REQ
- * BFI_ENET_H2I_TX_CFG_CLR_REQ
- */
-struct bfi_enet_req {
- struct bfi_msgq_mhdr mh;
-};
-
-/**
- * Enable/Disable Request
- *
- * bfi_enet_enable_req is used by:
- * BFI_ENET_H2I_RSS_ENABLE_REQ (enet_id must be zero)
- * BFI_ENET_H2I_RX_PROMISCUOUS_REQ (enet_id must be zero)
- * BFI_ENET_H2I_RX_DEFAULT_REQ (enet_id must be zero)
- * BFI_ENET_H2I_RX_MAC_MCAST_FILTER_REQ
- * BFI_ENET_H2I_PORT_ADMIN_UP_REQ (enet_id must be zero)
- */
-struct bfi_enet_enable_req {
- struct bfi_msgq_mhdr mh;
- u8 enable; /* 1 = enable; 0 = disable */
- u8 rsvd[3];
-};
-
-/**
- * Generic Response
- */
-struct bfi_enet_rsp {
- struct bfi_msgq_mhdr mh;
- u8 error; /*!< if error see cmd_offset */
- u8 rsvd;
- u16 cmd_offset; /*!< offset to invalid parameter */
-};
-
-/**
- * GLOBAL CONFIGURATION
- */
-
-/**
- * bfi_enet_attr_req is used by:
- * BFI_ENET_H2I_GET_ATTR_REQ
- */
-struct bfi_enet_attr_req {
- struct bfi_msgq_mhdr mh;
-};
-
-/**
- * bfi_enet_attr_rsp is used by:
- * BFI_ENET_I2H_GET_ATTR_RSP
- */
-struct bfi_enet_attr_rsp {
- struct bfi_msgq_mhdr mh;
- u8 error; /*!< if error see cmd_offset */
- u8 rsvd;
- u16 cmd_offset; /*!< offset to invalid parameter */
- u32 max_cfg;
- u32 max_ucmac;
- u32 rit_size;
-};
-
-/**
- * Tx Configuration
- *
- * bfi_enet_tx_cfg is used by:
- * BFI_ENET_H2I_TX_CFG_SET_REQ
- */
-enum bfi_enet_tx_vlan_mode {
- BFI_ENET_TX_VLAN_NOP = 0,
- BFI_ENET_TX_VLAN_INS = 1,
- BFI_ENET_TX_VLAN_WI = 2,
-};
-
-struct bfi_enet_tx_cfg {
- u8 vlan_mode; /*!< processing mode */
- u8 rsvd;
- u16 vlan_id;
- u8 admit_tagged_frame;
- u8 apply_vlan_filter;
- u8 add_to_vswitch;
- u8 rsvd1[1];
-};
-
-struct bfi_enet_tx_cfg_req {
- struct bfi_msgq_mhdr mh;
- u8 num_queues; /* # of Tx Queues */
- u8 rsvd[3];
-
- struct {
- struct bfi_enet_txq q;
- struct bfi_enet_ib ib;
- } q_cfg[BFI_ENET_TXQ_PRIO_MAX];
-
- struct bfi_enet_ib_cfg ib_cfg;
-
- struct bfi_enet_tx_cfg tx_cfg;
-};
-
-struct bfi_enet_tx_cfg_rsp {
- struct bfi_msgq_mhdr mh;
- u8 error;
- u8 hw_id; /* For debugging */
- u8 rsvd[2];
- struct {
- u32 q_dbell; /* PCI base address offset */
- u32 i_dbell; /* PCI base address offset */
- u8 hw_qid; /* For debugging */
- u8 rsvd[3];
- } q_handles[BFI_ENET_TXQ_PRIO_MAX];
-};
-
-/**
- * Rx Configuration
- *
- * bfi_enet_rx_cfg is used by:
- * BFI_ENET_H2I_RX_CFG_SET_REQ
- */
-enum bfi_enet_rxq_type {
- BFI_ENET_RXQ_SINGLE = 1,
- BFI_ENET_RXQ_LARGE_SMALL = 2,
- BFI_ENET_RXQ_HDS = 3,
- BFI_ENET_RXQ_HDS_OPT_BASED = 4,
-};
-
-enum bfi_enet_hds_type {
- BFI_ENET_HDS_FORCED = 0x01,
- BFI_ENET_HDS_IPV6_UDP = 0x02,
- BFI_ENET_HDS_IPV6_TCP = 0x04,
- BFI_ENET_HDS_IPV4_TCP = 0x08,
- BFI_ENET_HDS_IPV4_UDP = 0x10,
-};
-
-struct bfi_enet_rx_cfg {
- u8 rxq_type;
- u8 rsvd[3];
-
- struct {
- u8 max_header_size;
- u8 force_offset;
- u8 type;
- u8 rsvd1;
- } hds;
-
- u8 multi_buffer;
- u8 strip_vlan;
- u8 drop_untagged;
- u8 rsvd2;
-};
-
-/*
- * Multicast frames are received on the ql of q-set index zero.
- * On the completion queue. RxQ ID = even is for large/data buffer queues
- * and RxQ ID = odd is for small/header buffer queues.
- */
-struct bfi_enet_rx_cfg_req {
- struct bfi_msgq_mhdr mh;
- u8 num_queue_sets; /* # of Rx Queue Sets */
- u8 rsvd[3];
-
- struct {
- struct bfi_enet_rxq ql; /* large/data/single buffers */
- struct bfi_enet_rxq qs; /* small/header buffers */
- struct bfi_enet_cq cq;
- struct bfi_enet_ib ib;
- } q_cfg[BFI_ENET_RX_QSET_MAX];
-
- struct bfi_enet_ib_cfg ib_cfg;
-
- struct bfi_enet_rx_cfg rx_cfg;
-};
-
-struct bfi_enet_rx_cfg_rsp {
- struct bfi_msgq_mhdr mh;
- u8 error;
- u8 hw_id; /* For debugging */
- u8 rsvd[2];
- struct {
- u32 ql_dbell; /* PCI base address offset */
- u32 qs_dbell; /* PCI base address offset */
- u32 i_dbell; /* PCI base address offset */
- u8 hw_lqid; /* For debugging */
- u8 hw_sqid; /* For debugging */
- u8 hw_cqid; /* For debugging */
- u8 rsvd;
- } q_handles[BFI_ENET_RX_QSET_MAX];
-};
-
-/**
- * RIT
- *
- * bfi_enet_rit_req is used by:
- * BFI_ENET_H2I_RIT_CFG_REQ
- */
-struct bfi_enet_rit_req {
- struct bfi_msgq_mhdr mh;
- u16 size; /* number of table-entries used */
- u8 rsvd[2];
- u8 table[BFI_ENET_RSS_RIT_MAX];
-};
-
-/**
- * RSS
- *
- * bfi_enet_rss_cfg_req is used by:
- * BFI_ENET_H2I_RSS_CFG_REQ
- */
-enum bfi_enet_rss_type {
- BFI_ENET_RSS_IPV6 = 0x01,
- BFI_ENET_RSS_IPV6_TCP = 0x02,
- BFI_ENET_RSS_IPV4 = 0x04,
- BFI_ENET_RSS_IPV4_TCP = 0x08
-};
-
-struct bfi_enet_rss_cfg {
- u8 type;
- u8 mask;
- u8 rsvd[2];
- u32 key[BFI_ENET_RSS_KEY_LEN];
-};
-
-struct bfi_enet_rss_cfg_req {
- struct bfi_msgq_mhdr mh;
- struct bfi_enet_rss_cfg cfg;
-};
-
-/**
- * MAC Unicast
- *
- * bfi_enet_rx_vlan_req is used by:
- * BFI_ENET_H2I_MAC_UCAST_SET_REQ
- * BFI_ENET_H2I_MAC_UCAST_CLR_REQ
- * BFI_ENET_H2I_MAC_UCAST_ADD_REQ
- * BFI_ENET_H2I_MAC_UCAST_DEL_REQ
- */
-struct bfi_enet_ucast_req {
- struct bfi_msgq_mhdr mh;
- mac_t mac_addr;
- u8 rsvd[2];
-};
-
-/**
- * MAC Unicast + VLAN
- */
-struct bfi_enet_mac_n_vlan_req {
- struct bfi_msgq_mhdr mh;
- u16 vlan_id;
- mac_t mac_addr;
-};
-
-/**
- * MAC Multicast
- *
- * bfi_enet_mac_mfilter_add_req is used by:
- * BFI_ENET_H2I_MAC_MCAST_ADD_REQ
- */
-struct bfi_enet_mcast_add_req {
- struct bfi_msgq_mhdr mh;
- mac_t mac_addr;
- u8 rsvd[2];
-};
-
-/**
- * bfi_enet_mac_mfilter_add_rsp is used by:
- * BFI_ENET_I2H_MAC_MCAST_ADD_RSP
- */
-struct bfi_enet_mcast_add_rsp {
- struct bfi_msgq_mhdr mh;
- u8 error;
- u8 rsvd;
- u16 cmd_offset;
- u16 handle;
- u8 rsvd1[2];
-};
-
-/**
- * bfi_enet_mac_mfilter_del_req is used by:
- * BFI_ENET_H2I_MAC_MCAST_DEL_REQ
- */
-struct bfi_enet_mcast_del_req {
- struct bfi_msgq_mhdr mh;
- u16 handle;
- u8 rsvd[2];
-};
-
-/**
- * VLAN
- *
- * bfi_enet_rx_vlan_req is used by:
- * BFI_ENET_H2I_RX_VLAN_SET_REQ
- */
-struct bfi_enet_rx_vlan_req {
- struct bfi_msgq_mhdr mh;
- u8 block_idx;
- u8 rsvd[3];
- u32 bit_mask[BFI_ENET_VLAN_WORDS_MAX];
-};
-
-/**
- * PAUSE
- *
- * bfi_enet_set_pause_req is used by:
- * BFI_ENET_H2I_SET_PAUSE_REQ
- */
-struct bfi_enet_set_pause_req {
- struct bfi_msgq_mhdr mh;
- u8 rsvd[2];
- u8 tx_pause; /* 1 = enable; 0 = disable */
- u8 rx_pause; /* 1 = enable; 0 = disable */
-};
-
-/**
- * DIAGNOSTICS
- *
- * bfi_enet_diag_lb_req is used by:
- * BFI_ENET_H2I_DIAG_LOOPBACK
- */
-struct bfi_enet_diag_lb_req {
- struct bfi_msgq_mhdr mh;
- u8 rsvd[2];
- u8 mode; /* cable or Serdes */
- u8 enable; /* 1 = enable; 0 = disable */
-};
-
-/**
- * enum for Loopback opmodes
- */
-enum {
- BFI_ENET_DIAG_LB_OPMODE_EXT = 0,
- BFI_ENET_DIAG_LB_OPMODE_CBL = 1,
-};
-
-/**
- * STATISTICS
- *
- * bfi_enet_stats_req is used by:
- * BFI_ENET_H2I_STATS_GET_REQ
- * BFI_ENET_I2H_STATS_CLR_REQ
- */
-struct bfi_enet_stats_req {
- struct bfi_msgq_mhdr mh;
- u16 stats_mask;
- u8 rsvd[2];
- u32 rx_enet_mask;
- u32 tx_enet_mask;
- union bfi_addr_u host_buffer;
-};
-
-/**
- * defines for "stats_mask" above.
- */
-#define BFI_ENET_STATS_MAC (1 << 0) /* !< MAC Statistics */
-#define BFI_ENET_STATS_BPC (1 << 1) /* !< Pause Stats from BPC */
-#define BFI_ENET_STATS_RAD (1 << 2) /* !< Rx Admission Statistics */
-#define BFI_ENET_STATS_RX_FC (1 << 3) /* !< Rx FC Stats from RxA */
-#define BFI_ENET_STATS_TX_FC (1 << 4) /* !< Tx FC Stats from TxA */
-
-#define BFI_ENET_STATS_ALL 0x1f
-
-/* TxF Frame Statistics */
-struct bfi_enet_stats_txf {
- u64 ucast_octets;
- u64 ucast;
- u64 ucast_vlan;
-
- u64 mcast_octets;
- u64 mcast;
- u64 mcast_vlan;
-
- u64 bcast_octets;
- u64 bcast;
- u64 bcast_vlan;
-
- u64 errors;
- u64 filter_vlan; /* frames filtered due to VLAN */
- u64 filter_mac_sa; /* frames filtered due to SA check */
-};
-
-/* RxF Frame Statistics */
-struct bfi_enet_stats_rxf {
- u64 ucast_octets;
- u64 ucast;
- u64 ucast_vlan;
-
- u64 mcast_octets;
- u64 mcast;
- u64 mcast_vlan;
-
- u64 bcast_octets;
- u64 bcast;
- u64 bcast_vlan;
- u64 frame_drops;
-};
-
-/* FC Tx Frame Statistics */
-struct bfi_enet_stats_fc_tx {
- u64 txf_ucast_octets;
- u64 txf_ucast;
- u64 txf_ucast_vlan;
-
- u64 txf_mcast_octets;
- u64 txf_mcast;
- u64 txf_mcast_vlan;
-
- u64 txf_bcast_octets;
- u64 txf_bcast;
- u64 txf_bcast_vlan;
-
- u64 txf_parity_errors;
- u64 txf_timeout;
- u64 txf_fid_parity_errors;
-};
-
-/* FC Rx Frame Statistics */
-struct bfi_enet_stats_fc_rx {
- u64 rxf_ucast_octets;
- u64 rxf_ucast;
- u64 rxf_ucast_vlan;
-
- u64 rxf_mcast_octets;
- u64 rxf_mcast;
- u64 rxf_mcast_vlan;
-
- u64 rxf_bcast_octets;
- u64 rxf_bcast;
- u64 rxf_bcast_vlan;
-};
-
-/* RAD Frame Statistics */
-struct bfi_enet_stats_rad {
- u64 rx_frames;
- u64 rx_octets;
- u64 rx_vlan_frames;
-
- u64 rx_ucast;
- u64 rx_ucast_octets;
- u64 rx_ucast_vlan;
-
- u64 rx_mcast;
- u64 rx_mcast_octets;
- u64 rx_mcast_vlan;
-
- u64 rx_bcast;
- u64 rx_bcast_octets;
- u64 rx_bcast_vlan;
-
- u64 rx_drops;
-};
-
-/* BPC Tx Registers */
-struct bfi_enet_stats_bpc {
- /* transmit stats */
- u64 tx_pause[8];
- u64 tx_zero_pause[8]; /*!< Pause cancellation */
- /*!<Pause initiation rather than retention */
- u64 tx_first_pause[8];
-
- /* receive stats */
- u64 rx_pause[8];
- u64 rx_zero_pause[8]; /*!< Pause cancellation */
- /*!<Pause initiation rather than retention */
- u64 rx_first_pause[8];
-};
-
-/* MAC Rx Statistics */
-struct bfi_enet_stats_mac {
- u64 frame_64; /* both rx and tx counter */
- u64 frame_65_127; /* both rx and tx counter */
- u64 frame_128_255; /* both rx and tx counter */
- u64 frame_256_511; /* both rx and tx counter */
- u64 frame_512_1023; /* both rx and tx counter */
- u64 frame_1024_1518; /* both rx and tx counter */
- u64 frame_1519_1522; /* both rx and tx counter */
-
- /* receive stats */
- u64 rx_bytes;
- u64 rx_packets;
- u64 rx_fcs_error;
- u64 rx_multicast;
- u64 rx_broadcast;
- u64 rx_control_frames;
- u64 rx_pause;
- u64 rx_unknown_opcode;
- u64 rx_alignment_error;
- u64 rx_frame_length_error;
- u64 rx_code_error;
- u64 rx_carrier_sense_error;
- u64 rx_undersize;
- u64 rx_oversize;
- u64 rx_fragments;
- u64 rx_jabber;
- u64 rx_drop;
-
- /* transmit stats */
- u64 tx_bytes;
- u64 tx_packets;
- u64 tx_multicast;
- u64 tx_broadcast;
- u64 tx_pause;
- u64 tx_deferral;
- u64 tx_excessive_deferral;
- u64 tx_single_collision;
- u64 tx_muliple_collision;
- u64 tx_late_collision;
- u64 tx_excessive_collision;
- u64 tx_total_collision;
- u64 tx_pause_honored;
- u64 tx_drop;
- u64 tx_jabber;
- u64 tx_fcs_error;
- u64 tx_control_frame;
- u64 tx_oversize;
- u64 tx_undersize;
- u64 tx_fragments;
-};
-
-/**
- * Complete statistics, DMAed from fw to host followed by
- * BFI_ENET_I2H_STATS_GET_RSP
- */
-struct bfi_enet_stats {
- struct bfi_enet_stats_mac mac_stats;
- struct bfi_enet_stats_bpc bpc_stats;
- struct bfi_enet_stats_rad rad_stats;
- struct bfi_enet_stats_rad rlb_stats;
- struct bfi_enet_stats_fc_rx fc_rx_stats;
- struct bfi_enet_stats_fc_tx fc_tx_stats;
- struct bfi_enet_stats_rxf rxf_stats[BFI_ENET_CFG_MAX];
- struct bfi_enet_stats_txf txf_stats[BFI_ENET_CFG_MAX];
-};
-
-#pragma pack()
-
-#endif /* __BFI_ENET_H__ */