ixgbe_type.h revision 9da57d7b0ddd8d73b676ce12c040362132cdd538
/*
* CDDL HEADER START
*
* Copyright(c) 2007-2008 Intel Corporation. All rights reserved.
* The contents of this file are subject to the terms of the
* Common Development and Distribution License (the "License").
* You may not use this file except in compliance with the License.
*
* You can obtain a copy of the license at:
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When using or redistributing this file, you may do so under the
* License only. No other modification of this header is permitted.
*
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright 2008 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms of the CDDL.
*/
/* IntelVersion: 1.164 v2008-03-04 */
#ifndef _IXGBE_TYPE_H
#define _IXGBE_TYPE_H
#pragma ident "%Z%%M% %I% %E% SMI"
#include "ixgbe_osdep.h"
/* Vendor ID */
#define IXGBE_INTEL_VENDOR_ID 0x8086
/* Device IDs */
#define IXGBE_DEV_ID_82598AF_DUAL_PORT 0x10C6
#define IXGBE_DEV_ID_82598AF_SINGLE_PORT 0x10C7
#define IXGBE_DEV_ID_82598EB_CX4 0x10DD
#define IXGBE_DEV_ID_82598_CX4_DUAL_PORT 0x10EC
#define IXGBE_DEV_ID_82598EB_XF_LR 0x10F4
/* General Registers */
#define IXGBE_CTRL 0x00000
#define IXGBE_STATUS 0x00008
#define IXGBE_CTRL_EXT 0x00018
#define IXGBE_ESDP 0x00020
#define IXGBE_EODSDP 0x00028
#define IXGBE_LEDCTL 0x00200
#define IXGBE_FRTIMER 0x00048
#define IXGBE_TCPTIMER 0x0004C
/* NVM Registers */
#define IXGBE_EEC 0x10010
#define IXGBE_EERD 0x10014
#define IXGBE_FLA 0x1001C
#define IXGBE_EEMNGCTL 0x10110
#define IXGBE_EEMNGDATA 0x10114
#define IXGBE_FLMNGCTL 0x10118
#define IXGBE_FLMNGDATA 0x1011C
#define IXGBE_FLMNGCNT 0x10120
#define IXGBE_FLOP 0x1013C
#define IXGBE_GRC 0x10200
/* Interrupt Registers */
#define IXGBE_EICR 0x00800
#define IXGBE_EICS 0x00808
#define IXGBE_EIMS 0x00880
#define IXGBE_EIMC 0x00888
#define IXGBE_EIAC 0x00810
#define IXGBE_EIAM 0x00890
#define IXGBE_GPIE 0x00898
/* Flow Control Registers */
#define IXGBE_PFCTOP 0x03008
#define IXGBE_FCRTV 0x032A0
#define IXGBE_TFCS 0x0CE00
/* Receive DMA Registers */
/*
* Split and Replication Receive Control Registers
* 00-15 : 0x02100 + n*4
* 16-64 : 0x01014 + n*0x40
* 64-127: 0x0D014 + (n-64)*0x40
*/
/*
* Rx DCA Control Register:
* 00-15 : 0x02200 + n*4
* 16-64 : 0x0100C + n*0x40
* 64-127: 0x0D00C + (n-64)*0x40
*/
#define IXGBE_RDRXCTL 0x02F00
/* 8 of these 0x03C00 - 0x03C1C */
#define IXGBE_RXCTRL 0x03000
#define IXGBE_DROPEN 0x03D04
#define IXGBE_RXPBSIZE_SHIFT 10
/* Receive Registers */
#define IXGBE_RXCSUM 0x05000
#define IXGBE_RFCTL 0x05008
/* Multicast Table Array - 128 entries */
/* Packet split receive type */
/* array of 4096 1-bit vlan filters */
/* array of 4096 4-bit vlan vmdq indices */
#define IXGBE_FCTRL 0x05080
#define IXGBE_VLNCTRL 0x05088
#define IXGBE_MCSTCTRL 0x05090
#define IXGBE_MRQC 0x05818
#define IXGBE_VMD_CTL 0x0581C
#define IXGBE_IMIRVP 0x05AC0
/* Transmit DMA registers */
#define IXGBE_DTXCTL 0x07E00
#define IXGBE_TIPG 0x0CB00
#define IXGBE_MNGTXMAP 0x0CD10
#define IXGBE_TIPG_FIBER_DEFAULT 3
#define IXGBE_TXPBSIZE_SHIFT 10
/* Wake up registers */
#define IXGBE_WUC 0x05800
#define IXGBE_WUFC 0x05808
#define IXGBE_WUS 0x05810
#define IXGBE_IPAV 0x05838
#define IXGBE_WUPL 0x05900
/* Music registers */
#define IXGBE_RMCS 0x03D00
#define IXGBE_DPMCS 0x07F40
#define IXGBE_PDPMCS 0x0CD00
#define IXGBE_RUPPBMR 0x050A0
/* Stats registers */
#define IXGBE_CRCERRS 0x04000
#define IXGBE_ILLERRC 0x04004
#define IXGBE_ERRBC 0x04008
#define IXGBE_MSPDC 0x04010
#define IXGBE_MLFC 0x04034
#define IXGBE_MRFC 0x04038
#define IXGBE_RLEC 0x04040
#define IXGBE_LXONTXC 0x03F60
#define IXGBE_LXONRXC 0x0CF60
#define IXGBE_LXOFFTXC 0x03F68
#define IXGBE_LXOFFRXC 0x0CF68
#define IXGBE_PRC64 0x0405C
#define IXGBE_PRC127 0x04060
#define IXGBE_PRC255 0x04064
#define IXGBE_PRC511 0x04068
#define IXGBE_PRC1023 0x0406C
#define IXGBE_PRC1522 0x04070
#define IXGBE_GPRC 0x04074
#define IXGBE_BPRC 0x04078
#define IXGBE_MPRC 0x0407C
#define IXGBE_GPTC 0x04080
#define IXGBE_GORCL 0x04088
#define IXGBE_GORCH 0x0408C
#define IXGBE_GOTCL 0x04090
#define IXGBE_GOTCH 0x04094
#define IXGBE_RUC 0x040A4
#define IXGBE_RFC 0x040A8
#define IXGBE_ROC 0x040AC
#define IXGBE_RJC 0x040B0
#define IXGBE_MNGPRC 0x040B4
#define IXGBE_MNGPDC 0x040B8
#define IXGBE_MNGPTC 0x0CF90
#define IXGBE_TORL 0x040C0
#define IXGBE_TORH 0x040C4
#define IXGBE_TPR 0x040D0
#define IXGBE_TPT 0x040D4
#define IXGBE_PTC64 0x040D8
#define IXGBE_PTC127 0x040DC
#define IXGBE_PTC255 0x040E0
#define IXGBE_PTC511 0x040E4
#define IXGBE_PTC1023 0x040E8
#define IXGBE_PTC1522 0x040EC
#define IXGBE_MPTC 0x040F0
#define IXGBE_BPTC 0x040F4
#define IXGBE_XEC 0x04120
/* Management */
#define IXGBE_MANC 0x05820
#define IXGBE_MFVAL 0x05824
#define IXGBE_MANC2H 0x05860
#define IXGBE_MIPAF 0x058B0
/* ARC Subsystem registers */
#define IXGBE_HICR 0x15F00
#define IXGBE_FWSTS 0x15F0C
#define IXGBE_HSMC0R 0x15F04
#define IXGBE_HSMC1R 0x15F08
#define IXGBE_SWSR 0x15F10
#define IXGBE_HFDR 0x15FE8
/* PCI-E registers */
#define IXGBE_GCR 0x11000
#define IXGBE_GTV 0x11004
#define IXGBE_FUNCTAG 0x11008
#define IXGBE_GLT 0x1100C
#define IXGBE_GSCL_1 0x11010
#define IXGBE_GSCL_2 0x11014
#define IXGBE_GSCL_3 0x11018
#define IXGBE_GSCL_4 0x1101C
#define IXGBE_GSCN_0 0x11020
#define IXGBE_GSCN_1 0x11024
#define IXGBE_GSCN_2 0x11028
#define IXGBE_GSCN_3 0x1102C
#define IXGBE_FACTPS 0x10150
#define IXGBE_PCIEANACTL 0x11040
#define IXGBE_SWSM 0x10140
#define IXGBE_FWSM 0x10148
#define IXGBE_GSSR 0x10160
#define IXGBE_MREVID 0x11064
#define IXGBE_DCA_ID 0x11070
#define IXGBE_DCA_CTRL 0x11074
/* Diagnostic Registers */
#define IXGBE_RDSTATCTL 0x02C20
#define IXGBE_RDHMPN 0x02F08
#define IXGBE_RDPROBE 0x02F20
#define IXGBE_TDSTATCTL 0x07C20
#define IXGBE_TDHMPN 0x07F08
#define IXGBE_TDPROBE 0x07F20
#define IXGBE_TXBUFCTRL 0x0C600
#define IXGBE_TXBUFDATA0 0x0C610
#define IXGBE_TXBUFDATA1 0x0C614
#define IXGBE_TXBUFDATA2 0x0C618
#define IXGBE_TXBUFDATA3 0x0C61C
#define IXGBE_RXBUFCTRL 0x03600
#define IXGBE_RXBUFDATA0 0x03610
#define IXGBE_RXBUFDATA1 0x03614
#define IXGBE_RXBUFDATA2 0x03618
#define IXGBE_RXBUFDATA3 0x0361C
#define IXGBE_RFVAL 0x050A4
#define IXGBE_MDFTC1 0x042B8
#define IXGBE_MDFTC2 0x042C0
#define IXGBE_MDFTFIFO1 0x042C4
#define IXGBE_MDFTFIFO2 0x042C8
#define IXGBE_MDFTS 0x042CC
#define IXGBE_PCIEECCCTL 0x1106C
#define IXGBE_PBTXECC 0x0C300
#define IXGBE_PBRXECC 0x03300
#define IXGBE_GHECCR 0x110B0
/* MAC Registers */
#define IXGBE_PCS1GCFIG 0x04200
#define IXGBE_PCS1GLCTL 0x04208
#define IXGBE_PCS1GLSTA 0x0420C
#define IXGBE_PCS1GDBG0 0x04210
#define IXGBE_PCS1GDBG1 0x04214
#define IXGBE_PCS1GANA 0x04218
#define IXGBE_PCS1GANLP 0x0421C
#define IXGBE_PCS1GANNP 0x04220
#define IXGBE_PCS1GANLPNP 0x04224
#define IXGBE_HLREG0 0x04240
#define IXGBE_HLREG1 0x04244
#define IXGBE_PAP 0x04248
#define IXGBE_MACA 0x0424C
#define IXGBE_APAE 0x04250
#define IXGBE_ARD 0x04254
#define IXGBE_AIS 0x04258
#define IXGBE_MSCA 0x0425C
#define IXGBE_MSRWD 0x04260
#define IXGBE_MLADD 0x04264
#define IXGBE_MHADD 0x04268
#define IXGBE_TREG 0x0426C
#define IXGBE_PCSS1 0x04288
#define IXGBE_PCSS2 0x0428C
#define IXGBE_XPCSS 0x04290
#define IXGBE_SERDESC 0x04298
#define IXGBE_MACS 0x0429C
#define IXGBE_AUTOC 0x042A0
#define IXGBE_LINKS 0x042A4
#define IXGBE_AUTOC2 0x042A8
#define IXGBE_AUTOC3 0x042AC
#define IXGBE_ANLP1 0x042B0
#define IXGBE_ANLP2 0x042B4
#define IXGBE_ATLASCTL 0x04800
/* CTRL Bit Masks */
/* FACTPS */
/* MHADD Bit Masks */
#define IXGBE_MHADD_MFS_MASK 0xFFFF0000
#define IXGBE_MHADD_MFS_SHIFT 16
/* Extended Device Control */
/* Direct Cache Access (DCA) definitions */
/* MSCA Bit Masks */
#define IXGBE_MSCA_NP_ADDR_MASK 0x0000FFFF
/* MDI Address (new protocol) */
#define IXGBE_MSCA_NP_ADDR_SHIFT 0
#define IXGBE_MSCA_DEV_TYPE_MASK 0x001F0000
/* Device Type (new protocol) */
#define IXGBE_MSCA_READ_AUTOINC 0x0C000000
/* OP CODE 11 (read, auto inc) */
#define IXGBE_MSCA_NEW_PROTOCOL 0x00000000
/* ST CODE 00 (new protocol) */
#define IXGBE_MSCA_OLD_PROTOCOL 0x10000000
/* ST CODE 01 (old protocol) */
/* MSRWD bit masks */
#define IXGBE_MSRWD_WRITE_DATA_MASK 0x0000FFFF
#define IXGBE_MSRWD_WRITE_DATA_SHIFT 0
#define IXGBE_MSRWD_READ_DATA_MASK 0xFFFF0000
#define IXGBE_MSRWD_READ_DATA_SHIFT 16
/* Atlas registers */
#define IXGBE_ATLAS_PDN_LPBK 0x24
#define IXGBE_ATLAS_PDN_10G 0xB
#define IXGBE_ATLAS_PDN_1G 0xC
#define IXGBE_ATLAS_PDN_AN 0xD
/* Atlas bit masks */
#define IXGBE_ATLASCTL_WRITE_CMD 0x00010000
#define IXGBE_ATLAS_PDN_TX_REG_EN 0x10
#define IXGBE_ATLAS_PDN_TX_10G_QL_ALL 0xF0
#define IXGBE_ATLAS_PDN_TX_1G_QL_ALL 0xF0
#define IXGBE_ATLAS_PDN_TX_AN_QL_ALL 0xF0
/* Device Type definitions for new protocol MDIO commands */
#define IXGBE_MDIO_PMA_PMD_DEV_TYPE 0x1
#define IXGBE_MDIO_PCS_DEV_TYPE 0x3
#define IXGBE_MDIO_PHY_XS_DEV_TYPE 0x4
#define IXGBE_MDIO_AUTO_NEG_DEV_TYPE 0x7
#define IXGBE_MDIO_VENDOR_SPECIFIC_1_10G_SPEED 0x0018
#define IXGBE_MDIO_VENDOR_SPECIFIC_1_1G_SPEED 0x0010
/* MII clause 22/28 definitions */
#define IXGBE_MDIO_PHY_LOW_POWER_MODE 0x0800
#define IXGBE_MII_SPEED_SELECTION_REG 0x10
#define IXGBE_MII_RESTART 0x200
#define IXGBE_MII_AUTONEG_COMPLETE 0x20
#define IXGBE_MII_AUTONEG_REG 0x0
#define IXGBE_PHY_REVISION_MASK 0xFFFFFFF0
#define IXGBE_MAX_PHY_ADDR 32
/* PHY IDs */
#define QT2022_PHY_ID 0x0043A400
/* General purpose Interrupt Enable */
#define IXGBE_GPIE_EIAME 0x40000000
#define IXGBE_GPIE_PBA_SUPPORT 0x80000000
/* Transmit Flow Control status */
#define IXGBE_TFCS_TXOFF 0x00000001
#define IXGBE_TFCS_TXOFF0 0x00000100
#define IXGBE_TFCS_TXOFF1 0x00000200
#define IXGBE_TFCS_TXOFF2 0x00000400
#define IXGBE_TFCS_TXOFF3 0x00000800
#define IXGBE_TFCS_TXOFF4 0x00001000
#define IXGBE_TFCS_TXOFF5 0x00002000
#define IXGBE_TFCS_TXOFF6 0x00004000
#define IXGBE_TFCS_TXOFF7 0x00008000
/* TCP Timer */
#define IXGBE_TCPTIMER_KS 0x00000100
#define IXGBE_TCPTIMER_COUNT_ENABLE 0x00000200
#define IXGBE_TCPTIMER_COUNT_FINISH 0x00000400
#define IXGBE_TCPTIMER_LOOP 0x00000800
#define IXGBE_TCPTIMER_DURATION_MASK 0x000000FF
/* HLREG0 Bit Masks */
/* VMD_CTL bitmasks */
#define IXGBE_VMD_CTL_VMDQ_EN 0x00000001
#define IXGBE_VMD_CTL_VMDQ_FILTER 0x00000002
/* RDHMPN and TDHMPN bitmasks */
#define IXGBE_RDHMPN_RDICADDR 0x007FF800
#define IXGBE_RDHMPN_RDICRDREQ 0x00800000
#define IXGBE_RDHMPN_RDICADDR_SHIFT 11
#define IXGBE_TDHMPN_TDICADDR 0x003FF800
#define IXGBE_TDHMPN_TDICRDREQ 0x00800000
#define IXGBE_TDHMPN_TDICADDR_SHIFT 11
/* Receive Checksum Control */
/* FCRTL Bit Masks */
/* PAP bit masks */
/* RMCS Bit Masks */
/* Receive Arbitration Control: 0 Round Robin, 1 DFP */
#define IXGBE_RMCS_RAC 0x00000004
/* Interrupt register bitmasks */
/* Extended Interrupt Cause Read */
/* Extended Interrupt Cause Set */
/* Gen Purpose Interrupt on SDP0 */
/* Gen Purpose Interrupt on SDP1 */
/* Extended Interrupt Mask Set */
/* Gen Purpose Interrupt on SDP0 */
/* Gen Purpose Interrupt on SDP1 */
/* Extended Interrupt Mask Clear */
/* Gen Purpose Interrupt on SDP0 */
/* Gen Purpose Interrupt on SDP1 */
#define IXGBE_EIMS_ENABLE_MASK ( \
/* Immediate Interrupt Rx (A.K.A. Low Latency Interrupt) */
/* Interrupt clear mask */
#define IXGBE_IRQ_CLEAR_MASK 0xFFFFFFFF
/* Interrupt Vector Allocation Registers */
#define IXGBE_IVAR_REG_NUM 25
#define IXGBE_IVAR_TXRX_ENTRY 96
#define IXGBE_IVAR_RX_ENTRY 64
#define IXGBE_IVAR_TX_ENTRY 32
/* VLAN Control Bit Masks */
/* STATUS Bit Masks */
/* ESDP Bit Masks */
/* LEDCTL Bit Masks */
#define IXGBE_LED_IVRT_BASE 0x00000040
#define IXGBE_LED_BLINK_BASE 0x00000080
#define IXGBE_LED_MODE_MASK_BASE 0x0000000F
/* LED modes */
#define IXGBE_LED_LINK_UP 0x0
#define IXGBE_LED_LINK_10G 0x1
#define IXGBE_LED_MAC 0x2
#define IXGBE_LED_FILTER 0x3
#define IXGBE_LED_LINK_ACTIVE 0x4
#define IXGBE_LED_LINK_1G 0x5
#define IXGBE_LED_ON 0xE
#define IXGBE_LED_OFF 0xF
/* AUTOC Bit Masks */
#define IXGBE_AUTOC_KX4_SUPP 0x80000000
#define IXGBE_AUTOC_KX_SUPP 0x40000000
#define IXGBE_AUTOC_PAUSE 0x30000000
#define IXGBE_AUTOC_RF 0x08000000
#define IXGBE_AUTOC_PD_TMR 0x06000000
#define IXGBE_AUTOC_AN_RX_LOOSE 0x01000000
#define IXGBE_AUTOC_AN_RX_DRIFT 0x00800000
#define IXGBE_AUTOC_AN_RX_ALIGN 0x007C0000
#define IXGBE_AUTOC_AN_RESTART 0x00001000
#define IXGBE_AUTOC_FLU 0x00000001
#define IXGBE_AUTOC_LMS_SHIFT 13
#define IXGBE_AUTOC_1G_PMA_PMD 0x00000200
#define IXGBE_AUTOC_10G_PMA_PMD 0x00000180
#define IXGBE_AUTOC_10G_PMA_PMD_SHIFT 7
#define IXGBE_AUTOC_1G_PMA_PMD_SHIFT 9
/* LINKS Bit Masks */
#define IXGBE_LINKS_KX_AN_COMP 0x80000000
#define IXGBE_LINKS_UP 0x40000000
#define IXGBE_LINKS_SPEED 0x20000000
#define IXGBE_LINKS_MODE 0x18000000
#define IXGBE_LINKS_RX_MODE 0x06000000
#define IXGBE_LINKS_TX_MODE 0x01800000
#define IXGBE_LINKS_XGXS_EN 0x00400000
#define IXGBE_LINKS_PCS_1G_EN 0x00200000
#define IXGBE_LINKS_1G_AN_EN 0x00100000
#define IXGBE_LINKS_KX_AN_IDLE 0x00080000
#define IXGBE_LINKS_1G_SYNC 0x00040000
#define IXGBE_LINKS_10G_ALIGN 0x00020000
#define IXGBE_LINKS_10G_LANE_SYNC 0x00017000
#define IXGBE_LINKS_TL_FAULT 0x00001000
#define IXGBE_LINKS_SIGNAL 0x00000F00
/* SW Semaphore Register bitmasks */
/* GSSR definitions */
#define IXGBE_GSSR_EEP_SM 0x0001
#define IXGBE_GSSR_PHY0_SM 0x0002
#define IXGBE_GSSR_PHY1_SM 0x0004
#define IXGBE_GSSR_MAC_CSR_SM 0x0008
#define IXGBE_GSSR_FLASH_SM 0x0010
/* EEC Register */
#define IXGBE_EEC_FWE_SHIFT 4
/* EEPROM Addressing bits based on type (0-small, 1-large) */
#define IXGBE_EEC_ADDR_SIZE 0x00000400
#define IXGBE_EEC_SIZE_SHIFT 11
#define IXGBE_EEPROM_WORD_SIZE_SHIFT 6
#define IXGBE_EEPROM_OPCODE_BITS 8
/* Checksum and EEPROM pointers */
#define IXGBE_EEPROM_CHECKSUM 0x3F
#define IXGBE_EEPROM_SUM 0xBABA
#define IXGBE_PCIE_ANALOG_PTR 0x03
#define IXGBE_ATLAS0_CONFIG_PTR 0x04
#define IXGBE_ATLAS1_CONFIG_PTR 0x05
#define IXGBE_PCIE_GENERAL_PTR 0x06
#define IXGBE_PCIE_CONFIG0_PTR 0x07
#define IXGBE_PCIE_CONFIG1_PTR 0x08
#define IXGBE_CORE0_PTR 0x09
#define IXGBE_CORE1_PTR 0x0A
#define IXGBE_MAC0_PTR 0x0B
#define IXGBE_MAC1_PTR 0x0C
#define IXGBE_CSR0_CONFIG_PTR 0x0D
#define IXGBE_CSR1_CONFIG_PTR 0x0E
#define IXGBE_FW_PTR 0x0F
#define IXGBE_PBANUM0_PTR 0x15
#define IXGBE_PBANUM1_PTR 0x16
/* Legacy EEPROM word offsets */
#define IXGBE_ISCSI_BOOT_CAPS 0x0033
#define IXGBE_ISCSI_SETUP_PORT_0 0x0030
#define IXGBE_ISCSI_SETUP_PORT_1 0x0034
/* EEPROM Commands - SPI */
#define IXGBE_EEPROM_STATUS_RDY_SPI 0x01
/* EEPROM reset Write Enable latch */
#define IXGBE_EEPROM_WRDI_OPCODE_SPI 0x04
/* EEPROM Read Register */
#define IXGBE_ETH_LENGTH_OF_ADDRESS 6
#ifndef IXGBE_EEPROM_GRANT_ATTEMPTS
#endif
#ifndef IXGBE_EERD_ATTEMPTS
/* Number of 5 microseconds we wait for EERD read to complete */
#define IXGBE_EERD_ATTEMPTS 100000
#endif
/* PCI Bus Info */
#define IXGBE_PCI_LINK_STATUS 0xB2
#define IXGBE_PCI_LINK_WIDTH 0x3F0
#define IXGBE_PCI_LINK_WIDTH_1 0x10
#define IXGBE_PCI_LINK_WIDTH_2 0x20
#define IXGBE_PCI_LINK_WIDTH_4 0x40
#define IXGBE_PCI_LINK_WIDTH_8 0x80
#define IXGBE_PCI_LINK_SPEED 0xF
#define IXGBE_PCI_LINK_SPEED_2500 0x1
#define IXGBE_PCI_LINK_SPEED_5000 0x2
#define IXGBE_PCI_HEADER_TYPE_REGISTER 0x0E
#define IXGBE_PCI_HEADER_TYPE_MULTIFUNC 0x80
/* Number of 100 microseconds we wait for PCI Express master disable */
#define IXGBE_PCI_MASTER_DISABLE_TIMEOUT 800
/* PHY Types */
#define IXGBE_M88E1145_E_PHY_ID 0x01410CD0
/* Check whether address is multicast. This is little-endian specific check. */
#define IXGBE_IS_MULTICAST(Address) \
/* Check whether an address is broadcast. */
#define IXGBE_IS_BROADCAST(Address) \
/* RAH */
#define IXGBE_RAH_VIND_MASK 0x003C0000
#define IXGBE_RAH_VIND_SHIFT 18
#define IXGBE_RAH_AV 0x80000000
/* Header split receive */
#define IXGBE_RFCTL_ISCSI_DIS 0x00000001
#define IXGBE_RFCTL_ISCSI_DWC_MASK 0x0000003E
#define IXGBE_RFCTL_ISCSI_DWC_SHIFT 1
#define IXGBE_RFCTL_NFSW_DIS 0x00000040
#define IXGBE_RFCTL_NFSR_DIS 0x00000080
#define IXGBE_RFCTL_NFS_VER_MASK 0x00000300
#define IXGBE_RFCTL_NFS_VER_SHIFT 8
#define IXGBE_RFCTL_NFS_VER_2 0
#define IXGBE_RFCTL_NFS_VER_3 1
#define IXGBE_RFCTL_NFS_VER_4 2
#define IXGBE_RFCTL_IPV6_DIS 0x00000400
#define IXGBE_RFCTL_IPV6_XSUM_DIS 0x00000800
#define IXGBE_RFCTL_IPFRSP_DIS 0x00004000
#define IXGBE_RFCTL_IPV6_EX_DIS 0x00010000
#define IXGBE_RFCTL_NEW_IPV6_EXT_DIS 0x00020000
/* Transmit Config masks */
/* Enable short packet padding to 64 bytes */
#define IXGBE_TX_PAD_ENABLE 0x00000400
/* This allows for 16K packets + 4k for vlan */
#define IXGBE_MAX_FRAME_SZ 0x40040000
/* Receive Config masks */
/* Receive Priority Flow Control Enable */
#define IXGBE_FCTRL_RPFCE 0x00004000
/* Multiple Receive Queue Control */
#define IXGBE_MRQC_RSS_FIELD_MASK 0xFFFF0000
#define IXGBE_MRQC_RSS_FIELD_IPV4_TCP 0x00010000
#define IXGBE_MRQC_RSS_FIELD_IPV4 0x00020000
#define IXGBE_MRQC_RSS_FIELD_IPV6_EX_TCP 0x00040000
#define IXGBE_MRQC_RSS_FIELD_IPV6_EX 0x00080000
#define IXGBE_MRQC_RSS_FIELD_IPV6 0x00100000
#define IXGBE_MRQC_RSS_FIELD_IPV6_TCP 0x00200000
#define IXGBE_MRQC_RSS_FIELD_IPV4_UDP 0x00400000
#define IXGBE_MRQC_RSS_FIELD_IPV6_UDP 0x00800000
#define IXGBE_MRQC_RSS_FIELD_IPV6_EX_UDP 0x01000000
#define IXGBE_TXD_CMD_DEXT 0x20000000
/* Descriptor extension (0 = legacy) */
/* Receive Descriptor bit definitions */
#define IXGBE_RXDADV_ERR_HBO 0x00800000
#define IXGBE_RXD_PRI_SHIFT 13
#define IXGBE_RXD_CFI_SHIFT 12
/* SRRCTL bit definitions */
#define IXGBE_SRRCTL_BSIZEPKT_MASK 0x0000007F
#define IXGBE_SRRCTL_BSIZEHDR_MASK 0x00003F00
#define IXGBE_SRRCTL_DESCTYPE_LEGACY 0x00000000
#define IXGBE_SRRCTL_DESCTYPE_ADV_ONEBUF 0x02000000
#define IXGBE_SRRCTL_DESCTYPE_HDR_SPLIT 0x04000000
#define IXGBE_SRRCTL_DESCTYPE_HDR_REPLICATION_LARGE_PKT 0x08000000
#define IXGBE_SRRCTL_DESCTYPE_HDR_SPLIT_ALWAYS 0x0A000000
#define IXGBE_SRRCTL_DESCTYPE_MASK 0x0E000000
#define IXGBE_RXDPS_HDRSTAT_HDRSP 0x00008000
#define IXGBE_RXDPS_HDRSTAT_HDRLEN_MASK 0x000003FF
#define IXGBE_RXDADV_RSSTYPE_MASK 0x0000000F
#define IXGBE_RXDADV_PKTTYPE_MASK 0x0000FFF0
#define IXGBE_RXDADV_HDRBUFLEN_MASK 0x00007FE0
#define IXGBE_RXDADV_HDRBUFLEN_SHIFT 5
#define IXGBE_RXDADV_SPLITHEADER_EN 0x00001000
#define IXGBE_RXDADV_SPH 0x8000
/* RSS Hash results */
#define IXGBE_RXDADV_RSSTYPE_NONE 0x00000000
#define IXGBE_RXDADV_RSSTYPE_IPV4_TCP 0x00000001
#define IXGBE_RXDADV_RSSTYPE_IPV4 0x00000002
#define IXGBE_RXDADV_RSSTYPE_IPV6_TCP 0x00000003
#define IXGBE_RXDADV_RSSTYPE_IPV6_EX 0x00000004
#define IXGBE_RXDADV_RSSTYPE_IPV6 0x00000005
#define IXGBE_RXDADV_RSSTYPE_IPV6_TCP_EX 0x00000006
#define IXGBE_RXDADV_RSSTYPE_IPV4_UDP 0x00000007
#define IXGBE_RXDADV_RSSTYPE_IPV6_UDP 0x00000008
#define IXGBE_RXDADV_RSSTYPE_IPV6_UDP_EX 0x00000009
/* RSS Packet Types as indicated in the receive descriptor. */
#define IXGBE_RXDADV_PKTTYPE_NONE 0x00000000
/* Masks to determine if packets should be dropped due to frame errors */
#define IXGBE_RXD_ERR_FRAME_ERR_MASK ( \
#define IXGBE_RXDADV_ERR_FRAME_ERR_MASK ( \
/* Multicast bit mask */
#define IXGBE_MCSTCTRL_MFE 0x4
/* Number of Transmit and Receive Descriptors must be a multiple of 8 */
#define IXGBE_REQ_TX_DESCRIPTOR_MULTIPLE 8
#define IXGBE_REQ_RX_DESCRIPTOR_MULTIPLE 8
#define IXGBE_REQ_TX_BUFFER_GRANULARITY 1024
/* Vlan-specific macros */
#ifndef __le16
/* Little Endian defines */
#endif
/* Transmit Descriptor - Legacy */
struct ixgbe_legacy_tx_desc {
union {
struct {
} flags;
} lower;
union {
struct {
} fields;
} upper;
};
/* Transmit Descriptor - Advanced */
union ixgbe_adv_tx_desc {
struct {
} read;
struct {
} wb;
};
/* Receive Descriptor - Legacy */
struct ixgbe_legacy_rx_desc {
};
/* Receive Descriptor - Advanced */
union ixgbe_adv_rx_desc {
struct {
} read;
struct {
struct {
union {
struct {
/* RSS type, Packet type */
/* Split Header, header len */
} hs_rss;
} lo_dword;
union {
struct {
} csum_ip;
} hi_dword;
} lower;
struct {
} upper;
} wb; /* writeback */
};
/* Context descriptors */
struct ixgbe_adv_tx_context_desc {
};
/* Adv Transmit Descriptor Config Masks */
#define IXGBE_ADVTXD_POPTS_IXSM (IXGBE_TXD_POPTS_IXSM << \
#define IXGBE_ADVTXD_POPTS_TXSM (IXGBE_TXD_POPTS_TXSM << \
#define IXGBE_ADVTXD_POPTS_ISCO_FULL 0x00001800
/* 1st&Last TSO-full iSCSI PDU */
/* Autonegotiation advertised speeds */
typedef u32 ixgbe_autoneg_advertised;
/* Link speed */
typedef u32 ixgbe_link_speed;
#define IXGBE_LINK_SPEED_UNKNOWN 0
#define IXGBE_LINK_SPEED_100_FULL 0x0008
#define IXGBE_LINK_SPEED_1GB_FULL 0x0020
#define IXGBE_LINK_SPEED_10GB_FULL 0x0080
#define IXGBE_LINK_SPEED_82598_AUTONEG (IXGBE_LINK_SPEED_1GB_FULL | \
enum ixgbe_eeprom_type {
ixgbe_eeprom_none /* No NVM support */
};
enum ixgbe_mac_type {
ixgbe_mac_unknown = 0,
};
enum ixgbe_phy_type {
ixgbe_phy_unknown = 0,
};
enum ixgbe_media_type {
};
/* Flow Control Settings */
enum ixgbe_fc_type {
ixgbe_fc_none = 0,
};
/* PCI bus types */
enum ixgbe_bus_type {
};
/* PCI bus speeds */
enum ixgbe_bus_speed {
};
/* PCI bus widths */
enum ixgbe_bus_width {
};
struct ixgbe_addr_filter_info {
bool user_set_promisc;
};
/* Bus parameters */
struct ixgbe_bus_info {
enum ixgbe_bus_speed speed;
enum ixgbe_bus_width width;
enum ixgbe_bus_type type;
};
/* Flow control parameters */
struct ixgbe_fc_info {
bool send_xon; /* Flow control send XON */
bool strict_ieee; /* Strict IEEE mode */
enum ixgbe_fc_type original_type;
};
/* Statistics counters collected by the MAC */
struct ixgbe_hw_stats {
};
/* forward declaration */
struct ixgbe_hw;
/* iterator type for walking multicast address lists */
/* Function pointer table */
struct ixgbe_eeprom_operations {
};
struct ixgbe_mac_operations {
/* Link */
bool);
bool *);
/* LED */
/* RAR, Multicast, VLAN */
/* Flow Control */
};
struct ixgbe_phy_operations {
bool);
};
struct ixgbe_eeprom_info {
struct ixgbe_eeprom_operations ops;
enum ixgbe_eeprom_type type;
};
struct ixgbe_mac_info {
struct ixgbe_mac_operations ops;
enum ixgbe_mac_type type;
bool link_settings_loaded;
bool autoneg;
bool autoneg_failed;
};
struct ixgbe_phy_info {
struct ixgbe_phy_operations ops;
enum ixgbe_phy_type type;
enum ixgbe_media_type media_type;
bool autoneg_wait_to_complete;
};
struct ixgbe_hw {
void *back;
struct ixgbe_mac_info mac;
struct ixgbe_addr_filter_info addr_ctrl;
struct ixgbe_fc_info fc;
struct ixgbe_phy_info phy;
struct ixgbe_eeprom_info eeprom;
struct ixgbe_bus_info bus;
bool adapter_stopped;
};
/* Error Codes */
#define IXGBE_SUCCESS 0
#define IXGBE_ERR_EEPROM -1
#define IXGBE_ERR_EEPROM_CHECKSUM -2
#define IXGBE_ERR_PHY -3
#define IXGBE_ERR_CONFIG -4
#define IXGBE_ERR_PARAM -5
#define IXGBE_ERR_MAC_TYPE -6
#define IXGBE_ERR_UNKNOWN_PHY -7
#define IXGBE_ERR_LINK_SETUP -8
#define IXGBE_ERR_ADAPTER_STOPPED -9
#define IXGBE_ERR_INVALID_MAC_ADDR -10
#define IXGBE_ERR_DEVICE_NOT_SUPPORTED -11
#define IXGBE_ERR_MASTER_REQUESTS_PENDING -12
#define IXGBE_ERR_INVALID_LINK_SETTINGS -13
#define IXGBE_ERR_AUTONEG_NOT_COMPLETE -14
#define IXGBE_ERR_RESET_FAILED -15
#define IXGBE_ERR_SWFW_SYNC -16
#define IXGBE_ERR_PHY_ADDR_INVALID -17
#define IXGBE_NOT_IMPLEMENTED 0x7FFFFFFF
#ifndef UNREFERENCED_PARAMETER
#define UNREFERENCED_PARAMETER(_p)
#endif
#endif /* _IXGBE_TYPE_H */