net/mlx5: fix the timing of releasing drop action
Checks
Commit Message
When creating the drop action Devx object, the global counter set
is also used as in the regular or hairpin queue creation.
The drop action should be destroyed before the global counter set
release procedure. Or else, the counter set object is still
referenced and cannot be released successfully. This would cause
the counter set resources to be exhausted after starting and stopping
the ports repeatedly.
Fixes: 65b3cd0dc39b ("net/mlx5: create global drop action")
Cc: suanmingm@nvidia.com
Cc: stable@dpdk.org
Signed-off-by: Bing Zhao <bingz@nvidia.com>
Acked-by: Suanming Mou <suanmingm@nvidia.com>
---
drivers/net/mlx5/mlx5.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
Comments
Hi,
> -----Original Message-----
> From: Bing Zhao <bingz@nvidia.com>
> Sent: Friday, March 8, 2024 5:23 AM
> To: Suanming Mou <suanmingm@nvidia.com>; dev@dpdk.org; Raslan
> Darawsheh <rasland@nvidia.com>
> Cc: Ori Kam <orika@nvidia.com>; Dariusz Sosnowski
> <dsosnowski@nvidia.com>; Slava Ovsiienko <viacheslavo@nvidia.com>;
> Matan Azrad <matan@nvidia.com>; stable@dpdk.org
> Subject: [PATCH] net/mlx5: fix the timing of releasing drop action
>
> When creating the drop action Devx object, the global counter set is also used
> as in the regular or hairpin queue creation.
>
> The drop action should be destroyed before the global counter set release
> procedure. Or else, the counter set object is still referenced and cannot be
> released successfully. This would cause the counter set resources to be
> exhausted after starting and stopping the ports repeatedly.
>
> Fixes: 65b3cd0dc39b ("net/mlx5: create global drop action")
> Cc: suanmingm@nvidia.com
> Cc: stable@dpdk.org
>
> Signed-off-by: Bing Zhao <bingz@nvidia.com>
> Acked-by: Suanming Mou <suanmingm@nvidia.com>
Patch applied to next-net-mlx,
Kindest regards,
Raslan Darawsheh
@@ -2381,12 +2381,12 @@ mlx5_dev_close(struct rte_eth_dev *dev)
priv->txqs = NULL;
}
mlx5_proc_priv_uninit(dev);
+ if (priv->drop_queue.hrxq)
+ mlx5_drop_action_destroy(dev);
if (priv->q_counters) {
mlx5_devx_cmd_destroy(priv->q_counters);
priv->q_counters = NULL;
}
- if (priv->drop_queue.hrxq)
- mlx5_drop_action_destroy(dev);
if (priv->mreg_cp_tbl)
mlx5_hlist_destroy(priv->mreg_cp_tbl);
mlx5_mprq_free_mp(dev);