net/i40e: enable VF to program MAC address
[dpdk.git] / drivers / net / i40e / i40e_ethdev.h
index bba2b83..8cabdba 100644 (file)
@@ -124,7 +124,6 @@ enum i40e_flxpld_layer_idx {
 #define I40E_FLAG_FDIR                  (1ULL << 6)
 #define I40E_FLAG_VXLAN                 (1ULL << 7)
 #define I40E_FLAG_RSS_AQ_CAPABLE        (1ULL << 8)
-#define I40E_FLAG_VF_MAC_BY_PF          (1ULL << 9)
 #define I40E_FLAG_ALL (I40E_FLAG_RSS | \
                       I40E_FLAG_DCB | \
                       I40E_FLAG_VMDQ | \
@@ -133,8 +132,7 @@ enum i40e_flxpld_layer_idx {
                       I40E_FLAG_HEADER_SPLIT_ENABLED | \
                       I40E_FLAG_FDIR | \
                       I40E_FLAG_VXLAN | \
-                      I40E_FLAG_RSS_AQ_CAPABLE | \
-                      I40E_FLAG_VF_MAC_BY_PF)
+                      I40E_FLAG_RSS_AQ_CAPABLE)
 
 #define I40E_RSS_OFFLOAD_ALL ( \
        ETH_RSS_FRAG_IPV4 | \
@@ -426,6 +424,7 @@ struct i40e_pf_vf {
        /* version of the virtchnl from VF */
        struct virtchnl_version_info version;
        uint32_t request_caps; /* offload caps requested from VF */
+       uint64_t num_mdd_events; /* num of mdd events detected */
 
        /*
         * Variables for store the arrival timestamp of VF messages.
@@ -501,6 +500,29 @@ struct i40e_gtp_ipv6_flow {
        struct rte_eth_ipv6_flow ip6;
 };
 
+/* A structure used to define the input for ESP IPV4 flow */
+struct i40e_esp_ipv4_flow {
+       struct rte_eth_ipv4_flow ipv4;
+       uint32_t spi;   /* SPI in big endian. */
+};
+
+/* A structure used to define the input for ESP IPV6 flow */
+struct i40e_esp_ipv6_flow {
+       struct rte_eth_ipv6_flow ipv6;
+       uint32_t spi;   /* SPI in big endian. */
+};
+/* A structure used to define the input for ESP IPV4 UDP flow */
+struct i40e_esp_ipv4_udp_flow {
+       struct rte_eth_udpv4_flow udp;
+       uint32_t spi;   /* SPI in big endian. */
+};
+
+/* A structure used to define the input for ESP IPV6 UDP flow */
+struct i40e_esp_ipv6_udp_flow {
+       struct rte_eth_udpv6_flow udp;
+       uint32_t spi;   /* SPI in big endian. */
+};
+
 /* A structure used to define the input for raw type flow */
 struct i40e_raw_flow {
        uint16_t pctype;
@@ -540,6 +562,10 @@ union i40e_fdir_flow {
        struct i40e_raw_flow            raw_flow;
        struct i40e_ipv4_l2tpv3oip_flow ip4_l2tpv3oip_flow;
        struct i40e_ipv6_l2tpv3oip_flow ip6_l2tpv3oip_flow;
+       struct i40e_esp_ipv4_flow       esp_ipv4_flow;
+       struct i40e_esp_ipv6_flow       esp_ipv6_flow;
+       struct i40e_esp_ipv4_udp_flow   esp_ipv4_udp_flow;
+       struct i40e_esp_ipv6_udp_flow   esp_ipv6_udp_flow;
 };
 
 enum i40e_fdir_ip_type {
@@ -559,6 +585,7 @@ struct i40e_fdir_flow_ext {
        enum i40e_fdir_ip_type oip_type; /* ip type for outer ip */
        bool customized_pctype; /* If customized pctype is used */
        bool pkt_template; /* If raw packet template is used */
+       bool is_udp; /* ipv4|ipv6 udp flow */
 };
 
 /* A structure used to define the input for a flow director filter entry */
@@ -784,6 +811,8 @@ enum i40e_tunnel_type {
        I40E_TUNNEL_TYPE_QINQ,
        I40E_TUNNEL_TYPE_GTPC,
        I40E_TUNNEL_TYPE_GTPU,
+       I40E_TUNNEL_TYPE_ESPoUDP,
+       I40E_TUNNEL_TYPE_ESPoIP,
        I40E_TUNNEL_TYPE_MAX,
 };
 
@@ -914,6 +943,12 @@ enum i40e_new_pctype {
        I40E_CUSTOMIZED_GTPU,
        I40E_CUSTOMIZED_IPV4_L2TPV3,
        I40E_CUSTOMIZED_IPV6_L2TPV3,
+       I40E_CUSTOMIZED_ESP_IPV4,
+       I40E_CUSTOMIZED_ESP_IPV6,
+       I40E_CUSTOMIZED_ESP_IPV4_UDP,
+       I40E_CUSTOMIZED_ESP_IPV6_UDP,
+       I40E_CUSTOMIZED_AH_IPV4,
+       I40E_CUSTOMIZED_AH_IPV6,
        I40E_CUSTOMIZED_MAX,
 };
 
@@ -1018,6 +1053,7 @@ struct i40e_pf {
 
        /* Dynamic Device Personalization */
        bool gtp_support; /* 1 - support GTP-C and GTP-U */
+       bool esp_support; /* 1 - support ESP SPI */
        /* customer customized pctype */
        struct i40e_customized_pctype customized_pctype[I40E_CUSTOMIZED_MAX];
        /* Switch Domain Id */