net/mlx5e: Fix ICOSQ recovery flow with Striding RQ
authorAya Levin <ayal@mellanox.com>
Mon, 16 Mar 2020 14:53:10 +0000 (16:53 +0200)
committerSaeed Mahameed <saeedm@mellanox.com>
Tue, 24 Mar 2020 21:43:05 +0000 (14:43 -0700)
commite239c6d686e1c37fb2ab143162dfb57471a8643f
treec271174555ff77593e9e3a82a06c48e7f5899b55
parent39369fd536d485a99a59d8e357c0d4d3ce19a3b8
net/mlx5e: Fix ICOSQ recovery flow with Striding RQ

In striding RQ mode, the buffers of an RX WQE are first
prepared and posted to the HW using a UMR WQEs via the ICOSQ.
We maintain the state of these in-progress WQEs in the RQ
SW struct.

In the flow of ICOSQ recovery, the corresponding RQ is not
in error state, hence:

- The buffers of the in-progress WQEs must be released
  and the RQ metadata should reflect it.
- Existing RX WQEs in the RQ should not be affected.

For this, wrap the dealloc of the in-progress WQEs in
a function, and use it in the ICOSQ recovery flow
instead of mlx5e_free_rx_descs().

Fixes: be5323c8379f ("net/mlx5e: Report and recover from CQE error on ICOSQ")
Signed-off-by: Aya Levin <ayal@mellanox.com>
Reviewed-by: Tariq Toukan <tariqt@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
drivers/net/ethernet/mellanox/mlx5/core/en.h
drivers/net/ethernet/mellanox/mlx5/core/en/reporter_rx.c
drivers/net/ethernet/mellanox/mlx5/core/en_main.c