Deleted Added
sdiff udiff text old ( 205720 ) new ( 215911 )
full compact
1/******************************************************************************
2
3 Copyright (c) 2001-2010, Intel Corporation
4 All rights reserved.
5
6 Redistribution and use in source and binary forms, with or without
7 modification, are permitted provided that the following conditions are met:
8

--- 16 unchanged lines hidden (view full) ---

25 CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26 SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27 INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28 CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30 POSSIBILITY OF SUCH DAMAGE.
31
32******************************************************************************/
33/*$FreeBSD: head/sys/dev/ixgbe/ixgbe_type.h 215911 2010-11-26 22:46:32Z jfv $*/
34
35#ifndef _IXGBE_TYPE_H_
36#define _IXGBE_TYPE_H_
37
38#include "ixgbe_osdep.h"
39
40
41/* Vendor ID */

--- 7 unchanged lines hidden (view full) ---

49#define IXGBE_DEV_ID_82598AT 0x10C8
50#define IXGBE_DEV_ID_82598AT2 0x150B
51#define IXGBE_DEV_ID_82598EB_SFP_LOM 0x10DB
52#define IXGBE_DEV_ID_82598EB_CX4 0x10DD
53#define IXGBE_DEV_ID_82598_CX4_DUAL_PORT 0x10EC
54#define IXGBE_DEV_ID_82598_DA_DUAL_PORT 0x10F1
55#define IXGBE_DEV_ID_82598_SR_DUAL_PORT_EM 0x10E1
56#define IXGBE_DEV_ID_82598EB_XF_LR 0x10F4
57#define IXGBE_DEV_ID_82599_KX4 0x10F7
58#define IXGBE_DEV_ID_82599_KX4_MEZZ 0x1514
59#define IXGBE_DEV_ID_82599_COMBO_BACKPLANE 0x10F8
60#define IXGBE_SUBDEV_ID_82599_KX4_KR_MEZZ 0x000C
61#define IXGBE_DEV_ID_82599_CX4 0x10F9
62#define IXGBE_DEV_ID_82599_SFP 0x10FB
63#define IXGBE_SUBDEV_ID_82599_SFP 0x11A9
64#define IXGBE_DEV_ID_82599_BACKPLANE_FCOE 0x152A
65#define IXGBE_DEV_ID_82599_SFP_FCOE 0x1529
66#define IXGBE_DEV_ID_82599_XAUI_LOM 0x10FC
67#define IXGBE_DEV_ID_82599_T3_LOM 0x151C
68#define IXGBE_DEV_ID_82599_VF 0x10ED
69
70/* General Registers */
71#define IXGBE_CTRL 0x00000
72#define IXGBE_STATUS 0x00008
73#define IXGBE_CTRL_EXT 0x00018
74#define IXGBE_ESDP 0x00020
75#define IXGBE_EODSDP 0x00028
76#define IXGBE_I2CCTL 0x00028

--- 12 unchanged lines hidden (view full) ---

89#define IXGBE_EEMNGDATA 0x10114
90#define IXGBE_FLMNGCTL 0x10118
91#define IXGBE_FLMNGDATA 0x1011C
92#define IXGBE_FLMNGCNT 0x10120
93#define IXGBE_FLOP 0x1013C
94#define IXGBE_GRC 0x10200
95
96/* General Receive Control */
97#define IXGBE_GRC_MNG 0x00000001 /* Manageability Enable */
98#define IXGBE_GRC_APME 0x00000002 /* APM enabled in EEPROM */
99
100#define IXGBE_VPDDIAG0 0x10204
101#define IXGBE_VPDDIAG1 0x10208
102
103/* I2CCTL Bit Masks */
104#define IXGBE_I2C_CLK_IN 0x00000001
105#define IXGBE_I2C_CLK_OUT 0x00000002
106#define IXGBE_I2C_DATA_IN 0x00000004
107#define IXGBE_I2C_DATA_OUT 0x00000008
108
109/* Interrupt Registers */
110#define IXGBE_EICR 0x00800
111#define IXGBE_EICS 0x00808
112#define IXGBE_EIMS 0x00880
113#define IXGBE_EIMC 0x00888
114#define IXGBE_EIAC 0x00810
115#define IXGBE_EIAM 0x00890
116#define IXGBE_EICS_EX(_i) (0x00A90 + (_i) * 4)
117#define IXGBE_EIMS_EX(_i) (0x00AA0 + (_i) * 4)
118#define IXGBE_EIMC_EX(_i) (0x00AB0 + (_i) * 4)
119#define IXGBE_EIAM_EX(_i) (0x00AD0 + (_i) * 4)
120/* 82599 EITR is only 12 bits, with the lower 3 always zero */
121/*
122 * 82598 EITR is 16 bits but set the limits based on the max
123 * supported by all ixgbe hardware
124 */
125#define IXGBE_MAX_INT_RATE 488281
126#define IXGBE_MIN_INT_RATE 956
127#define IXGBE_MAX_EITR 0x00000FF8
128#define IXGBE_MIN_EITR 8
129#define IXGBE_EITR(_i) (((_i) <= 23) ? (0x00820 + ((_i) * 4)) : \
130 (0x012300 + (((_i) - 24) * 4)))
131#define IXGBE_EITR_ITR_INT_MASK 0x00000FF8
132#define IXGBE_EITR_LLI_MOD 0x00008000
133#define IXGBE_EITR_CNT_WDIS 0x80000000
134#define IXGBE_IVAR(_i) (0x00900 + ((_i) * 4)) /* 24 at 0x900-0x960 */
135#define IXGBE_IVAR_MISC 0x00A00 /* misc MSI-X interrupt causes */
136#define IXGBE_EITRSEL 0x00894

