ixgbe/base: reset VF registers
[dpdk.git] / lib / librte_pmd_ixgbe / ixgbe / ixgbe_type.h
index 7dd2fdf..ef593f4 100644 (file)
@@ -1,6 +1,6 @@
 /*******************************************************************************
 
-Copyright (c) 2001-2012, Intel Corporation
+Copyright (c) 2001-2014, Intel Corporation
 All rights reserved.
 
 Redistribution and use in source and binary forms, with or without
@@ -74,7 +74,7 @@ POSSIBILITY OF SUCH DAMAGE.
 
 #include "ixgbe_osdep.h"
 
-#ident "$Id: ixgbe_type.h,v 1.552 2012/11/08 11:33:27 jtkirshe Exp $"
+#ident "$Id: ixgbe_type.h,v 1.630 2013/11/22 22:48:40 jtkirshe Exp $"
 
 /* Vendor ID */
 #define IXGBE_INTEL_VENDOR_ID                  0x8086
@@ -100,19 +100,28 @@ POSSIBILITY OF SUCH DAMAGE.
 #define IXGBE_DEV_ID_82599_CX4                 0x10F9
 #define IXGBE_DEV_ID_82599_SFP                 0x10FB
 #define IXGBE_SUBDEV_ID_82599_SFP              0x11A9
+#define IXGBE_SUBDEV_ID_82599_SFP_WOL0         0x1071
 #define IXGBE_SUBDEV_ID_82599_RNDC             0x1F72
 #define IXGBE_SUBDEV_ID_82599_560FLR           0x17D0
 #define IXGBE_SUBDEV_ID_82599_ECNA_DP          0x0470
+#define IXGBE_SUBDEV_ID_82599_SP_560FLR                0x211B
+#define IXGBE_SUBDEV_ID_82599_LOM_SFP          0x8976
+#define IXGBE_SUBDEV_ID_82599_LOM_SNAP6                0x2159
+#define IXGBE_SUBDEV_ID_82599_SFP_1OCP         0x000D
+#define IXGBE_SUBDEV_ID_82599_SFP_2OCP         0x0008
 #define IXGBE_DEV_ID_82599_BACKPLANE_FCOE      0x152A
 #define IXGBE_DEV_ID_82599_SFP_FCOE            0x1529
 #define IXGBE_DEV_ID_82599_SFP_EM              0x1507
 #define IXGBE_DEV_ID_82599_SFP_SF2             0x154D
 #define IXGBE_DEV_ID_82599_SFP_SF_QP           0x154A
+#define IXGBE_DEV_ID_82599_QSFP_SF_QP          0x1558
 #define IXGBE_DEV_ID_82599EN_SFP               0x1557
+#define IXGBE_SUBDEV_ID_82599EN_SFP_OCP1       0x0001
 #define IXGBE_DEV_ID_82599_XAUI_LOM            0x10FC
 #define IXGBE_DEV_ID_82599_T3_LOM              0x151C
 #define IXGBE_DEV_ID_82599_VF                  0x10ED
 #define IXGBE_DEV_ID_82599_VF_HV               0x152E
+#define IXGBE_DEV_ID_82599_LS                  0x154F
 #define IXGBE_DEV_ID_X540T                     0x1528
 #define IXGBE_DEV_ID_X540_VF                   0x1515
 #define IXGBE_DEV_ID_X540_VF_HV                        0x1530
@@ -252,12 +261,12 @@ POSSIBILITY OF SUCH DAMAGE.
                                 (((_i) < 64) ? (0x0100C + ((_i) * 0x40)) : \
                                 (0x0D00C + (((_i) - 64) * 0x40))))
 #define IXGBE_RDRXCTL          0x02F00
-#define IXGBE_RDRXCTL_RSC_PUSH 0x80
 /* 8 of these 0x03C00 - 0x03C1C */
 #define IXGBE_RXPBSIZE(_i)     (0x03C00 + ((_i) * 4))
 #define IXGBE_RXCTRL           0x03000
 #define IXGBE_DROPEN           0x03D04
 #define IXGBE_RXPBSIZE_SHIFT   10
+#define IXGBE_RXPBSIZE_MASK    0x000FFC00
 
 /* Receive Registers */
 #define IXGBE_RXCSUM           0x05000
@@ -410,7 +419,11 @@ POSSIBILITY OF SUCH DAMAGE.
 /* Ext Flexible Host Filter Table */
 #define IXGBE_FHFT_EXT(_n)     (0x09800 + (_n * 0x100))
 
