Imported Upstream version 17.05
[deb_dpdk.git] / drivers / net / fm10k / base / fm10k_type.h
index 3fc8f13..1f38a02 100644 (file)
@@ -40,6 +40,7 @@ struct fm10k_hw;
 #include "fm10k_osdep.h"
 #include "fm10k_mbx.h"
 
+#define FM10K_INTEL_VENDOR_ID          0x8086
 #define FM10K_DEV_ID_PF                        0x15A4
 #define FM10K_DEV_ID_VF                        0x15A5
 #ifdef BOULDER_RAPIDS_HW
@@ -125,11 +126,15 @@ struct fm10k_hw;
 
 /* Interrupt control registers */
 #define FM10K_EICR             0x0006
+#define FM10K_EICR_PCA_FAULT                   0x00000001
+#define FM10K_EICR_THI_FAULT                   0x00000004
+#define FM10K_EICR_FUM_FAULT                   0x00000020
 #define FM10K_EICR_FAULT_MASK                  0x0000003F
 #define FM10K_EICR_MAILBOX                     0x00000040
 #define FM10K_EICR_SWITCHREADY                 0x00000080
 #define FM10K_EICR_SWITCHNOTREADY              0x00000100
 #define FM10K_EICR_SWITCHINTERRUPT             0x00000200
+#define FM10K_EICR_SRAMERROR                   0x00000400
 #define FM10K_EICR_VFLR                                0x00000800
 #define FM10K_EICR_MAXHOLDTIME                 0x00001000
 #define FM10K_EIMR             0x0007
@@ -183,6 +188,7 @@ struct fm10k_hw;
 #define FM10K_DGLORTDEC_INNERRSS_ENABLE                0x08000000
 #define FM10K_TUNNEL_CFG       0x0040
 #define FM10K_TUNNEL_CFG_NVGRE_SHIFT           16
+#define FM10K_TUNNEL_CFG_GENEVE        0x0041
 #define FM10K_SWPRI_MAP(_n)    ((_n) + 0x0050)
 #define FM10K_SWPRI_MAX                16
 #define FM10K_RSSRK(_n, _m)    (((_n) * 0x10) + (_m) + 0x0800)
@@ -211,6 +217,7 @@ struct fm10k_hw;
 #define FM10K_DMA_CTRL_RX_ENABLE               0x00000010
 #define FM10K_DMA_CTRL_RX_ACTIVE               0x00000080
 #define FM10K_DMA_CTRL_RX_DESC_SIZE            0x00000100
+#define FM10K_DMA_CTRL_MINMSS_SHIFT            9
 #define FM10K_DMA_CTRL_MINMSS_64               0x00008000
 #define FM10K_DMA_CTRL_MAX_HOLD_1US_GEN3       0x04800000
 #define FM10K_DMA_CTRL_MAX_HOLD_1US_GEN2       0x04000000
@@ -283,6 +290,7 @@ struct fm10k_hw;
 #define FM10K_RXDCTL_WRITE_BACK_MIN_DELAY      0x00000001
 #define FM10K_RXDCTL_DROP_ON_EMPTY             0x00000200
 #define FM10K_RXINT(_n)                ((0x40 * (_n)) + 0x4008)
+#define FM10K_RXINT_TIMER_SHIFT                        8
 #define FM10K_SRRCTL(_n)       ((0x40 * (_n)) + 0x4009)
 #define FM10K_SRRCTL_BSIZEPKT_SHIFT            8 /* shift _right_ */
 #define FM10K_SRRCTL_LOOPBACK_SUPPRESS         0x40000000
@@ -336,6 +344,7 @@ struct fm10k_hw;
 #define FM10K_TXQCTL_VID_MASK                  0x0FFF0000
 #define FM10K_TXQCTL_UNLIMITED_BW              0x10000000
 #define FM10K_TXINT(_n)                ((0x40 * (_n)) + 0x8008)
+#define FM10K_TXINT_TIMER_SHIFT                        8
 
 /* Tx Statistics */
 #define FM10K_QPTC(_n)         ((0x40 * (_n)) + 0x8009)
@@ -374,6 +383,7 @@ struct fm10k_hw;
 /* Switch manager interrupt registers */
 #define FM10K_IP               0x13000
 #define FM10K_IP_NOTINRESET                    0x00000100
+#define FM10K_SRAM_IP          0x13003
 
 /* VLAN registers */
 #define FM10K_VLAN_TABLE(_n, _m)       ((0x80 * (_n)) + (_m) + 0x14000)
@@ -384,6 +394,7 @@ struct fm10k_hw;
 #define FM10K_VLAN_TABLE_VSI_MAX               64
 #define FM10K_VLAN_LENGTH_SHIFT                        16
 #define FM10K_VLAN_CLEAR                       BIT(15)
+#define FM10K_VLAN_OVERRIDE                    FM10K_VLAN_CLEAR
 #define FM10K_VLAN_ALL \
        ((FM10K_VLAN_TABLE_VID_MAX - 1) << FM10K_VLAN_LENGTH_SHIFT)
 
