[dpdk-dev,4/4] net/i40e: refine consistent tunnel filter
Checks
Commit Message
Add i40e_tunnel_type enumeration type to refine consistent
tunnel filter, it will be esay to add new tunnel type for
i40e.
Signed-off-by: Beilei Xing <beilei.xing@intel.com>
---
drivers/net/i40e/i40e_ethdev.c | 8 ++++----
drivers/net/i40e/i40e_ethdev.h | 18 ++++++++++++++++--
drivers/net/i40e/i40e_flow.c | 6 +++---
3 files changed, 23 insertions(+), 9 deletions(-)
Comments
On 3/3/2017 9:31 AM, Beilei Xing wrote:
> Add i40e_tunnel_type enumeration type to refine consistent
> tunnel filter, it will be esay to add new tunnel type for
s/esay/easy
> i40e.
>
> Signed-off-by: Beilei Xing <beilei.xing@intel.com>
<...>
> /**
> + * Tunnel type.
> + */
> +enum i40e_tunnel_type {
> + I40E_TUNNEL_TYPE_NONE = 0,
> + I40E_TUNNEL_TYPE_VXLAN,
> + I40E_TUNNEL_TYPE_GENEVE,
> + I40E_TUNNEL_TYPE_TEREDO,
> + I40E_TUNNEL_TYPE_NVGRE,
> + I40E_TUNNEL_TYPE_IP_IN_GRE,
> + I40E_L2_TUNNEL_TYPE_E_TAG,
> + I40E_TUNNEL_TYPE_MAX,
> +};
Same question here, there is already "rte_eth_tunnel_type", why driver
is duplicating the structure?
<...>
> -----Original Message-----
> From: Yigit, Ferruh
> Sent: Wednesday, March 8, 2017 11:51 PM
> To: Xing, Beilei <beilei.xing@intel.com>; Wu, Jingjing <jingjing.wu@intel.com>
> Cc: Zhang, Helin <helin.zhang@intel.com>; dev@dpdk.org
> Subject: Re: [dpdk-dev] [PATCH 4/4] net/i40e: refine consistent tunnel filter
>
> On 3/3/2017 9:31 AM, Beilei Xing wrote:
> > Add i40e_tunnel_type enumeration type to refine consistent tunnel
> > filter, it will be esay to add new tunnel type for
>
> s/esay/easy
>
> > i40e.
> >
> > Signed-off-by: Beilei Xing <beilei.xing@intel.com>
>
> <...>
>
> > /**
> > + * Tunnel type.
> > + */
> > +enum i40e_tunnel_type {
> > + I40E_TUNNEL_TYPE_NONE = 0,
> > + I40E_TUNNEL_TYPE_VXLAN,
> > + I40E_TUNNEL_TYPE_GENEVE,
> > + I40E_TUNNEL_TYPE_TEREDO,
> > + I40E_TUNNEL_TYPE_NVGRE,
> > + I40E_TUNNEL_TYPE_IP_IN_GRE,
> > + I40E_L2_TUNNEL_TYPE_E_TAG,
> > + I40E_TUNNEL_TYPE_MAX,
> > +};
>
> Same question here, there is already "rte_eth_tunnel_type", why driver is
> duplicating the structure?
>
Same with " struct i40e_tunnel_filter_conf ", to avoid ABI change, we create it in PMD to add new tunnel type easily, like MPLS.
> <...>
@@ -6960,7 +6960,7 @@ i40e_dev_consistent_tunnel_filter_set(struct i40e_pf *pf,
pfilter->element.inner_vlan =
rte_cpu_to_le_16(tunnel_filter->inner_vlan);
- if (tunnel_filter->ip_type == RTE_TUNNEL_IPTYPE_IPV4) {
+ if (tunnel_filter->ip_type == I40E_TUNNEL_IPTYPE_IPV4) {
ip_type = I40E_AQC_ADD_CLOUD_FLAGS_IPV4;
ipv4_addr = rte_be_to_cpu_32(tunnel_filter->ip_addr.ipv4_addr);
rte_memcpy(&pfilter->element.ipaddr.v4.data,
@@ -6980,13 +6980,13 @@ i40e_dev_consistent_tunnel_filter_set(struct i40e_pf *pf,
/* check tunneled type */
switch (tunnel_filter->tunnel_type) {
- case RTE_TUNNEL_TYPE_VXLAN:
+ case I40E_TUNNEL_TYPE_VXLAN:
tun_type = I40E_AQC_ADD_CLOUD_TNL_TYPE_VXLAN;
break;
- case RTE_TUNNEL_TYPE_NVGRE:
+ case I40E_TUNNEL_TYPE_NVGRE:
tun_type = I40E_AQC_ADD_CLOUD_TNL_TYPE_NVGRE_OMAC;
break;
- case RTE_TUNNEL_TYPE_IP_IN_GRE:
+ case I40E_TUNNEL_TYPE_IP_IN_GRE:
tun_type = I40E_AQC_ADD_CLOUD_TNL_TYPE_IP;
break;
default:
@@ -531,6 +531,20 @@ struct i40e_tunnel_rule {
};
/**
+ * Tunnel type.
+ */
+enum i40e_tunnel_type {
+ I40E_TUNNEL_TYPE_NONE = 0,
+ I40E_TUNNEL_TYPE_VXLAN,
+ I40E_TUNNEL_TYPE_GENEVE,
+ I40E_TUNNEL_TYPE_TEREDO,
+ I40E_TUNNEL_TYPE_NVGRE,
+ I40E_TUNNEL_TYPE_IP_IN_GRE,
+ I40E_L2_TUNNEL_TYPE_E_TAG,
+ I40E_TUNNEL_TYPE_MAX,
+};
+
+/**
* Tunneling Packet filter configuration.
*/
struct i40e_tunnel_filter_conf {
@@ -538,7 +552,7 @@ struct i40e_tunnel_filter_conf {
struct ether_addr inner_mac; /**< Inner MAC address to match. */
uint16_t inner_vlan; /**< Inner VLAN to match. */
uint32_t outer_vlan; /**< Outer VLAN to match */
- enum rte_tunnel_iptype ip_type; /**< IP address type. */
+ enum i40e_tunnel_iptype ip_type; /**< IP address type. */
/**
* Outer destination IP address to match if ETH_TUNNEL_FILTER_OIP
* is set in filter_type, or inner destination IP address to match
@@ -550,7 +564,7 @@ struct i40e_tunnel_filter_conf {
} ip_addr;
/** Flags from ETH_TUNNEL_FILTER_XX - see above. */
uint16_t filter_type;
- enum rte_eth_tunnel_type tunnel_type; /**< Tunnel Type. */
+ enum i40e_tunnel_type tunnel_type; /**< Tunnel Type. */
uint32_t tenant_id; /**< Tenant ID to match. VNI, GRE key... */
uint16_t queue_id; /**< Queue assigned to if match. */
uint8_t is_to_vf; /**< 0 - to PF, 1 - to VF */
@@ -1324,7 +1324,7 @@ i40e_flow_parse_vxlan_pattern(__rte_unused struct rte_eth_dev *dev,
}
break;
case RTE_FLOW_ITEM_TYPE_IPV4:
- filter->ip_type = RTE_TUNNEL_IPTYPE_IPV4;
+ filter->ip_type = I40E_TUNNEL_IPTYPE_IPV4;
/* IPv4 is used to describe protocol,
* spec and mask should be NULL.
*/
@@ -1337,7 +1337,7 @@ i40e_flow_parse_vxlan_pattern(__rte_unused struct rte_eth_dev *dev,
}
break;
case RTE_FLOW_ITEM_TYPE_IPV6:
- filter->ip_type = RTE_TUNNEL_IPTYPE_IPV6;
+ filter->ip_type = I40E_TUNNEL_IPTYPE_IPV6;
/* IPv6 is used to describe protocol,
* spec and mask should be NULL.
*/
@@ -1480,7 +1480,7 @@ i40e_flow_parse_vxlan_pattern(__rte_unused struct rte_eth_dev *dev,
return -rte_errno;
}
- filter->tunnel_type = RTE_TUNNEL_TYPE_VXLAN;
+ filter->tunnel_type = I40E_TUNNEL_TYPE_VXLAN;
return 0;
}