--- 93 unchanged lines hidden (view full) ---

230#define IXGBE_FTQF(_i) (0x0E600 + ((_i) * 4)) /* Five Tuple Queue Filter */
231#define IXGBE_ETQF(_i) (0x05128 + ((_i) * 4)) /* EType Queue Filter */
232#define IXGBE_ETQS(_i) (0x0EC00 + ((_i) * 4)) /* EType Queue Select */
233#define IXGBE_SYNQF 0x0EC30 /* SYN Packet Queue Filter */
234#define IXGBE_RQTC 0x0EC70
235#define IXGBE_MTQC 0x08120
236#define IXGBE_VLVF(_i) (0x0F100 + ((_i) * 4)) /* 64 of these (0-63) */
237#define IXGBE_VLVFB(_i) (0x0F200 + ((_i) * 4)) /* 128 of these (0-127) */
238#define IXGBE_VMVIR(_i) (0x08000 + ((_i) * 4)) /* 64 of these (0-63) */
239#define IXGBE_VT_CTL 0x051B0
240#define IXGBE_VFRE(_i) (0x051E0 + ((_i) * 4))
241#define IXGBE_VFTE(_i) (0x08110 + ((_i) * 4))
242#define IXGBE_VMECM(_i) (0x08790 + ((_i) * 4))
243#define IXGBE_QDE 0x2F04
244#define IXGBE_VMOLR(_i) (0x0F000 + ((_i) * 4)) /* 64 total */
245#define IXGBE_UTA(_i) (0x0F400 + ((_i) * 4))
246#define IXGBE_VMRCTL(_i) (0x0F600 + ((_i) * 4))
247#define IXGBE_VMRVLAN(_i) (0x0F610 + ((_i) * 4))
248#define IXGBE_VMRVM(_i) (0x0F630 + ((_i) * 4))
249#define IXGBE_L34T_IMIR(_i) (0x0E800 + ((_i) * 4)) /*128 of these (0-127)*/
250#define IXGBE_LLITHRESH 0x0EC90

--- 38 unchanged lines hidden (view full) ---

289#define IXGBE_TDLEN(_i) (0x06008 + ((_i) * 0x40))
290#define IXGBE_TDH(_i) (0x06010 + ((_i) * 0x40))
291#define IXGBE_TDT(_i) (0x06018 + ((_i) * 0x40))
292#define IXGBE_TXDCTL(_i) (0x06028 + ((_i) * 0x40))
293#define IXGBE_TDWBAL(_i) (0x06038 + ((_i) * 0x40))
294#define IXGBE_TDWBAH(_i) (0x0603C + ((_i) * 0x40))
295#define IXGBE_DTXCTL 0x07E00
296
297#define IXGBE_DMATXCTL 0x04A80
298#define IXGBE_PFVFSPOOF(_i) (0x08200 + ((_i) * 4)) /* 8 of these 0 - 7 */
299#define IXGBE_PFDTXGSWC 0x08220
300#define IXGBE_DTXMXSZRQ 0x08100
301#define IXGBE_DTXTCPFLGL 0x04A88
302#define IXGBE_DTXTCPFLGH 0x04A8C
303#define IXGBE_LBDRPEN 0x0CA00
304#define IXGBE_TXPBTHRESH(_i) (0x04950 + ((_i) * 4)) /* 8 of these 0 - 7 */
305
306#define IXGBE_DMATXCTL_TE 0x1 /* Transmit Enable */
307#define IXGBE_DMATXCTL_NS 0x2 /* No Snoop LSO hdr buffer */
308#define IXGBE_DMATXCTL_GDV 0x8 /* Global Double VLAN */
309#define IXGBE_DMATXCTL_VT_SHIFT 16 /* VLAN EtherType */
310
311#define IXGBE_PFDTXGSWC_VT_LBEN 0x1 /* Local L2 VT switch enable */
312
313/* Anti-spoofing defines */
314#define IXGBE_SPOOF_MACAS_MASK 0xFF
315#define IXGBE_SPOOF_VLANAS_MASK 0xFF00
316#define IXGBE_SPOOF_VLANAS_SHIFT 8
317#define IXGBE_PFVFSPOOF_REG_COUNT 8
318#define IXGBE_DCA_TXCTRL(_i) (0x07200 + ((_i) * 4)) /* 16 of these (0-15) */
319/* Tx DCA Control register : 128 of these (0-127) */
320#define IXGBE_DCA_TXCTRL_82599(_i) (0x0600C + ((_i) * 0x40))
321#define IXGBE_TIPG 0x0CB00
322#define IXGBE_TXPBSIZE(_i) (0x0CC00 + ((_i) * 4)) /* 8 of these */
323#define IXGBE_MNGTXMAP 0x0CD10
324#define IXGBE_TIPG_FIBER_DEFAULT 3
325#define IXGBE_TXPBSIZE_SHIFT 10

--- 334 unchanged lines hidden (view full) ---

660#define IXGBE_TQSMR(_i) (((_i) <= 7) ? (0x07300 + ((_i) * 4)) : \
661 (0x08600 + ((_i) * 4)))
662#define IXGBE_TQSM(_i) (0x08600 + ((_i) * 4))
663
664#define IXGBE_QPRC(_i) (0x01030 + ((_i) * 0x40)) /* 16 of these */
665#define IXGBE_QPTC(_i) (0x06030 + ((_i) * 0x40)) /* 16 of these */
666#define IXGBE_QBRC(_i) (0x01034 + ((_i) * 0x40)) /* 16 of these */
667#define IXGBE_QBTC(_i) (0x06034 + ((_i) * 0x40)) /* 16 of these */
668#define IXGBE_QBRC_L(_i) (0x01034 + ((_i) * 0x40)) /* 16 of these */
669#define IXGBE_QBRC_H(_i) (0x01038 + ((_i) * 0x40)) /* 16 of these */
670#define IXGBE_QPRDC(_i) (0x01430 + ((_i) * 0x40)) /* 16 of these */
671#define IXGBE_QBTC_L(_i) (0x08700 + ((_i) * 0x8)) /* 16 of these */
672#define IXGBE_QBTC_H(_i) (0x08704 + ((_i) * 0x8)) /* 16 of these */
673#define IXGBE_FCCRC 0x05118 /* Count of Good Eth CRC w/ Bad FC CRC */
674#define IXGBE_FCOERPDC 0x0241C /* FCoE Rx Packets Dropped Count */
675#define IXGBE_FCLAST 0x02424 /* FCoE Last Error Count */
676#define IXGBE_FCOEPRC 0x02428 /* Number of FCoE Packets Received */
677#define IXGBE_FCOEDWRC 0x0242C /* Number of FCoE DWords Received */

--- 351 unchanged lines hidden (view full) ---

1029#define IXGBE_MDIO_VENDOR_SPECIFIC_1_STATUS 0x1 /* VS1 Status Reg */
1030#define IXGBE_MDIO_VENDOR_SPECIFIC_1_LINK_STATUS 0x0008 /* 1 = Link Up */
1031#define IXGBE_MDIO_VENDOR_SPECIFIC_1_SPEED_STATUS 0x0010 /* 0 - 10G, 1 - 1G */
1032#define IXGBE_MDIO_VENDOR_SPECIFIC_1_10G_SPEED 0x0018
1033#define IXGBE_MDIO_VENDOR_SPECIFIC_1_1G_SPEED 0x0010
1034
1035#define IXGBE_MDIO_AUTO_NEG_CONTROL 0x0 /* AUTO_NEG Control Reg */
1036#define IXGBE_MDIO_AUTO_NEG_STATUS 0x1 /* AUTO_NEG Status Reg */
1037#define IXGBE_MDIO_AUTO_NEG_ADVT 0x10 /* AUTO_NEG Advt Reg */
1038#define IXGBE_MDIO_AUTO_NEG_LP 0x13 /* AUTO_NEG LP Status Reg */
1039#define IXGBE_MDIO_PHY_XS_CONTROL 0x0 /* PHY_XS Control Reg */
1040#define IXGBE_MDIO_PHY_XS_RESET 0x8000 /* PHY_XS Reset */
1041#define IXGBE_MDIO_PHY_ID_HIGH 0x2 /* PHY ID High Reg*/
1042#define IXGBE_MDIO_PHY_ID_LOW 0x3 /* PHY ID Low Reg*/
1043#define IXGBE_MDIO_PHY_SPEED_ABILITY 0x4 /* Speed Ability Reg */
1044#define IXGBE_MDIO_PHY_SPEED_10G 0x0001 /* 10G capable */
1045#define IXGBE_MDIO_PHY_SPEED_1G 0x0010 /* 1G capable */
1046#define IXGBE_MDIO_PHY_SPEED_100M 0x0020 /* 100M capable */

--- 364 unchanged lines hidden (view full) ---

