Message ID | 20240415094804.8016-6-paul.barker.ct@bp.renesas.com (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Geert Uytterhoeven |
Headers | show |
Series | Improve GbEth performance on Renesas RZ/G2L and related SoCs | expand |
On 4/15/24 12:48 PM, Paul Barker wrote: > Software IRQ Coalescing is required to improve network stack performance > in the RZ/G2L SoC family and the RZ/G3S SoC, i.e. the SoCs which use the > GbEth IP. > > This patch gives the following improvements during testing with iperf3: > > * RZ/G2L: > * TCP RX: same bandwidth with -6% CPU load (76% -> 71%) > * UDP RX: same bandwidth with -10% CPU load (99% -> 89%) > > * RZ/G2UL: > * UDP RX: +4200% bandwidth (1.23Mbps -> 53Mbps) > > * RZ/G3S: > * UDP RX: +425% bandwidth (1.23Mbps -> 6.46Mbps) > > The improvement of UDP RX bandwidth for the single core SoCs (RZ/G2UL & > RZ/G3S) is particularly critical. > > Signed-off-by: Paul Barker <paul.barker.ct@bp.renesas.com> Reviewed-by: Sergey Shtylyov <s.shtylyov@omp.ru> [...] > diff --git a/drivers/net/ethernet/renesas/ravb.h b/drivers/net/ethernet/renesas/ravb.h > index 71de2a7aa27c..9c6392ade2f1 100644 > --- a/drivers/net/ethernet/renesas/ravb.h > +++ b/drivers/net/ethernet/renesas/ravb.h > @@ -1054,6 +1054,7 @@ struct ravb_hw_info { > u32 rx_max_desc_use; > u32 rx_desc_size; > unsigned aligned_tx: 1; > + unsigned needs_irq_coalesce:1; /* Needs software IRQ coalescing */ Perhaps something shorter, like coalesce_irqs? [...] MBR, Sergey
diff --git a/drivers/net/ethernet/renesas/ravb.h b/drivers/net/ethernet/renesas/ravb.h index 71de2a7aa27c..9c6392ade2f1 100644 --- a/drivers/net/ethernet/renesas/ravb.h +++ b/drivers/net/ethernet/renesas/ravb.h @@ -1054,6 +1054,7 @@ struct ravb_hw_info { u32 rx_max_desc_use; u32 rx_desc_size; unsigned aligned_tx: 1; + unsigned needs_irq_coalesce:1; /* Needs software IRQ coalescing */ /* hardware features */ unsigned internal_delay:1; /* AVB-DMAC has internal delays */ diff --git a/drivers/net/ethernet/renesas/ravb_main.c b/drivers/net/ethernet/renesas/ravb_main.c index 12618171f6d5..26b70b996bd3 100644 --- a/drivers/net/ethernet/renesas/ravb_main.c +++ b/drivers/net/ethernet/renesas/ravb_main.c @@ -2663,6 +2663,7 @@ static const struct ravb_hw_info gbeth_hw_info = { .tx_counters = 1, .carrier_counters = 1, .half_duplex = 1, + .needs_irq_coalesce = 1, }; static const struct of_device_id ravb_match_table[] = { @@ -2937,6 +2938,9 @@ static int ravb_probe(struct platform_device *pdev) if (info->nc_queues) netif_napi_add(ndev, &priv->napi[RAVB_NC], ravb_poll); + if (info->needs_irq_coalesce) + netdev_sw_irq_coalesce_default_on(ndev); + /* Network device register */ error = register_netdev(ndev); if (error)
Software IRQ Coalescing is required to improve network stack performance in the RZ/G2L SoC family and the RZ/G3S SoC, i.e. the SoCs which use the GbEth IP. This patch gives the following improvements during testing with iperf3: * RZ/G2L: * TCP RX: same bandwidth with -6% CPU load (76% -> 71%) * UDP RX: same bandwidth with -10% CPU load (99% -> 89%) * RZ/G2UL: * UDP RX: +4200% bandwidth (1.23Mbps -> 53Mbps) * RZ/G3S: * UDP RX: +425% bandwidth (1.23Mbps -> 6.46Mbps) The improvement of UDP RX bandwidth for the single core SoCs (RZ/G2UL & RZ/G3S) is particularly critical. Signed-off-by: Paul Barker <paul.barker.ct@bp.renesas.com> --- drivers/net/ethernet/renesas/ravb.h | 1 + drivers/net/ethernet/renesas/ravb_main.c | 4 ++++ 2 files changed, 5 insertions(+)