Message ID | 1512665063-1680-1-git-send-email-claudiu.manoil@nxp.com |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
Series | [net] gianfar: Disable EEE autoneg by default | expand |
On Thu, Dec 07, 2017 at 06:44:23PM +0200, Claudiu Manoil wrote: > This controller does not support EEE, but it may connect to a PHY > which supports EEE and advertises EEE by default, while its link > partner also advertises EEE. If this happens, the PHY enters low > power mode when the traffic rate is low and causes packet loss. > This patch disables EEE advertisement by default for any PHY that > gianfar connects to, to prevent the above unwanted outcome. > > Signed-off-by: Shaohui Xie <Shaohui.Xie@nxp.com> > Tested-by: Yangbo Lu <Yangbo.lu@nxp.com> > Signed-off-by: Claudiu Manoil <claudiu.manoil@nxp.com> Reviewed-by: Andrew Lunn <andrew@lunn.ch> Andrew
From: Claudiu Manoil <claudiu.manoil@nxp.com> Date: Thu, 7 Dec 2017 18:44:23 +0200 > This controller does not support EEE, but it may connect to a PHY > which supports EEE and advertises EEE by default, while its link > partner also advertises EEE. If this happens, the PHY enters low > power mode when the traffic rate is low and causes packet loss. > This patch disables EEE advertisement by default for any PHY that > gianfar connects to, to prevent the above unwanted outcome. > > Signed-off-by: Shaohui Xie <Shaohui.Xie@nxp.com> > Tested-by: Yangbo Lu <Yangbo.lu@nxp.com> > Signed-off-by: Claudiu Manoil <claudiu.manoil@nxp.com> Applied, thank you.
diff --git a/drivers/net/ethernet/freescale/gianfar.c b/drivers/net/ethernet/freescale/gianfar.c index 81a73af..7f83700 100644 --- a/drivers/net/ethernet/freescale/gianfar.c +++ b/drivers/net/ethernet/freescale/gianfar.c @@ -1792,6 +1792,7 @@ static int init_phy(struct net_device *dev) GFAR_SUPPORTED_GBIT : 0; phy_interface_t interface; struct phy_device *phydev; + struct ethtool_eee edata; priv->oldlink = 0; priv->oldspeed = 0; @@ -1816,6 +1817,10 @@ static int init_phy(struct net_device *dev) /* Add support for flow control, but don't advertise it by default */ phydev->supported |= (SUPPORTED_Pause | SUPPORTED_Asym_Pause); + /* disable EEE autoneg, EEE not supported by eTSEC */ + memset(&edata, 0, sizeof(struct ethtool_eee)); + phy_ethtool_set_eee(phydev, &edata); + return 0; }