[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <F72FA20C31DD4F4C997B91C5B3690A091A990D@hqemmail07.nvidia.com>
Date: Thu, 13 Dec 2007 16:11:55 -0800
From: "Ayaz Abdulla" <AAbdulla@...dia.com>
To: <akpm@...ux-foundation.org>, <jeff@...zik.org>
Cc: <netdev@...r.kernel.org>, <eswierk@...stra.com>
Subject: RE: [patch 02/10] forcedeth: power down phy when interface is down
I would not include this patch until further testing is performed.
NVIDIA MCP chips use 3rd party PHY vendors. By powering down the phy, it
could have adverse affects on certain phys.
Ayaz
-----Original Message-----
From: akpm@...ux-foundation.org [mailto:akpm@...ux-foundation.org]
Sent: Thursday, December 13, 2007 4:03 PM
To: jeff@...zik.org
Cc: netdev@...r.kernel.org; akpm@...ux-foundation.org;
eswierk@...stra.com; Ayaz Abdulla
Subject: [patch 02/10] forcedeth: power down phy when interface is down
From: "Ed Swierk" <eswierk@...stra.com>
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 <eswierk@...stra.com>
Cc: Jeff Garzik <jeff@...zik.org>
Cc: Ayaz Abdulla <aabdulla@...dia.com>
Signed-off-by: Andrew Morton <akpm@...ux-foundation.org>
---
drivers/net/forcedeth.c | 12 ++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)
diff -puN
drivers/net/forcedeth.c~forcedeth-power-down-phy-when-interface-is-down
drivers/net/forcedeth.c
---
a/drivers/net/forcedeth.c~forcedeth-power-down-phy-when-interface-is-dow
n
+++ a/drivers/net/forcedeth.c
@@ -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 *de
dprintk(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 *d
if (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 */
_
-----------------------------------------------------------------------------------
This email message is for the sole use of the intended recipient(s) and may contain
confidential information. Any unauthorized review, use, disclosure or distribution
is prohibited. If you are not the intended recipient, please contact the sender by
reply email and destroy all copies of the original message.
-----------------------------------------------------------------------------------
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists