* [PATCH net-next] net: dpaa_eth: convert to napi_gro_receive
@ 2026-07-06 3:06 Rosen Penev
2026-07-06 8:39 ` Vladimir Oltean
0 siblings, 1 reply; 3+ messages in thread
From: Rosen Penev @ 2026-07-06 3:06 UTC (permalink / raw)
To: netdev
Cc: Madalin Bucur, Andrew Lunn, David S. Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni, open list
Replace netif_receive_skb() with napi_gro_receive() to improve receive
performance for this driver. It has rx checksum support so routing speed
shouldn't suffer.
Tested on a WatchGuard Firebox M300.
iperf3 bidir speed test:
[ ID][Role] Interval Transfer Bitrate Retr
[ 5][TX-C] 0.00-60.01 sec 5.35 GBytes 766 Mbits/sec 184 sender
[ 5][TX-C] 0.00-60.02 sec 5.35 GBytes 766 Mbits/sec receiver
[ 7][RX-C] 0.00-60.01 sec 5.50 GBytes 787 Mbits/sec 124 sender
[ 7][RX-C] 0.00-60.02 sec 5.49 GBytes 786 Mbits/sec receiver
After:
[ ID][Role] Interval Transfer Bitrate Retr
[ 5][TX-C] 0.00-60.01 sec 6.49 GBytes 929 Mbits/sec 0 sender
[ 5][TX-C] 0.00-60.02 sec 6.49 GBytes 928 Mbits/sec receiver
[ 7][RX-C] 0.00-60.01 sec 6.55 GBytes 938 Mbits/sec 0 sender
[ 7][RX-C] 0.00-60.02 sec 6.55 GBytes 937 Mbits/sec receiver
Assisted-by: Opencode:big-pickle
Signed-off-by: Rosen Penev <rosenp@gmail.com>
---
drivers/net/ethernet/freescale/dpaa/dpaa_eth.c | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c b/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c
index ad2d8256eb8d..83191f636ec7 100644
--- a/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c
+++ b/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c
@@ -2824,10 +2824,7 @@ static enum qman_cb_dqrr_result rx_default_dqrr(struct qman_portal *portal,
skb_len = skb->len;
- if (unlikely(netif_receive_skb(skb) == NET_RX_DROP)) {
- percpu_stats->rx_dropped++;
- return qman_cb_dqrr_consume;
- }
+ napi_gro_receive(&np->napi, skb);
percpu_stats->rx_packets++;
percpu_stats->rx_bytes += skb_len;
--
2.55.0
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH net-next] net: dpaa_eth: convert to napi_gro_receive
2026-07-06 3:06 [PATCH net-next] net: dpaa_eth: convert to napi_gro_receive Rosen Penev
@ 2026-07-06 8:39 ` Vladimir Oltean
2026-07-06 23:25 ` Rosen Penev
0 siblings, 1 reply; 3+ messages in thread
From: Vladimir Oltean @ 2026-07-06 8:39 UTC (permalink / raw)
To: Rosen Penev
Cc: netdev, Madalin Bucur, Andrew Lunn, David S. Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni, open list
Hi Rosen,
On Sun, Jul 05, 2026 at 08:06:32PM -0700, Rosen Penev wrote:
> Replace netif_receive_skb() with napi_gro_receive() to improve receive
> performance for this driver. It has rx checksum support so routing speed
> shouldn't suffer.
>
> Tested on a WatchGuard Firebox M300.
>
> iperf3 bidir speed test:
>
> [ ID][Role] Interval Transfer Bitrate Retr
> [ 5][TX-C] 0.00-60.01 sec 5.35 GBytes 766 Mbits/sec 184 sender
> [ 5][TX-C] 0.00-60.02 sec 5.35 GBytes 766 Mbits/sec receiver
> [ 7][RX-C] 0.00-60.01 sec 5.50 GBytes 787 Mbits/sec 124 sender
> [ 7][RX-C] 0.00-60.02 sec 5.49 GBytes 786 Mbits/sec receiver
>
> After:
>
> [ ID][Role] Interval Transfer Bitrate Retr
> [ 5][TX-C] 0.00-60.01 sec 6.49 GBytes 929 Mbits/sec 0 sender
> [ 5][TX-C] 0.00-60.02 sec 6.49 GBytes 928 Mbits/sec receiver
> [ 7][RX-C] 0.00-60.01 sec 6.55 GBytes 938 Mbits/sec 0 sender
> [ 7][RX-C] 0.00-60.02 sec 6.55 GBytes 937 Mbits/sec receiver
>
> Assisted-by: Opencode:big-pickle
> Signed-off-by: Rosen Penev <rosenp@gmail.com>
> ---
> drivers/net/ethernet/freescale/dpaa/dpaa_eth.c | 5 +----
> 1 file changed, 1 insertion(+), 4 deletions(-)
>
> diff --git a/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c b/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c
> index ad2d8256eb8d..83191f636ec7 100644
> --- a/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c
> +++ b/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c
> @@ -2824,10 +2824,7 @@ static enum qman_cb_dqrr_result rx_default_dqrr(struct qman_portal *portal,
>
> skb_len = skb->len;
>
> - if (unlikely(netif_receive_skb(skb) == NET_RX_DROP)) {
> - percpu_stats->rx_dropped++;
> - return qman_cb_dqrr_consume;
> - }
> + napi_gro_receive(&np->napi, skb);
>
> percpu_stats->rx_packets++;
> percpu_stats->rx_bytes += skb_len;
> --
> 2.55.0
>
>
(thanks to Madalin for pointing out this change to me)
I do not have time this week to test this patch, but in premise, you are
creating exactly the conditions for this bug to occur:
https://github.com/nxp-qoriq/linux/commit/d0ebec2092d6c5fe327513cb66e02d8c2c1a8f87
In sdk_dpaa we already do GRO for TCP flows and it has the problems
pointed out in the above commit. With your change to use GRO for all
capable flows, I currently have no reason to believe that without
similar countermeasures as those taken by sdk_dpaa (napi_gro_receive()
global to the entire QMan portal) the outcome would be different.
Have you tested traffic in mixed scenarios, where flows from multiple
interfaces land on the same CPU?
Until further evidence comes in:
pw-bot: cr
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH net-next] net: dpaa_eth: convert to napi_gro_receive
2026-07-06 8:39 ` Vladimir Oltean
@ 2026-07-06 23:25 ` Rosen Penev
0 siblings, 0 replies; 3+ messages in thread
From: Rosen Penev @ 2026-07-06 23:25 UTC (permalink / raw)
To: Vladimir Oltean
Cc: netdev, Madalin Bucur, Andrew Lunn, David S. Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni, open list
On Mon, Jul 6, 2026 at 1:39 AM Vladimir Oltean <olteanv@gmail.com> wrote:
>
> Hi Rosen,
>
> On Sun, Jul 05, 2026 at 08:06:32PM -0700, Rosen Penev wrote:
> > Replace netif_receive_skb() with napi_gro_receive() to improve receive
> > performance for this driver. It has rx checksum support so routing speed
> > shouldn't suffer.
> >
> > Tested on a WatchGuard Firebox M300.
> >
> > iperf3 bidir speed test:
> >
> > [ ID][Role] Interval Transfer Bitrate Retr
> > [ 5][TX-C] 0.00-60.01 sec 5.35 GBytes 766 Mbits/sec 184 sender
> > [ 5][TX-C] 0.00-60.02 sec 5.35 GBytes 766 Mbits/sec receiver
> > [ 7][RX-C] 0.00-60.01 sec 5.50 GBytes 787 Mbits/sec 124 sender
> > [ 7][RX-C] 0.00-60.02 sec 5.49 GBytes 786 Mbits/sec receiver
> >
> > After:
> >
> > [ ID][Role] Interval Transfer Bitrate Retr
> > [ 5][TX-C] 0.00-60.01 sec 6.49 GBytes 929 Mbits/sec 0 sender
> > [ 5][TX-C] 0.00-60.02 sec 6.49 GBytes 928 Mbits/sec receiver
> > [ 7][RX-C] 0.00-60.01 sec 6.55 GBytes 938 Mbits/sec 0 sender
> > [ 7][RX-C] 0.00-60.02 sec 6.55 GBytes 937 Mbits/sec receiver
> >
> > Assisted-by: Opencode:big-pickle
> > Signed-off-by: Rosen Penev <rosenp@gmail.com>
> > ---
> > drivers/net/ethernet/freescale/dpaa/dpaa_eth.c | 5 +----
> > 1 file changed, 1 insertion(+), 4 deletions(-)
> >
> > diff --git a/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c b/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c
> > index ad2d8256eb8d..83191f636ec7 100644
> > --- a/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c
> > +++ b/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c
> > @@ -2824,10 +2824,7 @@ static enum qman_cb_dqrr_result rx_default_dqrr(struct qman_portal *portal,
> >
> > skb_len = skb->len;
> >
> > - if (unlikely(netif_receive_skb(skb) == NET_RX_DROP)) {
> > - percpu_stats->rx_dropped++;
> > - return qman_cb_dqrr_consume;
> > - }
> > + napi_gro_receive(&np->napi, skb);
> >
> > percpu_stats->rx_packets++;
> > percpu_stats->rx_bytes += skb_len;
> > --
> > 2.55.0
> >
> >
>
> (thanks to Madalin for pointing out this change to me)
>
> I do not have time this week to test this patch, but in premise, you are
> creating exactly the conditions for this bug to occur:
> https://github.com/nxp-qoriq/linux/commit/d0ebec2092d6c5fe327513cb66e02d8c2c1a8f87
>
> In sdk_dpaa we already do GRO for TCP flows and it has the problems
> pointed out in the above commit. With your change to use GRO for all
> capable flows, I currently have no reason to believe that without
> similar countermeasures as those taken by sdk_dpaa (napi_gro_receive()
> global to the entire QMan portal) the outcome would be different.
>
> Have you tested traffic in mixed scenarios, where flows from multiple
> interfaces land on the same CPU?
Just iperf3 --bidir.
>
> Until further evidence comes in:
Maybe netif_receive_skb_list is a better fit here.
>
> pw-bot: cr
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-07-06 23:25 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-06 3:06 [PATCH net-next] net: dpaa_eth: convert to napi_gro_receive Rosen Penev
2026-07-06 8:39 ` Vladimir Oltean
2026-07-06 23:25 ` Rosen Penev
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox