DPDK patches and discussions
 help / color / mirror / Atom feed
From: "Zhang, Helin" <helin.zhang@intel.com>
To: Vithal S Mohare <vmohare@arubanetworks.com>
Cc: "dev@dpdk.org" <dev@dpdk.org>
Subject: Re: [dpdk-dev] [PATCH 5/7] ethdev: unification of flow types
Date: Tue, 27 Jan 2015 05:20:35 +0000	[thread overview]
Message-ID: <F35DEAC7BCE34641BA9FAC6BCA4A12E70A7EDCE6@SHSMSX104.ccr.corp.intel.com> (raw)
In-Reply-To: <98DB008FA2AC6644B40AD8C766FAB271014BDED15D@BOREAL.arubanetworks.com>

Hi Vithal

Exactly! Some types of NIC (e.g. i40e) support it.

Regards,
Helin

> -----Original Message-----
> From: Vithal S Mohare [mailto:vmohare@arubanetworks.com]
> Sent: Tuesday, January 27, 2015 12:31 PM
> To: Zhang, Helin
> Subject: RE: [dpdk-dev] [PATCH 5/7] ethdev: unification of flow types
> 
> Hi Helin,
> 
> I see a new type *_L2_PAYLOAD added for RSS types.  Is this for spraying of
> pure L2 packets (non-ip)?
> 
> Thanks,
> -Vithal
> 
> -----Original Message-----
> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Helin Zhang
> Sent: Monday, January 19, 2015 12:26 PM
> To: dev@dpdk.org
> Subject: [dpdk-dev] [PATCH 5/7] ethdev: unification of flow types
> 
> Flow types was defined actually for i40e hardware specifically, and wasn't able
> to be used for defining RSS offload types of all PMDs. It removed the enum flow
> types, and uses macros instead with new names. The new macros can be used
> for defining RSS offload types later. Also modifications are made in i40e and
> testpmd accordingly.
> 
> Signed-off-by: Helin Zhang <helin.zhang@intel.com>
> ---
>  app/test-pmd/cmdline.c            | 88
> ++++++++++++++++++++++++---------------
>  app/test-pmd/config.c             | 71 +++++++++++++++++++++----------
>  lib/librte_ether/rte_eth_ctrl.h   | 55 ++++++++++++++----------
>  lib/librte_pmd_i40e/i40e_ethdev.c | 68 +++++++++++++++++-------------
> lib/librte_pmd_i40e/i40e_ethdev.h | 34 +++++++--------
>  lib/librte_pmd_i40e/i40e_fdir.c   | 84 ++++++++++++++++++-------------------
>  6 files changed, 235 insertions(+), 165 deletions(-)
> 
> diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c index
> 4618b92..80b9c32 100644
> --- a/app/test-pmd/cmdline.c
> +++ b/app/test-pmd/cmdline.c
> @@ -707,7 +707,7 @@ static void cmd_help_long_parsed(void
> *parsed_result,
>  			"    get info of a flex filter.\n\n"
> 
>  			"flow_director_filter (port_id) (add|del)"
> -			" flow (ip4|ip4-frag|ip6|ip6-frag)"
> +			" flow (ipv4-other|ipv4-frag|ipv6-other|ipv6-frag)"
>  			" src (src_ip_address) dst (dst_ip_address)"
>  			" flexbytes (flexbytes_value)"
>  			" (drop|fwd) queue (queue_id) fd_id (fd_id_value)\n"
> @@ -733,7 +733,8 @@ static void cmd_help_long_parsed(void
> *parsed_result,
>  			"    Flush all flow director entries of a device.\n\n"
> 
>  			"flow_director_flex_mask (port_id)"
> -			" flow
> (ip4|ip4-frag|tcp4|udp4|sctp4|ip6|ip6-frag|tcp6|udp6|sctp6|all)"
> +			" flow (ipv4-other|ipv4-frag|ipv4-tcp|ipv4-udp|ipv4-sctp|"
> +			"ipv6-other|ipv6-frag|ipv6-tcp|ipv6-udp|ipv6-sctp|all)"
>  			" (mask)\n"
>  			"    Configure mask of flex payload.\n\n"
> 
> @@ -8158,31 +8159,34 @@ parse_flexbytes(const char *q_arg, uint8_t
> *flexbytes, uint16_t max_num)
>  	return ret;
>  }
> 
> -static enum rte_eth_flow_type
> +static uint16_t
>  str2flowtype(char *string)
>  {
>  	uint8_t i = 0;
>  	static const struct {
>  		char str[32];
> -		enum rte_eth_flow_type type;
> +		uint16_t type;
>  	} flowtype_str[] = {
> -		{"ip4", RTE_ETH_FLOW_TYPE_IPV4_OTHER},
> -		{"ip4-frag", RTE_ETH_FLOW_TYPE_FRAG_IPV4},
> -		{"udp4", RTE_ETH_FLOW_TYPE_UDPV4},
> -		{"tcp4", RTE_ETH_FLOW_TYPE_TCPV4},
> -		{"sctp4", RTE_ETH_FLOW_TYPE_SCTPV4},
> -		{"ip6", RTE_ETH_FLOW_TYPE_IPV6_OTHER},
> -		{"ip6-frag", RTE_ETH_FLOW_TYPE_FRAG_IPV6},
> -		{"udp6", RTE_ETH_FLOW_TYPE_UDPV6},
> -		{"tcp6", RTE_ETH_FLOW_TYPE_TCPV6},
> -		{"sctp6", RTE_ETH_FLOW_TYPE_TCPV6},
> +		{"ipv4", ETH_FLOW_TYPE_IPV4},
> +		{"ipv4-frag", ETH_FLOW_TYPE_FRAG_IPV4},
> +		{"ipv4-tcp", ETH_FLOW_TYPE_NONFRAG_IPV4_TCP},
> +		{"ipv4-udp", ETH_FLOW_TYPE_NONFRAG_IPV4_UDP},
> +		{"ipv4-sctp", ETH_FLOW_TYPE_NONFRAG_IPV4_SCTP},
> +		{"ipv4-other", ETH_FLOW_TYPE_NONFRAG_IPV4_OTHER},
> +		{"ipv6", ETH_FLOW_TYPE_IPV6},
> +		{"ipv6-frag", ETH_FLOW_TYPE_FRAG_IPV6},
> +		{"ipv6-tcp", ETH_FLOW_TYPE_NONFRAG_IPV6_TCP},
> +		{"ipv6-udp", ETH_FLOW_TYPE_NONFRAG_IPV6_UDP},
> +		{"ipv6-sctp", ETH_FLOW_TYPE_NONFRAG_IPV6_SCTP},
> +		{"ipv6-other", ETH_FLOW_TYPE_NONFRAG_IPV6_OTHER},
> +		{"l2_payload", ETH_FLOW_TYPE_L2_PAYLOAD},
>  	};
> 
>  	for (i = 0; i < RTE_DIM(flowtype_str); i++) {
>  		if (!strcmp(flowtype_str[i].str, string))
>  			return flowtype_str[i].type;
>  	}
> -	return RTE_ETH_FLOW_TYPE_NONE;
> +	return ETH_FLOW_TYPE_UNKNOWN;
>  }
> 
>  #define IPV4_ADDR_TO_UINT(ip_addr, ip) \ @@ -8235,9 +8239,9 @@
> cmd_flow_director_filter_parsed(void *parsed_result,
> 
>  	entry.input.flow_type = str2flowtype(res->flow_type);
>  	switch (entry.input.flow_type) {
> -	case RTE_ETH_FLOW_TYPE_IPV4_OTHER:
> -	case RTE_ETH_FLOW_TYPE_UDPV4:
> -	case RTE_ETH_FLOW_TYPE_TCPV4:
> +	case ETH_FLOW_TYPE_NONFRAG_IPV4_OTHER:
> +	case ETH_FLOW_TYPE_NONFRAG_IPV4_UDP:
> +	case ETH_FLOW_TYPE_NONFRAG_IPV4_TCP:
>  		IPV4_ADDR_TO_UINT(res->ip_dst,
>  			entry.input.flow.ip4_flow.dst_ip);
>  		IPV4_ADDR_TO_UINT(res->ip_src,
> @@ -8248,7 +8252,7 @@ cmd_flow_director_filter_parsed(void
> *parsed_result,
>  		entry.input.flow.udp4_flow.src_port =
>  				rte_cpu_to_be_16(res->port_src);
>  		break;
> -	case RTE_ETH_FLOW_TYPE_SCTPV4:
> +	case ETH_FLOW_TYPE_NONFRAG_IPV4_SCTP:
>  		IPV4_ADDR_TO_UINT(res->ip_dst,
>  			entry.input.flow.sctp4_flow.ip.dst_ip);
>  		IPV4_ADDR_TO_UINT(res->ip_src,
> @@ -8257,9 +8261,9 @@ cmd_flow_director_filter_parsed(void
> *parsed_result,
>  		entry.input.flow.sctp4_flow.verify_tag =
>  				rte_cpu_to_be_32(res->verify_tag_value);
>  		break;
> -	case RTE_ETH_FLOW_TYPE_IPV6_OTHER:
> -	case RTE_ETH_FLOW_TYPE_UDPV6:
> -	case RTE_ETH_FLOW_TYPE_TCPV6:
> +	case ETH_FLOW_TYPE_NONFRAG_IPV6_OTHER:
> +	case ETH_FLOW_TYPE_NONFRAG_IPV6_UDP:
> +	case ETH_FLOW_TYPE_NONFRAG_IPV6_TCP:
>  		IPV6_ADDR_TO_ARRAY(res->ip_dst,
>  			entry.input.flow.ipv6_flow.dst_ip);
>  		IPV6_ADDR_TO_ARRAY(res->ip_src,
> @@ -8270,7 +8274,7 @@ cmd_flow_director_filter_parsed(void
> *parsed_result,
>  		entry.input.flow.udp6_flow.src_port =
>  				rte_cpu_to_be_16(res->port_src);
>  		break;
> -	case RTE_ETH_FLOW_TYPE_SCTPV6:
> +	case ETH_FLOW_TYPE_NONFRAG_IPV6_SCTP:
>  		IPV6_ADDR_TO_ARRAY(res->ip_dst,
>  			entry.input.flow.sctp6_flow.ip.dst_ip);
>  		IPV6_ADDR_TO_ARRAY(res->ip_src,
> @@ -8321,9 +8325,8 @@ cmdline_parse_token_string_t
> cmd_flow_director_flow =
>  				 flow, "flow");
>  cmdline_parse_token_string_t cmd_flow_director_flow_type =
>  	TOKEN_STRING_INITIALIZER(struct cmd_flow_director_result,
> -				 flow_type,
> -				 "ip4#ip4-frag#tcp4#udp4#sctp4#"
> -				 "ip6#ip6-frag#tcp6#udp6#sctp6");
> +		flow_type, "ipv4-other#ipv4-frag#ipv4-tcp#ipv4-udp#ipv4-sctp#"
> +		"ipv6-other#ipv6-frag#ipv6-tcp#ipv6-udp#ipv6-sctp");
>  cmdline_parse_token_string_t cmd_flow_director_src =
>  	TOKEN_STRING_INITIALIZER(struct cmd_flow_director_result,
>  				 src, "src");
> @@ -8511,7 +8514,9 @@ cmd_flow_director_flex_mask_parsed(void
> *parsed_result,
>  	struct cmd_flow_director_flex_mask_result *res = parsed_result;
>  	struct rte_eth_fdir_flex_mask flex_mask;
>  	struct rte_port *port;
> -	enum rte_eth_flow_type i;
> +	struct rte_eth_fdir_info fdir_info;
> +	uint32_t flow_type_mask;
> +	uint16_t i;
>  	int ret;
> 
>  	if (res->port_id > nb_ports) {
> @@ -8534,10 +8539,23 @@ cmd_flow_director_flex_mask_parsed(void
> *parsed_result,
>  		printf("error: Cannot parse mask input.\n");
>  		return;
>  	}
> +
> +	memset(&fdir_info, 0, sizeof(fdir_info));
> +	ret = rte_eth_dev_filter_ctrl(res->port_id, RTE_ETH_FILTER_FDIR,
> +					RTE_ETH_FILTER_INFO, &fdir_info);
> +	if (ret < 0) {
> +		printf("Cannot get FDir filter info\n");
> +		return;
> +	}
> +	flow_type_mask = fdir_info.flow_types_mask[0];
>  	if (!strcmp(res->flow_type, "all")) {
> -		for (i = RTE_ETH_FLOW_TYPE_UDPV4;
> -		     i <= RTE_ETH_FLOW_TYPE_FRAG_IPV6;
> -		     i++) {
> +		if (!flow_type_mask) {
> +			printf("No flow type supported\n");
> +			return;
> +		}
> +		for (i = ETH_FLOW_TYPE_UNKNOWN; i < ETH_FLOW_TYPE_MAX; i++)
> {
> +			if (!(flow_type_mask & (1 << i)))
> +				continue;
>  			flex_mask.flow_type = i;
>  			fdir_set_flex_mask(res->port_id, &flex_mask);
>  		}
> @@ -8545,6 +8563,11 @@ cmd_flow_director_flex_mask_parsed(void
> *parsed_result,
>  		return;
>  	}
>  	flex_mask.flow_type = str2flowtype(res->flow_type);
> +	if (!(flow_type_mask & (1 << flex_mask.flow_type))) {
> +		printf("Flow type %s not supported on port %d\n",
> +				res->flow_type, res->port_id);
> +		return;
> +	}
>  	fdir_set_flex_mask(res->port_id, &flex_mask);
>  	cmd_reconfig_device_queue(res->port_id, 1, 1);  } @@ -8561,9 +8584,8
> @@ cmdline_parse_token_string_t cmd_flow_director_flexmask_flow =
>  				 flow, "flow");
>  cmdline_parse_token_string_t cmd_flow_director_flexmask_flow_type =
>  	TOKEN_STRING_INITIALIZER(struct cmd_flow_director_flex_mask_result,
> -				 flow_type,
> -				"ip4#ip4-frag#tcp4#udp4#sctp4#"
> -				"ip6#ip6-frag#tcp6#udp6#sctp6#all");
> +		flow_type, "ipv4-other#ipv4-frag#ipv4-tcp#ipv4-udp#ipv4-sctp#"
> +		"ipv6-other#ipv6-frag#ipv6-tcp#ipv6-udp#ipv6-sctp#all");
>  cmdline_parse_token_string_t cmd_flow_director_flexmask_mask =
>  	TOKEN_STRING_INITIALIZER(struct cmd_flow_director_flex_mask_result,
>  				 mask, NULL);
> diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c index
> 87dedf9..4c61a07 100644
> --- a/app/test-pmd/config.c
> +++ b/app/test-pmd/config.c
> @@ -96,19 +96,7 @@
> 
>  #include "testpmd.h"
> 
> -static const char *flowtype_str[RTE_ETH_FLOW_TYPE_MAX] = {
> -	NULL,
> -	"udp4",
> -	"tcp4",
> -	"sctp4",
> -	"ip4",
> -	"ip4-frag",
> -	"udp6",
> -	"tcp6",
> -	"sctp6",
> -	"ip6",
> -	"ip6-frag",
> -};
> +static char *flowtype_to_str(uint16_t flow_type);
> 
>  static void
>  print_ethaddr(const char *name, struct ether_addr *eth_addr) @@ -1843,15
> +1831,50 @@ print_fdir_flex_payload(struct rte_eth_fdir_flex_conf *flex_conf)
>  	printf("\n");
>  }
> 
> +static char *
> +flowtype_to_str(uint16_t flow_type)
> +{
> +	struct flow_type_info {
> +		char str[32];
> +		uint16_t ftype;
> +	};
> +
> +	uint8_t i;
> +	static struct flow_type_info flowtype_str_table[] = {
> +		{"ipv4", ETH_FLOW_TYPE_IPV4},
> +		{"ipv4-frag", ETH_FLOW_TYPE_FRAG_IPV4},
> +		{"ipv4-tcp", ETH_FLOW_TYPE_NONFRAG_IPV4_TCP},
> +		{"ipv4-udp", ETH_FLOW_TYPE_NONFRAG_IPV4_UDP},
> +		{"ipv4-sctp", ETH_FLOW_TYPE_NONFRAG_IPV4_SCTP},
> +		{"ipv4-other", ETH_FLOW_TYPE_NONFRAG_IPV4_OTHER},
> +		{"ipv6", ETH_FLOW_TYPE_IPV6},
> +		{"ipv6-frag", ETH_FLOW_TYPE_FRAG_IPV6},
> +		{"ipv6-tcp", ETH_FLOW_TYPE_NONFRAG_IPV6_TCP},
> +		{"ipv6-udp", ETH_FLOW_TYPE_NONFRAG_IPV6_UDP},
> +		{"ipv6-sctp", ETH_FLOW_TYPE_NONFRAG_IPV6_SCTP},
> +		{"ipv6-other", ETH_FLOW_TYPE_NONFRAG_IPV6_OTHER},
> +		{"l2_payload", ETH_FLOW_TYPE_L2_PAYLOAD},
> +	};
> +
> +	for (i = 0; i < RTE_DIM(flowtype_str_table); i++) {
> +		if (flowtype_str_table[i].ftype == flow_type)
> +			return flowtype_str_table[i].str;
> +	}
> +
> +	return NULL;
> +}
> +
>  static inline void
>  print_fdir_flex_mask(struct rte_eth_fdir_flex_conf *flex_conf)  {
>  	struct rte_eth_fdir_flex_mask *mask;
>  	int i, j;
> +	char *p;
> 
>  	for (i = 0; i < flex_conf->nb_flexmasks; i++) {
>  		mask = &flex_conf->flex_mask[i];
> -		printf("\n    %s:\t", flowtype_str[mask->flow_type]);
> +		p = flowtype_to_str(mask->flow_type);
> +		printf("\n    %s:\t", p ? p : "unknown");
>  		for (j = 0; j < RTE_ETH_FDIR_MAX_FLEXLEN; j++)
>  			printf(" %02x", mask->mask[j]);
>  	}
> @@ -1861,13 +1884,17 @@ print_fdir_flex_mask(struct
> rte_eth_fdir_flex_conf *flex_conf)  static inline void
> print_fdir_flow_type(uint32_t flow_types_mask)  {
> -	int i = 0;
> +	int i;
> +	char *p;
> 
> -	for (i = RTE_ETH_FLOW_TYPE_UDPV4;
> -	     i <= RTE_ETH_FLOW_TYPE_FRAG_IPV6;
> -	     i++) {
> -		if (flow_types_mask & (1 << i))
> -			printf(" %s", flowtype_str[i]);
> +	for (i = ETH_FLOW_TYPE_UNKNOWN; i < ETH_FLOW_TYPE_MAX; i++) {
> +		if (!(flow_types_mask & (1 << i)))
> +			continue;
> +		p = flowtype_to_str(i);
> +		if (p)
> +			printf(" %s", p);
> +		else
> +			printf(" unknown");
>  	}
>  	printf("\n");
>  }
> @@ -2028,13 +2055,13 @@ fdir_set_flex_mask(portid_t port_id, struct
> rte_eth_fdir_flex_mask *cfg)
> 
>  	port = &ports[port_id];
>  	flex_conf = &port->dev_conf.fdir_conf.flex_conf;
> -	for (i = 0; i < RTE_ETH_FLOW_TYPE_MAX; i++) {
> +	for (i = 0; i < ETH_FLOW_TYPE_MAX; i++) {
>  		if (cfg->flow_type == flex_conf->flex_mask[i].flow_type) {
>  			idx = i;
>  			break;
>  		}
>  	}
> -	if (i >= RTE_ETH_FLOW_TYPE_MAX) {
> +	if (i >= ETH_FLOW_TYPE_MAX) {
>  		if (flex_conf->nb_flexmasks < RTE_DIM(flex_conf->flex_mask)) {
>  			idx = flex_conf->nb_flexmasks;
>  			flex_conf->nb_flexmasks++;
> diff --git a/lib/librte_ether/rte_eth_ctrl.h b/lib/librte_ether/rte_eth_ctrl.h index
> 1c15ed0..f2b39fc 100644
> --- a/lib/librte_ether/rte_eth_ctrl.h
> +++ b/lib/librte_ether/rte_eth_ctrl.h
> @@ -46,6 +46,35 @@
>  extern "C" {
>  #endif
> 
> +/*
> + * A packet can be identified by hardware as different flow types.
> +Different
> + * NIC hardwares may support different flow types.
> + * Basically, the NIC hardware identifies the flow type as deep
> +protocol as
> + * possible, and exclusively. For example, if a packet is identified as
> + * 'ETH_FLOW_TYPE_NONFRAG_IPV4_TCP', it will not be any of other flow
> +types,
> + * though it is an actual IPV4 packet.
> + * Note that the flow types are used to define RSS offload types in
> + * rte_ethdev.h.
> + */
> +#define ETH_FLOW_TYPE_UNKNOWN            0
> +#define ETH_FLOW_TYPE_IPV4               1
> +#define ETH_FLOW_TYPE_FRAG_IPV4          2
> +#define ETH_FLOW_TYPE_NONFRAG_IPV4_TCP   3
> +#define ETH_FLOW_TYPE_NONFRAG_IPV4_UDP   4
> +#define ETH_FLOW_TYPE_NONFRAG_IPV4_SCTP  5 #define
> +ETH_FLOW_TYPE_NONFRAG_IPV4_OTHER 6
> +#define ETH_FLOW_TYPE_IPV6               7
> +#define ETH_FLOW_TYPE_FRAG_IPV6          8
> +#define ETH_FLOW_TYPE_NONFRAG_IPV6_TCP   9
> +#define ETH_FLOW_TYPE_NONFRAG_IPV6_UDP   10
> +#define ETH_FLOW_TYPE_NONFRAG_IPV6_SCTP  11 #define
> +ETH_FLOW_TYPE_NONFRAG_IPV6_OTHER 12
> +#define ETH_FLOW_TYPE_L2_PAYLOAD         13
> +#define ETH_FLOW_TYPE_IPV6_EX            14
> +#define ETH_FLOW_TYPE_IPV6_TCP_EX        15
> +#define ETH_FLOW_TYPE_IPV6_UDP_EX        16
> +#define ETH_FLOW_TYPE_MAX                17
> +
>  /**
>   * Feature filter types
>   */
> @@ -179,24 +208,6 @@ struct rte_eth_tunnel_filter_conf {
>  #define RTE_ETH_FDIR_MAX_FLEXLEN         16 /** < Max length of
> flexbytes. */
> 
>  /**
> - * Flow type
> - */
> -enum rte_eth_flow_type {
> -	RTE_ETH_FLOW_TYPE_NONE = 0,
> -	RTE_ETH_FLOW_TYPE_UDPV4,
> -	RTE_ETH_FLOW_TYPE_TCPV4,
> -	RTE_ETH_FLOW_TYPE_SCTPV4,
> -	RTE_ETH_FLOW_TYPE_IPV4_OTHER,
> -	RTE_ETH_FLOW_TYPE_FRAG_IPV4,
> -	RTE_ETH_FLOW_TYPE_UDPV6,
> -	RTE_ETH_FLOW_TYPE_TCPV6,
> -	RTE_ETH_FLOW_TYPE_SCTPV6,
> -	RTE_ETH_FLOW_TYPE_IPV6_OTHER,
> -	RTE_ETH_FLOW_TYPE_FRAG_IPV6,
> -	RTE_ETH_FLOW_TYPE_MAX = 64,
> -};
> -
> -/**
>   * A structure used to define the input for IPV4 flow
>   */
>  struct rte_eth_ipv4_flow {
> @@ -291,7 +302,7 @@ struct rte_eth_fdir_flow_ext {
>   * A structure used to define the input for a flow director filter entry
>   */
>  struct rte_eth_fdir_input {
> -	enum rte_eth_flow_type flow_type;      /**< Type of flow */
> +	uint16_t flow_type;      /**< Type of flow */
>  	union rte_eth_fdir_flow flow;
>  	/**< Flow fields to match, dependent on flow_type */
>  	struct rte_eth_fdir_flow_ext flow_ext; @@ -371,7 +382,7 @@ struct
> rte_eth_flex_payload_cfg {
>   * for each flow type
>   */
>  struct rte_eth_fdir_flex_mask {
> -	enum rte_eth_flow_type flow_type;  /**< Flow type */
> +	uint16_t flow_type;  /**< Flow type */
>  	uint8_t mask[RTE_ETH_FDIR_MAX_FLEXLEN];
>  	/**< Mask for the whole flexible payload */  }; @@ -385,7 +396,7 @@
> struct rte_eth_fdir_flex_conf {
>  	uint16_t nb_flexmasks; /**< The number of following mask */
>  	struct rte_eth_flex_payload_cfg flex_set[RTE_ETH_PAYLOAD_MAX];
>  	/**< Flex payload configuration for each payload type */
> -	struct rte_eth_fdir_flex_mask flex_mask[RTE_ETH_FLOW_TYPE_MAX];
> +	struct rte_eth_fdir_flex_mask flex_mask[ETH_FLOW_TYPE_MAX];
>  	/**< Flex mask configuration for each flow type */  };
> 
> @@ -400,7 +411,7 @@ enum rte_fdir_mode {
> 
>  #define UINT32_BIT (CHAR_BIT * sizeof(uint32_t))  #define
> RTE_FLOW_TYPE_MASK_ARRAY_SIZE \
> -	(RTE_ALIGN(RTE_ETH_FLOW_TYPE_MAX, UINT32_BIT)/UINT32_BIT)
> +	(RTE_ALIGN(ETH_FLOW_TYPE_MAX, UINT32_BIT)/UINT32_BIT)
> 
>  /**
>   * A structure used to get the information of flow director filter.
> diff --git a/lib/librte_pmd_i40e/i40e_ethdev.c
> b/lib/librte_pmd_i40e/i40e_ethdev.c
> index b47a3d2..de1eff4 100644
> --- a/lib/librte_pmd_i40e/i40e_ethdev.c
> +++ b/lib/librte_pmd_i40e/i40e_ethdev.c
> @@ -5261,46 +5261,56 @@ i40e_dev_filter_ctrl(struct rte_eth_dev *dev,  }
> 
>  enum i40e_filter_pctype
> -i40e_flowtype_to_pctype(enum rte_eth_flow_type flow_type)
> +i40e_flowtype_to_pctype(uint16_t flow_type)
>  {
>  	static const enum i40e_filter_pctype pctype_table[] = {
> -		[RTE_ETH_FLOW_TYPE_UDPV4] =
> I40E_FILTER_PCTYPE_NONF_IPV4_UDP,
> -		[RTE_ETH_FLOW_TYPE_TCPV4] =
> I40E_FILTER_PCTYPE_NONF_IPV4_TCP,
> -		[RTE_ETH_FLOW_TYPE_SCTPV4] =
> I40E_FILTER_PCTYPE_NONF_IPV4_SCTP,
> -		[RTE_ETH_FLOW_TYPE_IPV4_OTHER] =
> -					I40E_FILTER_PCTYPE_NONF_IPV4_OTHER,
> -		[RTE_ETH_FLOW_TYPE_FRAG_IPV4] =
> -					I40E_FILTER_PCTYPE_FRAG_IPV4,
> -		[RTE_ETH_FLOW_TYPE_UDPV6] =
> I40E_FILTER_PCTYPE_NONF_IPV6_UDP,
> -		[RTE_ETH_FLOW_TYPE_TCPV6] =
> I40E_FILTER_PCTYPE_NONF_IPV6_TCP,
> -		[RTE_ETH_FLOW_TYPE_SCTPV6] =
> I40E_FILTER_PCTYPE_NONF_IPV6_SCTP,
> -		[RTE_ETH_FLOW_TYPE_IPV6_OTHER] =
> -					I40E_FILTER_PCTYPE_NONF_IPV6_OTHER,
> -		[RTE_ETH_FLOW_TYPE_FRAG_IPV6] =
> -					I40E_FILTER_PCTYPE_FRAG_IPV6,
> +		[ETH_FLOW_TYPE_FRAG_IPV4] = I40E_FILTER_PCTYPE_FRAG_IPV4,
> +		[ETH_FLOW_TYPE_NONFRAG_IPV4_UDP] =
> +			I40E_FILTER_PCTYPE_NONF_IPV4_UDP,
> +		[ETH_FLOW_TYPE_NONFRAG_IPV4_TCP] =
> +			I40E_FILTER_PCTYPE_NONF_IPV4_TCP,
> +		[ETH_FLOW_TYPE_NONFRAG_IPV4_SCTP] =
> +			I40E_FILTER_PCTYPE_NONF_IPV4_SCTP,
> +		[ETH_FLOW_TYPE_NONFRAG_IPV4_OTHER] =
> +			I40E_FILTER_PCTYPE_NONF_IPV4_OTHER,
> +		[ETH_FLOW_TYPE_FRAG_IPV6] = I40E_FILTER_PCTYPE_FRAG_IPV6,
> +		[ETH_FLOW_TYPE_NONFRAG_IPV6_UDP] =
> +			I40E_FILTER_PCTYPE_NONF_IPV6_UDP,
> +		[ETH_FLOW_TYPE_NONFRAG_IPV6_TCP] =
> +			I40E_FILTER_PCTYPE_NONF_IPV6_TCP,
> +		[ETH_FLOW_TYPE_NONFRAG_IPV6_SCTP] =
> +			I40E_FILTER_PCTYPE_NONF_IPV6_SCTP,
> +		[ETH_FLOW_TYPE_NONFRAG_IPV6_OTHER] =
> +			I40E_FILTER_PCTYPE_NONF_IPV6_OTHER,
> +		[ETH_FLOW_TYPE_L2_PAYLOAD] =
> I40E_FILTER_PCTYPE_L2_PAYLOAD,
>  	};
> 
>  	return pctype_table[flow_type];
>  }
> 
> -enum rte_eth_flow_type
> +uint16_t
>  i40e_pctype_to_flowtype(enum i40e_filter_pctype pctype)  {
> -	static const enum rte_eth_flow_type flowtype_table[] = {
> -		[I40E_FILTER_PCTYPE_NONF_IPV4_UDP] =
> RTE_ETH_FLOW_TYPE_UDPV4,
> -		[I40E_FILTER_PCTYPE_NONF_IPV4_TCP] =
> RTE_ETH_FLOW_TYPE_TCPV4,
> -		[I40E_FILTER_PCTYPE_NONF_IPV4_SCTP] =
> RTE_ETH_FLOW_TYPE_SCTPV4,
> +	static const uint16_t flowtype_table[] = {
> +		[I40E_FILTER_PCTYPE_FRAG_IPV4] = ETH_FLOW_TYPE_FRAG_IPV4,
> +		[I40E_FILTER_PCTYPE_NONF_IPV4_UDP] =
> +			ETH_FLOW_TYPE_NONFRAG_IPV4_UDP,
> +		[I40E_FILTER_PCTYPE_NONF_IPV4_TCP] =
> +			ETH_FLOW_TYPE_NONFRAG_IPV4_TCP,
> +		[I40E_FILTER_PCTYPE_NONF_IPV4_SCTP] =
> +			ETH_FLOW_TYPE_NONFRAG_IPV4_SCTP,
>  		[I40E_FILTER_PCTYPE_NONF_IPV4_OTHER] =
> -					RTE_ETH_FLOW_TYPE_IPV4_OTHER,
> -		[I40E_FILTER_PCTYPE_FRAG_IPV4] =
> -					RTE_ETH_FLOW_TYPE_FRAG_IPV4,
> -		[I40E_FILTER_PCTYPE_NONF_IPV6_UDP] =
> RTE_ETH_FLOW_TYPE_UDPV6,
> -		[I40E_FILTER_PCTYPE_NONF_IPV6_TCP] =
> RTE_ETH_FLOW_TYPE_TCPV6,
> -		[I40E_FILTER_PCTYPE_NONF_IPV6_SCTP] =
> RTE_ETH_FLOW_TYPE_SCTPV6,
> +			ETH_FLOW_TYPE_NONFRAG_IPV4_OTHER,
> +		[I40E_FILTER_PCTYPE_FRAG_IPV6] = ETH_FLOW_TYPE_FRAG_IPV6,
> +		[I40E_FILTER_PCTYPE_NONF_IPV6_UDP] =
> +			ETH_FLOW_TYPE_NONFRAG_IPV6_UDP,
> +		[I40E_FILTER_PCTYPE_NONF_IPV6_TCP] =
> +			ETH_FLOW_TYPE_NONFRAG_IPV6_TCP,
> +		[I40E_FILTER_PCTYPE_NONF_IPV6_SCTP] =
> +			ETH_FLOW_TYPE_NONFRAG_IPV6_SCTP,
>  		[I40E_FILTER_PCTYPE_NONF_IPV6_OTHER] =
> -					RTE_ETH_FLOW_TYPE_IPV6_OTHER,
> -		[I40E_FILTER_PCTYPE_FRAG_IPV6] =
> -					RTE_ETH_FLOW_TYPE_FRAG_IPV6,
> +			ETH_FLOW_TYPE_NONFRAG_IPV6_OTHER,
> +		[I40E_FILTER_PCTYPE_L2_PAYLOAD] =
> ETH_FLOW_TYPE_L2_PAYLOAD,
>  	};
> 
>  	return flowtype_table[pctype];
> diff --git a/lib/librte_pmd_i40e/i40e_ethdev.h
> b/lib/librte_pmd_i40e/i40e_ethdev.h
> index f913ea9..e2a8db3 100644
> --- a/lib/librte_pmd_i40e/i40e_ethdev.h
> +++ b/lib/librte_pmd_i40e/i40e_ethdev.h
> @@ -471,10 +471,8 @@ const struct rte_memzone
> *i40e_memzone_reserve(const char *name,
>  					int socket_id);
>  int i40e_fdir_configure(struct rte_eth_dev *dev);  void
> i40e_fdir_teardown(struct i40e_pf *pf); -enum i40e_filter_pctype
> i40e_flowtype_to_pctype(
> -				enum rte_eth_flow_type flow_type);
> -enum rte_eth_flow_type i40e_pctype_to_flowtype(
> -				enum i40e_filter_pctype pctype);
> +enum i40e_filter_pctype i40e_flowtype_to_pctype(uint16_t flow_type);
> +uint16_t i40e_pctype_to_flowtype(enum i40e_filter_pctype pctype);
>  int i40e_fdir_ctrl_func(struct rte_eth_dev *dev,
>  			  enum rte_filter_op filter_op,
>  			  void *arg);
> @@ -541,27 +539,29 @@ i40e_init_adminq_parameter(struct i40e_hw
> *hw)  }
> 
>  #define I40E_VALID_FLOW_TYPE(flow_type) \
> -	((flow_type) == RTE_ETH_FLOW_TYPE_UDPV4 || \
> -	(flow_type) == RTE_ETH_FLOW_TYPE_TCPV4 || \
> -	(flow_type) == RTE_ETH_FLOW_TYPE_SCTPV4 || \
> -	(flow_type) == RTE_ETH_FLOW_TYPE_IPV4_OTHER || \
> -	(flow_type) == RTE_ETH_FLOW_TYPE_FRAG_IPV4 || \
> -	(flow_type) == RTE_ETH_FLOW_TYPE_UDPV6 || \
> -	(flow_type) == RTE_ETH_FLOW_TYPE_TCPV6 || \
> -	(flow_type) == RTE_ETH_FLOW_TYPE_SCTPV6 || \
> -	(flow_type) == RTE_ETH_FLOW_TYPE_IPV6_OTHER || \
> -	(flow_type) == RTE_ETH_FLOW_TYPE_FRAG_IPV6)
> +	((flow_type) == ETH_FLOW_TYPE_FRAG_IPV4 || \
> +	(flow_type) == ETH_FLOW_TYPE_NONFRAG_IPV4_TCP || \
> +	(flow_type) == ETH_FLOW_TYPE_NONFRAG_IPV4_UDP || \
> +	(flow_type) == ETH_FLOW_TYPE_NONFRAG_IPV4_SCTP || \
> +	(flow_type) == ETH_FLOW_TYPE_NONFRAG_IPV4_OTHER || \
> +	(flow_type) == ETH_FLOW_TYPE_FRAG_IPV6 || \
> +	(flow_type) == ETH_FLOW_TYPE_NONFRAG_IPV6_TCP || \
> +	(flow_type) == ETH_FLOW_TYPE_NONFRAG_IPV6_UDP || \
> +	(flow_type) == ETH_FLOW_TYPE_NONFRAG_IPV6_SCTP || \
> +	(flow_type) == ETH_FLOW_TYPE_NONFRAG_IPV6_OTHER || \
> +	(flow_type) == ETH_FLOW_TYPE_L2_PAYLOAD)
> 
>  #define I40E_VALID_PCTYPE(pctype) \
> -	((pctype) == I40E_FILTER_PCTYPE_NONF_IPV4_UDP || \
> +	((pctype) == I40E_FILTER_PCTYPE_FRAG_IPV4 || \
>  	(pctype) == I40E_FILTER_PCTYPE_NONF_IPV4_TCP || \
> +	(pctype) == I40E_FILTER_PCTYPE_NONF_IPV4_UDP || \
>  	(pctype) == I40E_FILTER_PCTYPE_NONF_IPV4_SCTP || \
>  	(pctype) == I40E_FILTER_PCTYPE_NONF_IPV4_OTHER || \
> -	(pctype) == I40E_FILTER_PCTYPE_FRAG_IPV4 || \
> +	(pctype) == I40E_FILTER_PCTYPE_FRAG_IPV6 || \
>  	(pctype) == I40E_FILTER_PCTYPE_NONF_IPV6_UDP || \
>  	(pctype) == I40E_FILTER_PCTYPE_NONF_IPV6_TCP || \
>  	(pctype) == I40E_FILTER_PCTYPE_NONF_IPV6_SCTP || \
>  	(pctype) == I40E_FILTER_PCTYPE_NONF_IPV6_OTHER || \
> -	(pctype) == I40E_FILTER_PCTYPE_FRAG_IPV6)
> +	(pctype) == I40E_FILTER_PCTYPE_L2_PAYLOAD)
> 
>  #endif /* _I40E_ETHDEV_H_ */
> diff --git a/lib/librte_pmd_i40e/i40e_fdir.c b/lib/librte_pmd_i40e/i40e_fdir.c
> index c9e535b..9bdcabf 100644
> --- a/lib/librte_pmd_i40e/i40e_fdir.c
> +++ b/lib/librte_pmd_i40e/i40e_fdir.c
> @@ -95,16 +95,16 @@
>  			I40E_PRTQF_FLX_PIT_DEST_OFF_MASK))
> 
>  #define I40E_FDIR_FLOW_TYPES ( \
> -	(1 << RTE_ETH_FLOW_TYPE_UDPV4) | \
> -	(1 << RTE_ETH_FLOW_TYPE_TCPV4) | \
> -	(1 << RTE_ETH_FLOW_TYPE_SCTPV4) | \
> -	(1 << RTE_ETH_FLOW_TYPE_IPV4_OTHER) | \
> -	(1 << RTE_ETH_FLOW_TYPE_FRAG_IPV4) | \
> -	(1 << RTE_ETH_FLOW_TYPE_UDPV6) | \
> -	(1 << RTE_ETH_FLOW_TYPE_TCPV6) | \
> -	(1 << RTE_ETH_FLOW_TYPE_SCTPV6) | \
> -	(1 << RTE_ETH_FLOW_TYPE_IPV6_OTHER) | \
> -	(1 << RTE_ETH_FLOW_TYPE_FRAG_IPV6))
> +	(1 << ETH_FLOW_TYPE_FRAG_IPV4) | \
> +	(1 << ETH_FLOW_TYPE_NONFRAG_IPV4_UDP) | \
> +	(1 << ETH_FLOW_TYPE_NONFRAG_IPV4_TCP) | \
> +	(1 << ETH_FLOW_TYPE_NONFRAG_IPV4_SCTP) | \
> +	(1 << ETH_FLOW_TYPE_NONFRAG_IPV4_OTHER) | \
> +	(1 << ETH_FLOW_TYPE_FRAG_IPV6) | \
> +	(1 << ETH_FLOW_TYPE_NONFRAG_IPV6_UDP) | \
> +	(1 << ETH_FLOW_TYPE_NONFRAG_IPV6_TCP) | \
> +	(1 << ETH_FLOW_TYPE_NONFRAG_IPV6_SCTP) | \
> +	(1 << ETH_FLOW_TYPE_NONFRAG_IPV6_OTHER))
> 
>  #define I40E_FLEX_WORD_MASK(off) (0x80 >> (off))
> 
> @@ -498,7 +498,7 @@ i40e_check_fdir_flex_conf(const struct
> rte_eth_fdir_flex_conf *conf)
>  	}
> 
>  	/* check flex mask setting configuration */
> -	if (conf->nb_flexmasks > RTE_ETH_FLOW_TYPE_FRAG_IPV6) {
> +	if (conf->nb_flexmasks >= ETH_FLOW_TYPE_MAX) {
>  		PMD_DRV_LOG(ERR, "invalid number of flex masks.");
>  		return -EINVAL;
>  	}
> @@ -692,24 +692,24 @@ i40e_fdir_fill_eth_ip_head(const struct
> rte_eth_fdir_input *fdir_input,
>  	struct ipv4_hdr *ip;
>  	struct ipv6_hdr *ip6;
>  	static const uint8_t next_proto[] = {
> -		[RTE_ETH_FLOW_TYPE_UDPV4] = IPPROTO_UDP,
> -		[RTE_ETH_FLOW_TYPE_TCPV4] = IPPROTO_TCP,
> -		[RTE_ETH_FLOW_TYPE_SCTPV4] = IPPROTO_SCTP,
> -		[RTE_ETH_FLOW_TYPE_IPV4_OTHER] = IPPROTO_IP,
> -		[RTE_ETH_FLOW_TYPE_FRAG_IPV4] = IPPROTO_IP,
> -		[RTE_ETH_FLOW_TYPE_UDPV6] = IPPROTO_UDP,
> -		[RTE_ETH_FLOW_TYPE_TCPV6] = IPPROTO_TCP,
> -		[RTE_ETH_FLOW_TYPE_SCTPV6] = IPPROTO_SCTP,
> -		[RTE_ETH_FLOW_TYPE_IPV6_OTHER] = IPPROTO_NONE,
> -		[RTE_ETH_FLOW_TYPE_FRAG_IPV6] = IPPROTO_NONE,
> +		[ETH_FLOW_TYPE_FRAG_IPV4] = IPPROTO_IP,
> +		[ETH_FLOW_TYPE_NONFRAG_IPV4_TCP] = IPPROTO_TCP,
> +		[ETH_FLOW_TYPE_NONFRAG_IPV4_UDP] = IPPROTO_UDP,
> +		[ETH_FLOW_TYPE_NONFRAG_IPV4_SCTP] = IPPROTO_SCTP,
> +		[ETH_FLOW_TYPE_NONFRAG_IPV4_OTHER] = IPPROTO_IP,
> +		[ETH_FLOW_TYPE_FRAG_IPV6] = IPPROTO_NONE,
> +		[ETH_FLOW_TYPE_NONFRAG_IPV6_TCP] = IPPROTO_TCP,
> +		[ETH_FLOW_TYPE_NONFRAG_IPV6_UDP] = IPPROTO_UDP,
> +		[ETH_FLOW_TYPE_NONFRAG_IPV6_SCTP] = IPPROTO_SCTP,
> +		[ETH_FLOW_TYPE_NONFRAG_IPV6_OTHER] = IPPROTO_NONE,
>  	};
> 
>  	switch (fdir_input->flow_type) {
> -	case RTE_ETH_FLOW_TYPE_UDPV4:
> -	case RTE_ETH_FLOW_TYPE_TCPV4:
> -	case RTE_ETH_FLOW_TYPE_SCTPV4:
> -	case RTE_ETH_FLOW_TYPE_IPV4_OTHER:
> -	case RTE_ETH_FLOW_TYPE_FRAG_IPV4:
> +	case ETH_FLOW_TYPE_NONFRAG_IPV4_TCP:
> +	case ETH_FLOW_TYPE_NONFRAG_IPV4_UDP:
> +	case ETH_FLOW_TYPE_NONFRAG_IPV4_SCTP:
> +	case ETH_FLOW_TYPE_NONFRAG_IPV4_OTHER:
> +	case ETH_FLOW_TYPE_FRAG_IPV4:
>  		ip = (struct ipv4_hdr *)(raw_pkt + sizeof(struct ether_hdr));
> 
>  		ether->ether_type = rte_cpu_to_be_16(ETHER_TYPE_IPv4);
> @@ -726,11 +726,11 @@ i40e_fdir_fill_eth_ip_head(const struct
> rte_eth_fdir_input *fdir_input,
>  		ip->dst_addr = fdir_input->flow.ip4_flow.src_ip;
>  		ip->next_proto_id = next_proto[fdir_input->flow_type];
>  		break;
> -	case RTE_ETH_FLOW_TYPE_UDPV6:
> -	case RTE_ETH_FLOW_TYPE_TCPV6:
> -	case RTE_ETH_FLOW_TYPE_SCTPV6:
> -	case RTE_ETH_FLOW_TYPE_IPV6_OTHER:
> -	case RTE_ETH_FLOW_TYPE_FRAG_IPV6:
> +	case ETH_FLOW_TYPE_NONFRAG_IPV6_TCP:
> +	case ETH_FLOW_TYPE_NONFRAG_IPV6_UDP:
> +	case ETH_FLOW_TYPE_NONFRAG_IPV6_SCTP:
> +	case ETH_FLOW_TYPE_NONFRAG_IPV6_OTHER:
> +	case ETH_FLOW_TYPE_FRAG_IPV6:
>  		ip6 = (struct ipv6_hdr *)(raw_pkt + sizeof(struct ether_hdr));
> 
>  		ether->ether_type = rte_cpu_to_be_16(ETHER_TYPE_IPv6);
> @@ -784,7 +784,7 @@ i40e_fdir_construct_pkt(struct i40e_pf *pf,
> 
>  	/* fill the L4 head */
>  	switch (fdir_input->flow_type) {
> -	case RTE_ETH_FLOW_TYPE_UDPV4:
> +	case ETH_FLOW_TYPE_NONFRAG_IPV4_UDP:
>  		udp = (struct udp_hdr *)(raw_pkt + sizeof(struct ether_hdr) +
>  				sizeof(struct ipv4_hdr));
>  		payload = (unsigned char *)udp + sizeof(struct udp_hdr); @@ -798,7
> +798,7 @@ i40e_fdir_construct_pkt(struct i40e_pf *pf,
>  		udp->dgram_len =
> rte_cpu_to_be_16(I40E_FDIR_UDP_DEFAULT_LEN);
>  		break;
> 
> -	case RTE_ETH_FLOW_TYPE_TCPV4:
> +	case ETH_FLOW_TYPE_NONFRAG_IPV4_TCP:
>  		tcp = (struct tcp_hdr *)(raw_pkt + sizeof(struct ether_hdr) +
>  					 sizeof(struct ipv4_hdr));
>  		payload = (unsigned char *)tcp + sizeof(struct tcp_hdr); @@ -812,21
> +812,21 @@ i40e_fdir_construct_pkt(struct i40e_pf *pf,
>  		tcp->data_off = I40E_FDIR_TCP_DEFAULT_DATAOFF;
>  		break;
> 
> -	case RTE_ETH_FLOW_TYPE_SCTPV4:
> +	case ETH_FLOW_TYPE_NONFRAG_IPV4_SCTP:
>  		sctp = (struct sctp_hdr *)(raw_pkt + sizeof(struct ether_hdr) +
>  					   sizeof(struct ipv4_hdr));
>  		payload = (unsigned char *)sctp + sizeof(struct sctp_hdr);
>  		sctp->tag = fdir_input->flow.sctp4_flow.verify_tag;
>  		break;
> 
> -	case RTE_ETH_FLOW_TYPE_IPV4_OTHER:
> -	case RTE_ETH_FLOW_TYPE_FRAG_IPV4:
> +	case ETH_FLOW_TYPE_NONFRAG_IPV4_OTHER:
> +	case ETH_FLOW_TYPE_FRAG_IPV4:
>  		payload = raw_pkt + sizeof(struct ether_hdr) +
>  			  sizeof(struct ipv4_hdr);
>  		set_idx = I40E_FLXPLD_L3_IDX;
>  		break;
> 
> -	case RTE_ETH_FLOW_TYPE_UDPV6:
> +	case ETH_FLOW_TYPE_NONFRAG_IPV6_UDP:
>  		udp = (struct udp_hdr *)(raw_pkt + sizeof(struct ether_hdr) +
>  					 sizeof(struct ipv6_hdr));
>  		payload = (unsigned char *)udp + sizeof(struct udp_hdr); @@ -840,7
> +840,7 @@ i40e_fdir_construct_pkt(struct i40e_pf *pf,
>  		udp->dgram_len =
> rte_cpu_to_be_16(I40E_FDIR_IPv6_PAYLOAD_LEN);
>  		break;
> 
> -	case RTE_ETH_FLOW_TYPE_TCPV6:
> +	case ETH_FLOW_TYPE_NONFRAG_IPV6_TCP:
>  		tcp = (struct tcp_hdr *)(raw_pkt + sizeof(struct ether_hdr) +
>  					 sizeof(struct ipv6_hdr));
>  		payload = (unsigned char *)tcp + sizeof(struct tcp_hdr); @@ -854,15
> +854,15 @@ i40e_fdir_construct_pkt(struct i40e_pf *pf,
>  		tcp->dst_port = fdir_input->flow.udp6_flow.src_port;
>  		break;
> 
> -	case RTE_ETH_FLOW_TYPE_SCTPV6:
> +	case ETH_FLOW_TYPE_NONFRAG_IPV6_SCTP:
>  		sctp = (struct sctp_hdr *)(raw_pkt + sizeof(struct ether_hdr) +
>  					   sizeof(struct ipv6_hdr));
>  		payload = (unsigned char *)sctp + sizeof(struct sctp_hdr);
>  		sctp->tag = fdir_input->flow.sctp6_flow.verify_tag;
>  		break;
> 
> -	case RTE_ETH_FLOW_TYPE_IPV6_OTHER:
> -	case RTE_ETH_FLOW_TYPE_FRAG_IPV6:
> +	case ETH_FLOW_TYPE_NONFRAG_IPV6_OTHER:
> +	case ETH_FLOW_TYPE_FRAG_IPV6:
>  		payload = raw_pkt + sizeof(struct ether_hdr) +
>  			  sizeof(struct ipv6_hdr);
>  		set_idx = I40E_FLXPLD_L3_IDX;
> @@ -1214,7 +1214,7 @@ i40e_fdir_info_get_flex_mask(struct i40e_pf *pf,  {
>  	struct i40e_fdir_flex_mask *mask;
>  	struct rte_eth_fdir_flex_mask *ptr = flex_mask;
> -	enum rte_eth_flow_type flow_type;
> +	uint16_t flow_type;
>  	uint8_t i, j;
>  	uint16_t off_bytes, mask_tmp;
> 
> --
> 1.9.3

  parent reply	other threads:[~2015-01-27  5:20 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-01-19  6:56 [dpdk-dev] [PATCH 0/7] unification of flow types and RSS offload types Helin Zhang
2015-01-19  6:56 ` [dpdk-dev] [PATCH 1/7] app/test-pmd: code style fix Helin Zhang
2015-01-19  6:56 ` [dpdk-dev] [PATCH 2/7] ethdev: " Helin Zhang
2015-01-19  6:56 ` [dpdk-dev] [PATCH 3/7] i40e: " Helin Zhang
2015-01-19  6:56 ` [dpdk-dev] [PATCH 4/7] ethdev: fix of calculating the size of flow type mask array Helin Zhang
     [not found]   ` <2108624.Ik2ARBIxyb@xps13>
2015-02-03  5:24     ` Zhang, Helin
2015-01-19  6:56 ` [dpdk-dev] [PATCH 5/7] ethdev: unification of flow types Helin Zhang
     [not found]   ` <98DB008FA2AC6644B40AD8C766FAB271014BDED15D@BOREAL.arubanetworks.com>
2015-01-27  5:20     ` Zhang, Helin [this message]
     [not found]   ` <5329819.johOmNX3Da@xps13>
2015-02-03  5:40     ` Zhang, Helin
2015-01-19  6:56 ` [dpdk-dev] [PATCH 6/7] ethdev: unification of RSS offload types Helin Zhang
2015-01-19  6:56 ` [dpdk-dev] [PATCH 7/7] app/testpmd: support new rss offloads Helin Zhang
2015-01-22  7:48 ` [dpdk-dev] [PATCH 0/7] unification of flow types and RSS offload types Wu, Jingjing
2015-02-04  7:16 ` [dpdk-dev] [PATCH v2 0/7] unified " Helin Zhang
2015-02-04  7:16   ` [dpdk-dev] [PATCH v2 1/7] app/test-pmd: code style fix Helin Zhang
2015-02-04  7:16   ` [dpdk-dev] [PATCH v2 2/7] ethdev: " Helin Zhang
2015-02-04  7:16   ` [dpdk-dev] [PATCH v2 3/7] i40e: " Helin Zhang
2015-02-04  7:16   ` [dpdk-dev] [PATCH v2 4/7] ethdev: fix of calculating the size of flow type mask array Helin Zhang
2015-02-04  7:16   ` [dpdk-dev] [PATCH v2 5/7] ethdev: unification of flow types Helin Zhang
2015-02-04  7:16   ` [dpdk-dev] [PATCH v2 6/7] ethdev: unification of RSS offload types Helin Zhang
2015-02-04  7:16   ` [dpdk-dev] [PATCH v2 7/7] app/testpmd: support new rss offloads Helin Zhang
2015-02-15  5:03   ` [dpdk-dev] [PATCH v2 0/7] unified flow types and RSS offload types Wu, Jingjing
2015-02-22 22:58     ` Thomas Monjalon
2015-02-24 13:45       ` Zhang, Helin
2015-02-24 15:01         ` Wu, Jingjing

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=F35DEAC7BCE34641BA9FAC6BCA4A12E70A7EDCE6@SHSMSX104.ccr.corp.intel.com \
    --to=helin.zhang@intel.com \
    --cc=dev@dpdk.org \
    --cc=vmohare@arubanetworks.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).