OSDN Git Service

net/mlx5e: Fix missing reset of SW metadata in Striding RQ reset
authorAya Levin <ayal@mellanox.com>
Thu, 12 Mar 2020 10:35:32 +0000 (12:35 +0200)
committerSaeed Mahameed <saeedm@mellanox.com>
Tue, 24 Mar 2020 21:43:02 +0000 (14:43 -0700)
When resetting the RQ (moving RQ state from RST to RDY), the driver
resets the WQ's SW metadata.
In striding RQ mode, we maintain a field that reflects the actual
expected WQ head (including in progress WQEs posted to the ICOSQ).
It was mistakenly not reset together with the WQ. Fix this here.

Fixes: 8276ea1353a4 ("net/mlx5e: Report and recover from CQE with error on RQ")
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/txrx.h

index a226277..f07b139 100644 (file)
@@ -181,10 +181,12 @@ mlx5e_tx_dma_unmap(struct device *pdev, struct mlx5e_sq_dma *dma)
 
 static inline void mlx5e_rqwq_reset(struct mlx5e_rq *rq)
 {
-       if (rq->wq_type == MLX5_WQ_TYPE_LINKED_LIST_STRIDING_RQ)
+       if (rq->wq_type == MLX5_WQ_TYPE_LINKED_LIST_STRIDING_RQ) {
                mlx5_wq_ll_reset(&rq->mpwqe.wq);
-       else
+               rq->mpwqe.actual_wq_head = 0;
+       } else {
                mlx5_wq_cyc_reset(&rq->wqe.wq);
+       }
 }
 
 /* SW parser related functions */