+/* Four Flexible Filters are supported */
 #define IXGBE_FLEXIBLE_FILTER_COUNT_MAX                4
+
+/* Six Flexible Filters are supported */
+#define IXGBE_FLEXIBLE_FILTER_COUNT_MAX_6      6
 #define IXGBE_EXT_FLEXIBLE_FILTER_COUNT_MAX    2
 
 /* Each Flexible Filter is at most 128 (0x80) bytes in length */
@@ -442,10 +455,11 @@ POSSIBILITY OF SUCH DAMAGE.
 #define IXGBE_WUFC_FLX3        0x00080000 /* Flexible Filter 3 Enable */
 #define IXGBE_WUFC_FLX4        0x00100000 /* Flexible Filter 4 Enable */
 #define IXGBE_WUFC_FLX5        0x00200000 /* Flexible Filter 5 Enable */
-#define IXGBE_WUFC_FLX_FILTERS 0x000F0000 /* Mask for 4 flex filters */
+#define IXGBE_WUFC_FLX_FILTERS         0x000F0000 /* Mask for 4 flex filters */
 /* Mask for Ext. flex filters */
 #define IXGBE_WUFC_EXT_FLX_FILTERS     0x00300000
-#define IXGBE_WUFC_ALL_FILTERS 0x003F00FF /* Mask for all wakeup filters */
+#define IXGBE_WUFC_ALL_FILTERS         0x000F00FF /* Mask all 4 flex filters */
+#define IXGBE_WUFC_ALL_FILTERS_6       0x003F00FF /* Mask all 6 flex filters */
 #define IXGBE_WUFC_FLX_OFFSET  16 /* Offset to the Flexible Filters bits */
 
 /* Wake Up Status */
@@ -626,8 +640,6 @@ POSSIBILITY OF SUCH DAMAGE.
 #define IXGBE_FCPTRH           0x02414 /* FC USer Desc. PTR High */
 #define IXGBE_FCBUFF           0x02418 /* FC Buffer Control */
 #define IXGBE_FCDMARW          0x02420 /* FC Receive DMA RW */
-#define IXGBE_FCINVST0         0x03FC0 /* FC Invalid DMA Context Status Reg 0*/
-#define IXGBE_FCINVST(_i)      (IXGBE_FCINVST0 + ((_i) * 4))
 #define IXGBE_FCBUFF_VALID     (1 << 0)   /* DMA Context Valid */
 #define IXGBE_FCBUFF_BUFFSIZE  (3 << 3)   /* User Buffer Size */
 #define IXGBE_FCBUFF_WRCONTX   (1 << 7)   /* 0: Initiator, 1: Target */
@@ -775,11 +787,6 @@ POSSIBILITY OF SUCH DAMAGE.
 #define IXGBE_BXOFFRXC         0x041E0
 #define IXGBE_BXONTXC          0x041E4
 #define IXGBE_BXOFFTXC         0x041E8
-#define IXGBE_PCRC8ECL         0x0E810
-#define IXGBE_PCRC8ECH         0x0E811
-#define IXGBE_PCRC8ECH_MASK    0x1F
-#define IXGBE_LDPCECL          0x0E820
-#define IXGBE_LDPCECH          0x0E821
 
 /* Management */
 #define IXGBE_MAVTV(_i)                (0x05010 + ((_i) * 4)) /* 8 of these (0-7) */
@@ -924,8 +931,6 @@ POSSIBILITY OF SUCH DAMAGE.
 #define IXGBE_RDPROBE          0x02F20
 #define IXGBE_RDMAM            0x02F30
 #define IXGBE_RDMAD            0x02F34
-#define IXGBE_TDSTATCTL                0x07C20
-#define IXGBE_TDSTAT(_i)       (0x07C00 + ((_i) * 4)) /* 0x07C00 - 0x07C1C */
 #define IXGBE_TDHMPN           0x07F08
 #define IXGBE_TDHMPN2          0x082FC
 #define IXGBE_TXDESCIC         0x082CC
@@ -1074,7 +1079,9 @@ POSSIBILITY OF SUCH DAMAGE.
 #define IXGBE_RDRXCTL_RDMTS_1_2                0x00000000 /* Rx Desc Min THLD Size */
 #define IXGBE_RDRXCTL_CRCSTRIP         0x00000002 /* CRC Strip */
 #define IXGBE_RDRXCTL_MVMEN            0x00000020
+#define IXGBE_RDRXCTL_RSC_PUSH_DIS     0x00000020
 #define IXGBE_RDRXCTL_DMAIDONE         0x00000008 /* DMA init cycle done */
+#define IXGBE_RDRXCTL_RSC_PUSH         0x00000080
 #define IXGBE_RDRXCTL_AGGDIS           0x00010000 /* Aggregation disable */
 #define IXGBE_RDRXCTL_RSCFRSTSIZE      0x003E0000 /* RSC First packet size */
 #define IXGBE_RDRXCTL_RSCLLIDIS                0x00800000 /* Disable RSC compl on LLI*/
@@ -1205,6 +1212,10 @@ POSSIBILITY OF SUCH DAMAGE.
 #define IXGBE_MDIO_AUTO_NEG_STATUS     0x1 /* AUTO_NEG Status Reg */
 #define IXGBE_MDIO_AUTO_NEG_ADVT       0x10 /* AUTO_NEG Advt Reg */
 #define IXGBE_MDIO_AUTO_NEG_LP         0x13 /* AUTO_NEG LP Status Reg */
+#define IXGBE_MDIO_AUTO_NEG_EEE_ADVT   0x3C /* AUTO_NEG EEE Advt Reg */
+#define IXGBE_AUTO_NEG_10GBASE_EEE_ADVT        0x8  /* AUTO NEG EEE 10GBaseT Advt */
+#define IXGBE_AUTO_NEG_1000BASE_EEE_ADVT 0x4  /* AUTO NEG EEE 1000BaseT Advt */
+#define IXGBE_AUTO_NEG_100BASE_EEE_ADVT        0x2  /* AUTO NEG EEE 100BaseT Advt */
 #define IXGBE_MDIO_PHY_XS_CONTROL      0x0 /* PHY_XS Control Reg */
 #define IXGBE_MDIO_PHY_XS_RESET                0x8000 /* PHY_XS Reset */
 #define IXGBE_MDIO_PHY_ID_HIGH         0x2 /* PHY ID High Reg*/
@@ -1224,6 +1235,12 @@ POSSIBILITY OF SUCH DAMAGE.
 #define IXGBE_MDIO_PMA_PMD_SDA_SCL_DATA        0xC30B /* PHY_XS SDA/SCL Data Reg */
 #define IXGBE_MDIO_PMA_PMD_SDA_SCL_STAT        0xC30C /* PHY_XS SDA/SCL Status Reg */
 
+#define IXGBE_PCRC8ECL         0x0E810 /* PCR CRC-8 Error Count Lo */
+#define IXGBE_PCRC8ECH         0x0E811 /* PCR CRC-8 Error Count Hi */
+#define IXGBE_PCRC8ECH_MASK    0x1F
+#define IXGBE_LDPCECL          0x0E820 /* PCR Uncorrected Error Count Lo */
+#define IXGBE_LDPCECH          0x0E821 /* PCR Uncorrected Error Count Hi */
+
 /* MII clause 22/28 definitions */
 #define IXGBE_MDIO_PHY_LOW_POWER_MODE  0x0800
 
@@ -1601,11 +1618,13 @@ enum {
  *     FCoE (0x8906):   Filter 2
  *     1588 (0x88f7):   Filter 3
  *     FIP  (0x8914):   Filter 4
+ *     LLDP (0x88CC):   Filter 5
  */
 #define IXGBE_ETQF_FILTER_EAPOL                0
 #define IXGBE_ETQF_FILTER_FCOE         2
 #define IXGBE_ETQF_FILTER_1588         3
 #define IXGBE_ETQF_FILTER_FIP          4
+#define IXGBE_ETQF_FILTER_LLDP         5
 /* VLAN Control Bit Masks */
 #define IXGBE_VLNCTRL_VET              0x0000FFFF  /* bits 0-15 */
 #define IXGBE_VLNCTRL_CFI              0x10000000  /* bit 28 */
@@ -1798,6 +1817,9 @@ enum {
 #define IXGBE_GSSR_MAC_CSR_SM  0x0008
 #define IXGBE_GSSR_FLASH_SM    0x0010
 #define IXGBE_GSSR_SW_MNG_SM   0x0400
+#define IXGBE_GSSR_SHARED_I2C_SM 0x1806 /* Wait for both phys and both I2Cs */
+#define IXGBE_GSSR_I2C_MASK    0x1800
+#define IXGBE_GSSR_NVM_PHY_MASK        0xF
 
 /* FW Status register bitmask */
 #define IXGBE_FWSTS_FWRI       0x00000200 /* Firmware Reset Indication */
@@ -1896,7 +1918,7 @@ enum {
 #define IXGBE_ETH_LENGTH_OF_ADDRESS    6
 
 #define IXGBE_EEPROM_PAGE_SIZE_MAX     128
-#define IXGBE_EEPROM_RD_BUFFER_MAX_COUNT       512 /* words rd in burst */
+#define IXGBE_EEPROM_RD_BUFFER_MAX_COUNT       256 /* words rd in burst */
 #define IXGBE_EEPROM_WR_BUFFER_MAX_COUNT       256 /* words wr in burst */
 #define IXGBE_EEPROM_CTRL_2            1 /* EEPROM CTRL word 2 */
 #define IXGBE_EEPROM_CCD_BIT           2
@@ -1940,6 +1962,18 @@ enum {
 #define IXGBE_ALT_SAN_MAC_ADDR_CAPS_SANMAC     0x0 /* Alt SAN MAC exists */
 #define IXGBE_ALT_SAN_MAC_ADDR_CAPS_ALTWWN     0x1 /* Alt WWN base exists */
 
+/* FW header offset */
+#define IXGBE_X540_FW_PASSTHROUGH_PATCH_CONFIG_PTR     0x4
+#define IXGBE_X540_FW_MODULE_MASK                      0x7FFF
+/* 4KB multiplier */
+#define IXGBE_X540_FW_MODULE_LENGTH                    0x1000
+/* version word 2 (month & day) */
+#define IXGBE_X540_FW_PATCH_VERSION_2          0x5
+/* version word 3 (silicon compatibility & year) */
+#define IXGBE_X540_FW_PATCH_VERSION_3          0x6
+/* version word 4 (major & minor numbers) */
+#define IXGBE_X540_FW_PATCH_VERSION_4          0x7
+
 #define IXGBE_DEVICE_CAPS_WOL_PORT0_1  0x4 /* WoL supported on ports 0 & 1 */
 #define IXGBE_DEVICE_CAPS_WOL_PORT0    0x8 /* WoL supported on port 0 */
 #define IXGBE_DEVICE_CAPS_WOL_MASK     0xC /* Mask for WoL capabilities */
@@ -2207,6 +2241,10 @@ enum {
 
 /* SRRCTL bit definitions */
 #define IXGBE_SRRCTL_BSIZEPKT_SHIFT    10 /* so many KBs */
+#define IXGBE_SRRCTL_BSIZEHDRSIZE_SHIFT        2 /* 64byte resolution (>> 6)
+                                          * + at bit 8 offset (<< 8)
+                                          *  = (<< 2)
+                                          */
 #define IXGBE_SRRCTL_RDMTS_SHIFT       22
 #define IXGBE_SRRCTL_RDMTS_MASK                0x01C00000
 #define IXGBE_SRRCTL_DROP_EN           0x10000000
@@ -2403,7 +2441,6 @@ enum ixgbe_fdir_pballoc_type {
 #define IXGBE_FDIRCMD_TUNNEL_FILTER            0x00800000
 #define IXGBE_FDIR_DROP_QUEUE                  127
 
-#define IXGBE_STATUS_OVERHEATING_BIT           20 /* STATUS overtemp bit num */
 
 /* Manageablility Host Interface defines */
 #define IXGBE_HI_MAX_BLOCK_BYTE_LENGTH 1792 /* Num of bytes in range */
@@ -2806,6 +2843,10 @@ enum ixgbe_phy_type {
        ixgbe_phy_sfp_ftl_active,
        ixgbe_phy_sfp_unknown,
        ixgbe_phy_sfp_intel,
+       ixgbe_phy_qsfp_passive_unknown,
+       ixgbe_phy_qsfp_active_unknown,
+       ixgbe_phy_qsfp_intel,
+       ixgbe_phy_qsfp_unknown,
        ixgbe_phy_sfp_unsupported, /*Enforce bit set with unsupported module*/
        ixgbe_phy_generic
 };
@@ -2837,14 +2878,8 @@ enum ixgbe_sfp_type {
        ixgbe_sfp_type_1g_cu_core1 = 10,
        ixgbe_sfp_type_1g_sx_core0 = 11,
        ixgbe_sfp_type_1g_sx_core1 = 12,
-#ifdef SUPPORT_1000BASE_LX
        ixgbe_sfp_type_1g_lx_core0 = 13,
        ixgbe_sfp_type_1g_lx_core1 = 14,
-#endif /* SUPPORT_1000BASE_LX */
-#ifdef SUPPORT_10GBASE_ER
-       ixgbe_sfp_type_er_core0 = 15,
-       ixgbe_sfp_type_er_core1 = 16,
-#endif /* SUPPORT_10GBASE_ER */
        ixgbe_sfp_type_not_present = 0xFFFE,
        ixgbe_sfp_type_unknown = 0xFFFF
 };
@@ -2852,6 +2887,8 @@ enum ixgbe_sfp_type {
 enum ixgbe_media_type {
        ixgbe_media_type_unknown = 0,
        ixgbe_media_type_fiber,
+       ixgbe_media_type_fiber_qsfp,
+       ixgbe_media_type_fiber_lco,
        ixgbe_media_type_copper,
        ixgbe_media_type_backplane,
        ixgbe_media_type_cx4,
@@ -3037,7 +3074,7 @@ struct ixgbe_eeprom_operations {
        s32 (*write_buffer)(struct ixgbe_hw *, u16, u16, u16 *);
        s32 (*validate_checksum)(struct ixgbe_hw *, u16 *);
        s32 (*update_checksum)(struct ixgbe_hw *);
-       u16 (*calc_checksum)(struct ixgbe_hw *);
+       s32 (*calc_checksum)(struct ixgbe_hw *);
 };
 
 struct ixgbe_mac_operations {
@@ -3063,8 +3100,8 @@ struct ixgbe_mac_operations {
        s32 (*enable_rx_dma)(struct ixgbe_hw *, u32);
        s32 (*disable_sec_rx_path)(struct ixgbe_hw *);
        s32 (*enable_sec_rx_path)(struct ixgbe_hw *);
-       s32 (*acquire_swfw_sync)(struct ixgbe_hw *, u16);
-       void (*release_swfw_sync)(struct ixgbe_hw *, u16);
+       s32 (*acquire_swfw_sync)(struct ixgbe_hw *, u32);
+       void (*release_swfw_sync)(struct ixgbe_hw *, u32);
        s32 (*prot_autoc_read)(struct ixgbe_hw *, bool *, u32 *);
        s32 (*prot_autoc_write)(struct ixgbe_hw *, u32, bool);
 
@@ -3113,7 +3150,13 @@ struct ixgbe_mac_operations {
 
        /* Manageability interface */
        s32 (*set_fw_drv_ver)(struct ixgbe_hw *, u8, u8, u8, u8);
+       s32 (*dmac_config)(struct ixgbe_hw *hw);
+       s32 (*dmac_update_tcs)(struct ixgbe_hw *hw);
+       s32 (*dmac_config_tcs)(struct ixgbe_hw *hw);
        void (*get_rtrup2tc)(struct ixgbe_hw *hw, u8 *map);
+       s32 (*set_eee)(struct ixgbe_hw *hw, bool enable_eee);
+       s32 (*eee_linkup)(struct ixgbe_hw *hw, bool eee_enabled);
+       void (*set_ethertype_anti_spoofing)(struct ixgbe_hw *, bool, int);
        void (*disable_rx)(struct ixgbe_hw *hw);
        void (*enable_rx)(struct ixgbe_hw *hw);
 };
@@ -3191,12 +3234,15 @@ struct ixgbe_phy_info {
        bool sfp_setup_needed;
        u32 revision;
        enum ixgbe_media_type media_type;
+       u32 phy_semaphore_mask;
+       u8 lan_id;
        bool reset_disable;
        ixgbe_autoneg_advertised autoneg_advertised;
        enum ixgbe_smart_speed smart_speed;
        bool smart_speed_active;
        bool multispeed_fiber;
        bool reset_if_overtemp;
+       bool qsfp_shared_i2c_bus;
 };
 
 #include "ixgbe_mbx.h"
@@ -3291,8 +3337,15 @@ struct ixgbe_hw {
 #define IXGBE_ERR_INVALID_ARGUMENT             -32
 #define IXGBE_ERR_HOST_INTERFACE_COMMAND       -33
 #define IXGBE_ERR_OUT_OF_MEM                   -34
+#define IXGBE_ERR_FEATURE_NOT_SUPPORTED                -36
+#define IXGBE_ERR_EEPROM_PROTECTED_REGION      -37
+#define IXGBE_ERR_FDIR_CMD_INCOMPLETE          -38
 
 #define IXGBE_NOT_IMPLEMENTED                  0x7FFFFFFF
 
 
+#ifdef IXGBE_OSDEP2
+#include "ixgbe_osdep2.h"
+
+#endif /* IXGBE_OSDEP2 */
 #endif /* _IXGBE_TYPE_H_ */