[dpdk-stable] patch 'net/mlx5: fix flow age event triggering' has been queued to stable release 20.11.2

David Bouyeure david.bouyeure at fraudbuster.mobi
Tue Jun 15 10:51:47 CEST 2021


Hi,


thanks a lot for the information.


Regards.

On 6/12/21 1:02 AM, Xueming Li wrote:
> Hi,
>
> FYI, your patch has been queued to stable release 20.11.2
>
> Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
> It will be pushed if I get no objections before 06/14/21. So please
> shout if anyone has objections.
>
> Also note that after the patch there's a diff of the upstream commit vs the
> patch applied to the branch. This will indicate if there was any rebasing
> needed to apply to the stable branch. If there were code changes for rebasing
> (ie: not only metadata diffs), please double check that the rebase was
> correctly done.
>
> Queued patches are on a temporary branch at:
> https://github.com/steevenlee/dpdk
>
> This queued commit can be viewed at:
> https://github.com/steevenlee/dpdk/commit/cb6f74724dc2f6539709210fd1dc1725d8712718
>
> Thanks.
>
> Xueming Li <xuemingl at nvidia.com>
>
> ---
>  From cb6f74724dc2f6539709210fd1dc1725d8712718 Mon Sep 17 00:00:00 2001
> From: Michael Baum <michaelba at nvidia.com>
> Date: Thu, 29 Apr 2021 12:55:41 +0300
> Subject: [PATCH] net/mlx5: fix flow age event triggering
> Cc: Luca Boccassi <bluca at debian.org>
>
> [ upstream commit 447d4d797d21b35185d511b7c280d7fe171b29bd ]
>
> A FLOW_AGE event should be invoked when a new aged-out flow is detected
> by the PMD after the last user get-aged query calling.
> The PMD manages 2 flags for this information and check them in order to
> decide if an event should be invoked:
> MLX5_AGE_EVENT_NEW - a new aged-out flow was detected. after the last
> check.
> MLX5_AGE_TRIGGER - get-aged query was called after the last aged-out
> flow.
> The 2 flags were unset after the event invoking.
>
> When the user calls get-aged query from the event callback, the TRIGGER
> flag was set inside the user callback and unset directly after the
> callback what may stop the event invoking forever.
>
> Unset the TRIGGER flag before the event invoking in order to allow set
> it by the user callback.
>
> Fixes: f935ed4b645a ("net/mlx5: support flow hit action for aging")
>
> Reported-by: David Bouyeure <david.bouyeure at fraudbuster.mobi>
> Signed-off-by: Michael Baum <michaelba at nvidia.com>
> Acked-by: Matan Azrad <matan at nvidia.com>
> ---
>   drivers/net/mlx5/mlx5.c | 8 +++++---
>   drivers/net/mlx5/mlx5.h | 2 ++
>   2 files changed, 7 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/net/mlx5/mlx5.c b/drivers/net/mlx5/mlx5.c
> index b8f31497b2..f5c1c800fc 100644
> --- a/drivers/net/mlx5/mlx5.c
> +++ b/drivers/net/mlx5/mlx5.c
> @@ -549,11 +549,13 @@ mlx5_age_event_prepare(struct mlx5_dev_ctx_shared *sh)
>   		age_info = &sh->port[i].age_info;
>   		if (!MLX5_AGE_GET(age_info, MLX5_AGE_EVENT_NEW))
>   			continue;
> -		if (MLX5_AGE_GET(age_info, MLX5_AGE_TRIGGER))
> +		MLX5_AGE_UNSET(age_info, MLX5_AGE_EVENT_NEW);
> +		if (MLX5_AGE_GET(age_info, MLX5_AGE_TRIGGER)) {
> +			MLX5_AGE_UNSET(age_info, MLX5_AGE_TRIGGER);
>   			rte_eth_dev_callback_process
>   				(&rte_eth_devices[sh->port[i].devx_ih_port_id],
>   				RTE_ETH_EVENT_FLOW_AGED, NULL);
> -		age_info->flags = 0;
> +		}
>   	}
>   }
>   
> @@ -562,7 +564,7 @@ mlx5_age_event_prepare(struct mlx5_dev_ctx_shared *sh)
>    *
>    * @param[in] sh
>    *   Pointer to mlx5_dev_ctx_shared object.
> - * @param[in] sh
> + * @param[in] config
>    *   Pointer to user dev config.
>    */
>   static void
> diff --git a/drivers/net/mlx5/mlx5.h b/drivers/net/mlx5/mlx5.h
> index 35f9bece05..9437f45480 100644
> --- a/drivers/net/mlx5/mlx5.h
> +++ b/drivers/net/mlx5/mlx5.h
> @@ -538,6 +538,8 @@ struct mlx5_aso_age_mng {
>   #define MLX5_AGE_TRIGGER		2
>   #define MLX5_AGE_SET(age_info, BIT) \
>   	((age_info)->flags |= (1 << (BIT)))
> +#define MLX5_AGE_UNSET(age_info, BIT) \
> +	((age_info)->flags &= ~(1 << (BIT)))
>   #define MLX5_AGE_GET(age_info, BIT) \
>   	((age_info)->flags & (1 << (BIT)))
>   #define GET_PORT_AGE_INFO(priv) \


More information about the stable mailing list