Commit 16319a7d authored by Russell King's avatar Russell King Committed by David S. Miller

net: phylink: ensure link is down when changing interface

The only PHYs that are used with phylink which change their interface
are the BCM84881 and MV88X3310 family, both of which only change their
interface modes on link-up events.  However, rather than relying upon
this behaviour by the PHY, we should give a stronger guarantee when
resolving that the link will be down whenever we change the interface
mode.  This patch implements that stronger guarantee for resolve.
Reviewed-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
Signed-off-by: default avatarRussell King <rmk+kernel@armlinux.org.uk>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 319bfafe
...@@ -620,8 +620,18 @@ static void phylink_resolve(struct work_struct *w) ...@@ -620,8 +620,18 @@ static void phylink_resolve(struct work_struct *w)
} }
} }
if (mac_config) if (mac_config) {
if (link_state.interface != pl->link_config.interface) {
/* The interface has changed, force the link down and
* then reconfigure.
*/
if (cur_link_state) {
phylink_link_down(pl);
cur_link_state = false;
}
}
phylink_mac_config(pl, &link_state); phylink_mac_config(pl, &link_state);
}
if (link_state.link != cur_link_state) { if (link_state.link != cur_link_state) {
pl->old_link_state = link_state.link; pl->old_link_state = link_state.link;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment