net/ice: fix bytes statistics
[dpdk.git] / drivers / net / ice / ice_ethdev.h
index c55713c..87984ef 100644 (file)
 
 #define ICE_MAX_PKT_TYPE  1024
 
+/* DDP package search path */
+#define ICE_PKG_FILE_DEFAULT "/lib/firmware/intel/ice/ddp/ice.pkg"
+#define ICE_PKG_FILE_UPDATES "/lib/firmware/updates/intel/ice/ddp/ice.pkg"
+#define ICE_PKG_FILE_SEARCH_PATH_DEFAULT "/lib/firmware/intel/ice/ddp/"
+#define ICE_PKG_FILE_SEARCH_PATH_UPDATES "/lib/firmware/updates/intel/ice/ddp/"
+#define ICE_MAX_PKG_FILENAME_SIZE   256
+
 /**
  * vlan_id is a 12 bit number.
  * The VFTA array is actually a 4096 bit array, 128 of 32bit elements.
                       ICE_FLAG_VF_MAC_BY_PF)
 
 #define ICE_RSS_OFFLOAD_ALL ( \
+       ETH_RSS_IPV4 | \
        ETH_RSS_FRAG_IPV4 | \
        ETH_RSS_NONFRAG_IPV4_TCP | \
        ETH_RSS_NONFRAG_IPV4_UDP | \
        ETH_RSS_NONFRAG_IPV4_SCTP | \
        ETH_RSS_NONFRAG_IPV4_OTHER | \
+       ETH_RSS_IPV6 | \
        ETH_RSS_FRAG_IPV6 | \
        ETH_RSS_NONFRAG_IPV6_TCP | \
        ETH_RSS_NONFRAG_IPV6_UDP | \
 #define ICE_ETH_OVERHEAD \
        (RTE_ETHER_HDR_LEN + RTE_ETHER_CRC_LEN + ICE_VLAN_TAG_SIZE * 2)
 
+#define ICE_RXTX_BYTES_HIGH(bytes) ((bytes) & ~ICE_40_BIT_MASK)
+#define ICE_RXTX_BYTES_LOW(bytes) ((bytes) & ICE_40_BIT_MASK)
+
 /* DDP package type */
 enum ice_pkg_type {
        ICE_PKG_TYPE_UNKNOWN,
@@ -239,6 +251,8 @@ struct ice_vsi {
        struct ice_eth_stats eth_stats_offset;
        struct ice_eth_stats eth_stats;
        bool offset_loaded;
+       uint64_t old_rx_bytes;
+       uint64_t old_tx_bytes;
 };
 
 enum proto_xtr_type {
@@ -254,6 +268,7 @@ enum ice_fdir_tunnel_type {
        ICE_FDIR_TUNNEL_TYPE_NONE = 0,
        ICE_FDIR_TUNNEL_TYPE_VXLAN,
        ICE_FDIR_TUNNEL_TYPE_GTPU,
+       ICE_FDIR_TUNNEL_TYPE_GTPU_EH,
 };
 
 struct rte_flow;
@@ -334,6 +349,7 @@ struct ice_fdir_info {
        struct ice_rx_queue *rxq;
        void *prg_pkt;                 /* memory for fdir program packet */
        uint64_t dma_addr;             /* physic address of packet memory*/
+       const struct rte_memzone *mz;
        struct ice_fdir_filter_conf conf;
 
        struct ice_fdir_filter_conf **hash_map;
@@ -375,9 +391,13 @@ struct ice_pf {
        bool offset_loaded;
        bool adapter_stopped;
        struct ice_flow_list flow_list;
+       rte_spinlock_t flow_ops_lock;
        struct ice_parser_list rss_parser_list;
        struct ice_parser_list perm_parser_list;
        struct ice_parser_list dist_parser_list;
+       bool init_link_up;
+       uint64_t old_rx_bytes;
+       uint64_t old_tx_bytes;
 };
 
 #define ICE_MAX_QUEUE_NUM  2048
@@ -389,6 +409,7 @@ struct ice_devargs {
        int safe_mode_support;
        uint8_t proto_xtr_dflt;
        int pipe_mode_support;
+       int flow_mark_support;
        uint8_t proto_xtr[ICE_MAX_QUEUE_NUM];
 };
 
@@ -453,10 +474,14 @@ struct ice_vsi_vlan_pvid_info {
 #define ICE_PF_TO_ETH_DEV(pf) \
        (((struct ice_pf *)pf)->adapter->eth_dev)
 
+enum ice_pkg_type ice_load_pkg_type(struct ice_hw *hw);
 struct ice_vsi *
 ice_setup_vsi(struct ice_pf *pf, enum ice_vsi_type type);
 int
 ice_release_vsi(struct ice_vsi *vsi);
+void ice_vsi_enable_queues_intr(struct ice_vsi *vsi);
+void ice_vsi_disable_queues_intr(struct ice_vsi *vsi);
+void ice_vsi_queues_bind_intr(struct ice_vsi *vsi);
 
 static inline int
 ice_align_floor(int n)