From: Dragos Tatulea <dtatulea@nvidia.com>
To: Jerome Tollet <jtollet@cisco.com>, netdev@vger.kernel.org
Cc: saeedm@nvidia.com, tariqt@nvidia.com, mbloch@nvidia.com,
leonro@nvidia.com, daniel@iogearbox.net, andrew+netdev@lunn.ch,
davem@davemloft.net, edumazet@google.com, kuba@kernel.org,
pabeni@redhat.com, ast@kernel.org, hawk@kernel.org,
john.fastabend@gmail.com, sdf@fomichev.me,
linux-rdma@vger.kernel.org, linux-kernel@vger.kernel.org,
bpf@vger.kernel.org, stable@vger.kernel.org
Subject: Re: [PATCH net v3 2/2] net/mlx5e: Prevent stale XSK buffer release on MPWQE refill retry
Date: Mon, 24 Aug 2026 12:48:10 +0200 [thread overview]
Message-ID: <b4abc8e4-aa9e-4e92-97b8-c6a661014c16@nvidia.com> (raw)
In-Reply-To: <675ce8a404cfe305e788a8e273b4091c9a90f867.1787347981.git.jtollet@cisco.com>
On 21.08.26 23:37, Jerome Tollet wrote:
> With AF_XDP on a striding RQ, mlx5e defers releasing XSK buffers until
> an MPWQE is refilled. If XSK allocation then returns -ENOMEM,
> actual_wq_head is not advanced and a later NAPI poll retries the same
> WQE.
>
> mlx5e_free_rx_mpwqe() currently leaves each released slot marked as
> releasable. On retry it can therefore call xsk_buff_free() again through
> stale pointers after the frames have returned to the XSK pool and been
> reallocated.
>
> Mark each slot as released immediately after xsk_buff_free(). The
> successful allocation path already clears the bitmap after replacing
> all buffers, so retries become idempotent without changing the success
> path.
>
> Fault injection forced three consecutive allocation failures for one
> selected MPWQE in AF_XDP zero-copy mode. Stock freed the same 16 XSK
> buffer pointers on all three attempts, for 48 frees. With this change,
> only the initial 16 frees occurred; retries observed a full bitmap, and
> a later successful allocation cleared it.
>
> Fixes: 4c2a13236807 ("net/mlx5e: RX, Defer page release in striding rq for better recycling")
> Cc: stable@vger.kernel.org
> Signed-off-by: Jerome Tollet <jtollet@cisco.com>
> ---
> drivers/net/ethernet/mellanox/mlx5/core/en_rx.c | 7 +++++--
> 1 file changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c b/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c
> index 7bd0606a5..5fe17d295 100644
> --- a/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c
> +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c
> @@ -609,9 +609,12 @@ mlx5e_free_rx_mpwqe(struct mlx5e_rq *rq, struct mlx5e_mpw_info *wi)
> * is no way to return the page to userspace when the interface
> * goes down.
> */
> - for (i = 0; i < rq->mpwqe.pages_per_wqe; i++)
> - if (no_xdp_xmit || !test_bit(i, wi->skip_release_bitmap))
> + for (i = 0; i < rq->mpwqe.pages_per_wqe; i++) {
> + if (no_xdp_xmit || !test_bit(i, wi->skip_release_bitmap)) {
> xsk_buff_free(xsk_buffs[i]);
> + __set_bit(i, wi->skip_release_bitmap);
> + }
> + }
> } else {
> for (i = 0; i < rq->mpwqe.pages_per_wqe; i++) {
> if (no_xdp_xmit || !test_bit(i, wi->skip_release_bitmap)) {
I'd change this to be consistent with mlx5e_alloc_rx_mpwqe(): set skip_release_bitmap
bits in error path of mlx5e_xsk_alloc_rx_mpwqe.
Thanks,
Dragos
next prev parent reply other threads:[~2026-08-24 10:48 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-20 15:15 [PATCH net v2] net/mlx5e: Prevent stale XSK buffer release on refill retry Jerome Tollet
2026-08-21 15:17 ` sashiko-bot
2026-08-21 21:37 ` [PATCH net v3 0/2] net/mlx5e: Prevent stale XSK buffer release on refill retries Jerome Tollet
2026-08-21 21:37 ` [PATCH net v3 1/2] net/mlx5e: Prevent stale XSK buffer release on refill retry Jerome Tollet
2026-08-21 21:37 ` [PATCH net v3 2/2] net/mlx5e: Prevent stale XSK buffer release on MPWQE " Jerome Tollet
2026-08-24 10:48 ` Dragos Tatulea [this message]
2026-08-24 14:09 ` Jerome Tollet
2026-08-24 17:42 ` Dragos Tatulea
2026-08-24 14:16 ` [PATCH net v4 0/2] net/mlx5e: Prevent stale XSK buffer release on refill retries Jerome Tollet
2026-08-24 14:16 ` [PATCH net v4 1/2] net/mlx5e: Prevent stale XSK buffer release on refill retry Jerome Tollet
2026-08-24 14:16 ` [PATCH net v4 2/2] net/mlx5e: Prevent stale XSK buffer release on MPWQE " Jerome Tollet
2026-08-24 17:41 ` Dragos Tatulea
2026-08-24 19:19 ` Jerome Tollet
2026-08-26 20:08 ` Jerome Tollet
2026-08-28 23:00 ` [PATCH net v4 0/2] net/mlx5e: Prevent stale XSK buffer release on refill retries patchwork-bot+netdevbpf
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=b4abc8e4-aa9e-4e92-97b8-c6a661014c16@nvidia.com \
--to=dtatulea@nvidia.com \
--cc=andrew+netdev@lunn.ch \
--cc=ast@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=daniel@iogearbox.net \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=hawk@kernel.org \
--cc=john.fastabend@gmail.com \
--cc=jtollet@cisco.com \
--cc=kuba@kernel.org \
--cc=leonro@nvidia.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-rdma@vger.kernel.org \
--cc=mbloch@nvidia.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=saeedm@nvidia.com \
--cc=sdf@fomichev.me \
--cc=stable@vger.kernel.org \
--cc=tariqt@nvidia.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.