Since the interface will not be used after being put down and WOL is disabled, just power it off. When bring up the interface, power on the PHY.
Signed-off-by: Jiang Wang <[email protected]> --- drivers/net/ethernet/intel/e100.c | 17 +++++++++++++++++ 1 files changed, 17 insertions(+), 0 deletions(-) diff --git a/drivers/net/ethernet/intel/e100.c b/drivers/net/ethernet/intel/e100.c index 5a2fdf7..9824e0a 100644 --- a/drivers/net/ethernet/intel/e100.c +++ b/drivers/net/ethernet/intel/e100.c @@ -1449,6 +1449,14 @@ static int e100_phy_init(struct nic *nic) netif_printk(nic, hw, KERN_DEBUG, nic->netdev, "phy_addr = %d\n", nic->mii.phy_id); + /* Make sure power to the PHY is enabled */ + if (!(nic->flags & wol_magic)) { + uint16_t phy_data; + phy_data = mdio_read(nic->netdev, nic->mii.phy_id, MII_BMCR); + phy_data &= ~BMCR_PDOWN; + mdio_write(nic->netdev, nic->mii.phy_id, MII_BMCR, phy_data); + } + /* Get phy ID */ id_lo = mdio_read(netdev, nic->mii.phy_id, MII_PHYSID1); id_hi = mdio_read(netdev, nic->mii.phy_id, MII_PHYSID2); @@ -2261,6 +2269,15 @@ static void e100_down(struct nic *nic) napi_disable(&nic->napi); netif_stop_queue(nic->netdev); e100_hw_reset(nic); + + /* If wake on LAN is not enabled, power down the PHY */ + if (!(nic->flags & wol_magic)) { + uint16_t phy_data; + phy_data = mdio_read(nic->netdev, nic->mii.phy_id, MII_BMCR); + phy_data |= BMCR_PDOWN; + mdio_write(nic->netdev, nic->mii.phy_id, MII_BMCR, phy_data); + } + free_irq(nic->pdev->irq, nic->netdev); del_timer_sync(&nic->watchdog); netif_carrier_off(nic->netdev); -- 1.7.1 ------------------------------------------------------------------------------ Cloud Computing - Latest Buzzword or a Glimpse of the Future? This paper surveys cloud computing today: What are the benefits? Why are businesses embracing it? What are its payoffs and pitfalls? http://www.accelacomm.com/jaw/sdnl/114/51425149/ _______________________________________________ E1000-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/e1000-devel To learn more about Intel® Ethernet, visit http://communities.intel.com/community/wired
