Re: [PATCH 06/21] e1000: add smart power down code

2006-06-27 Thread Florian Reitmeir
On Mon, 26 Jun 2006, Jeff Garzik wrote:

 Kok, Auke wrote:
 Smart Power Down is a power saving feature in newer e1000 hardware. We
 disable it because it causes time to link to be long, but make it a
 user choice.
 
 Signed-off-by: Jesse Brandeburg [EMAIL PROTECTED]
 Signed-off-by: Auke Kok [EMAIL PROTECTED]
 ---
 
  drivers/net/e1000/e1000.h   |1 +
  drivers/net/e1000/e1000_main.c  |   15 +++
  drivers/net/e1000/e1000_param.c |   25 +
  3 files changed, 41 insertions(+), 0 deletions(-)
 
 Since it's not default, who will actually use this?  Particularly since 
 it is only a module option, and not supported through ethtool (frown).
i would use it, i always wanted the feature on my laptop (ibm thinkpad)

-- 
Florian Reitmeir
-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 06/21] e1000: add smart power down code

2006-06-27 Thread Auke Kok

Jeff Garzik wrote:

Kok, Auke wrote:

Smart Power Down is a power saving feature in newer e1000 hardware. We
disable it because it causes time to link to be long, but make it a
user choice.

Signed-off-by: Jesse Brandeburg [EMAIL PROTECTED]
Signed-off-by: Auke Kok [EMAIL PROTECTED]
---

 drivers/net/e1000/e1000.h   |1 +
 drivers/net/e1000/e1000_main.c  |   15 +++
 drivers/net/e1000/e1000_param.c |   25 +
 3 files changed, 41 insertions(+), 0 deletions(-)


Since it's not default, who will actually use this?  Particularly since 
it is only a module option, and not supported through ethtool (frown).


laptop users that frequently re-connect their cables might enable this 
function since it saves battery life.


Auke
-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 06/21] e1000: add smart power down code

2006-06-26 Thread Jeff Garzik

Kok, Auke wrote:

Smart Power Down is a power saving feature in newer e1000 hardware. We
disable it because it causes time to link to be long, but make it a
user choice.

Signed-off-by: Jesse Brandeburg [EMAIL PROTECTED]
Signed-off-by: Auke Kok [EMAIL PROTECTED]
---

 drivers/net/e1000/e1000.h   |1 +
 drivers/net/e1000/e1000_main.c  |   15 +++
 drivers/net/e1000/e1000_param.c |   25 +
 3 files changed, 41 insertions(+), 0 deletions(-)


Since it's not default, who will actually use this?  Particularly since 
it is only a module option, and not supported through ethtool (frown).


Jeff



-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 06/21] e1000: add smart power down code

2006-06-21 Thread Kok, Auke

Smart Power Down is a power saving feature in newer e1000 hardware. We
disable it because it causes time to link to be long, but make it a
user choice.

Signed-off-by: Jesse Brandeburg [EMAIL PROTECTED]
Signed-off-by: Auke Kok [EMAIL PROTECTED]
---

 drivers/net/e1000/e1000.h   |1 +
 drivers/net/e1000/e1000_main.c  |   15 +++
 drivers/net/e1000/e1000_param.c |   25 +
 3 files changed, 41 insertions(+), 0 deletions(-)

diff --git a/drivers/net/e1000/e1000.h b/drivers/net/e1000/e1000.h
index 2b96ad0..dbdaa33 100644
--- a/drivers/net/e1000/e1000.h
+++ b/drivers/net/e1000/e1000.h
@@ -338,6 +338,7 @@ struct e1000_adapter {
 #ifdef NETIF_F_TSO
boolean_t tso_force;
 #endif
+   boolean_t smart_power_down; /* phy smart power down */
unsigned long flags;
 };
 
diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c
index 76e36a4..ea18f30 100644
--- a/drivers/net/e1000/e1000_main.c
+++ b/drivers/net/e1000/e1000_main.c
@@ -607,6 +607,21 @@ e1000_reset(struct e1000_adapter *adapte
 
e1000_reset_adaptive(adapter-hw);
e1000_phy_get_info(adapter-hw, adapter-phy_info);
+
+   if (!adapter-smart_power_down 
+   (adapter-hw.mac_type == e1000_82571 ||
+adapter-hw.mac_type == e1000_82572)) {
+   uint16_t phy_data = 0;
+   /* speed up time to link by disabling smart power down, ignore
+* the return value of this function because there is nothing
+* different we would do if it failed */
+   e1000_read_phy_reg(adapter-hw, IGP02E1000_PHY_POWER_MGMT,
+  phy_data);
+   phy_data = ~IGP02E1000_PM_SPD;
+   e1000_write_phy_reg(adapter-hw, IGP02E1000_PHY_POWER_MGMT,
+   phy_data);
+   }
+
if (adapter-en_mng_pt) {
manc = E1000_READ_REG(adapter-hw, MANC);
manc |= (E1000_MANC_ARP_EN | E1000_MANC_EN_MNG2HOST);
diff --git a/drivers/net/e1000/e1000_param.c b/drivers/net/e1000/e1000_param.c
index e55f896..a8d9295 100644
--- a/drivers/net/e1000/e1000_param.c
+++ b/drivers/net/e1000/e1000_param.c
@@ -183,6 +183,15 @@ E1000_PARAM(RxAbsIntDelay, Receive Abso
 
 E1000_PARAM(InterruptThrottleRate, Interrupt Throttling Rate);
 
+/* Enable Smart Power Down of the PHY
+ *
+ * Valid Range: 0, 1
+ *
+ * Default Value: 0 (disabled)
+ */
+
+E1000_PARAM(SmartPowerDownEnable, Enable PHY smart power down);
+
 #define AUTONEG_ADV_DEFAULT  0x2F
 #define AUTONEG_ADV_MASK 0x2F
 #define FLOW_CONTROL_DEFAULT FLOW_CONTROL_FULL
@@ -494,6 +503,22 @@ e1000_check_options(struct e1000_adapter
adapter-itr = opt.def;
}
}
+   { /* Smart Power Down */
+   struct e1000_option opt = {
+   .type = enable_option,
+   .name = PHY Smart Power Down,
+   .err  = defaulting to Disabled,
+   .def  = OPTION_DISABLED
+   };
+
+   if (num_SmartPowerDownEnable  bd) {
+   int spd = SmartPowerDownEnable[bd];
+   e1000_validate_option(spd, opt, adapter);
+   adapter-smart_power_down = spd;
+   } else {
+   adapter-smart_power_down = opt.def;
+   }
+   }
 
switch (adapter-hw.media_type) {
case e1000_media_type_fiber:



--
Auke Kok [EMAIL PROTECTED]
-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html