Skip to content

Commit fba8334

Browse files
dtatuleakuba-moo
authored andcommitted
net/mlx5e: SHAMPO, Fix invalid WQ linked list unlink
When all the strides in a WQE have been consumed, the WQE is unlinked from the WQ linked list (mlx5_wq_ll_pop()). For SHAMPO, it is possible to receive CQEs with 0 consumed strides for the same WQE even after the WQE is fully consumed and unlinked. This triggers an additional unlink for the same wqe which corrupts the linked list. Fix this scenario by accepting 0 sized consumed strides without unlinking the WQE again. Signed-off-by: Dragos Tatulea <[email protected]> Signed-off-by: Tariq Toukan <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Jakub Kicinski <[email protected]>
1 parent 70bd03b commit fba8334

File tree

1 file changed

+3
-0
lines changed
  • drivers/net/ethernet/mellanox/mlx5/core

1 file changed

+3
-0
lines changed

drivers/net/ethernet/mellanox/mlx5/core/en_rx.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2375,6 +2375,9 @@ static void mlx5e_handle_rx_cqe_mpwrq_shampo(struct mlx5e_rq *rq, struct mlx5_cq
23752375
if (likely(wi->consumed_strides < rq->mpwqe.num_strides))
23762376
return;
23772377

2378+
if (unlikely(!cstrides))
2379+
return;
2380+
23782381
wq = &rq->mpwqe.wq;
23792382
wqe = mlx5_wq_ll_get_wqe(wq, wqe_id);
23802383
mlx5_wq_ll_pop(wq, cqe->wqe_id, &wqe->next.next_wqe_index);

0 commit comments

Comments
 (0)