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(-) diff --git a/drivers/net/mlx5/mlx5_flow.h b/drivers/net/mlx5/mlx5_flow.h index 2178a04..e9e3397 100644 --- a/drivers/net/mlx5/mlx5_flow.h +++ b/drivers/net/mlx5/mlx5_flow.h @@ -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; diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c index 27d711d..5845b98 100644 --- a/drivers/net/mlx5/mlx5_flow_dv.c +++ b/drivers/net/mlx5/mlx5_flow_dv.c @@ -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); -- 1.8.3.1
This patch fixes the incorrect checking for the return value of default miss action creation. Fixes: 14020ad53d4e ("net/mlx5: wrap default miss flow action per OS") Cc: stable@dpdk.org Signed-off-by: Jiawei Wang <jiaweiw@nvidia.com> Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com> --- drivers/net/mlx5/mlx5_flow_dv.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c index 1a0c0be..27d711d 100644 --- a/drivers/net/mlx5/mlx5_flow_dv.c +++ b/drivers/net/mlx5/mlx5_flow_dv.c @@ -9155,7 +9155,7 @@ struct mlx5_cache_entry * 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 (ret) { rte_flow_error_set(error, ENOMEM, RTE_FLOW_ERROR_TYPE_UNSPECIFIED, NULL, -- 1.8.3.1
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(-) diff --git a/drivers/net/mlx5/mlx5_flow.h b/drivers/net/mlx5/mlx5_flow.h index 2178a04..e9e3397 100644 --- a/drivers/net/mlx5/mlx5_flow.h +++ b/drivers/net/mlx5/mlx5_flow.h @@ -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; diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c index 27d711d..5845b98 100644 --- a/drivers/net/mlx5/mlx5_flow_dv.c +++ b/drivers/net/mlx5/mlx5_flow_dv.c @@ -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); -- 1.8.3.1
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>