• Konstantin Khlebnikov's avatar
    e1000e: fix runtime power management transitions · 66148bab
    Konstantin Khlebnikov authored
    This patch removes redundant actions from driver and fixes its interaction
    with actions in pci-bus runtime power management code.
    
    It removes pci_save_state() from __e1000_shutdown() for normal adapters,
    PCI bus callbacks pci_pm_*() will do all this for us. Now __e1000_shutdown()
    switches to D3-state only quad-port adapters, because they needs quirk for
    clearing false-positive error from downsteam pci-e port.
    
    pci_save_state() now called after clearing bus-master bit, thus __e1000_resume()
    and e1000_io_slot_reset() must set it back after restoring configuration space.
    
    This patch set get_link_status before calling pm_runtime_put() in e1000_open()
    to allow e1000_idle() get real link status and schedule first runtime suspend.
    
    This patch also enables wakeup for device if management mode is enabled
    (like for WoL) as result pci_prepare_to_sleep() would setup wakeup without
    special actions like custom 'enable_wakeup' sign.
    
    Cc: Bruce Allan <bruce.w.allan@intel.com>
    Signed-off-by: default avatarKonstantin Khlebnikov <khlebnikov@openvz.org>
    Acked-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    Tested-by: default avatarBorislav Petkov <bp@suse.de>
    Tested-by: default avatarAaron Brown <aaron.f.brown@intel.com>
    Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
    66148bab
netdev.c 196 KB