linux-hardened/drivers/net/ethernet/intel
David Ertman 74f350ee08 e1000e: Feature Enable PHY Ultra Low Power Mode (ULP)
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: Dave Ertman <davidx.m.ertman@intel.com>
Cc: Bruce Allan <bruce.w.allan@intel.com>
Tested-by: Jeff Pieper <jeffrey.e.pieper@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
2014-03-07 22:52:07 -08:00
..
e1000 drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
e1000e e1000e: Feature Enable PHY Ultra Low Power Mode (ULP) 2014-03-07 22:52:07 -08:00
i40e i40e/i40evf: Bump pf&vf build versions 2014-03-06 18:42:08 -08:00
i40evf i40e/i40evf: Bump pf&vf build versions 2014-03-06 18:42:08 -08:00
igb igb: Update license text to remove FSF address and update copyright. 2014-02-26 15:54:52 -05:00
igbvf igbvf: Use pci_enable_msix_range() instead of pci_enable_msix() 2014-02-18 15:33:31 -05:00
ixgb drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
ixgbe ixgbe: implement SIOCGHWTSTAMP ioctl 2014-03-02 19:06:44 -05:00
ixgbevf ixgbevf: add check for CHECKSUM_PARTIAL when doing TSO 2014-02-28 12:40:57 -05:00
e100.c e100: Fix "disabling already-disabled device" warning 2014-01-30 16:46:14 -08:00
Kconfig i40e: add DCB option to Kconfig 2014-01-17 19:13:04 -08:00
Makefile i40evf: add driver to kernel build system 2013-12-31 16:27:49 -08:00