All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH net-next v2 0/2][pull request] 1GbE Intel Wired LAN Driver Updates 2021-03-15
@ 2021-03-16  3:16 Tony Nguyen
  2021-03-16  3:16 ` [PATCH net-next v2 1/2] e1000e: Leverage direct_complete to speed up s2ram Tony Nguyen
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Tony Nguyen @ 2021-03-16  3:16 UTC (permalink / raw)
  To: davem, kuba
  Cc: Tony Nguyen, netdev, sassmann, kai.heng.feng, rjw, len.brown,
	todd.e.brandt, sasha.neftin, vitaly.lifshits, yu.c.chen

This series contains updates to e1000e only.

Chen Yu says:

The NIC is put in runtime suspend status when there is no cable connected.
As a result, it is safe to keep non-wakeup NIC in runtime suspended during
s2ram because the system does not rely on the NIC plug event nor WoL to
wake up the system. Besides that, unlike the s2idle, s2ram does not need to
manipulate S0ix settings during suspend.

v2: remove __maybe_unused from e1000e_pm_prepare()

The following are changes since commit 2117fce81f6b862aac0673abe8df0c60dca64bfa:
  Merge branch 'psample-Add-additional-metadata-attributes'
and are available in the git repository at:
  git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/next-queue 1GbE

Chen Yu (2):
  e1000e: Leverage direct_complete to speed up s2ram
  e1000e: Remove the runtime suspend restriction on CNP+

 drivers/net/ethernet/intel/e1000e/netdev.c | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

-- 
2.26.2


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

* [PATCH net-next v2 1/2] e1000e: Leverage direct_complete to speed up s2ram
  2021-03-16  3:16 [PATCH net-next v2 0/2][pull request] 1GbE Intel Wired LAN Driver Updates 2021-03-15 Tony Nguyen
@ 2021-03-16  3:16 ` Tony Nguyen
  2021-03-16  3:16 ` [PATCH net-next v2 2/2] e1000e: Remove the runtime suspend restriction on CNP+ Tony Nguyen
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: Tony Nguyen @ 2021-03-16  3:16 UTC (permalink / raw)
  To: davem, kuba
  Cc: Chen Yu, netdev, sassmann, anthony.l.nguyen, kai.heng.feng, rjw,
	len.brown, todd.e.brandt, sasha.neftin, vitaly.lifshits,
	Dvora Fuxbrumer

From: Chen Yu <yu.c.chen@intel.com>

The NIC is put in runtime suspend status when there is no cable connected.
As a result, it is safe to keep non-wakeup NIC in runtime suspended during
s2ram because the system does not rely on the NIC plug event nor WoL to wake
up the system. Besides that, unlike the s2idle, s2ram does not need to
manipulate S0ix settings during suspend.

This patch introduces the .prepare() for e1000e so that if the NIC is runtime
suspended the subsequent suspend/resume hooks will be skipped so as to speed
up the s2ram. The pm core will check whether the NIC is a wake up device so
there's no need to check it again in .prepare(). DPM_FLAG_SMART_PREPARE flag
should be set during probe to ask the pci subsystem to honor the driver's
prepare() result. Besides, the NIC remains runtime suspended after resumed
from s2ram as there is no need to resume it.

Tested on i7-2600K with 82579V NIC
Before the patch:
e1000e 0000:00:19.0: pci_pm_suspend+0x0/0x160 returned 0 after 225146 usecs
e1000e 0000:00:19.0: pci_pm_resume+0x0/0x90 returned 0 after 140588 usecs

After the patch:
echo disabled > //sys/devices/pci0000\:00/0000\:00\:19.0/power/wakeup
becomes 0 usecs because the hooks will be skipped.

Suggested-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
Signed-off-by: Chen Yu <yu.c.chen@intel.com>
Tested-by: Dvora Fuxbrumer <dvorax.fuxbrumer@linux.intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
---
 drivers/net/ethernet/intel/e1000e/netdev.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c
index e9b82c209c2d..3eaae9a5a44e 100644
--- a/drivers/net/ethernet/intel/e1000e/netdev.c
+++ b/drivers/net/ethernet/intel/e1000e/netdev.c
@@ -25,6 +25,7 @@
 #include <linux/pm_runtime.h>
 #include <linux/aer.h>
 #include <linux/prefetch.h>
+#include <linux/suspend.h>
 
 #include "e1000.h"
 
@@ -6918,6 +6919,12 @@ static int __e1000_resume(struct pci_dev *pdev)
 	return 0;
 }
 
+static int e1000e_pm_prepare(struct device *dev)
+{
+	return pm_runtime_suspended(dev) &&
+		pm_suspend_via_firmware();
+}
+
 static __maybe_unused int e1000e_pm_suspend(struct device *dev)
 {
 	struct net_device *netdev = pci_get_drvdata(to_pci_dev(dev));
@@ -7626,7 +7633,7 @@ static int e1000_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 
 	e1000_print_device_info(adapter);
 
-	dev_pm_set_driver_flags(&pdev->dev, DPM_FLAG_NO_DIRECT_COMPLETE);
+	dev_pm_set_driver_flags(&pdev->dev, DPM_FLAG_SMART_PREPARE);
 
 	if (pci_dev_run_wake(pdev) && hw->mac.type < e1000_pch_cnp)
 		pm_runtime_put_noidle(&pdev->dev);
@@ -7851,6 +7858,7 @@ MODULE_DEVICE_TABLE(pci, e1000_pci_tbl);
 
 static const struct dev_pm_ops e1000_pm_ops = {
 #ifdef CONFIG_PM_SLEEP
+	.prepare	= e1000e_pm_prepare,
 	.suspend	= e1000e_pm_suspend,
 	.resume		= e1000e_pm_resume,
 	.freeze		= e1000e_pm_freeze,
-- 
2.26.2


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

* [PATCH net-next v2 2/2] e1000e: Remove the runtime suspend restriction on CNP+
  2021-03-16  3:16 [PATCH net-next v2 0/2][pull request] 1GbE Intel Wired LAN Driver Updates 2021-03-15 Tony Nguyen
  2021-03-16  3:16 ` [PATCH net-next v2 1/2] e1000e: Leverage direct_complete to speed up s2ram Tony Nguyen
