netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH net-next] r8169: enable GRO software interrupt coalescing per default
@ 2022-11-26 14:07 Heiner Kallweit
  2022-11-29  3:07 ` Jakub Kicinski
  0 siblings, 1 reply; 3+ messages in thread
From: Heiner Kallweit @ 2022-11-26 14:07 UTC (permalink / raw)
  To: Jakub Kicinski, David Miller, Realtek linux nic maintainers,
	Eric Dumazet, Paolo Abeni
  Cc: netdev

There are reports about r8169 not reaching full line speed on certain
systems (e.g. SBC's) with a 2.5Gbps link.
There was a time when hardware interrupt coalescing was enabled per
default, but this was changed due to ASPM-related issues on few systems.

Meanwhile we have sysfs attributes for controlling kind of
"software interrupt coalescing" on the GRO level. However most distros
and users don't know about it. So lets set a conservative default for
both involved parameters. Users can still override the defaults via
sysfs. Don't enable these settings on the fast ethernet chip versions,
they are slow enough.

Even with these conservative setting interrupt load on my 1Gbps test
system reduced significantly.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
---
 drivers/net/ethernet/realtek/r8169_main.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
index 5bc1181f8..1cb51ec71 100644
--- a/drivers/net/ethernet/realtek/r8169_main.c
+++ b/drivers/net/ethernet/realtek/r8169_main.c
@@ -5282,6 +5282,12 @@ static int rtl_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
 	dev->hw_features |= NETIF_F_RXALL;
 	dev->hw_features |= NETIF_F_RXFCS;
 
+	if (tp->supports_gmii) {
+		/* enable software interrupt coalescing per default */
+		dev->gro_flush_timeout = 20000;
+		dev->napi_defer_hard_irqs = 1;
+	}
+
 	/* configure chip for default features */
 	rtl8169_set_features(dev, dev->features);
 
-- 
2.38.1


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH net-next] r8169: enable GRO software interrupt coalescing per default
  2022-11-26 14:07 [PATCH net-next] r8169: enable GRO software interrupt coalescing per default Heiner Kallweit
@ 2022-11-29  3:07 ` Jakub Kicinski
  2022-11-30 22:33   ` Heiner Kallweit
  0 siblings, 1 reply; 3+ messages in thread
From: Jakub Kicinski @ 2022-11-29  3:07 UTC (permalink / raw)
  To: Heiner Kallweit
  Cc: David Miller, Realtek linux nic maintainers, Eric Dumazet,
	Paolo Abeni, netdev

On Sat, 26 Nov 2022 15:07:07 +0100 Heiner Kallweit wrote:
> There are reports about r8169 not reaching full line speed on certain
> systems (e.g. SBC's) with a 2.5Gbps link.
> There was a time when hardware interrupt coalescing was enabled per
> default, but this was changed due to ASPM-related issues on few systems.
> 
> Meanwhile we have sysfs attributes for controlling kind of
> "software interrupt coalescing" on the GRO level. However most distros
> and users don't know about it. So lets set a conservative default for
> both involved parameters. Users can still override the defaults via
> sysfs. Don't enable these settings on the fast ethernet chip versions,
> they are slow enough.
> 
> Even with these conservative setting interrupt load on my 1Gbps test
> system reduced significantly.

Sure, why not. Could you please wrap the init into a helper?
Should help us ensure the params are not wildly different between
drivers and make any later refactoring easier.

Maybe something like:

/**
 * netdev_sw_irq_coalesce_default_on() - enable SW IRQ coalescing by default
 * @dev: netdev to enable the IRQ coalescing on
 * bla bla bla
 */
int netdev_sw_irq_coalesce_default_on(struct net_device *dev)
{
	WARN_ON(dev->reg_state != NETREG_UNREGISTERED);

	dev->gro_flush_timeout = 20000;
	dev->napi_defer_hard_irqs = 1;
}
EXPORT...

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH net-next] r8169: enable GRO software interrupt coalescing per default
  2022-11-29  3:07 ` Jakub Kicinski
@ 2022-11-30 22:33   ` Heiner Kallweit
  0 siblings, 0 replies; 3+ messages in thread
From: Heiner Kallweit @ 2022-11-30 22:33 UTC (permalink / raw)
  To: Jakub Kicinski
  Cc: David Miller, Realtek linux nic maintainers, Eric Dumazet,
	Paolo Abeni, netdev

On 29.11.2022 04:07, Jakub Kicinski wrote:
> On Sat, 26 Nov 2022 15:07:07 +0100 Heiner Kallweit wrote:
>> There are reports about r8169 not reaching full line speed on certain
>> systems (e.g. SBC's) with a 2.5Gbps link.
>> There was a time when hardware interrupt coalescing was enabled per
>> default, but this was changed due to ASPM-related issues on few systems.
>>
>> Meanwhile we have sysfs attributes for controlling kind of
>> "software interrupt coalescing" on the GRO level. However most distros
>> and users don't know about it. So lets set a conservative default for
>> both involved parameters. Users can still override the defaults via
>> sysfs. Don't enable these settings on the fast ethernet chip versions,
>> they are slow enough.
>>
>> Even with these conservative setting interrupt load on my 1Gbps test
>> system reduced significantly.
> 
> Sure, why not. Could you please wrap the init into a helper?
> Should help us ensure the params are not wildly different between
> drivers and make any later refactoring easier.
> 
> Maybe something like:
> 
> /**
>  * netdev_sw_irq_coalesce_default_on() - enable SW IRQ coalescing by default
>  * @dev: netdev to enable the IRQ coalescing on
>  * bla bla bla
>  */
> int netdev_sw_irq_coalesce_default_on(struct net_device *dev)
> {
> 	WARN_ON(dev->reg_state != NETREG_UNREGISTERED);
> 
> 	dev->gro_flush_timeout = 20000;
> 	dev->napi_defer_hard_irqs = 1;
> }
> EXPORT...

Great, you did the most difficult work and chose a proper function name.
I followed your suggestion and put this (slightly adjusted) function
into net core. Just submitted the series including it.


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2022-11-30 22:33 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-11-26 14:07 [PATCH net-next] r8169: enable GRO software interrupt coalescing per default Heiner Kallweit
2022-11-29  3:07 ` Jakub Kicinski
2022-11-30 22:33   ` Heiner Kallweit

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).