forcedeth: power down phy when interface is down
Subsystems (2)
PATCH 1/8 forcedeth: power down phy when interface is down
From: "Ed Swierk" <[email protected]>
Bring the physical link down when the interface is down by placing the PHY in power-down state, unless WOL is enabled. This mirrors the behavior of other drivers including e1000 and tg3.
Signed-off-by Ed Swierk <[email protected]>
Cc Jeff Garzik <[email protected]>
Cc Ayaz Abdulla <[email protected]>
Signed-off-by Andrew Morton <[email protected]>
---
drivers/net/forcedeth.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-)
drivers/net/forcedeth.c renamed from drivers/net/forcedeth.c~forcedeth-power-down-phy-when-interface-is-down +10 -2
@@ -1312,9 +1312,9 @@ static int phy_init(struct net_device *d/* some phys clear out pause advertisment on reset, set it back */ mii_rw (dev, np->phyaddr,MII_ADVERTISE , reg); -/* restart auto negotiation */ +/* restart auto negotiation, power down phy */ mii_control =mii_rw (dev, np->phyaddr,MII_BMCR ,MII_READ ); - mii_control |= (BMCR_ANRESTART |BMCR_ANENABLE ); + mii_control |= (BMCR_ANRESTART |BMCR_ANENABLE |BMCR_PDOWN );if (mii_rw (dev, np->phyaddr,MII_BMCR , mii_control)) {return PHY_ERROR ; }
@@ -4798,6 +4798,10 @@ static int nv_open(struct net_device *dedprintk (KERN_DEBUG "nv_open: begin\n" ); +/* power up phy */ +mii_rw (dev, np->phyaddr,MII_BMCR , +mii_rw (dev, np->phyaddr,MII_BMCR ,MII_READ ) & ~BMCR_PDOWN ); +/* erase previous misconfiguration */ if (np->driver_data &DEV_HAS_POWER_CNTRL )nv_mac_reset (dev);
@@ -4980,6 +4984,10 @@ static int nv_close(struct net_device *dif (np->wolenabled) {writel (NVREG_PFF_ALWAYS |NVREG_PFF_MYADDR , base + NvRegPacketFilterFlags);nv_start_rx (dev); + }else { +/* power down phy */ +mii_rw (dev, np->phyaddr,MII_BMCR , +mii_rw (dev, np->phyaddr,MII_BMCR ,MII_READ )|BMCR_PDOWN ); }/* FIXME: power down nic */
_