@@ -422,20 +433,20 @@ struct fm10k_hw;
 #define ETH_ALEN       6
 #endif /* ETH_ALEN */
 
-#ifndef FM10K_IS_ZERO_ETHER_ADDR
+#ifndef IS_ZERO_ETHER_ADDR
 /* make certain address is not 0 */
-#define FM10K_IS_ZERO_ETHER_ADDR(addr) \
+#define IS_ZERO_ETHER_ADDR(addr) \
 (!((addr)[0] | (addr)[1] | (addr)[2] | (addr)[3] | (addr)[4] | (addr)[5]))
 #endif
 
-#ifndef FM10K_IS_MULTICAST_ETHER_ADDR
-#define FM10K_IS_MULTICAST_ETHER_ADDR(addr) ((addr)[0] & 0x1)
+#ifndef IS_MULTICAST_ETHER_ADDR
+#define IS_MULTICAST_ETHER_ADDR(addr) ((addr)[0] & 0x1)
 #endif
 
-#ifndef FM10K_IS_VALID_ETHER_ADDR
+#ifndef IS_VALID_ETHER_ADDR
 /* make certain address is not multicast or 0 */
-#define FM10K_IS_VALID_ETHER_ADDR(addr) \
-(!FM10K_IS_MULTICAST_ETHER_ADDR(addr) && !FM10K_IS_ZERO_ETHER_ADDR(addr))
+#define IS_VALID_ETHER_ADDR(addr) \
+(!IS_MULTICAST_ETHER_ADDR(addr) && !IS_ZERO_ETHER_ADDR(addr))
 #endif
 
 enum fm10k_int_source {
@@ -587,6 +598,7 @@ struct fm10k_mac_ops {
        s32 (*stop_hw)(struct fm10k_hw *);
        s32 (*get_bus_info)(struct fm10k_hw *);
        s32 (*get_host_state)(struct fm10k_hw *, bool *);
+       s32 (*request_lport_map)(struct fm10k_hw *);
 #ifndef NO_IS_SLOT_APPROPRIATE_CHECK
        bool (*is_slot_appropriate)(struct fm10k_hw *);
 #endif
@@ -629,6 +641,7 @@ struct fm10k_mac_info {
        bool tx_ready;
        u32 dglort_map;
        u8 itr_scale;
+       u64 reset_while_pending;
 };
 
 struct fm10k_swapi_table_info {
@@ -676,6 +689,9 @@ struct fm10k_vf_info {
        u8                      vf_flags;       /* flags indicating what modes
                                                 * are supported for the port
                                                 */
+#ifndef NO_FM10K_VF_TRUSTED_MODE
+       bool                    trusted;        /* VF trust mode */
+#endif
 };
 
 #define FM10K_VF_FLAG_ALLMULTI_CAPABLE (u8)(BIT(FM10K_XCAST_MODE_ALLMULTI))
@@ -812,6 +828,24 @@ enum fm10k_rdesc_rss_type {
        /* Reserved 0x9 - 0xF */
 };
 
+#define FM10K_RXD_PKTTYPE_MASK         0x03F0
+#define FM10K_RXD_PKTTYPE_SHIFT                4
+enum fm10k_rdesc_pkt_type {
+       /* L3 type */
+       FM10K_PKTTYPE_OTHER     = 0x00,
+       FM10K_PKTTYPE_IPV4      = 0x01,
+       FM10K_PKTTYPE_IPV4_EX   = 0x02,
+       FM10K_PKTTYPE_IPV6      = 0x03,
+       FM10K_PKTTYPE_IPV6_EX   = 0x04,
+
+       /* L4 type */
+       FM10K_PKTTYPE_TCP       = 0x08,
+       FM10K_PKTTYPE_UDP       = 0x10,
+       FM10K_PKTTYPE_GRE       = 0x18,
+       FM10K_PKTTYPE_VXLAN     = 0x20,
+       FM10K_PKTTYPE_NVGRE     = 0x28,
+       FM10K_PKTTYPE_GENEVE    = 0x30
+};
 
 #define FM10K_RXD_HDR_INFO_XC_MASK     0x0006
 enum fm10k_rxdesc_xc {
@@ -823,6 +857,7 @@ enum fm10k_rxdesc_xc {
 
 #define FM10K_RXD_STATUS_DD            0x0001 /* Descriptor done */
 #define FM10K_RXD_STATUS_EOP           0x0002 /* End of packet */
+#define FM10K_RXD_STATUS_IPCS          0x0008 /* Indicates IPv4 csum */
 #define FM10K_RXD_STATUS_L4CS          0x0010 /* Indicates an L4 csum */
 #define FM10K_RXD_STATUS_L4CS2         0x0040 /* Inner header L4 csum */
 #define FM10K_RXD_STATUS_L4E2          0x0800 /* Inner header L4 csum err */