• David Ertman's avatar
    e1000e: Feature Enable PHY Ultra Low Power Mode (ULP) · 74f350ee
    David Ertman authored
    ULP is a power saving feature that reduces the power consumption of the
    PHY when a cable is not connected.
    
    ULP is gated on the following conditions:
    1) The hardware must support ULP.  Currently this is only I218
       devices from Intel
    2) ULP is initiated by the driver, so, no driver results in no ULP.
    3) ULP's implementation utilizes Runtime Power Management to toggle its
       execution.  ULP is enabled/disabled based on the state of Runtime PM.
    4) ULP is not active when wake-on-unicast, multicast or broadcast is active
       as these features are mutually-exclusive.
    
    Since the PHY is in an unavailable state while ULP is active, any access
    of the PHY registers will fail.  This is resolved by utilizing kernel
    calls that cause the device to exit Runtime PM (e.g. pm_runtime_get_sync)
    and then, after PHY access is complete,  allow the device to resume
    Runtime PM (e.g. pm_runtime_put_sync).
    
    Under certain conditions, toggling the LANPHYPC is necessary to disable
    ULP mode.  Break out existing code to toggle LANPHYPC to a new function
    to avoid code duplication.
    Signed-off-by: default avatarDave Ertman <davidx.m.ertman@intel.com>
    Cc: Bruce Allan <bruce.w.allan@intel.com>
    Tested-by: default avatarJeff Pieper <jeffrey.e.pieper@intel.com>
    Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
    74f350ee
netdev.c 200 KB