net/mlx5: preserve indirect actions on restart
authorDmitry Kozlyuk <dkozlyuk@nvidia.com>
Tue, 2 Nov 2021 17:01:35 +0000 (19:01 +0200)
committerFerruh Yigit <ferruh.yigit@intel.com>
Tue, 2 Nov 2021 17:59:17 +0000 (18:59 +0100)
commitec4e11d41d129ebc7c395b567827492e56fb08b7
tree540aada2e095aa9bd495b53f5b30a0e0bfbc5f93
parentbc5bee028ebc79c86dd846e9b661e0541e5da23c
net/mlx5: preserve indirect actions on restart

MLX5 PMD uses reference counting to manage RX queue resources.
After port stop shared RSS actions kept references to RX queues,
preventing resource release. As a result, internal PMD mempool
for such queues had been exhausted after a number of port restarts.
Diagnostic message from rte_eth_dev_start():

    Rx queue allocation failed: Cannot allocate memory

Dereference RX queues used by indirect actions on port stop (detach)
and restore references on port start (attach) in order to allow RX queue
resource release, but keep indirect RSS across the port restart.
Replace queue IDs in HW by drop queue ID on detach and restore actual
queue IDs on attach.

When the port is stopped, create indirect RSS in the detached state.
As a result, MLX5 PMD is able to keep all its indirect actions
across port restart. Advertise this capability.

Fixes: 4b61b8774be9 ("ethdev: introduce indirect flow action")
Cc: stable@dpdk.org
Signed-off-by: Dmitry Kozlyuk <dkozlyuk@nvidia.com>
Acked-by: Matan Azrad <matan@nvidia.com>
drivers/net/mlx5/mlx5_ethdev.c
drivers/net/mlx5/mlx5_flow.c
drivers/net/mlx5/mlx5_flow.h
drivers/net/mlx5/mlx5_rx.h
drivers/net/mlx5/mlx5_rxq.c
drivers/net/mlx5/mlx5_trigger.c