@ 2021-03-16  3:16 ` Tony Nguyen
  2021-03-16 20:35 ` [PATCH net-next v2 0/2][pull request] 1GbE Intel Wired LAN Driver Updates 2021-03-15 Jakub Kicinski
  2021-03-16 22:10 ` patchwork-bot+netdevbpf
  3 siblings, 0 replies; 5+ messages in thread
From: Tony Nguyen @ 2021-03-16  3:16 UTC (permalink / raw)
  To: davem, kuba
  Cc: Chen Yu, netdev, sassmann, anthony.l.nguyen, kai.heng.feng, rjw,
	len.brown, todd.e.brandt, sasha.neftin, vitaly.lifshits,
	Dvora Fuxbrumer

From: Chen Yu <yu.c.chen@intel.com>

Although there is platform issue of runtime suspend support
on CNP, it would be more flexible to let the user decide whether
to disable runtime or not because:
1. This can be done in userspace via
   echo on > /sys/devices/pci0000\:00/0000\:00\:1f.d/power/control
2. More and more NICs would support runtime suspend, disabling the
   runtime suspend on them by default would impact the validation.

Only disable runtime suspend on CNP in case of any user space regression.

Signed-off-by: Chen Yu <yu.c.chen@intel.com>
Tested-by: Dvora Fuxbrumer <dvorax.fuxbrumer@linux.intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
---
 drivers/net/ethernet/intel/e1000e/netdev.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c
index 3eaae9a5a44e..480f6712a3b6 100644
--- a/drivers/net/ethernet/intel/e1000e/netdev.c
+++ b/drivers/net/ethernet/intel/e1000e/netdev.c
@@ -7635,7 +7635,7 @@ static int e1000_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 
 	dev_pm_set_driver_flags(&pdev->dev, DPM_FLAG_SMART_PREPARE);
 
-	if (pci_dev_run_wake(pdev) && hw->mac.type < e1000_pch_cnp)
+	if (pci_dev_run_wake(pdev) && hw->mac.type != e1000_pch_cnp)
 		pm_runtime_put_noidle(&pdev->dev);
 
 	return 0;
-- 
2.26.2


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

* Re: [PATCH net-next v2 0/2][pull request] 1GbE Intel Wired LAN Driver Updates 2021-03-15
  2021-03-16  3:16 [PATCH net-next v2 0/2][pull request] 1GbE Intel Wired LAN Driver Updates 2021-03-15 Tony Nguyen
  2021-03-16  3:16 ` [PATCH net-next v2 1/2] e1000e: Leverage direct_complete to speed up s2ram Tony Nguyen
  2021-03-16  3:16 ` [PATCH net-next v2 2/2] e1000e: Remove the runtime suspend restriction on CNP+ Tony Nguyen
@ 2021-03-16 20:35 ` Jakub Kicinski
  2021-03-16 22:10 ` patchwork-bot+netdevbpf
  3 siblings, 0 replies; 5+ messages in thread
From: Jakub Kicinski @ 2021-03-16 20:35 UTC (permalink / raw)
  To: Tony Nguyen
  Cc: davem, netdev, sassmann, kai.heng.feng, rjw, len.brown,
	todd.e.brandt, sasha.neftin, vitaly.lifshits, yu.c.chen

On Mon, 15 Mar 2021 20:16:57 -0700 Tony Nguyen wrote:
> The NIC is put in runtime suspend status when there is no cable connected.
> As a result, it is safe to keep non-wakeup NIC in runtime suspended during
> s2ram because the system does not rely on the NIC plug event nor WoL to
> wake up the system. Besides that, unlike the s2idle, s2ram does not need to
> manipulate S0ix settings during suspend.
> 
> v2: remove __maybe_unused from e1000e_pm_prepare()

Thanks!

Acked-by: Jakub Kicinski <kuba@kernel.org>

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

* Re: [PATCH net-next v2 0/2][pull request] 1GbE Intel Wired LAN Driver Updates 2021-03-15
  2021-03-16  3:16 [PATCH net-next v2 0/2][pull request] 1GbE Intel Wired LAN Driver Updates 2021-03-15 Tony Nguyen
                   ` (2 preceding siblings ...)
  2021-03-16 20:35 ` [PATCH net-next v2 0/2][pull request] 1GbE Intel Wired LAN Driver Updates 2021-03-15 Jakub Kicinski
@ 2021-03-16 22:10 ` patchwork-bot+netdevbpf
  3 siblings, 0 replies; 5+ messages in thread