1411#define IXGBE_VLNCTRL_CFIEN 0x20000000 /* bit 29 */
1412#define IXGBE_VLNCTRL_VFE 0x40000000 /* bit 30 */
1413#define IXGBE_VLNCTRL_VME 0x80000000 /* bit 31 */
1414
1415/* VLAN pool filtering masks */
1416#define IXGBE_VLVF_VIEN 0x80000000 /* filter is valid */
1417#define IXGBE_VLVF_ENTRIES 64
1418#define IXGBE_VLVF_VLANID_MASK 0x00000FFF
1419/* Per VF Port VLAN insertion rules */
1420#define IXGBE_VMVIR_VLANA_DEFAULT 0x40000000 /* Always use default VLAN */
1421#define IXGBE_VMVIR_VLANA_NEVER 0x80000000 /* Never insert VLAN tag */
1422
1423#define IXGBE_ETHERNET_IEEE_VLAN_TYPE 0x8100 /* 802.1q protocol */
1424
1425/* STATUS Bit Masks */
1426#define IXGBE_STATUS_LAN_ID 0x0000000C /* LAN ID */
1427#define IXGBE_STATUS_LAN_ID_SHIFT 2 /* LAN ID Shift*/
1428#define IXGBE_STATUS_GIO 0x00080000 /* GIO Master Enable Status */
1429

--- 128 unchanged lines hidden (view full) ---

1558#define IXGBE_PCS1GLCTL_LOW_LINK_LATCH 0x40
1559#define IXGBE_PCS1GLCTL_AN_ENABLE 0x10000
1560#define IXGBE_PCS1GLCTL_AN_RESTART 0x20000
1561
1562/* ANLP1 Bit Masks */
1563#define IXGBE_ANLP1_PAUSE 0x0C00
1564#define IXGBE_ANLP1_SYM_PAUSE 0x0400
1565#define IXGBE_ANLP1_ASM_PAUSE 0x0800
1566#define IXGBE_ANLP1_AN_STATE_MASK 0x000f0000
1567
1568/* SW Semaphore Register bitmasks */
1569#define IXGBE_SWSM_SMBI 0x00000001 /* Driver Semaphore bit */
1570#define IXGBE_SWSM_SWESMBI 0x00000002 /* FW Semaphore bit */
1571#define IXGBE_SWSM_WMNG 0x00000004 /* Wake MNG Clock */
1572#define IXGBE_SWFW_REGSMP 0x80000000 /* Register Semaphore bit 31 */
1573
1574/* SW_FW_SYNC/GSSR definitions */

--- 12 unchanged lines hidden (view full) ---

1587#define IXGBE_EEC_FWE_DIS 0x00000010 /* Disable FLASH writes */
1588#define IXGBE_EEC_FWE_EN 0x00000020 /* Enable FLASH writes */
1589#define IXGBE_EEC_FWE_SHIFT 4
1590#define IXGBE_EEC_REQ 0x00000040 /* EEPROM Access Request */
1591#define IXGBE_EEC_GNT 0x00000080 /* EEPROM Access Grant */
1592#define IXGBE_EEC_PRES 0x00000100 /* EEPROM Present */
1593#define IXGBE_EEC_ARD 0x00000200 /* EEPROM Auto Read Done */
1594#define IXGBE_EEC_FLUP 0x00800000 /* Flash update command */
1595#define IXGBE_EEC_SEC1VAL 0x02000000 /* Sector 1 Valid */
1596#define IXGBE_EEC_FLUDONE 0x04000000 /* Flash update done */
1597/* EEPROM Addressing bits based on type (0-small, 1-large) */
1598#define IXGBE_EEC_ADDR_SIZE 0x00000400
1599#define IXGBE_EEC_SIZE 0x00007800 /* EEPROM Size */
1600
1601#define IXGBE_EEC_SIZE_SHIFT 11
1602#define IXGBE_EEPROM_WORD_SIZE_BASE_SHIFT 6
1603#define IXGBE_EEPROM_OPCODE_BITS 8
1604
1605/* Part Number String Length */
1606#define IXGBE_PBANUM_LENGTH 11
1607
1608/* Checksum and EEPROM pointers */
1609#define IXGBE_PBANUM_PTR_GUARD 0xFAFA
1610#define IXGBE_EEPROM_CHECKSUM 0x3F
1611#define IXGBE_EEPROM_SUM 0xBABA
1612#define IXGBE_PCIE_ANALOG_PTR 0x03
1613#define IXGBE_ATLAS0_CONFIG_PTR 0x04
1614#define IXGBE_PHY_PTR 0x04
1615#define IXGBE_ATLAS1_CONFIG_PTR 0x05
1616#define IXGBE_OPTION_ROM_PTR 0x05
1617#define IXGBE_PCIE_GENERAL_PTR 0x06

--- 63 unchanged lines hidden (view full) ---

