[2/2] net/mlx5: use global default miss for E-Switch sampling
Checks
Commit Message
In E-Switch steering domain there was dedicated default miss action
created for every sampling flow.
The patch replaces this one with the global default miss action.
Cc: stable@dpdk.org
Signed-off-by: Jiawei Wang <jiaweiw@nvidia.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
---
drivers/net/mlx5/mlx5_flow.h | 1 -
drivers/net/mlx5/mlx5_flow_dv.c | 23 +++++------------------
2 files changed, 5 insertions(+), 19 deletions(-)
Comments
On 1/26/2021 12:53 PM, Jiawei Wang wrote:
> In E-Switch steering domain there was dedicated default miss action
> created for every sampling flow.
> The patch replaces this one with the global default miss action.
>
Hi Jiawei,
The impact of the patch is not clear, what was the problem using action per
flow? What will change when global action is used? Is this fixing some problem
or is it optimization by preventing per flow action?
> Cc: stable@dpdk.org
>
Since this looks like optimization, I am removing the stable tag for now.
If it is a fix, please reply with a fixes line, I can update it in next-net.
> Signed-off-by: Jiawei Wang <jiaweiw@nvidia.com>
> Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
27/01/2021 13:50, Ferruh Yigit:
> On 1/26/2021 12:53 PM, Jiawei Wang wrote:
> > In E-Switch steering domain there was dedicated default miss action
> > created for every sampling flow.
> > The patch replaces this one with the global default miss action.
> >
>
> Hi Jiawei,
>
> The impact of the patch is not clear, what was the problem using action per
> flow? What will change when global action is used? Is this fixing some problem
> or is it optimization by preventing per flow action?
>
> > Cc: stable@dpdk.org
> >
>
> Since this looks like optimization, I am removing the stable tag for now.
>
> If it is a fix, please reply with a fixes line, I can update it in next-net.
Yes please we must avoid "Cc: stable" without a "Fixes:" line.
Hi Ferruh,
> -----Original Message-----
> From: Ferruh Yigit <ferruh.yigit@intel.com>
> Sent: Wednesday, January 27, 2021 8:50 PM
> To: Jiawei(Jonny) Wang <jiaweiw@nvidia.com>; Slava Ovsiienko
> <viacheslavo@nvidia.com>; Matan Azrad <matan@nvidia.com>; Ori Kam
> <orika@nvidia.com>; NBU-Contact-Thomas Monjalon
> <thomas@monjalon.net>
> Cc: dev@dpdk.org; Raslan Darawsheh <rasland@nvidia.com>;
> stable@dpdk.org; Kevin Traynor <ktraynor@redhat.com>; Luca Boccassi
> <bluca@debian.org>
> Subject: Re: [dpdk-stable] [PATCH 2/2] net/mlx5: use global default miss for
> E-Switch sampling
>
> On 1/26/2021 12:53 PM, Jiawei Wang wrote:
> > In E-Switch steering domain there was dedicated default miss action
> > created for every sampling flow.
> > The patch replaces this one with the global default miss action.
> >
>
> Hi Jiawei,
>
> The impact of the patch is not clear, what was the problem using action per
> flow? What will change when global action is used? Is this fixing some
> problem or is it optimization by preventing per flow action?
>
The patch is optimization not fix, MLX5 PMD can reuses the global action don’t need allocate new one each time.
> > Cc: stable@dpdk.org
> >
>
> Since this looks like optimization, I am removing the stable tag for now.
Yes, please remove this tag.
Thanks.
>
> If it is a fix, please reply with a fixes line, I can update it in next-net.
>
> > Signed-off-by: Jiawei Wang <jiaweiw@nvidia.com>
> > Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
@@ -598,7 +598,6 @@ struct mlx5_flow_dv_sample_resource {
uint32_t ratio; /** Sample Ratio */
uint64_t set_action; /** Restore reg_c0 value */
void *normal_path_tbl; /** Flow Table pointer */
- void *default_miss; /** default_miss dr_action. */
struct mlx5_flow_sub_actions_idx sample_idx;
/**< Action index resources. */
struct mlx5_flow_sub_actions_list sample_act;
@@ -9149,22 +9149,18 @@ struct mlx5_cache_entry *
"for sample");
goto error;
}
- int ret;
-
cache_resource->normal_path_tbl = tbl;
if (resource->ft_type == MLX5DV_FLOW_TABLE_TYPE_FDB) {
- ret = mlx5_flow_os_create_flow_action_default_miss
- (&cache_resource->default_miss);
- if (ret) {
+ if (!sh->default_miss_action) {
rte_flow_error_set(error, ENOMEM,
RTE_FLOW_ERROR_TYPE_UNSPECIFIED,
NULL,
- "cannot create default miss "
- "action");
+ "default miss action was not "
+ "created");
goto error;
}
sample_dv_actions[resource->sample_act.actions_num++] =
- cache_resource->default_miss;
+ sh->default_miss_action;
}
/* Create a DR sample action */
sampler_attr.sample_ratio = cache_resource->ratio;
@@ -9184,11 +9180,7 @@ struct mlx5_cache_entry *
cache_resource->dev = dev;
return &cache_resource->entry;
error:
- if (cache_resource->ft_type == MLX5DV_FLOW_TABLE_TYPE_FDB &&
- cache_resource->default_miss)
- claim_zero(mlx5_flow_os_destroy_flow_action
- (cache_resource->default_miss));
- else
+ if (cache_resource->ft_type != MLX5DV_FLOW_TABLE_TYPE_FDB)
flow_dv_sample_sub_actions_release(dev,
&cache_resource->sample_idx);
if (cache_resource->normal_path_tbl)
@@ -11591,11 +11583,6 @@ struct mlx5_cache_entry *
if (cache_resource->verbs_action)
claim_zero(mlx5_flow_os_destroy_flow_action
(cache_resource->verbs_action));
- if (cache_resource->ft_type == MLX5DV_FLOW_TABLE_TYPE_FDB) {
- if (cache_resource->default_miss)
- claim_zero(mlx5_flow_os_destroy_flow_action
- (cache_resource->default_miss));
- }
if (cache_resource->normal_path_tbl)
flow_dv_tbl_resource_release(MLX5_SH(dev),
cache_resource->normal_path_tbl);