From: patchwork-bot+netdevbpf @ 2021-03-16 22:10 UTC (permalink / raw)
  To: Tony Nguyen
  Cc: davem, kuba, netdev, sassmann, kai.heng.feng, rjw, len.brown,
	todd.e.brandt, sasha.neftin, vitaly.lifshits, yu.c.chen

Hello:

This series was applied to netdev/net-next.git (refs/heads/master):

On Mon, 15 Mar 2021 20:16:57 -0700 you wrote:
> This series contains updates to e1000e only.
> 
> Chen Yu says:
> 
> The NIC is put in runtime suspend status when there is no cable connected.
> As a result, it is safe to keep non-wakeup NIC in runtime suspended during
> s2ram because the system does not rely on the NIC plug event nor WoL to
> wake up the system. Besides that, unlike the s2idle, s2ram does not need to
> manipulate S0ix settings during suspend.
> 
> [...]

Here is the summary with links:
  - [net-next,v2,1/2] e1000e: Leverage direct_complete to speed up s2ram
    https://git.kernel.org/netdev/net-next/c/ccf8b940e5fd
  - [net-next,v2,2/2] e1000e: Remove the runtime suspend restriction on CNP+
    https://git.kernel.org/netdev/net-next/c/3335369bad99

You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html



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

end of thread, other threads:[~2021-03-16 22:10 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-03-16  3:16 [PATCH net-next v2 0/2][pull request] 1GbE Intel Wired LAN Driver Updates 2021-03-15 Tony Nguyen
2021-03-16  3:16 ` [PATCH net-next v2 1/2] e1000e: Leverage direct_complete to speed up s2ram Tony Nguyen
2021-03-16  3:16 ` [PATCH net-next v2 2/2] e1000e: Remove the runtime suspend restriction on CNP+ Tony Nguyen
2021-03-16 20:35 ` [PATCH net-next v2 0/2][pull request] 1GbE Intel Wired LAN Driver Updates 2021-03-15 Jakub Kicinski
2021-03-16 22:10 ` patchwork-bot+netdevbpf

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.