e1000e: Exclude device from suspend direct complete optimization
authorKai-Heng Feng <kai.heng.feng@canonical.com>
Tue, 11 Dec 2018 07:59:37 +0000 (15:59 +0800)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Wed, 6 Feb 2019 00:08:54 +0000 (16:08 -0800)
e1000e sets different WoL settings in system suspend callback and
runtime suspend callback.

The suspend direct complete optimization leaves e1000e in runtime
suspended state with wrong WoL setting during system suspend.

To fix this, we need to disable suspend direct complete optimization to
let e1000e always use suspend callback to set correct WoL during system
suspend.

Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ethernet/intel/e1000e/netdev.c

index 189f231075c2a2d3f153f0d45e6b397a0c38b363..e19e53d97ac5222857a2153ac9c547debbdd9cb7 100644 (file)
@@ -7351,6 +7351,8 @@ 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_NEVER_SKIP);
+
        if (pci_dev_run_wake(pdev))
                pm_runtime_put_noidle(&pdev->dev);