DPDK patches and discussions
 help / color / mirror / Atom feed
From: Ori Kam <orika@nvidia.com>
To: Dekel Peled <dekelp@nvidia.com>,
	NBU-Contact-Thomas Monjalon <thomas@monjalon.net>,
	"ferruh.yigit@intel.com" <ferruh.yigit@intel.com>,
	"arybchenko@solarflare.com" <arybchenko@solarflare.com>,
	"konstantin.ananyev@intel.com" <konstantin.ananyev@intel.com>,
	"olivier.matz@6wind.com" <olivier.matz@6wind.com>,
	"wenzhuo.lu@intel.com" <wenzhuo.lu@intel.com>,
	"beilei.xing@intel.com" <beilei.xing@intel.com>,
	"bernard.iremonger@intel.com" <bernard.iremonger@intel.com>,
	Matan Azrad <matan@nvidia.com>,
	Shahaf Shuler <shahafs@nvidia.com>,
	Slava Ovsiienko <viacheslavo@nvidia.com>
Cc: "dev@dpdk.org" <dev@dpdk.org>
Subject: Re: [dpdk-dev] [PATCH 02/10] ethdev: add IPv6 fragment extension header item
Date: Wed, 30 Sep 2020 14:55:37 +0000	[thread overview]
Message-ID: <MN2PR12MB428603EB3C9F66894FFDD97BD6330@MN2PR12MB4286.namprd12.prod.outlook.com> (raw)
In-Reply-To: <3b2c7f074e245db507f9b21d28dbe68b87051515.1601474841.git.dekelp@nvidia.com>



