lkml.org 
[lkml]   [2011]   [Dec]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [PATCH 1/2] e100: power down PHY if WOL is not enabled
    From
    Date
    On Tue, 2011-12-13 at 18:49 -0800, Jiang Wang wrote:
    > 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.

    Don't you need to cover the case where WOL is enabled while the
    interface is down?

    Ben.

    > Signed-off-by: Jiang Wang <Jiang.Wang@riverbed.com>
    > ---
    > 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);

    --
    Ben Hutchings, Staff Engineer, Solarflare
    Not speaking for my employer; that's the marketing department's job.
    They asked us to note that Solarflare product names are trademarked.



    \
     
     \ /
      Last update: 2011-12-14 21:33    [W:2.190 / U:1.540 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site