1681#define IXGBE_PCIE_CTRL2_LAN_DISABLE 0x2 /* LAN PCI Disable */
1682#define IXGBE_PCIE_CTRL2_DISABLE_SELECT 0x1 /* LAN Disable Select */
1683
1684#define IXGBE_SAN_MAC_ADDR_PORT0_OFFSET 0x0
1685#define IXGBE_SAN_MAC_ADDR_PORT1_OFFSET 0x3
1686#define IXGBE_DEVICE_CAPS_ALLOW_ANY_SFP 0x1
1687#define IXGBE_DEVICE_CAPS_FCOE_OFFLOADS 0x2
1688#define IXGBE_FW_PASSTHROUGH_PATCH_CONFIG_PTR 0x4
1689#define IXGBE_FW_PATCH_VERSION_4 0x7
1690#define IXGBE_FCOE_IBA_CAPS_BLK_PTR 0x33 /* iSCSI/FCOE block */
1691#define IXGBE_FCOE_IBA_CAPS_FCOE 0x20 /* FCOE flags */
1692#define IXGBE_ISCSI_FCOE_BLK_PTR 0x17 /* iSCSI/FCOE block */
1693#define IXGBE_ISCSI_FCOE_FLAGS_OFFSET 0x0 /* FCOE flags */
1694#define IXGBE_ISCSI_FCOE_FLAGS_ENABLE 0x1 /* FCOE flags enable bit */
1695#define IXGBE_ALT_SAN_MAC_ADDR_BLK_PTR 0x27 /* Alt. SAN MAC block */
1696#define IXGBE_ALT_SAN_MAC_ADDR_CAPS_OFFSET 0x0 /* Alt. SAN MAC capability */
1697#define IXGBE_ALT_SAN_MAC_ADDR_PORT0_OFFSET 0x1 /* Alt. SAN MAC 0 offset */
1698#define IXGBE_ALT_SAN_MAC_ADDR_PORT1_OFFSET 0x4 /* Alt. SAN MAC 1 offset */
1699#define IXGBE_ALT_SAN_MAC_ADDR_WWNN_OFFSET 0x7 /* Alt. WWNN prefix offset */
1700#define IXGBE_ALT_SAN_MAC_ADDR_WWPN_OFFSET 0x8 /* Alt. WWPN prefix offset */
1701#define IXGBE_ALT_SAN_MAC_ADDR_CAPS_SANMAC 0x0 /* Alt. SAN MAC exists */
1702#define IXGBE_ALT_SAN_MAC_ADDR_CAPS_ALTWWN 0x1 /* Alt. WWN base exists */
1703
1704/* PCI Bus Info */
1705#define IXGBE_PCI_DEVICE_STATUS 0xAA
1706#define IXGBE_PCI_DEVICE_STATUS_TRANSACTION_PENDING 0x0020
1707#define IXGBE_PCI_LINK_STATUS 0xB2
1708#define IXGBE_PCI_DEVICE_CONTROL2 0xC8
1709#define IXGBE_PCI_LINK_WIDTH 0x3F0
1710#define IXGBE_PCI_LINK_WIDTH_1 0x10

--- 376 unchanged lines hidden (view full) ---

