net/enic: generate VXLAN src port if it is zero in template
[dpdk.git] / drivers / net / iavf / iavf.h
index 78bdaff..3198d85 100644 (file)
@@ -92,6 +92,18 @@ 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;
+};
+
 /* TODO: is that correct to assume the max number to be 16 ?*/
 #define IAVF_MAX_MSIX_VECTORS   16
 
@@ -117,8 +129,12 @@ struct iavf_info {
        bool link_up;
        uint32_t link_speed;
 
+       /* Multicast addrs */
+       struct rte_ether_addr mc_addrs[IAVF_NUM_MACADDR_MAX];
+       uint16_t mc_addrs_num;   /* Multicast mac addresses number */
+
        struct iavf_vsi vsi;
-       bool vf_reset;
+       bool vf_reset;  /* true for VF reset pending, false for no VF reset */
        uint64_t flags;
 
        uint8_t *rss_lut;
@@ -131,6 +147,8 @@ struct iavf_info {
        rte_spinlock_t flow_ops_lock;
        struct iavf_parser_list rss_parser_list;
        struct iavf_parser_list dist_parser_list;
+
+       struct iavf_fdir_info fdir; /* flow director info */
 };
 
 #define IAVF_MAX_PKT_TYPE 1024
@@ -252,4 +270,13 @@ int iavf_config_promisc(struct iavf_adapter *adapter, bool enable_unicast,
 int iavf_add_del_eth_addr(struct iavf_adapter *adapter,
                         struct rte_ether_addr *addr, bool add);
 int iavf_add_del_vlan(struct iavf_adapter *adapter, uint16_t vlanid, bool add);
+int iavf_fdir_add(struct iavf_adapter *adapter, struct iavf_fdir_conf *filter);
+int iavf_fdir_del(struct iavf_adapter *adapter, struct iavf_fdir_conf *filter);
+int iavf_fdir_check(struct iavf_adapter *adapter,
+               struct iavf_fdir_conf *filter);
+int iavf_add_del_rss_cfg(struct iavf_adapter *adapter,
+                        struct virtchnl_rss_cfg *rss_cfg, bool add);
+int iavf_add_del_mc_addr_list(struct iavf_adapter *adapter,
+                       struct rte_ether_addr *mc_addrs,
+                       uint32_t mc_addrs_num, bool add);
 #endif /* _IAVF_ETHDEV_H_ */