From: Simon Horman <horms@kernel.org>
To: Florian Fuchs <fuchsfl@gmail.com>
Cc: Geoff Levand <geoff@infradead.org>,
netdev@vger.kernel.org, Jakub Kicinski <kuba@kernel.org>,
Andrew Lunn <andrew+netdev@lunn.ch>,
"David S. Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Paolo Abeni <pabeni@redhat.com>,
Madhavan Srinivasan <maddy@linux.ibm.com>,
Michael Ellerman <mpe@ellerman.id.au>,
Nicholas Piggin <npiggin@gmail.com>,
Christophe Leroy <chleroy@kernel.org>,
linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH net-next] net: ps3_gelic_net: Use napi_alloc_skb() and napi_gro_receive()
Date: Mon, 1 Dec 2025 10:14:10 +0000 [thread overview]
Message-ID: <aS1qciHDiLaK-c2f@horms.kernel.org> (raw)
In-Reply-To: <20251130194155.1950980-1-fuchsfl@gmail.com>
On Sun, Nov 30, 2025 at 08:41:55PM +0100, Florian Fuchs wrote:
> Use the napi functions napi_alloc_skb() and napi_gro_receive() instead
> of netdev_alloc_skb() and netif_receive_skb() for more efficient packet
> receiving. The switch to napi aware functions increases the RX
> throughput, reduces the occurrence of retransmissions and improves the
> resilience against SKB allocation failures.
>
> Signed-off-by: Florian Fuchs <fuchsfl@gmail.com>
> ---
> Note: This change has been tested on real hardware Sony PS3 (CECHL04 PAL),
> the patch was tested for many hours, with continuous system load, high
> network transfer load and injected failslab errors.
>
> In my tests, the RX throughput increased up to 100% and reduced the
> occurrence of retransmissions drastically, with GRO enabled:
>
> iperf3 before and after the commit, where PS3 (with this driver) is on
> the receiving side:
> Before: [ 5] 0.00-10.00 sec 551 MBytes 462 Mbits/sec receiver
> After: [ 5] 0.00-10.00 sec 1.09 GBytes 939 Mbits/sec receiver
>
> stats from the sending client to the PS3:
> Before: [ 5] 0.00-10.00 sec 552 MBytes 463 Mbits/sec 3151 sender
> After: [ 5] 0.00-10.00 sec 1.09 GBytes 940 Mbits/sec 37 sender
Hi Florian,
Thanks for the rest results and confirming this has
been exercised on real HW.
Thinking out loud:
* I see that the napi_mode argument to gelic_descr_prepare_rx ensures
that napi_alloc_skb() is only called from softirq context.
* I see that the driver already calls napi_complete_done() in
it's poll callback, a pre-requisite for using napi_alloc_skb().
So as I understand things the use of the NAPI API by this patch is correct.
And this provides a nice example of the advantages of using this part
of the API.
Reviewed-by: Simon Horman <horms@kernel.org>
next prev parent reply other threads:[~2025-12-01 10:14 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-11-30 19:41 [PATCH net-next] net: ps3_gelic_net: Use napi_alloc_skb() and napi_gro_receive() Florian Fuchs
2025-12-01 10:14 ` Simon Horman [this message]
2025-12-01 10:34 ` Eric Dumazet
2025-12-02 1:00 ` 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=aS1qciHDiLaK-c2f@horms.kernel.org \
--to=horms@kernel.org \
--cc=andrew+netdev@lunn.ch \
--cc=chleroy@kernel.org \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=fuchsfl@gmail.com \
--cc=geoff@infradead.org \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=maddy@linux.ibm.com \
--cc=mpe@ellerman.id.au \
--cc=netdev@vger.kernel.org \
--cc=npiggin@gmail.com \
--cc=pabeni@redhat.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.