[dpdk-dev,07/12] librte_ether: extend rte_eth_fdir_flow to support tunnel format
Commit Message
This patch changed rte_eth_fdir_flow from union to struct to
support more packets formats, for example, Vxlan and GRE tunnel
packets with IP inner frame.
This patch also add new RTE_FDIR_TUNNEL_TYPE_GRE enum.
Signed-off-by: Jingjing Wu <jingjing.wu@intel.com>
---
doc/guides/rel_notes/release_2_3.rst | 4 ++++
lib/librte_ether/rte_eth_ctrl.h | 27 +++++++++++++++------------
2 files changed, 19 insertions(+), 12 deletions(-)
@@ -39,6 +39,10 @@ API Changes
ABI Changes
-----------
+* The ethdev flow director structure ``rte_eth_fdir_flow`` structure was
+ changed. New fields were added to extend flow director's input set, and
+ organizing is also changed to support multiple input format.
+
Shared Library Versions
-----------------------
@@ -495,6 +495,7 @@ enum rte_eth_fdir_tunnel_type {
RTE_FDIR_TUNNEL_TYPE_UNKNOWN = 0,
RTE_FDIR_TUNNEL_TYPE_NVGRE,
RTE_FDIR_TUNNEL_TYPE_VXLAN,
+ RTE_FDIR_TUNNEL_TYPE_GRE,
};
/**
@@ -508,18 +509,20 @@ struct rte_eth_tunnel_flow {
};
/**
- * An union contains the inputs for all types of flow
+ * A struct contains the inputs for all types of flow
*/
-union rte_eth_fdir_flow {
- struct rte_eth_l2_flow l2_flow;
- struct rte_eth_udpv4_flow udp4_flow;
- struct rte_eth_tcpv4_flow tcp4_flow;
- struct rte_eth_sctpv4_flow sctp4_flow;
- struct rte_eth_ipv4_flow ip4_flow;
- struct rte_eth_udpv6_flow udp6_flow;
- struct rte_eth_tcpv6_flow tcp6_flow;
- struct rte_eth_sctpv6_flow sctp6_flow;
- struct rte_eth_ipv6_flow ipv6_flow;
+struct rte_eth_fdir_flow {
+ union {
+ struct rte_eth_l2_flow l2_flow;
+ struct rte_eth_udpv4_flow udp4_flow;
+ struct rte_eth_tcpv4_flow tcp4_flow;
+ struct rte_eth_sctpv4_flow sctp4_flow;
+ struct rte_eth_ipv4_flow ip4_flow;
+ struct rte_eth_udpv6_flow udp6_flow;
+ struct rte_eth_tcpv6_flow tcp6_flow;
+ struct rte_eth_sctpv6_flow sctp6_flow;
+ struct rte_eth_ipv6_flow ipv6_flow;
+ };
struct rte_eth_mac_vlan_flow mac_vlan_flow;
struct rte_eth_tunnel_flow tunnel_flow;
};
@@ -540,7 +543,7 @@ struct rte_eth_fdir_flow_ext {
*/
struct rte_eth_fdir_input {
uint16_t flow_type;
- union rte_eth_fdir_flow flow;
+ struct rte_eth_fdir_flow flow;
/**< Flow fields to match, dependent on flow_type */
struct rte_eth_fdir_flow_ext flow_ext;
/**< Additional fields to match */