2087#define IXGBE_FDIRCMD_L4TYPE_SCTP 0x00000060
2088#define IXGBE_FDIRCMD_IPV6 0x00000080
2089#define IXGBE_FDIRCMD_CLEARHT 0x00000100
2090#define IXGBE_FDIRCMD_DROP 0x00000200
2091#define IXGBE_FDIRCMD_INT 0x00000400
2092#define IXGBE_FDIRCMD_LAST 0x00000800
2093#define IXGBE_FDIRCMD_COLLISION 0x00001000
2094#define IXGBE_FDIRCMD_QUEUE_EN 0x00008000
2095#define IXGBE_FDIRCMD_FLOW_TYPE_SHIFT 5
2096#define IXGBE_FDIRCMD_RX_QUEUE_SHIFT 16
2097#define IXGBE_FDIRCMD_VT_POOL_SHIFT 24
2098#define IXGBE_FDIR_INIT_DONE_POLL 10
2099#define IXGBE_FDIRCMD_CMD_POLL 10
2100
2101/* Transmit Descriptor - Legacy */
2102struct ixgbe_legacy_tx_desc {
2103 u64 buffer_addr; /* Address of the descriptor's data buffer */

--- 161 unchanged lines hidden (view full) ---

2265#define IXGBE_PHYSICAL_LAYER_10GBASE_KX4 0x0080
2266#define IXGBE_PHYSICAL_LAYER_10GBASE_CX4 0x0100
2267#define IXGBE_PHYSICAL_LAYER_1000BASE_KX 0x0200
2268#define IXGBE_PHYSICAL_LAYER_1000BASE_BX 0x0400
2269#define IXGBE_PHYSICAL_LAYER_10GBASE_KR 0x0800
2270#define IXGBE_PHYSICAL_LAYER_10GBASE_XAUI 0x1000
2271#define IXGBE_PHYSICAL_LAYER_SFP_ACTIVE_DA 0x2000
2272
2273/* Flow Control Macros */
2274#define PAUSE_RTT 8
2275#define PAUSE_MTU(MTU) ((MTU + 1024 - 1) / 1024)
2276
2277#define FC_HIGH_WATER(MTU) ((((PAUSE_RTT + PAUSE_MTU(MTU)) * 144) + 99) / 100 +\
2278 PAUSE_MTU(MTU))
2279#define FC_LOW_WATER(MTU) (2 * (2 * PAUSE_MTU(MTU) + PAUSE_RTT))
2280
2281/* Software ATR hash keys */
2282#define IXGBE_ATR_BUCKET_HASH_KEY 0x3DAD14E2
2283#define IXGBE_ATR_SIGNATURE_HASH_KEY 0x174D3614
2284
2285/* Software ATR input stream values and masks */
2286#define IXGBE_ATR_HASH_MASK 0x7fff
2287#define IXGBE_ATR_L4TYPE_MASK 0x3
2288#define IXGBE_ATR_L4TYPE_UDP 0x1
2289#define IXGBE_ATR_L4TYPE_TCP 0x2
2290#define IXGBE_ATR_L4TYPE_SCTP 0x3
2291#define IXGBE_ATR_L4TYPE_IPV6_MASK 0x4
2292enum ixgbe_atr_flow_type {
2293 IXGBE_ATR_FLOW_TYPE_IPV4 = 0x0,
2294 IXGBE_ATR_FLOW_TYPE_UDPV4 = 0x1,
2295 IXGBE_ATR_FLOW_TYPE_TCPV4 = 0x2,
2296 IXGBE_ATR_FLOW_TYPE_SCTPV4 = 0x3,
2297 IXGBE_ATR_FLOW_TYPE_IPV6 = 0x4,
2298 IXGBE_ATR_FLOW_TYPE_UDPV6 = 0x5,
2299 IXGBE_ATR_FLOW_TYPE_TCPV6 = 0x6,
2300 IXGBE_ATR_FLOW_TYPE_SCTPV6 = 0x7,
2301};
2302
2303/* Flow Director ATR input struct. */
2304union ixgbe_atr_input {
2305 /* Byte layout in order, all values with MSB first:
2306 *
2307 * rsvd0 - 2 bytes - space reserved must be 0.
2308 * vlan_id - 2 bytes
2309 * src_ip - 16 bytes
2310 * dst_ip - 16 bytes
2311 * src_port - 2 bytes
2312 * dst_port - 2 bytes
2313 * flex_bytes - 2 bytes
2314 * vm_pool - 1 byte
2315 * flow_type - 1 byte
2316 */
2317 struct {
2318 __be16 rsvd0;
2319 __be16 vlan_id;
2320 __be32 dst_ip[4];
2321 __be32 src_ip[4];
2322 __be16 src_port;
2323 __be16 dst_port;
2324 __be16 flex_bytes;
2325 u8 vm_pool;
2326 u8 flow_type;
2327 } formatted;
2328 __be32 dword_stream[11];
2329};
2330
2331struct ixgbe_atr_input_masks {
2332 __be16 rsvd0;
2333 __be16 vlan_id_mask;
2334 __be32 dst_ip_mask[4];
2335 __be32 src_ip_mask[4];
2336 __be16 src_port_mask;
2337 __be16 dst_port_mask;
2338 __be16 flex_mask;
2339};
2340
2341/*
2342 * Unavailable: The FCoE Boot Option ROM is not present in the flash.
2343 * Disabled: Present; boot order is not set for any targets on the port.
2344 * Enabled: Present; boot order is set for at least one target on the port.
2345 */
2346enum ixgbe_fcoe_boot_status {
2347 ixgbe_fcoe_bootstatus_disabled = 0,
2348 ixgbe_fcoe_bootstatus_enabled = 1,
2349 ixgbe_fcoe_bootstatus_unavailable = 0xFFFF
2350};
2351
2352enum ixgbe_eeprom_type {
2353 ixgbe_eeprom_uninitialized = 0,
2354 ixgbe_eeprom_spi,
2355 ixgbe_flash,
2356 ixgbe_eeprom_none /* No NVM support */
2357};
2358
2359enum ixgbe_mac_type {
2360 ixgbe_mac_unknown = 0,
2361 ixgbe_mac_82598EB,
2362 ixgbe_mac_82599EB,
2363 ixgbe_mac_82599_vf,
2364 ixgbe_num_macs
2365};
2366
2367enum ixgbe_phy_type {
2368 ixgbe_phy_unknown = 0,
2369 ixgbe_phy_none,
2370 ixgbe_phy_tn,
2371 ixgbe_phy_aq,

--- 31 unchanged lines hidden (view full) ---

2403 ixgbe_sfp_type_sr = 1,
2404 ixgbe_sfp_type_lr = 2,
2405 ixgbe_sfp_type_da_cu_core0 = 3,
2406 ixgbe_sfp_type_da_cu_core1 = 4,
2407 ixgbe_sfp_type_srlr_core0 = 5,
2408 ixgbe_sfp_type_srlr_core1 = 6,
2409 ixgbe_sfp_type_da_act_lmt_core0 = 7,
2410 ixgbe_sfp_type_da_act_lmt_core1 = 8,
2411 ixgbe_sfp_type_1g_cu_core0 = 9,
2412 ixgbe_sfp_type_1g_cu_core1 = 10,
2413 ixgbe_sfp_type_not_present = 0xFFFE,
2414 ixgbe_sfp_type_unknown = 0xFFFF
2415};
2416
2417enum ixgbe_media_type {
2418 ixgbe_media_type_unknown = 0,
2419 ixgbe_media_type_fiber,
2420 ixgbe_media_type_copper,

--- 130 unchanged lines hidden (view full) ---

2551 u64 ptc127;
2552 u64 ptc255;
2553 u64 ptc511;
2554 u64 ptc1023;
2555 u64 ptc1522;
2556 u64 mptc;
2557 u64 bptc;
2558 u64 xec;
2559 u64 qprc[16];
2560 u64 qptc[16];
2561 u64 qbrc[16];
2562 u64 qbtc[16];
2563 u64 qprdc[16];
2564 u64 pxon2offc[8];
2565 u64 fdirustat_add;
2566 u64 fdirustat_remove;

--- 35 unchanged lines hidden (view full) ---

2602 void (*enable_relaxed_ordering)(struct ixgbe_hw *);
2603 enum ixgbe_media_type (*get_media_type)(struct ixgbe_hw *);
2604 u32 (*get_supported_physical_layer)(struct ixgbe_hw *);
2605 s32 (*get_mac_addr)(struct ixgbe_hw *, u8 *);
2606 s32 (*get_san_mac_addr)(struct ixgbe_hw *, u8 *);
2607 s32 (*set_san_mac_addr)(struct ixgbe_hw *, u8 *);
2608 s32 (*get_device_caps)(struct ixgbe_hw *, u16 *);
2609 s32 (*get_wwn_prefix)(struct ixgbe_hw *, u16 *, u16 *);
2610 s32 (*get_fcoe_boot_status)(struct ixgbe_hw *, u16 *);
2611 s32 (*stop_adapter)(struct ixgbe_hw *);
2612 s32 (*get_bus_info)(struct ixgbe_hw *);
2613 void (*set_lan_id)(struct ixgbe_hw *);
2614 s32 (*read_analog_reg8)(struct ixgbe_hw*, u32, u8*);
2615 s32 (*write_analog_reg8)(struct ixgbe_hw*, u32, u8);
2616 s32 (*setup_sfp)(struct ixgbe_hw *);
2617 s32 (*enable_rx_dma)(struct ixgbe_hw *, u32);
2618 s32 (*acquire_swfw_sync)(struct ixgbe_hw *, u16);
2619 void (*release_swfw_sync)(struct ixgbe_hw *, u16);
2620
2621 /* Link */
2622 void (*disable_tx_laser)(struct ixgbe_hw *);
2623 void (*enable_tx_laser)(struct ixgbe_hw *);
2624 void (*flap_tx_laser)(struct ixgbe_hw *);
2625 s32 (*setup_link)(struct ixgbe_hw *, ixgbe_link_speed, bool, bool);
2626 s32 (*check_link)(struct ixgbe_hw *, ixgbe_link_speed *, bool *, bool);
2627 s32 (*get_link_capabilities)(struct ixgbe_hw *, ixgbe_link_speed *,
2628 bool *);
2629
2630 /* LED */
2631 s32 (*led_on)(struct ixgbe_hw *, u32);
2632 s32 (*led_off)(struct ixgbe_hw *, u32);

--- 11 unchanged lines hidden (view full) ---

2644 ixgbe_mc_addr_itr);
2645 s32 (*update_mc_addr_list)(struct ixgbe_hw *, u8 *, u32,
2646 ixgbe_mc_addr_itr);
2647 s32 (*enable_mc)(struct ixgbe_hw *);
2648 s32 (*disable_mc)(struct ixgbe_hw *);
2649 s32 (*clear_vfta)(struct ixgbe_hw *);
2650 s32 (*set_vfta)(struct ixgbe_hw *, u32, u32, bool);
2651 s32 (*init_uta_tables)(struct ixgbe_hw *);
2652 void (*set_mac_anti_spoofing)(struct ixgbe_hw *, bool, int);
2653 void (*set_vlan_anti_spoofing)(struct ixgbe_hw *, bool, int);
2654
2655 /* Flow Control */
2656 s32 (*fc_enable)(struct ixgbe_hw *, s32);
2657};
2658
2659struct ixgbe_phy_operations {
2660 s32 (*identify)(struct ixgbe_hw *);
2661 s32 (*identify_sfp)(struct ixgbe_hw *);

--- 7 unchanged lines hidden (view full) ---

2669 s32 (*check_link)(struct ixgbe_hw *, ixgbe_link_speed *, bool *);
2670 s32 (*get_firmware_version)(struct ixgbe_hw *, u16 *);
2671 s32 (*read_i2c_byte)(struct ixgbe_hw *, u8, u8, u8 *);
2672 s32 (*write_i2c_byte)(struct ixgbe_hw *, u8, u8, u8);
2673 s32 (*read_i2c_eeprom)(struct ixgbe_hw *, u8 , u8 *);
2674 s32 (*write_i2c_eeprom)(struct ixgbe_hw *, u8, u8);
2675 void (*i2c_bus_clear)(struct ixgbe_hw *);
2676 s32 (*check_overtemp)(struct ixgbe_hw *);
2677};
2678
2679struct ixgbe_eeprom_info {
2680 struct ixgbe_eeprom_operations ops;
2681 enum ixgbe_eeprom_type type;
2682 u32 semaphore_delay;
2683 u16 word_size;
2684 u16 address_bits;

--- 5 unchanged lines hidden (view full) ---

2690 enum ixgbe_mac_type type;
2691 u8 addr[IXGBE_ETH_LENGTH_OF_ADDRESS];
2692 u8 perm_addr[IXGBE_ETH_LENGTH_OF_ADDRESS];
2693 u8 san_addr[IXGBE_ETH_LENGTH_OF_ADDRESS];
2694 /* prefix for World Wide Node Name (WWNN) */
2695 u16 wwnn_prefix;
2696 /* prefix for World Wide Port Name (WWPN) */
2697 u16 wwpn_prefix;
2698#define IXGBE_MAX_MTA 128
2699 u32 mta_shadow[IXGBE_MAX_MTA];
2700 s32 mc_filter_type;
2701 u32 mcft_size;
2702 u32 vft_size;
2703 u32 num_rar_entries;
2704 u32 rar_highwater;
2705 u32 rx_pb_size;
2706 u32 max_tx_queues;
2707 u32 max_rx_queues;
2708 u32 max_msix_vectors;
2709 bool msix_vectors_from_pcie;
2710 u32 orig_autoc;
2711 u32 orig_autoc2;
2712 bool orig_link_settings_stored;
2713 bool autotry_restart;

--- 9 unchanged lines hidden (view full) ---

2723 bool sfp_setup_needed;
2724 u32 revision;
2725 enum ixgbe_media_type media_type;
2726 bool reset_disable;
2727 ixgbe_autoneg_advertised autoneg_advertised;
2728 enum ixgbe_smart_speed smart_speed;
2729 bool smart_speed_active;
2730 bool multispeed_fiber;
2731 bool reset_if_overtemp;
2732};
2733
2734#include "ixgbe_mbx.h"
2735
2736struct ixgbe_mbx_operations {
2737 void (*init_params)(struct ixgbe_hw *hw);
2738 s32 (*read)(struct ixgbe_hw *, u32 *, u16, u16);
2739 s32 (*write)(struct ixgbe_hw *, u32 *, u16, u16);
2740 s32 (*read_posted)(struct ixgbe_hw *, u32 *, u16, u16);
2741 s32 (*write_posted)(struct ixgbe_hw *, u32 *, u16, u16);
2742 s32 (*check_for_msg)(struct ixgbe_hw *, u16);
2743 s32 (*check_for_ack)(struct ixgbe_hw *, u16);
2744 s32 (*check_for_rst)(struct ixgbe_hw *, u16);
2745};
2746
2747struct ixgbe_mbx_stats {
2748 u32 msgs_tx;
2749 u32 msgs_rx;
2750
2751 u32 acks;
2752 u32 reqs;
2753 u32 rsts;
2754};
2755
2756struct ixgbe_mbx_info {
2757 struct ixgbe_mbx_operations ops;
2758 struct ixgbe_mbx_stats stats;
2759 u32 timeout;
2760 u32 usec_delay;
2761 u32 v2p_mailbox;
2762 u16 size;
2763};
2764
2765struct ixgbe_hw {
2766 u8 *hw_addr;
2767 void *back;
2768 struct ixgbe_mac_info mac;
2769 struct ixgbe_addr_filter_info addr_ctrl;
2770 struct ixgbe_fc_info fc;
2771 struct ixgbe_phy_info phy;
2772 struct ixgbe_eeprom_info eeprom;
2773 struct ixgbe_bus_info bus;
2774 struct ixgbe_mbx_info mbx;
2775 u16 device_id;
2776 u16 vendor_id;
2777 u16 subsystem_device_id;
2778 u16 subsystem_vendor_id;
2779 u8 revision_id;
2780 bool adapter_stopped;
2781};
2782

--- 24 unchanged lines hidden (view full) ---

2807#define IXGBE_ERR_SFP_NOT_SUPPORTED -19
2808#define IXGBE_ERR_SFP_NOT_PRESENT -20
2809#define IXGBE_ERR_SFP_NO_INIT_SEQ_PRESENT -21
2810#define IXGBE_ERR_NO_SAN_ADDR_PTR -22
2811#define IXGBE_ERR_FDIR_REINIT_FAILED -23
2812#define IXGBE_ERR_EEPROM_VERSION -24
2813#define IXGBE_ERR_NO_SPACE -25
2814#define IXGBE_ERR_OVERTEMP -26
2815#define IXGBE_ERR_FC_NOT_NEGOTIATED -27
2816#define IXGBE_ERR_FC_NOT_SUPPORTED -28
2817#define IXGBE_ERR_FLOW_CONTROL -29
2818#define IXGBE_ERR_SFP_SETUP_NOT_COMPLETE -30
2819#define IXGBE_ERR_PBA_SECTION -31
2820#define IXGBE_ERR_INVALID_ARGUMENT -32
2821#define IXGBE_NOT_IMPLEMENTED 0x7FFFFFFF
2822
2823
2824#endif /* _IXGBE_TYPE_H_ */