net: dsa: sja1105: Don't check state->link in phylink_mac_config
It has been pointed out that PHYLINK can call mac_config only to update the phy_interface_type and without knowing what the AN results are. Experimentally, when this was observed to happen, state->link was also unset, and therefore was used as a proxy to ignore this call. However it is also suggested that state->link is undefined for this callback and should not be relied upon. So let the previously-dead codepath for SPEED_UNKNOWN be called, and update the comment to make sure the MAC's behavior is sane. Cc: Russell King <rmk+kernel@armlinux.org.uk> Signed-off-by: Vladimir Oltean <olteanv@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
f7110b753b
commit
a979a0ab36
|
@ -715,7 +715,13 @@ static int sja1105_adjust_port_config(struct sja1105_private *priv, int port,
|
|||
|
||||
switch (speed_mbps) {
|
||||
case SPEED_UNKNOWN:
|
||||
/* No speed update requested */
|
||||
/* PHYLINK called sja1105_mac_config() to inform us about
|
||||
* the state->interface, but AN has not completed and the
|
||||
* speed is not yet valid. UM10944.pdf says that setting
|
||||
* SJA1105_SPEED_AUTO at runtime disables the port, so that is
|
||||
* ok for power consumption in case AN will never complete -
|
||||
* otherwise PHYLINK should come back with a new update.
|
||||
*/
|
||||
speed = SJA1105_SPEED_AUTO;
|
||||
break;
|
||||
case SPEED_10:
|
||||
|
@ -766,9 +772,6 @@ static void sja1105_mac_config(struct dsa_switch *ds, int port,
|
|||
{
|
||||
struct sja1105_private *priv = ds->priv;
|
||||
|
||||
if (!state->link)
|
||||
return;
|
||||
|
||||
sja1105_adjust_port_config(priv, port, state->speed);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue