mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH net V2] net/mlx5e: Order ICOSQ cc update after CQ doorbell
@ 2026-10-06 10:58 Tariq Toukan
  2026-10-06 11:05 ` netdev-bot+sinfo
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Tariq Toukan @ 2026-10-06 10:58 UTC (permalink / raw)
  To: Andrew Lunn, David S. Miller, Eric Dumazet, Jakub Kicinski,
	netdev, Paolo Abeni
  Cc: Dragos Tatulea, Gal Pressman, Leon Romanovsky, open list,
	linux-rdma, Li RongQing, Mark Bloch, Saeed Mahameed,
	Saeed Mahameed, Tariq Toukan, Tariq Toukan

From: Li RongQing <lirongqing@baidu.com>

mlx5e_poll_ico_cq() requires sq->cc to be updated only after
mlx5_cqwq_update_db_record(), otherwise a CQ overrun may occur.

The current implementation updates sq->cc before the CQ doorbell
record, violating this ordering requirement.

Update the CQ doorbell record first and use dma_wmb() before updating
sq->cc. This ensures that the CQ space is released to the device
before the corresponding ICOSQ consumer index is updated by software.

Fixes: fd9b4be8002c ("net/mlx5e: RX, Support multiple outstanding UMR posts")
Signed-off-by: Li RongQing <lirongqing@baidu.com>
Reviewed-by: Dragos Tatulea <dtatulea@nvidia.com>
Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
---
 drivers/net/ethernet/mellanox/mlx5/core/en_rx.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

V2:
- Resending, after verified.

V1:
https://lore.kernel.org/all/20260820030821.1731-1-lirongqing@baidu.com/

diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c b/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c
index 7bd0606a5253..903af3b3e779 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c
@@ -908,10 +908,12 @@ int mlx5e_poll_ico_cq(struct mlx5e_cq *cq)
 		} while (!last_wqe);
 	} while ((++i < MLX5E_TX_CQ_POLL_BUDGET) && (cqe = mlx5_cqwq_get_cqe(&cq->wq)));
 
-	sq->cc = sqcc;
-
 	mlx5_cqwq_update_db_record(&cq->wq);
 
+	/* ensure cq space is freed before enabling more cqes */
+	dma_wmb();
+
+	sq->cc = sqcc;
 	return i;
 }
 

base-commit: d5a007b9b457c915ab1a53227e8939e4018aa97a
-- 
2.44.0


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH net V2] net/mlx5e: Order ICOSQ cc update after CQ doorbell
  2026-10-06 10:58 [PATCH net V2] net/mlx5e: Order ICOSQ cc update after CQ doorbell Tariq Toukan
@ 2026-10-06 11:05 ` netdev-bot+sinfo
  2026-10-07 18:40 ` Daniel Machon
  2026-10-08 17:50 ` patchwork-bot+netdevbpf
  2 siblings, 0 replies; 4+ messages in thread
From: netdev-bot+sinfo @ 2026-10-06 11:05 UTC (permalink / raw)
  To: Tariq Toukan
  Cc: Andrew Lunn, David S. Miller, Eric Dumazet, Jakub Kicinski,
	netdev, Paolo Abeni, Dragos Tatulea, Gal Pressman,
	Leon Romanovsky, open list, linux-rdma, Li RongQing, Mark Bloch,
	Saeed Mahameed, Saeed Mahameed, Tariq Toukan

Hi!

This is an automated message. This series looks like a fix, but its
commit messages seem to be missing some information:

 - How the issue was discovered, e.g. hit in production, hit during
   development, syzbot report, manual code inspection, LLM or static
   analysis tool scan.

 - Whether the issue was actually triggered, or is only theoretical
   (e.g. found by code inspection). If it was triggered please include
   the symptoms, like the stack trace or error messages.

 - What hardware the change was tested on. For driver fixes please
   mention the device (and if relevant firmware version) used for
   testing, or say that the change was not tested on real hardware.

Please do not repost the series just to address the above. Instead,
reply to this email with the missing information, so that reviewers
can take it into account. If the series needs another revision for
other reasons, please include the information in the commit messages
then.

The evaluation is done by an LLM so it may be wrong, if you think
that is the case please reply and explain.

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH net V2] net/mlx5e: Order ICOSQ cc update after CQ doorbell
  2026-10-06 10:58 [PATCH net V2] net/mlx5e: Order ICOSQ cc update after CQ doorbell Tariq Toukan
  2026-10-06 11:05 ` netdev-bot+sinfo
@ 2026-10-07 18:40 ` Daniel Machon
  2026-10-08 17:50 ` patchwork-bot+netdevbpf
  2 siblings, 0 replies; 4+ messages in thread
From: Daniel Machon @ 2026-10-07 18:40 UTC (permalink / raw)
  To: Tariq Toukan
  Cc: Andrew Lunn, David S. Miller, Eric Dumazet, Jakub Kicinski,
	netdev, Paolo Abeni, Dragos Tatulea, Gal Pressman,
	Leon Romanovsky, open list, linux-rdma, Li RongQing, Mark Bloch,
	Saeed Mahameed, Saeed Mahameed, Tariq Toukan

> From: Li RongQing <lirongqing@baidu.com>
> 
> mlx5e_poll_ico_cq() requires sq->cc to be updated only after
> mlx5_cqwq_update_db_record(), otherwise a CQ overrun may occur.
> 
> The current implementation updates sq->cc before the CQ doorbell
> record, violating this ordering requirement.
> 
> Update the CQ doorbell record first and use dma_wmb() before updating
> sq->cc. This ensures that the CQ space is released to the device
> before the corresponding ICOSQ consumer index is updated by software.
> 

Reviewed-by: Daniel Machon <daniel.machon@microchip.com>


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH net V2] net/mlx5e: Order ICOSQ cc update after CQ doorbell
  2026-10-06 10:58 [PATCH net V2] net/mlx5e: Order ICOSQ cc update after CQ doorbell Tariq Toukan
  2026-10-06 11:05 ` netdev-bot+sinfo
  2026-10-07 18:40 ` Daniel Machon
@ 2026-10-08 17:50 ` patchwork-bot+netdevbpf
  2 siblings, 0 replies; 4+ messages in thread
From: patchwork-bot+netdevbpf @ 2026-10-08 17:50 UTC (permalink / raw)
  To: Tariq Toukan
  Cc: andrew+netdev, davem, edumazet, kuba, netdev, pabeni, dtatulea,
	gal, leon, linux-kernel, linux-rdma, lirongqing, mbloch, saeedm,
	saeedm, tariqt

Hello:

This patch was applied to netdev/net.git (main)
by Jakub Kicinski <kuba@kernel.org>:

On Tue, 6 Oct 2026 13:58:20 +0300 you wrote:
> From: Li RongQing <lirongqing@baidu.com>
> 
> mlx5e_poll_ico_cq() requires sq->cc to be updated only after
> mlx5_cqwq_update_db_record(), otherwise a CQ overrun may occur.
> 
> The current implementation updates sq->cc before the CQ doorbell
> record, violating this ordering requirement.
> 
> [...]

Here is the summary with links:
  - [net,V2] net/mlx5e: Order ICOSQ cc update after CQ doorbell
    https://git.kernel.org/netdev/net/c/b056ca4d3742

You are awesome, thank you!
-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html



^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2026-10-08 17:50 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-10-06 10:58 [PATCH net V2] net/mlx5e: Order ICOSQ cc update after CQ doorbell Tariq Toukan
2026-10-06 11:05 ` netdev-bot+sinfo
2026-10-07 18:40 ` Daniel Machon
2026-10-08 17:50 ` patchwork-bot+netdevbpf

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®