All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Nélio Laranjeiro" <nelio.laranjeiro@6wind.com>
To: "Xueming(Steven) Li" <xuemingl@mellanox.com>
Cc: Shahaf Shuler <shahafs@mellanox.com>, "dev@dpdk.org" <dev@dpdk.org>
Subject: Re: [PATCH v6 02/11] net/mlx5: support GRE tunnel flow
Date: Tue, 24 Apr 2018 10:21:05 +0200	[thread overview]
Message-ID: <20180424082105.htxbgiwl5i3shnv5@laranjeiro-vm.dev.6wind.com> (raw)
In-Reply-To: <VI1PR05MB1678FFB5E689E51565A4E34BAC880@VI1PR05MB1678.eurprd05.prod.outlook.com>

On Tue, Apr 24, 2018 at 07:40:24AM +0000, Xueming(Steven) Li wrote:
> 
> 
> > -----Original Message-----
> > From: Nélio Laranjeiro <nelio.laranjeiro@6wind.com>
> > Sent: Monday, April 23, 2018 9:46 PM
> > To: Xueming(Steven) Li <xuemingl@mellanox.com>
> > Cc: Shahaf Shuler <shahafs@mellanox.com>; dev@dpdk.org
> > Subject: Re: [PATCH v6 02/11] net/mlx5: support GRE tunnel flow
> > 
> > On Mon, Apr 23, 2018 at 01:32:23PM +0000, Xueming(Steven) Li wrote:
> > > Hi Nelio,
> > >
> > > > -----Original Message-----
> > > > From: Nélio Laranjeiro <nelio.laranjeiro@6wind.com>
> > > > Sent: Monday, April 23, 2018 8:56 PM
> > > > To: Xueming(Steven) Li <xuemingl@mellanox.com>
> > > > Cc: Shahaf Shuler <shahafs@mellanox.com>; dev@dpdk.org
> > > > Subject: Re: [PATCH v6 02/11] net/mlx5: support GRE tunnel flow
> > > >
> > > > On Mon, Apr 23, 2018 at 08:33:01PM +0800, Xueming Li wrote:
> > > > > Signed-off-by: Xueming Li <xuemingl@mellanox.com>
> > > > > ---
> > > > >  drivers/net/mlx5/mlx5_flow.c | 101
> > > > > ++++++++++++++++++++++++++++++++++++++++---
> > > > >  1 file changed, 94 insertions(+), 7 deletions(-)
> > > > >
> > > > > diff --git a/drivers/net/mlx5/mlx5_flow.c
> > > > > b/drivers/net/mlx5/mlx5_flow.c index 5402cb148..b365f9868 100644
> > > > > --- a/drivers/net/mlx5/mlx5_flow.c
> > > > > +++ b/drivers/net/mlx5/mlx5_flow.c
> > > > > @@ -37,6 +37,7 @@
> > > > >  /* Internet Protocol versions. */  #define MLX5_IPV4 4  #define
> > > > > MLX5_IPV6 6
> > > > > +#define MLX5_GRE 47
> > > > >
> > > > >  #ifndef HAVE_IBV_DEVICE_COUNTERS_SET_SUPPORT
> > > > >  struct ibv_flow_spec_counter_action { @@ -89,6 +90,11 @@
> > > > > mlx5_flow_create_vxlan(const struct rte_flow_item *item,
> > > > >  		       const void *default_mask,
> > > > >  		       struct mlx5_flow_data *data);
> > > > >
> > > > > +static int
> > > > > +mlx5_flow_create_gre(const struct rte_flow_item *item,
> > > > > +		     const void *default_mask,
> > > > > +		     struct mlx5_flow_data *data);
> > > > > +
> > > > >  struct mlx5_flow_parse;
> > > > >
> > > > >  static void
> > > > > @@ -231,6 +237,10 @@ struct rte_flow {
> > > > >  		__VA_ARGS__, RTE_FLOW_ITEM_TYPE_END, \
> > > > >  	}
> > > > >
> > > > > +#define IS_TUNNEL(type) ( \
> > > > > +	(type) == RTE_FLOW_ITEM_TYPE_VXLAN || \
> > > > > +	(type) == RTE_FLOW_ITEM_TYPE_GRE)
> > > > > +
> > > > >  /** Structure to generate a simple graph of layers supported by
> > > > > the NIC. */  struct mlx5_flow_items {
> > > > >  	/** List of possible actions for these items. */ @@ -284,7
> > > > > +294,8 @@ static const enum rte_flow_action_type valid_actions[] =
> > > > > {  static const struct mlx5_flow_items mlx5_flow_items[] = {
> > > > >  	[RTE_FLOW_ITEM_TYPE_END] = {
> > > > >  		.items = ITEMS(RTE_FLOW_ITEM_TYPE_ETH,
> > > > > -			       RTE_FLOW_ITEM_TYPE_VXLAN),
> > > > > +			       RTE_FLOW_ITEM_TYPE_VXLAN,
> > > > > +			       RTE_FLOW_ITEM_TYPE_GRE),
> > > > >  	},
> > > > >  	[RTE_FLOW_ITEM_TYPE_ETH] = {
> > > > >  		.items = ITEMS(RTE_FLOW_ITEM_TYPE_VLAN, @@ -316,7 +327,8 @@
> > > > > static const struct mlx5_flow_items mlx5_flow_items[] = {
> > > > >  	},
> > > > >  	[RTE_FLOW_ITEM_TYPE_IPV4] = {
> > > > >  		.items = ITEMS(RTE_FLOW_ITEM_TYPE_UDP,
> > > > > -			       RTE_FLOW_ITEM_TYPE_TCP),
> > > > > +			       RTE_FLOW_ITEM_TYPE_TCP,
> > > > > +			       RTE_FLOW_ITEM_TYPE_GRE),
> > > > >  		.actions = valid_actions,
> > > > >  		.mask = &(const struct rte_flow_item_ipv4){
> > > > >  			.hdr = {
> > > > > @@ -333,7 +345,8 @@ static const struct mlx5_flow_items mlx5_flow_items[] = {
> > > > >  	},
> > > > >  	[RTE_FLOW_ITEM_TYPE_IPV6] = {
> > > > >  		.items = ITEMS(RTE_FLOW_ITEM_TYPE_UDP,
> > > > > -			       RTE_FLOW_ITEM_TYPE_TCP),
> > > > > +			       RTE_FLOW_ITEM_TYPE_TCP,
> > > > > +			       RTE_FLOW_ITEM_TYPE_GRE),
> > > > >  		.actions = valid_actions,
> > > > >  		.mask = &(const struct rte_flow_item_ipv6){
> > > > >  			.hdr = {
> > > > > @@ -386,6 +399,19 @@ static const struct mlx5_flow_items mlx5_flow_items[] = {
> > > > >  		.convert = mlx5_flow_create_tcp,
> > > > >  		.dst_sz = sizeof(struct ibv_flow_spec_tcp_udp),
> > > > >  	},
> > > > > +	[RTE_FLOW_ITEM_TYPE_GRE] = {
> > > > > +		.items = ITEMS(RTE_FLOW_ITEM_TYPE_ETH,
> > > > > +			       RTE_FLOW_ITEM_TYPE_IPV4,
> > > > > +			       RTE_FLOW_ITEM_TYPE_IPV6),
> > > > > +		.actions = valid_actions,
> > > > > +		.mask = &(const struct rte_flow_item_gre){
> > > > > +			.protocol = -1,
> > > > > +		},
> > > > > +		.default_mask = &rte_flow_item_gre_mask,
> > > > > +		.mask_sz = sizeof(struct rte_flow_item_gre),
> > > > > +		.convert = mlx5_flow_create_gre,
> > > > > +		.dst_sz = sizeof(struct ibv_flow_spec_tunnel),
> > > > > +	},
> > > > >  	[RTE_FLOW_ITEM_TYPE_VXLAN] = {
> > > > >  		.items = ITEMS(RTE_FLOW_ITEM_TYPE_ETH),
> > > > >  		.actions = valid_actions,
> > > > > @@ -401,7 +427,7 @@ static const struct mlx5_flow_items
> > > > > mlx5_flow_items[] = {
> > > > >
> > > > >  /** Structure to pass to the conversion function. */  struct
> > > > > mlx5_flow_parse {
> > > > > -	uint32_t inner; /**< Set once VXLAN is encountered. */
> > > > > +	uint32_t inner; /**< Verbs value, set once tunnel is
> > > > > +encountered. */
> > > > >  	uint32_t create:1;
> > > > >  	/**< Whether resources should remain after a validate. */
> > > > >  	uint32_t drop:1; /**< Target is a drop queue. */ @@ -829,13
> > > > > +855,13 @@ mlx5_flow_convert_items_validate(const struct rte_flow_item items[],
> > > > >  					      cur_item->mask_sz);
> > > > >  		if (ret)
> > > > >  			goto exit_item_not_supported;
> > > > > -		if (items->type == RTE_FLOW_ITEM_TYPE_VXLAN) {
> > > > > +		if (IS_TUNNEL(items->type)) {
> > > > >  			if (parser->inner) {
> > > > >  				rte_flow_error_set(error, ENOTSUP,
> > > > >  						   RTE_FLOW_ERROR_TYPE_ITEM,
> > > > >  						   items,
> > > > > -						   "cannot recognize multiple"
> > > > > -						   " VXLAN encapsulations");
> > > > > +						   "Cannot recognize multiple"
> > > > > +						   " tunnel encapsulations.");
> > > > >  				return -rte_errno;
> > > > >  			}
> > > > >  			parser->inner = IBV_FLOW_SPEC_INNER; @@ -1641,6 +1667,67 @@
> > > > > mlx5_flow_create_vxlan(const struct rte_flow_item *item,  }
> > > > >
> > > > >  /**
> > > > > + * Convert GRE item to Verbs specification.
> > > > > + *
> > > > > + * @param item[in]
> > > > > + *   Item specification.
> > > > > + * @param default_mask[in]
> > > > > + *   Default bit-masks to use when item->mask is not provided.
> > > > > + * @param data[in, out]
> > > > > + *   User structure.
> > > > > + *
> > > > > + * @return
> > > > > + *   0 on success, a negative errno value otherwise and rte_errno is set.
> > > > > + */
> > > > > +static int
> > > > > +mlx5_flow_create_gre(const struct rte_flow_item *item __rte_unused,
> > > > > +		     const void *default_mask __rte_unused,
> > > > > +		     struct mlx5_flow_data *data) {
> > > > > +	struct mlx5_flow_parse *parser = data->parser;
> > > > > +	unsigned int size = sizeof(struct ibv_flow_spec_tunnel);
> > > > > +	struct ibv_flow_spec_tunnel tunnel = {
> > > > > +		.type = parser->inner | IBV_FLOW_SPEC_VXLAN_TUNNEL,
> > > > > +		.size = size,
> > > > > +	};
> > > > > +	struct ibv_flow_spec_ipv4_ext *ipv4;
> > > > > +	struct ibv_flow_spec_ipv6 *ipv6;
> > > > > +	unsigned int i;
> > > > > +
> > > > > +	parser->inner = IBV_FLOW_SPEC_INNER;
> > > > > +	/* Update encapsulation IP layer protocol. */
> > > > > +	for (i = 0; i != hash_rxq_init_n; ++i) {
> > > > > +		if (!parser->queue[i].ibv_attr)
> > > > > +			continue;
> > > > > +		if (parser->out_layer == HASH_RXQ_IPV4) {
> > > > > +			ipv4 = (void *)((uintptr_t)parser->queue[i].ibv_attr +
> > > > > +				parser->queue[i].offset -
> > > > > +				sizeof(struct ibv_flow_spec_ipv4_ext));
> > > > > +			if (ipv4->mask.proto && ipv4->val.proto != MLX5_GRE)
> > > > > +				break;
> > > > > +			ipv4->val.proto = MLX5_GRE;
> > > > > +			ipv4->mask.proto = 0xff;
> > > > > +		} else if (parser->out_layer == HASH_RXQ_IPV6) {
> > > > > +			ipv6 = (void *)((uintptr_t)parser->queue[i].ibv_attr +
> > > > > +				parser->queue[i].offset -
> > > > > +				sizeof(struct ibv_flow_spec_ipv6));
> > > > > +			if (ipv6->mask.next_hdr &&
> > > > > +			    ipv6->val.next_hdr != MLX5_GRE)
> > > > > +				break;
> > > > > +			ipv6->val.next_hdr = MLX5_GRE;
> > > > > +			ipv6->mask.next_hdr = 0xff;
> > > > > +		}
> > > > > +	}
> > > > > +	if (i != hash_rxq_init_n)
> > > > > +		return rte_flow_error_set(data->error, EINVAL,
> > > > > +					  RTE_FLOW_ERROR_TYPE_ITEM,
> > > > > +					  item,
> > > > > +					  "IP protocol of GRE must be 47");
> > > > > +	mlx5_flow_create_copy(parser, &tunnel, size);
> > > > > +	return 0;
> > > > > +}
> > > >
> > > > There is something strange, item is not unused as it is at least used in the rte_flow_error_set().
> > >
> > > A new issue introduced when adding GRE protocol check.
> > > If you finished this patchset review, I'll upload a new version to remove it.
> > >
> > > >
> > > > In the other series you are pushing, there is no new
> > > > RTE_FLOW_ITEM_GRE and in the current code there is also no RTE_FLOW_ITEM_GRE.
> > > >
> > > > I don't see how this code can match the missing item, what am I missing?
> > >
> > > Are you looking for RTE_FLOW_ITEM_TYPE_GRE?
> > 
> > Yes
> 
> RTE_FLOW_ITEM_TYPE_GRE has been defined in rte_flow.h, please check.

Ok I've just missed it.

> 
> > 
> > > >
> > > > > +/**
> > > > >   * Convert mark/flag action to Verbs specification.
> > > > >   *
> > > > >   * @param parser
> > > > > --
> > > > > 2.13.3
> > > >
> > > > Thanks,
> > > >
> > > > --
> > > > Nélio Laranjeiro
> > > > 6WIND
> > 
> > --
> > Nélio Laranjeiro
> > 6WIND

-- 
Nélio Laranjeiro
6WIND

  reply	other threads:[~2018-04-24  8:20 UTC|newest]

Thread overview: 115+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20180410133415.189905-1-xuemingl%40mellanox.com>
2018-04-13 11:20 ` [PATCH v3 00/14] mlx5 Rx tunnel offloading Xueming Li
2018-04-17 15:14   ` [PATCH v4 00/11] " Xueming Li
2018-04-20 12:23     ` [PATCH v5 " Xueming Li
2018-04-23 12:32       ` [PATCH v6 " Xueming Li
2018-04-24  8:24         ` Nélio Laranjeiro
2018-04-24  8:25           ` Xueming(Steven) Li
2018-04-26  6:23           ` Shahaf Shuler
2018-04-23 12:33       ` [PATCH v6 01/11] net/mlx5: support 16 hardware priorities Xueming Li
2018-04-23 12:33       ` [PATCH v6 02/11] net/mlx5: support GRE tunnel flow Xueming Li
2018-04-23 12:55         ` Nélio Laranjeiro
2018-04-23 13:32           ` Xueming(Steven) Li
2018-04-23 13:46             ` Nélio Laranjeiro
2018-04-24  7:40               ` Xueming(Steven) Li
2018-04-24  8:21                 ` Nélio Laranjeiro [this message]
2018-04-23 12:33       ` [PATCH v6 03/11] net/mlx5: support L3 VXLAN flow Xueming Li
2018-04-23 12:33       ` [PATCH v6 04/11] net/mlx5: support Rx tunnel type identification Xueming Li
2018-04-23 12:33       ` [PATCH v6 05/11] net/mlx5: cleanup tunnel checksum offloads Xueming Li
2018-04-23 12:33       ` [PATCH v6 06/11] net/mlx5: split flow RSS handling logic Xueming Li
2018-04-23 12:33       ` [PATCH v6 07/11] net/mlx5: support tunnel RSS level Xueming Li
2018-04-23 12:33       ` [PATCH v6 08/11] net/mlx5: add hardware flow debug dump Xueming Li
2018-04-26 10:09         ` Ferruh Yigit
2018-04-26 10:48           ` Shahaf Shuler
2018-04-23 12:33       ` [PATCH v6 09/11] net/mlx5: introduce VXLAN-GPE tunnel type Xueming Li
2018-04-23 12:33       ` [PATCH v6 10/11] net/mlx5: allow flow tunnel ID 0 with outer pattern Xueming Li
2018-04-23 12:33       ` [PATCH v6 11/11] doc: update mlx5 guide on tunnel offloading Xueming Li
2018-04-26 11:00         ` Ferruh Yigit
2018-04-26 14:03           ` Xueming(Steven) Li
2018-04-20 12:23     ` [PATCH v5 01/11] net/mlx5: support 16 hardware priorities Xueming Li
2018-04-20 12:23     ` [PATCH v5 02/11] net/mlx5: support GRE tunnel flow Xueming Li
2018-04-20 12:23     ` [PATCH v5 03/11] net/mlx5: support L3 VXLAN flow Xueming Li
2018-04-20 12:23     ` [PATCH v5 04/11] net/mlx5: support Rx tunnel type identification Xueming Li
2018-04-23  7:40       ` Nélio Laranjeiro
2018-04-23  7:56         ` Xueming(Steven) Li
2018-04-20 12:23     ` [PATCH v5 05/11] net/mlx5: cleanup tunnel checksum offloads Xueming Li
2018-04-20 12:23     ` [PATCH v5 06/11] net/mlx5: split flow RSS handling logic Xueming Li
2018-04-20 12:23     ` [PATCH v5 07/11] net/mlx5: support tunnel RSS level Xueming Li
2018-04-20 12:23     ` [PATCH v5 08/11] net/mlx5: add hardware flow debug dump Xueming Li
2018-04-20 12:23     ` [PATCH v5 09/11] net/mlx5: introduce VXLAN-GPE tunnel type Xueming Li
2018-04-20 12:23     ` [PATCH v5 10/11] net/mlx5: allow flow tunnel ID 0 with outer pattern Xueming Li
2018-04-20 12:23     ` [PATCH v5 11/11] doc: update mlx5 guide on tunnel offloading Xueming Li
2018-04-17 15:14   ` [PATCH v4 01/11] net/mlx5: support 16 hardware priorities Xueming Li
2018-04-17 15:14   ` [PATCH v4 02/11] net/mlx5: support GRE tunnel flow Xueming Li
2018-04-17 15:14   ` [PATCH v4 03/11] net/mlx5: support L3 VXLAN flow Xueming Li
2018-04-18  6:48     ` Nélio Laranjeiro
2018-04-18 14:43       ` Xueming(Steven) Li
2018-04-18 15:08         ` Nélio Laranjeiro
2018-04-19  6:20           ` Xueming(Steven) Li
2018-04-19  6:55             ` Nélio Laranjeiro
2018-04-19 10:21               ` Xueming(Steven) Li
2018-04-19 11:15                 ` Nélio Laranjeiro
2018-04-19 11:53                   ` Xueming(Steven) Li
2018-04-19 12:18                     ` Nélio Laranjeiro
2018-04-19 12:49                       ` Xueming(Steven) Li
2018-04-19 13:40                         ` Nélio Laranjeiro
2018-04-17 15:14   ` [PATCH v4 04/11] net/mlx5: support Rx tunnel type identification Xueming Li
2018-04-18  6:50     ` Nélio Laranjeiro
2018-04-18 14:33       ` Xueming(Steven) Li
2018-04-18 15:06         ` Nélio Laranjeiro
2018-04-17 15:14   ` [PATCH v4 05/11] net/mlx5: cleanup tunnel checksum offloads Xueming Li
2018-04-17 15:14   ` [PATCH v4 06/11] net/mlx5: split flow RSS handling logic Xueming Li
2018-04-17 15:14   ` [PATCH v4 07/11] net/mlx5: support tunnel RSS level Xueming Li
2018-04-18  6:55     ` Nélio Laranjeiro
2018-04-17 15:14   ` [PATCH v4 08/11] net/mlx5: add hardware flow debug dump Xueming Li
2018-04-18  6:57     ` Nélio Laranjeiro
2018-04-17 15:14   ` [PATCH v4 09/11] net/mlx5: introduce VXLAN-GPE tunnel type Xueming Li
2018-04-18  6:58     ` Nélio Laranjeiro
2018-04-17 15:14   ` [PATCH v4 10/11] net/mlx5: allow flow tunnel ID 0 with outer pattern Xueming Li
2018-04-17 15:14   ` [PATCH v4 11/11] doc: update mlx5 guide on tunnel offloading Xueming Li
2018-04-18  7:00     ` Nélio Laranjeiro
2018-04-13 11:20 ` [PATCH v3 01/14] net/mlx5: support 16 hardware priorities Xueming Li
2018-04-13 11:58   ` Nélio Laranjeiro
2018-04-13 13:10     ` Xueming(Steven) Li
2018-04-13 13:46       ` Nélio Laranjeiro
2018-04-13 11:20 ` [PATCH v3 02/14] net/mlx5: support GRE tunnel flow Xueming Li
2018-04-13 12:02   ` Nélio Laranjeiro
2018-04-13 11:20 ` [PATCH v3 03/14] net/mlx5: support L3 VXLAN flow Xueming Li
2018-04-13 12:13   ` Nélio Laranjeiro
2018-04-13 13:51     ` Xueming(Steven) Li
2018-04-13 14:04     ` Xueming(Steven) Li
2018-04-13 11:20 ` [PATCH v3 04/14] net/mlx5: support Rx tunnel type identification Xueming Li
2018-04-13 13:02   ` Nélio Laranjeiro
2018-04-14 12:57     ` Xueming(Steven) Li
2018-04-16  7:28       ` Nélio Laranjeiro
2018-04-16  8:05         ` Xueming(Steven) Li
2018-04-16  9:28           ` Adrien Mazarguil
2018-04-16 13:32             ` Xueming(Steven) Li
2018-04-16 13:47               ` Adrien Mazarguil
2018-04-16 15:27                 ` Xueming(Steven) Li
2018-04-16 16:02                   ` Adrien Mazarguil
2018-04-17  4:53                     ` Xueming(Steven) Li
2018-04-17  7:20                       ` Nélio Laranjeiro
2018-04-17 11:50                         ` Xueming(Steven) Li
2018-04-13 11:20 ` [PATCH v3 05/14] net/mlx5: cleanup tunnel checksum offloads Xueming Li
2018-04-13 11:20 ` [PATCH v3 06/14] net/mlx5: split flow RSS handling logic Xueming Li
2018-04-13 11:20 ` [PATCH v3 07/14] net/mlx5: support tunnel RSS level Xueming Li
2018-04-13 13:27   ` Nélio Laranjeiro
2018-04-14 10:12     ` Xueming(Steven) Li
2018-04-16 12:25       ` Nélio Laranjeiro
2018-04-13 11:20 ` [PATCH v3 08/14] net/mlx5: add hardware flow debug dump Xueming Li
2018-04-13 13:29   ` Nélio Laranjeiro
2018-04-13 11:20 ` [PATCH v3 09/14] net/mlx5: introduce VXLAN-GPE tunnel type Xueming Li
2018-04-13 13:32   ` Nélio Laranjeiro
2018-04-13 11:20 ` [PATCH v3 10/14] net/mlx5: allow flow tunnel ID 0 with outer pattern Xueming Li
2018-04-13 11:20 ` [PATCH v3 11/14] net/mlx5: support MPLS-in-GRE and MPLS-in-UDP Xueming Li
2018-04-13 13:37   ` Nélio Laranjeiro
2018-04-13 14:48     ` Xueming(Steven) Li
2018-04-13 14:55       ` Nélio Laranjeiro
2018-04-13 15:22         ` Xueming(Steven) Li
2018-04-16  8:14           ` Nélio Laranjeiro
2018-04-13 11:20 ` [PATCH v3 12/14] doc: update mlx5 guide on tunnel offloading Xueming Li
2018-04-13 13:38   ` Nélio Laranjeiro
2018-04-13 11:20 ` [PATCH v3 13/14] net/mlx5: fix invalid flow item check Xueming Li
2018-04-13 13:40   ` Nélio Laranjeiro
2018-04-13 11:20 ` [PATCH v3 14/14] net/mlx5: support RSS configuration in isolated mode Xueming Li
2018-04-13 13:43   ` Nélio Laranjeiro

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=20180424082105.htxbgiwl5i3shnv5@laranjeiro-vm.dev.6wind.com \
    --to=nelio.laranjeiro@6wind.com \
    --cc=dev@dpdk.org \
    --cc=shahafs@mellanox.com \
    --cc=xuemingl@mellanox.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.