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: [dpdk-dev] [PATCH v2 07/15] net/mlx5: support tunnel RSS level
Date: Mon, 16 Apr 2018 09:14:09 +0200 [thread overview]
Message-ID: <20180416071409.oee2ttblbrg46yc6@laranjeiro-vm.dev.6wind.com> (raw)
In-Reply-To: <VI1PR05MB16785DEE5C1F0DB91AE6C03BACB20@VI1PR05MB1678.eurprd05.prod.outlook.com>
On Sat, Apr 14, 2018 at 12:25:12PM +0000, Xueming(Steven) Li wrote:
>[...]
> > > @@ -1211,23 +1322,23 @@ mlx5_flow_convert(struct rte_eth_dev *dev,
> > > if (ret)
> > > goto exit_free;
> > > }
> > > - if (parser->mark)
> > > - mlx5_flow_create_flag_mark(parser, parser->mark_id);
> > > - if (parser->count && parser->create) {
> > > - mlx5_flow_create_count(dev, parser);
> > > - if (!parser->cs)
> > > - goto exit_count_error;
> > > - }
> > > /*
> > > * Last step. Complete missing specification to reach the RSS
> > > * configuration.
> > > */
> > > if (!parser->drop)
> > > - ret = mlx5_flow_convert_rss(parser);
> > > + ret = mlx5_flow_convert_rss(dev, parser);
> > > if (ret)
> > > goto exit_free;
> > > mlx5_flow_convert_finalise(parser);
> > > mlx5_flow_update_priority(dev, parser, attr);
> > > + if (parser->mark)
> > > + mlx5_flow_create_flag_mark(parser, parser->mark_id);
> > > + if (parser->count && parser->create) {
> > > + mlx5_flow_create_count(dev, parser);
> > > + if (!parser->cs)
> > > + goto exit_count_error;
> > > + }
> >
> > Why do you need to move this code?
>
> To avoid counter resource missing if anything wrong in function
> mlx5_flow_convert_rss().
Why this modification is addressed in this patch, why should it it be in
the patch introducing the mlx5_flow_convert_rss()?
>[...]
> > > @@ -1386,6 +1386,8 @@ mlx5_ind_table_ibv_verify(struct rte_eth_dev *dev)
> > > * Number of queues.
> > > * @param tunnel
> > > * Tunnel type.
> > > + * @param rss_level
> > > + * RSS hash on tunnel level.
> > > *
> > > * @return
> > > * The Verbs object initialised, NULL otherwise and rte_errno is set.
> > > @@ -1394,13 +1396,17 @@ struct mlx5_hrxq * mlx5_hrxq_new(struct
> > > rte_eth_dev *dev,
> > > const uint8_t *rss_key, uint32_t rss_key_len,
> > > uint64_t hash_fields,
> > > - const uint16_t *queues, uint32_t queues_n, uint32_t tunnel)
> > > + const uint16_t *queues, uint32_t queues_n,
> > > + uint32_t tunnel, uint32_t rss_level)
> >
> > tunnel and rss_level seems to be redundant here.
> >
> > rss_level > 1 is equivalent to tunnel, there is no need to have both.
>
> There is a case of tunnel and outer rss(1).
Why cannot it be handled by a regular Hash Rx queue, i.e. what is the
benefit of creating a tunnel hash Rx queue to make the same job as a
legacy one?
See below,
> > > {
> > > struct priv *priv = dev->data->dev_private;
> > > struct mlx5_hrxq *hrxq;
> > > struct mlx5_ind_table_ibv *ind_tbl;
> > > struct ibv_qp *qp;
> > > int err;
> > > +#ifdef HAVE_IBV_DEVICE_TUNNEL_SUPPORT
> > > + struct mlx5dv_qp_init_attr qp_init_attr = {0}; #endif
> > >
> > > queues_n = hash_fields ? queues_n : 1;
> > > ind_tbl = mlx5_ind_table_ibv_get(dev, queues, queues_n); @@ -1410,6
> > > +1416,33 @@ mlx5_hrxq_new(struct rte_eth_dev *dev,
> > > rte_errno = ENOMEM;
> > > return NULL;
> > > }
> > > +#ifdef HAVE_IBV_DEVICE_TUNNEL_SUPPORT
> > > + if (tunnel) {
Why not: if (rss_level > 1) ?
> > > + qp_init_attr.comp_mask =
> > > + MLX5DV_QP_INIT_ATTR_MASK_QP_CREATE_FLAGS;
> > > + qp_init_attr.create_flags = MLX5DV_QP_CREATE_TUNNEL_OFFLOADS;
> > > + }
> > > + qp = mlx5_glue->dv_create_qp(
> > > + priv->ctx,
> > > + &(struct ibv_qp_init_attr_ex){
> > > + .qp_type = IBV_QPT_RAW_PACKET,
> > > + .comp_mask =
> > > + IBV_QP_INIT_ATTR_PD |
> > > + IBV_QP_INIT_ATTR_IND_TABLE |
> > > + IBV_QP_INIT_ATTR_RX_HASH,
> > > + .rx_hash_conf = (struct ibv_rx_hash_conf){
> > > + .rx_hash_function = IBV_RX_HASH_FUNC_TOEPLITZ,
> > > + .rx_hash_key_len = rss_key_len,
> > > + .rx_hash_key = (void *)(uintptr_t)rss_key,
> > > + .rx_hash_fields_mask = hash_fields |
> > > + (tunnel && rss_level ?
> > > + (uint32_t)IBV_RX_HASH_INNER : 0),
>[...]
.rx_hash_fields_mask = hash_fields |
(rss_level > 1) ?
(uint32_t)IBV_RX_HASH_INNER : 0),
Thanks,
--
Nélio Laranjeiro
6WIND
next prev parent reply other threads:[~2018-04-16 7:13 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-04-10 13:34 [dpdk-dev] [PATCH v2 00/15] mlx5 Rx tunnel offloading Xueming Li
2018-04-10 13:34 ` [dpdk-dev] [PATCH v2 01/15] net/mlx5: support 16 hardware priorities Xueming Li
2018-04-10 14:41 ` Nélio Laranjeiro
2018-04-10 15:22 ` Xueming(Steven) Li
2018-04-12 9:09 ` Nélio Laranjeiro
2018-04-12 13:43 ` Xueming(Steven) Li
2018-04-12 14:02 ` Nélio Laranjeiro
2018-04-12 14:46 ` Xueming(Steven) Li
2018-04-10 13:34 ` [dpdk-dev] [PATCH v2 02/15] net/mlx5: support GRE tunnel flow Xueming Li
2018-04-10 13:34 ` [dpdk-dev] [PATCH v2 03/15] net/mlx5: support L3 vxlan flow Xueming Li
2018-04-10 14:53 ` Nélio Laranjeiro
2018-04-10 13:34 ` [dpdk-dev] [PATCH v2 04/15] net/mlx5: support Rx tunnel type identification Xueming Li
2018-04-10 15:17 ` Nélio Laranjeiro
2018-04-11 8:11 ` Xueming(Steven) Li
2018-04-12 9:50 ` Nélio Laranjeiro
2018-04-12 14:27 ` Xueming(Steven) Li
2018-04-13 8:37 ` Nélio Laranjeiro
2018-04-13 12:09 ` Xueming(Steven) Li
2018-04-10 13:34 ` [dpdk-dev] [PATCH v2 05/15] net/mlx5: support tunnel inner checksum offloads Xueming Li
2018-04-10 15:27 ` Nélio Laranjeiro
2018-04-11 8:46 ` Xueming(Steven) Li
2018-04-10 13:34 ` [dpdk-dev] [PATCH v2 06/15] net/mlx5: split flow RSS handling logic Xueming Li
2018-04-10 15:28 ` Nélio Laranjeiro
2018-04-10 13:34 ` [dpdk-dev] [PATCH v2 07/15] net/mlx5: support tunnel RSS level Xueming Li
2018-04-11 8:55 ` Nélio Laranjeiro
2018-04-14 12:25 ` Xueming(Steven) Li
2018-04-16 7:14 ` Nélio Laranjeiro [this message]
2018-04-16 7:46 ` Xueming(Steven) Li
2018-04-16 8:09 ` Nélio Laranjeiro
2018-04-16 10:06 ` Xueming(Steven) Li
2018-04-16 12:27 ` Nélio Laranjeiro
2018-04-10 13:34 ` [dpdk-dev] [PATCH v2 08/15] net/mlx5: add hardware flow debug dump Xueming Li
2018-04-10 13:34 ` [dpdk-dev] [PATCH v2 09/15] net/mlx5: introduce VXLAN-GPE tunnel type Xueming Li
2018-04-10 13:34 ` [dpdk-dev] [PATCH v2 10/15] net/mlx5: allow flow tunnel ID 0 with outer pattern Xueming Li
2018-04-11 12:25 ` Nélio Laranjeiro
2018-04-10 13:34 ` [dpdk-dev] [PATCH v2 11/15] net/mlx5: support MPLS-in-GRE and MPLS-in-UDP Xueming Li
2018-04-10 13:34 ` [dpdk-dev] [PATCH v2 12/15] doc: update mlx5 guide on tunnel offloading Xueming Li
2018-04-11 12:32 ` Nélio Laranjeiro
2018-04-11 12:43 ` Thomas Monjalon
2018-04-10 13:34 ` [dpdk-dev] [PATCH v2 13/15] net/mlx5: setup RSS flow regardless of queue count Xueming Li
2018-04-11 12:37 ` Nélio Laranjeiro
2018-04-11 13:01 ` Xueming(Steven) Li
2018-04-10 13:34 ` [dpdk-dev] [PATCH v2 14/15] net/mlx5: fix invalid flow item check Xueming Li
2018-04-10 13:34 ` [dpdk-dev] [PATCH v2 15/15] net/mlx5: support RSS configuration in isolated mode Xueming Li
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=20180416071409.oee2ttblbrg46yc6@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 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).