net/ice/base: fix adding PPPoE switch rule
[dpdk.git] / drivers / net / ice / ice_ethdev.h
index f3ed02e..182c6f6 100644 (file)
  * Considering QinQ packet, the VLAN tag needs to be counted twice.
  */
 #define ICE_ETH_OVERHEAD \
-       (ETHER_HDR_LEN + ETHER_CRC_LEN + ICE_VLAN_TAG_SIZE * 2)
+       (RTE_ETHER_HDR_LEN + RTE_ETHER_CRC_LEN + ICE_VLAN_TAG_SIZE * 2)
+
+/* DDP package type */
+enum ice_pkg_type {
+       ICE_PKG_TYPE_UNKNOWN,
+       ICE_PKG_TYPE_OS_DEFAULT,
+       ICE_PKG_TYPE_COMMS,
+};
 
 struct ice_adapter;
 
@@ -130,7 +137,7 @@ struct ice_adapter;
  * MAC filter structure
  */
 struct ice_mac_filter_info {
-       struct ether_addr mac_addr;
+       struct rte_ether_addr mac_addr;
 };
 
 TAILQ_HEAD(ice_mac_filter_list, ice_mac_filter);
@@ -234,6 +241,16 @@ struct ice_vsi {
        bool offset_loaded;
 };
 
+extern const struct rte_flow_ops ice_flow_ops;
+
+/* Struct to store flow created. */
+struct rte_flow {
+       TAILQ_ENTRY(rte_flow) node;
+       void *rule;
+};
+
+TAILQ_HEAD(ice_flow_list, rte_flow);
+
 struct ice_pf {
        struct ice_adapter *adapter; /* The adapter this PF associate to */
        struct ice_vsi *main_vsi; /* pointer to main VSI structure */
@@ -247,11 +264,13 @@ struct ice_pf {
        struct ice_res_pool_info qp_pool;    /*Queue pair pool */
        struct ice_res_pool_info msix_pool;  /* MSIX interrupt pool */
        struct rte_eth_dev_data *dev_data; /* Pointer to the device data */
-       struct ether_addr dev_addr; /* PF device mac address */
+       struct rte_ether_addr dev_addr; /* PF device mac address */
        uint64_t flags; /* PF feature flags */
        uint16_t hash_lut_size; /* The size of hash lookup table */
        uint16_t lan_nb_qp_max;
        uint16_t lan_nb_qps; /* The number of queue pairs of LAN */
+       uint16_t base_queue; /* The base queue pairs index  in the device */
+       uint8_t *proto_xtr; /* Protocol extraction type for all queues */
        struct ice_hw_port_stats stats_offset;
        struct ice_hw_port_stats stats;
        /* internal packet statistics, it should be excluded from the total */
@@ -259,6 +278,17 @@ struct ice_pf {
        struct ice_eth_stats internal_stats;
        bool offset_loaded;
        bool adapter_stopped;
+       struct ice_flow_list flow_list;
+};
+
+#define ICE_MAX_QUEUE_NUM  2048
+
+/**
+ * Cache devargs parse result.
+ */
+struct ice_devargs {
+       int safe_mode_support;
+       uint8_t proto_xtr[ICE_MAX_QUEUE_NUM];
 };
 
 /**
@@ -270,10 +300,14 @@ struct ice_adapter {
        struct rte_eth_dev *eth_dev;
        struct ice_pf pf;
        bool rx_bulk_alloc_allowed;
+       bool rx_vec_allowed;
+       bool tx_vec_allowed;
        bool tx_simple_allowed;
        /* ptype mapping table */
        uint32_t ptype_tbl[ICE_MAX_PKT_TYPE] __rte_cache_min_aligned;
        bool is_safe_mode;
+       struct ice_devargs devargs;
+       enum ice_pkg_type active_pkg_type; /* loaded ddp package type */
 };
 
 struct ice_vsi_vlan_pvid_info {