| From cb87015e005f429bff6fc084a61281235ca83d51 Mon Sep 17 00:00:00 2001 |
| From: Yangbo Lu <yangbo.lu@nxp.com> |
| Date: Fri, 6 Dec 2019 12:41:48 +0800 |
| Subject: [PATCH] LF-376 enetc: disable EEE autoneg by default |
| |
| The EEE support has not been enabled on ENETC, 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 |
| ENETC connects to, to prevent the above unwanted outcome. |
| |
| Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com> |
| --- |
| drivers/net/ethernet/freescale/enetc/enetc.c | 5 +++++ |
| 1 file changed, 5 insertions(+) |
| |
| --- a/drivers/net/ethernet/freescale/enetc/enetc.c |
| +++ b/drivers/net/ethernet/freescale/enetc/enetc.c |
| @@ -1366,6 +1366,7 @@ static int enetc_phy_connect(struct net_ |
| { |
| struct enetc_ndev_priv *priv = netdev_priv(ndev); |
| struct phy_device *phydev; |
| + struct ethtool_eee edata; |
| |
| if (!priv->phy_node) |
| return 0; /* phy-less mode */ |
| @@ -1379,6 +1380,10 @@ static int enetc_phy_connect(struct net_ |
| |
| phy_attached_info(phydev); |
| |
| + /* disable EEE autoneg, until ENETC driver supports it */ |
| + memset(&edata, 0, sizeof(struct ethtool_eee)); |
| + phy_ethtool_set_eee(phydev, &edata); |
| + |
| return 0; |
| } |
| |