The Flow counters created with Verbs are erroneously destroyed in Flow remove function (flow_verbs_remove()). Counter Verbs handles stored in the translated rule buffer become invalid. If rule is reapplied with these invalid counter handles the driver hangs.
The counter should be destroyed with Verbs in the Flow destroy function. The Flow remove function should keep counters intact. Fixes: 60bd8c9747e8 ("net/mlx5: add count flow action") Cc: sta...@dpdk.org Signed-off-by: Viacheslav Ovsiienko <viachesl...@mellanox.com> --- drivers/net/mlx5/mlx5_flow_verbs.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/net/mlx5/mlx5_flow_verbs.c b/drivers/net/mlx5/mlx5_flow_verbs.c index 81bc39f..2e506b9 100644 --- a/drivers/net/mlx5/mlx5_flow_verbs.c +++ b/drivers/net/mlx5/mlx5_flow_verbs.c @@ -1669,10 +1669,6 @@ verbs->hrxq = NULL; } } - if (flow->counter) { - flow_verbs_counter_release(flow->counter); - flow->counter = NULL; - } } /** @@ -1696,6 +1692,10 @@ LIST_REMOVE(dev_flow, next); rte_free(dev_flow); } + if (flow->counter) { + flow_verbs_counter_release(flow->counter); + flow->counter = NULL; + } } /** -- 1.8.3.1