From: Stanislav Fomichev <stfomichev@gmail.com>
To: Samiullah Khawaja <skhawaja@google.com>
Cc: Jakub Kicinski <kuba@kernel.org>,
"David S . Miller " <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Paolo Abeni <pabeni@redhat.com>,
almasrymina@google.com, willemb@google.com, jdamato@fastly.com,
mkarsten@uwaterloo.ca, netdev@vger.kernel.org
Subject: Re: [PATCH net-next] xsk: Bring back busy polling support in XDP_COPY
Date: Tue, 25 Mar 2025 09:37:31 -0700 [thread overview]
Message-ID: <Z-Lby6WMFkHaaJxB@mini-arch> (raw)
In-Reply-To: <20250325044358.2675384-1-skhawaja@google.com>
On 03/25, Samiullah Khawaja wrote:
> Commit 5ef44b3cb43b ("xsk: Bring back busy polling support") fixed the
> busy polling support in xsk for XDP_ZEROCOPY after it was broken in
> commit 86e25f40aa1e ("net: napi: Add napi_config"). The busy polling
> support with XDP_COPY remained broken since the napi_id setup in
> xsk_rcv_check was removed.
>
> Bring back the setup of napi_id for XDP_COPY so socket level SO_BUSYPOLL
> can be used to poll the underlying napi.
>
> Tested using AF_XDP support in virtio-net by running the xsk_rr AF_XDP
> benchmarking tool shared here:
> https://lore.kernel.org/all/20250320163523.3501305-1-skhawaja@google.com/T/
>
> Enabled socket busy polling using following commands in qemu,
>
> ```
> sudo ethtool -L eth0 combined 1
> sudo ethtool -G eth0 rx 1024
> echo 400 | sudo tee /proc/sys/net/core/busy_read
> echo 100 | sudo tee /sys/class/net/eth0/napi_defer_hard_irqs
> echo 15000 | sudo tee /sys/class/net/eth0/gro_flush_timeout
> ```
>
> Fixes: 5ef44b3cb43b ("xsk: Bring back busy polling support")
> Fixes: 86e25f40aa1e ("net: napi: Add napi_config")
> Signed-off-by: Samiullah Khawaja <skhawaja@google.com>
> ---
> net/xdp/xsk.c | 22 +++++++++++++++-------
> 1 file changed, 15 insertions(+), 7 deletions(-)
>
> diff --git a/net/xdp/xsk.c b/net/xdp/xsk.c
> index e5d104ce7b82..de8bf97b2cb9 100644
> --- a/net/xdp/xsk.c
> +++ b/net/xdp/xsk.c
> @@ -310,6 +310,18 @@ static bool xsk_is_bound(struct xdp_sock *xs)
> return false;
> }
>
> +static void __xsk_mark_napi_id_once(struct sock *sk, struct net_device *dev, u32 qid)
> +{
> + struct netdev_rx_queue *rxq;
> +
> + if (qid >= dev->real_num_rx_queues)
> + return;
> +
> + rxq = __netif_get_rx_queue(dev, qid);
> + if (rxq->napi)
> + __sk_mark_napi_id_once(sk, rxq->napi->napi_id);
> +}
> +
> static int xsk_rcv_check(struct xdp_sock *xs, struct xdp_buff *xdp, u32 len)
> {
> if (!xsk_is_bound(xs))
> @@ -323,6 +335,7 @@ static int xsk_rcv_check(struct xdp_sock *xs, struct xdp_buff *xdp, u32 len)
> return -ENOSPC;
> }
[..]
> + __xsk_mark_napi_id_once(&xs->sk, xs->dev, xs->queue_id);
> return 0;
> }
Can we move this part to a different place? __xsk_rcv maybe? So it
doesn't trigger for the zc case where napi is resolved at bind time.
prev parent reply other threads:[~2025-03-25 16:37 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-03-25 4:43 [PATCH net-next] xsk: Bring back busy polling support in XDP_COPY Samiullah Khawaja
2025-03-25 16:24 ` Samiullah Khawaja
2025-03-25 16:37 ` Stanislav Fomichev [this message]
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=Z-Lby6WMFkHaaJxB@mini-arch \
--to=stfomichev@gmail.com \
--cc=almasrymina@google.com \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=jdamato@fastly.com \
--cc=kuba@kernel.org \
--cc=mkarsten@uwaterloo.ca \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=skhawaja@google.com \
--cc=willemb@google.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.