From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Lunn Subject: Re: [PATCH v2 net-next 7/9] lan743x: Add EEE support Date: Fri, 13 Jul 2018 00:49:05 +0200 Message-ID: <20180712224905.GJ18328@lunn.ch> References: <1531422306-6547-1-git-send-email-Bryan.Whitehead@microchip.com> <1531422306-6547-8-git-send-email-Bryan.Whitehead@microchip.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: davem@davemloft.net, netdev@vger.kernel.org, UNGLinuxDriver@microchip.com, richardcochran@gmail.com To: Bryan Whitehead Return-path: Received: from vps0.lunn.ch ([185.16.172.187]:32787 "EHLO vps0.lunn.ch" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2387492AbeGLXAt (ORCPT ); Thu, 12 Jul 2018 19:00:49 -0400 Content-Disposition: inline In-Reply-To: <1531422306-6547-8-git-send-email-Bryan.Whitehead@microchip.com> Sender: netdev-owner@vger.kernel.org List-ID: > +static int lan743x_ethtool_set_eee(struct net_device *netdev, > + struct ethtool_eee *eee) > +{ > + struct lan743x_adapter *adapter = netdev_priv(netdev); > + struct phy_device *phydev = NULL; > + u32 buf = 0; > + int ret = 0; > + > + if (!netdev) > + return -EINVAL; > + adapter = netdev_priv(netdev); > + if (!adapter) > + return -EINVAL; > + phydev = netdev->phydev; > + if (!phydev) > + return -EIO; > + if (!phydev->drv) { > + netif_err(adapter, drv, adapter->netdev, > + "Missing PHY Driver\n"); > + return -EIO; > + } > + > + if (eee->eee_enabled) { > + ret = phy_init_eee(phydev, 0); > + if (ret) { > + netif_err(adapter, drv, adapter->netdev, > + "EEE initialization failed\n"); > + return ret; > + } > + > + buf = lan743x_csr_read(adapter, MAC_CR); > + buf |= MAC_CR_EEE_EN_; > + lan743x_csr_write(adapter, MAC_CR, buf); > + > + phy_ethtool_set_eee(phydev, eee); > + > + buf = (u32)eee->tx_lpi_timer; > + lan743x_csr_write(adapter, MAC_EEE_TX_LPI_REQ_DLY_CNT, buf); > + netif_info(adapter, drv, adapter->netdev, "Enabled EEE\n"); > + } else { > + buf = lan743x_csr_read(adapter, MAC_CR); > + buf &= ~MAC_CR_EEE_EN_; > + lan743x_csr_write(adapter, MAC_CR, buf); > + netif_info(adapter, drv, adapter->netdev, "Disabled EEE\n"); > + } > + Hi Bryan You should call phy_ethtool_set_eee() in both cases, so that it gets disabled in the PHY as well. It needs to stop advertising it. Andrew