Commit 30ce0de4 authored by Florian Fainelli's avatar Florian Fainelli Committed by David S. Miller
Browse files

net: dsa: bcm_sf2: Ensure we re-negotiate EEE during after link change



In case the link change and EEE is enabled or disabled, always try to
re-negotiate this with the link partner.

Fixes: 450b05c1 ("net: dsa: bcm_sf2: add support for controlling EEE")
Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent db88816b
Loading
Loading
Loading
Loading
+4 −0
Original line number Original line Diff line number Diff line
@@ -588,6 +588,7 @@ static void bcm_sf2_sw_adjust_link(struct dsa_switch *ds, int port,
				   struct phy_device *phydev)
				   struct phy_device *phydev)
{
{
	struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds);
	struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds);
	struct ethtool_eee *p = &priv->port_sts[port].eee;
	u32 id_mode_dis = 0, port_mode;
	u32 id_mode_dis = 0, port_mode;
	const char *str = NULL;
	const char *str = NULL;
	u32 reg;
	u32 reg;
@@ -662,6 +663,9 @@ force_link:
		reg |= DUPLX_MODE;
		reg |= DUPLX_MODE;


	core_writel(priv, reg, CORE_STS_OVERRIDE_GMIIP_PORT(port));
	core_writel(priv, reg, CORE_STS_OVERRIDE_GMIIP_PORT(port));

	if (!phydev->is_pseudo_fixed_link)
		p->eee_enabled = bcm_sf2_eee_init(ds, port, phydev);
}
}


static void bcm_sf2_sw_fixed_link_update(struct dsa_switch *ds, int port,
static void bcm_sf2_sw_fixed_link_update(struct dsa_switch *ds, int port,