+ struct iavf_eth_xstats eth_stats_offset;
+};
+
+struct rte_flow;
+TAILQ_HEAD(iavf_flow_list, rte_flow);
+
+struct iavf_flow_parser_node;
+TAILQ_HEAD(iavf_parser_list, iavf_flow_parser_node);
+
+struct iavf_fdir_conf {
+ struct virtchnl_fdir_add add_fltr;
+ struct virtchnl_fdir_del del_fltr;
+ uint64_t input_set;
+ uint32_t flow_id;
+ uint32_t mark_flag;
+};
+
+struct iavf_fdir_info {
+ struct iavf_fdir_conf conf;
+};
+
+struct iavf_qv_map {
+ uint16_t queue_id;
+ uint16_t vector_id;
+};
+
+/* Message type read in admin queue from PF */
+enum iavf_aq_result {
+ IAVF_MSG_ERR = -1, /* Meet error when accessing admin queue */
+ IAVF_MSG_NON, /* Read nothing from admin queue */
+ IAVF_MSG_SYS, /* Read system msg from admin queue */
+ IAVF_MSG_CMD, /* Read async command result */
+};
+
+/* Struct to store Traffic Manager node configuration. */
+struct iavf_tm_node {
+ TAILQ_ENTRY(iavf_tm_node) node;
+ uint32_t id;
+ uint32_t tc;
+ uint32_t priority;
+ uint32_t weight;
+ uint32_t reference_count;
+ struct iavf_tm_node *parent;
+ struct iavf_tm_shaper_profile *shaper_profile;
+ struct rte_tm_node_params params;
+};
+
+TAILQ_HEAD(iavf_tm_node_list, iavf_tm_node);
+
+struct iavf_tm_shaper_profile {
+ TAILQ_ENTRY(iavf_tm_shaper_profile) node;
+ uint32_t shaper_profile_id;
+ uint32_t reference_count;
+ struct rte_tm_shaper_params profile;
+};
+
+TAILQ_HEAD(iavf_shaper_profile_list, iavf_tm_shaper_profile);
+
+/* node type of Traffic Manager */
+enum iavf_tm_node_type {
+ IAVF_TM_NODE_TYPE_PORT,
+ IAVF_TM_NODE_TYPE_TC,
+ IAVF_TM_NODE_TYPE_QUEUE,
+ IAVF_TM_NODE_TYPE_MAX,
+};
+
+/* Struct to store all the Traffic Manager configuration. */
+struct iavf_tm_conf {
+ struct iavf_tm_node *root; /* root node - vf vsi */
+ struct iavf_tm_node_list tc_list; /* node list for all the TCs */
+ struct iavf_tm_node_list queue_list; /* node list for all the queues */
+ struct iavf_shaper_profile_list shaper_profile_list;
+ uint32_t nb_tc_node;
+ uint32_t nb_queue_node;
+ bool committed;