> -----Original Message-----
> From: Dekel Peled <dekelp@nvidia.com>
> Sent: Wednesday, September 30, 2020 5:10 PM
> Subject: [PATCH 02/10] ethdev: add IPv6 fragment extension header item
> 
> Applications handling fragmented IPv6 packets need to match on IPv6
> fragment extension header, in order to identify the fragments order
> and location in the packet.
> This patch introduces the IPv6 fragment extension header item,
> proposed in [1].
> 
> Relevant definitions are moved from lib/librte_ip_frag/rte_ip_frag.h
> to lib/librte_net/rte_ip.h, as they are needed for IPv6 header handling.
> struct ipv6_extension_fragment renamed to rte_ipv6_fragment_ext to
> adapt it to the common naming convention.
> 
> Default mask is not defined, since all fields are optional.
> 
> [1]
> https://nam11.safelinks.protection.outlook.com/?url=http%3A%2F%2Fmails.dpd
> k.org%2Farchives%2Fdev%2F2020-
> March%2F160255.html&amp;data=02%7C01%7Corika%40nvidia.com%7C52959
> fd24ed2489868e308d8654abe56%7C43083d15727340c1b7db39efd9ccc17a%7C
> 0%7C0%7C637370718986486792&amp;sdata=EPQFJHS9JJvzNj%2Ff9ODWt6yd3
> F1HhQiKcPX6UD1eWGA%3D&amp;reserved=0
> 
> Signed-off-by: Dekel Peled <dekelp@nvidia.com>
> ---
>  doc/guides/prog_guide/rte_flow.rst | 16 ++++++++++++++--
>  lib/librte_ethdev/rte_flow.c       |  1 +
>  lib/librte_ethdev/rte_flow.h       | 21 +++++++++++++++++++++
>  lib/librte_ip_frag/rte_ip_frag.h   | 26 ++------------------------
>  lib/librte_net/rte_ip.h            | 26 ++++++++++++++++++++++++--
>  5 files changed, 62 insertions(+), 28 deletions(-)
> 
> diff --git a/doc/guides/prog_guide/rte_flow.rst
> b/doc/guides/prog_guide/rte_flow.rst
> index 0b476da..826e45d 100644
> --- a/doc/guides/prog_guide/rte_flow.rst
> +++ b/doc/guides/prog_guide/rte_flow.rst
> @@ -947,8 +947,8 @@ Item: ``IPV6``
>  Matches an IPv6 header.
> 
>  Dedicated flags indicate existence of specific extension headers.
> -Every type of extension header can use a dedicated pattern item, or
> -the generic `Item: IPV6_EXT`_.
> +Every type of extension header can use a dedicated pattern item,
> +for example `Item: IPV6_FRAG_EXT`_, or the generic `Item: IPV6_EXT`_.
> 
>  - ``hdr``: IPv6 header definition (``rte_ip.h``).
>  - ``hop_ext_exist``: Hop-by-Hop Options extension header exists.
> @@ -1187,6 +1187,18 @@ Normally preceded by any of:
>  - `Item: IPV6`_
>  - `Item: IPV6_EXT`_
> 
> +Item: ``IPV6_FRAG_EXT``
> +^^^^^^^^^^^^^^^^^^^^^^^
> +
> +Matches the presence of IPv6 fragment extension header.
> +
> +- ``hdr``: IPv6 fragment extension header definition (``rte_ip.h``).
> +
> +Normally preceded by any of:
> +
> +- `Item: IPV6`_
> +- `Item: IPV6_EXT`_
> +
>  Item: ``ICMP6``
>  ^^^^^^^^^^^^^^^
> 
> diff --git a/lib/librte_ethdev/rte_flow.c b/lib/librte_ethdev/rte_flow.c
> index f8fdd68..c1f3132 100644
> --- a/lib/librte_ethdev/rte_flow.c
> +++ b/lib/librte_ethdev/rte_flow.c
> @@ -72,6 +72,7 @@ struct rte_flow_desc_data {
>  	MK_FLOW_ITEM(VXLAN_GPE, sizeof(struct rte_flow_item_vxlan_gpe)),
>  	MK_FLOW_ITEM(ARP_ETH_IPV4, sizeof(struct
> rte_flow_item_arp_eth_ipv4)),
>  	MK_FLOW_ITEM(IPV6_EXT, sizeof(struct rte_flow_item_ipv6_ext)),
> +	MK_FLOW_ITEM(IPV6_FRAG_EXT, sizeof(struct
> rte_flow_item_ipv6_frag_ext)),
>  	MK_FLOW_ITEM(ICMP6, sizeof(struct rte_flow_item_icmp6)),
>  	MK_FLOW_ITEM(ICMP6_ND_NS, sizeof(struct
> rte_flow_item_icmp6_nd_ns)),
>  	MK_FLOW_ITEM(ICMP6_ND_NA, sizeof(struct
> rte_flow_item_icmp6_nd_na)),
> diff --git a/lib/librte_ethdev/rte_flow.h b/lib/librte_ethdev/rte_flow.h
> index 5b5bed2..1443e6a 100644
> --- a/lib/librte_ethdev/rte_flow.h
> +++ b/lib/librte_ethdev/rte_flow.h
> @@ -368,6 +368,13 @@ enum rte_flow_item_type {
>  	RTE_FLOW_ITEM_TYPE_IPV6_EXT,
> 
>  	/**
> +	 * Matches the presence of IPv6 fragment extension header.
> +	 *
> +	 * See struct rte_flow_item_ipv6_frag_ext.
> +	 */
> +	RTE_FLOW_ITEM_TYPE_IPV6_FRAG_EXT,
> +
> +	/**
>  	 * Matches any ICMPv6 header.
>  	 *
>  	 * See struct rte_flow_item_icmp6.
> @@ -1188,6 +1195,20 @@ struct rte_flow_item_ipv6_ext
> rte_flow_item_ipv6_ext_mask = {
>  #endif
> 
>  /**
> + * RTE_FLOW_ITEM_TYPE_IPV6_FRAG_EXT
> + *
> + * Matches the presence of IPv6 fragment extension header.
> + *
> + * Preceded by any of:
> + *
> + * - RTE_FLOW_ITEM_TYPE_IPV6
> + * - RTE_FLOW_ITEM_TYPE_IPV6_EXT
> + */
> +struct rte_flow_item_ipv6_frag_ext {
> +	struct rte_ipv6_fragment_ext hdr;
> +};
> +
> +/**
>   * RTE_FLOW_ITEM_TYPE_ICMP6
>   *
>   * Matches any ICMPv6 header.
> diff --git a/lib/librte_ip_frag/rte_ip_frag.h b/lib/librte_ip_frag/rte_ip_frag.h
> index 66edd7e..0bfe64b 100644
> --- a/lib/librte_ip_frag/rte_ip_frag.h
> +++ b/lib/librte_ip_frag/rte_ip_frag.h
> @@ -110,30 +110,8 @@ struct rte_ip_frag_tbl {
>  	__extension__ struct ip_frag_pkt pkt[0]; /**< hash table. */
>  };
> 
> -/** IPv6 fragment extension header */
> -#define	RTE_IPV6_EHDR_MF_SHIFT			0
> -#define	RTE_IPV6_EHDR_MF_MASK			1
> -#define	RTE_IPV6_EHDR_FO_SHIFT			3
> -#define	RTE_IPV6_EHDR_FO_MASK			(~((1 <<
> RTE_IPV6_EHDR_FO_SHIFT) - 1))
> -#define	RTE_IPV6_EHDR_FO_ALIGN			(1 <<
> RTE_IPV6_EHDR_FO_SHIFT)
> -
> -#define RTE_IPV6_FRAG_USED_MASK			\
> -	(RTE_IPV6_EHDR_MF_MASK | RTE_IPV6_EHDR_FO_MASK)
> -
> -#define RTE_IPV6_GET_MF(x)				((x) &
> RTE_IPV6_EHDR_MF_MASK)
> -#define RTE_IPV6_GET_FO(x)				((x) >>
> RTE_IPV6_EHDR_FO_SHIFT)
> -
> -#define RTE_IPV6_SET_FRAG_DATA(fo, mf)	\
> -	(((fo) & RTE_IPV6_EHDR_FO_MASK) | ((mf) &
> RTE_IPV6_EHDR_MF_MASK))
> -
> -struct ipv6_extension_fragment {
> -	uint8_t next_header;            /**< Next header type */
> -	uint8_t reserved;               /**< Reserved */
> -	uint16_t frag_data;             /**< All fragmentation data */
> -	uint32_t id;                    /**< Packet ID */
> -} __rte_packed;
> -
> -
> +/* struct ipv6_extension_fragment moved to librte_net/rte_ip.h and renamed.
> */
> +#define ipv6_extension_fragment	rte_ipv6_fragment_ext
> 
>  /**
>   * Create a new IP fragmentation table.
> diff --git a/lib/librte_net/rte_ip.h b/lib/librte_net/rte_ip.h
> index fcd1eb3..3081c46 100644
> --- a/lib/librte_net/rte_ip.h
> +++ b/lib/librte_net/rte_ip.h
> @@ -456,8 +456,30 @@ struct rte_ipv6_hdr {
>  	return (uint16_t)cksum;
>  }
> 
> -/* IPv6 fragmentation header size */
> -#define RTE_IPV6_FRAG_HDR_SIZE 8
> +/** IPv6 fragment extension header. */
> +#define	RTE_IPV6_EHDR_MF_SHIFT	0
> +#define	RTE_IPV6_EHDR_MF_MASK	1
> +#define	RTE_IPV6_EHDR_FO_SHIFT	3
> +#define	RTE_IPV6_EHDR_FO_MASK	(~((1 <<
> RTE_IPV6_EHDR_FO_SHIFT) - 1))
> +#define	RTE_IPV6_EHDR_FO_ALIGN	(1 <<
> RTE_IPV6_EHDR_FO_SHIFT)
> +
> +#define RTE_IPV6_FRAG_USED_MASK	(RTE_IPV6_EHDR_MF_MASK |
> RTE_IPV6_EHDR_FO_MASK)
> +
> +#define RTE_IPV6_GET_MF(x)	((x) & RTE_IPV6_EHDR_MF_MASK)
> +#define RTE_IPV6_GET_FO(x)	((x) >> RTE_IPV6_EHDR_FO_SHIFT)
> +
> +#define RTE_IPV6_SET_FRAG_DATA(fo, mf)	\
> +	(((fo) & RTE_IPV6_EHDR_FO_MASK) | ((mf) &
> RTE_IPV6_EHDR_MF_MASK))
> +
> +struct rte_ipv6_fragment_ext {
> +	uint8_t next_header;	/**< Next header type */
> +	uint8_t reserved;	/**< Reserved */
> +	rte_be16_t frag_data;	/**< All fragmentation data */
> +	rte_be32_t id;		/**< Packet ID */
> +} __rte_packed;
> +
> +/* IPv6 fragment extension header size */
> +#define RTE_IPV6_FRAG_HDR_SIZE	sizeof(struct rte_ipv6_fragment_ext)
> 
>  /**
>   * Parse next IPv6 header extension
> --
> 1.8.3.1

Acked-by: Ori Kam <orika@nvidia.com>
Thanks,
Ori

  reply	other threads:[~2020-09-30 14:55 UTC|newest]

Thread overview: 101+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-09-30 14:10 [dpdk-dev] [PATCH 00/10] support match on L3 fragmented packets Dekel Peled
2020-09-30 14:10 ` [dpdk-dev] [PATCH 01/10] ethdev: add extensions attributes to IPv6 item Dekel Peled
2020-09-30 14:54   ` Ori Kam
2020-09-30 14:10 ` [dpdk-dev] [PATCH 02/10] ethdev: add IPv6 fragment extension header item Dekel Peled
2020-09-30 14:55   ` Ori Kam [this message]
2020-09-30 14:10 ` [dpdk-dev] [PATCH 03/10] app/testpmd: support IPv4 fragments Dekel Peled
2020-09-30 14:54   ` Ori Kam
2020-09-30 14:10 ` [dpdk-dev] [PATCH 04/10] app/testpmd: support IPv6 fragments Dekel Peled
2020-09-30 14:10 ` [dpdk-dev] [PATCH 05/10] app/testpmd: support IPv6 fragment extension item Dekel Peled
2020-09-30 14:56   ` Ori Kam
2020-09-30 14:10 ` [dpdk-dev] [PATCH 06/10] net/mlx5: remove handling of ICMP fragmented packets Dekel Peled
2020-09-30 14:10 ` [dpdk-dev] [PATCH 07/10] net/mlx5: support match on IPv4 fragment packets Dekel Peled
2020-09-30 14:10 ` [dpdk-dev] [PATCH 08/10] net/mlx5: support match on IPv6 " Dekel Peled
2020-09-30 14:10 ` [dpdk-dev] [PATCH 09/10] net/mlx5: support match on IPv6 fragment ext. item Dekel Peled
2020-09-30 14:10 ` [dpdk-dev] [PATCH 10/10] doc: update release notes for MLX5 L3 frag support Dekel Peled
2020-10-01 21:14 ` [dpdk-dev] [PATCH v2 00/11] support match on L3 fragmented packets Dekel Peled
2020-10-01 21:14   ` [dpdk-dev] [PATCH v2 01/11] ethdev: add extensions attributes to IPv6 item Dekel Peled
2020-10-04 13:45     ` Ori Kam
2020-10-01 21:14   ` [dpdk-dev] [PATCH v2 02/11] ethdev: add IPv6 fragment extension header item Dekel Peled
2020-10-01 21:27     ` Stephen Hemminger
2020-10-01 21:15   ` [dpdk-dev] [PATCH v2 03/11] app/testpmd: support IPv4 fragments Dekel Peled
2020-10-04 13:47     ` Ori Kam
2020-10-01 21:15   ` [dpdk-dev] [PATCH v2 04/11] app/testpmd: support IPv6 fragments Dekel Peled
2020-10-04 13:49     ` Ori Kam
2020-10-01 21:15   ` [dpdk-dev] [PATCH v2 05/11] app/testpmd: support IPv6 fragment extension item Dekel Peled
2020-10-04 13:47     ` Ori Kam
2020-10-01 21:15   ` [dpdk-dev] [PATCH v2 06/11] net/mlx5: remove handling of ICMP fragmented packets Dekel Peled
2020-10-04 13:49     ` Ori Kam
2020-10-01 21:15   ` [dpdk-dev] [PATCH v2 07/11] net/mlx5: support match on IPv4 fragment packets Dekel Peled
2020-10-04 13:48     ` Ori Kam
2020-10-01 21:15   ` [dpdk-dev] [PATCH v2 08/11] net/mlx5: support match on IPv6 " Dekel Peled
2020-10-01 21:15   ` [dpdk-dev] [PATCH v2 09/11] net/mlx5: support match on IPv6 fragment ext. item Dekel Peled
2020-10-04 13:51     ` Ori Kam
2020-10-01 21:15   ` [dpdk-dev] [PATCH v2 10/11] doc: update release notes for MLX5 L3 frag support Dekel Peled
2020-10-04 13:55     ` Ori Kam
2020-10-01 21:15   ` [dpdk-dev] [PATCH v2 11/11] net/mlx5: enforce limitation on IPv6 next proto Dekel Peled
2020-10-04 13:55     ` Ori Kam
2020-10-05  8:35   ` [dpdk-dev] [PATCH v3 00/11] support match on L3 fragmented packets Dekel Peled
2020-10-05  8:35     ` [dpdk-dev] [PATCH v3 01/11] ethdev: add extensions attributes to IPv6 item Dekel Peled
2020-10-06 23:43       ` Ajit Khaparde
2020-10-07  6:59         ` Dekel Peled
2020-10-05  8:35     ` [dpdk-dev] [PATCH v3 02/11] ethdev: add IPv6 fragment extension header item Dekel Peled
2020-10-05  8:50       ` Ori Kam
2020-10-05  8:35     ` [dpdk-dev] [PATCH v3 03/11] app/testpmd: support IPv4 fragments Dekel Peled
2020-10-05  8:35     ` [dpdk-dev] [PATCH v3 04/11] app/testpmd: support IPv6 fragments Dekel Peled
2020-10-05  8:35     ` [dpdk-dev] [PATCH v3 05/11] app/testpmd: support IPv6 fragment extension item Dekel Peled
2020-10-05  8:35     ` [dpdk-dev] [PATCH v3 06/11] net/mlx5: remove handling of ICMP fragmented packets Dekel Peled
2020-10-05  8:35     ` [dpdk-dev] [PATCH v3 07/11] net/mlx5: support match on IPv4 fragment packets Dekel Peled
2020-10-05  8:35     ` [dpdk-dev] [PATCH v3 08/11] net/mlx5: support match on IPv6 " Dekel Peled
2020-10-05  8:51       ` Ori Kam
2020-10-05  8:35     ` [dpdk-dev] [PATCH v3 09/11] net/mlx5: support match on IPv6 fragment ext. item Dekel Peled
2020-10-05  8:35     ` [dpdk-dev] [PATCH v3 10/11] doc: update release notes for MLX5 L3 frag support Dekel Peled
2020-10-05  8:35     ` [dpdk-dev] [PATCH v3 11/11] net/mlx5: enforce limitation on IPv6 next proto Dekel Peled
2020-10-07 10:53     ` [dpdk-dev] [PATCH v4 00/11] support match on L3 fragmented packets Dekel Peled
2020-10-07 10:54       ` [dpdk-dev] [PATCH v4 01/11] ethdev: add extensions attributes to IPv6 item Dekel Peled
2020-10-08  3:14         ` Ajit Khaparde
2020-10-08  7:03           ` Dekel Peled
2020-10-08 18:28         ` Ajit Khaparde
2020-10-07 10:54       ` [dpdk-dev] [PATCH v4 02/11] ethdev: add IPv6 fragment extension header item Dekel Peled
2020-10-07 10:54       ` [dpdk-dev] [PATCH v4 03/11] app/testpmd: support IPv4 fragments Dekel Peled
2020-10-07 10:54       ` [dpdk-dev] [PATCH v4 04/11] app/testpmd: support IPv6 fragments Dekel Peled
2020-10-07 10:54       ` [dpdk-dev] [PATCH v4 05/11] app/testpmd: support IPv6 fragment extension item Dekel Peled
2020-10-07 10:54       ` [dpdk-dev] [PATCH v4 06/11] net/mlx5: remove handling of ICMP fragmented packets Dekel Peled
2020-10-07 10:54       ` [dpdk-dev] [PATCH v4 07/11] net/mlx5: support match on IPv4 fragment packets Dekel Peled
2020-10-07 10:54       ` [dpdk-dev] [PATCH v4 08/11] net/mlx5: support match on IPv6 " Dekel Peled
2020-10-07 10:54       ` [dpdk-dev] [PATCH v4 09/11] net/mlx5: support match on IPv6 fragment ext. item Dekel Peled
2020-10-07 10:54       ` [dpdk-dev] [PATCH v4 10/11] doc: update release notes for MLX5 L3 frag support Dekel Peled
2020-10-07 10:54       ` [dpdk-dev] [PATCH v4 11/11] net/mlx5: enforce limitation on IPv6 next proto Dekel Peled
2020-10-07 11:15       ` [dpdk-dev] [PATCH v4 00/11] support match on L3 fragmented packets Ori Kam
2020-10-12 10:42       ` [dpdk-dev] [PATCH v5 " Dekel Peled
2020-10-12 10:43         ` [dpdk-dev] [PATCH v5 01/11] ethdev: add extensions attributes to IPv6 item Dekel Peled
2020-10-12 20:41           ` Thomas Monjalon
2020-10-13  8:22             ` Dekel Peled
2020-10-12 10:43         ` [dpdk-dev] [PATCH v5 02/11] ethdev: add IPv6 fragment extension header item Dekel Peled
2020-10-12 20:50           ` Thomas Monjalon
2020-10-13  8:11             ` Dekel Peled
2020-10-12 10:43         ` [dpdk-dev] [PATCH v5 03/11] app/testpmd: support IPv4 fragments Dekel Peled
2020-10-12 10:43         ` [dpdk-dev] [PATCH v5 04/11] app/testpmd: support IPv6 fragments Dekel Peled
2020-10-12 10:43         ` [dpdk-dev] [PATCH v5 05/11] app/testpmd: support IPv6 fragment extension item Dekel Peled
2020-10-12 10:43         ` [dpdk-dev] [PATCH v5 06/11] net/mlx5: remove handling of ICMP fragmented packets Dekel Peled
2020-10-12 10:43         ` [dpdk-dev] [PATCH v5 07/11] net/mlx5: support match on IPv4 fragment packets Dekel Peled
2020-10-12 10:43         ` [dpdk-dev] [PATCH v5 08/11] net/mlx5: support match on IPv6 " Dekel Peled
2020-10-12 10:43         ` [dpdk-dev] [PATCH v5 09/11] net/mlx5: support match on IPv6 fragment ext. item Dekel Peled
2020-10-12 10:43         ` [dpdk-dev] [PATCH v5 10/11] doc: update release notes for MLX5 L3 frag support Dekel Peled
2020-10-12 19:29           ` Thomas Monjalon
2020-10-12 10:43         ` [dpdk-dev] [PATCH v5 11/11] net/mlx5: enforce limitation on IPv6 next proto Dekel Peled
2020-10-13 13:32         ` [dpdk-dev] [PATCH v6 0/5] support match on L3 fragmented packets Dekel Peled
2020-10-13 13:32           ` [dpdk-dev] [PATCH v6 1/5] ethdev: add extensions attributes to IPv6 item Dekel Peled
2020-10-14 10:36             ` Thomas Monjalon
2020-10-13 13:32           ` [dpdk-dev] [PATCH v6 2/5] ethdev: add IPv6 fragment extension header item Dekel Peled
2020-10-14 10:37             ` Thomas Monjalon
2020-10-13 13:32           ` [dpdk-dev] [PATCH v6 3/5] app/testpmd: support IPv4 fragments Dekel Peled
2020-10-13 13:32           ` [dpdk-dev] [PATCH v6 4/5] app/testpmd: support IPv6 fragments Dekel Peled
2020-10-13 13:32           ` [dpdk-dev] [PATCH v6 5/5] app/testpmd: support IPv6 fragment extension item Dekel Peled
2020-10-14 16:35 ` [dpdk-dev] [PATCH v7 0/5] support match on L3 fragmented packets Dekel Peled
2020-10-14 16:35   ` [dpdk-dev] [PATCH v7 1/5] ethdev: add extensions attributes to IPv6 item Dekel Peled
2020-10-14 16:35   ` [dpdk-dev] [PATCH v7 2/5] ethdev: add IPv6 fragment extension header item Dekel Peled
2020-10-14 16:35   ` [dpdk-dev] [PATCH v7 3/5] app/testpmd: support IPv4 fragments Dekel Peled
2020-10-14 16:35   ` [dpdk-dev] [PATCH v7 4/5] app/testpmd: support IPv6 fragments Dekel Peled
2020-10-14 16:35   ` [dpdk-dev] [PATCH v7 5/5] app/testpmd: support IPv6 fragment extension item Dekel Peled
2020-10-14 17:18   ` [dpdk-dev] [PATCH v7 0/5] support match on L3 fragmented packets Ferruh Yigit

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=MN2PR12MB428603EB3C9F66894FFDD97BD6330@MN2PR12MB4286.namprd12.prod.outlook.com \
    --to=orika@nvidia.com \
    --cc=arybchenko@solarflare.com \
    --cc=beilei.xing@intel.com \
    --cc=bernard.iremonger@intel.com \
    --cc=dekelp@nvidia.com \
    --cc=dev@dpdk.org \
    --cc=ferruh.yigit@intel.com \
    --cc=konstantin.ananyev@intel.com \
    --cc=matan@nvidia.com \
    --cc=olivier.matz@6wind.com \
    --cc=shahafs@nvidia.com \
    --cc=thomas@monjalon.net \
    --cc=viacheslavo@nvidia.com \
    --cc=wenzhuo.lu@intel.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).