summaryrefslogtreecommitdiff
path: root/drivers/net/phy
diff options
context:
space:
mode:
authorRussell King <rmk+kernel@armlinux.org.uk>2020-07-21 12:04:05 +0100
committerDavid S. Miller <davem@davemloft.net>2020-07-21 15:46:50 -0700
commit5005b163440f3fe18b434a20e8944dad508a15e8 (patch)
tree377fb2caa626d2d094aa782b8a285830581c62ef /drivers/net/phy
parent16319a7d31b5df881ab61c9a9e8b4265355d157f (diff)
net: phylink: update PCS when changing interface during resolution
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. This will break when drivers are converted to split-PCS. Fix this. Reviewed-by: Florian Fainelli <f.fainelli@gmail.com> Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/phy')
-rw-r--r--drivers/net/phy/phylink.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/drivers/net/phy/phylink.c b/drivers/net/phy/phylink.c
index 1507ea8a9385..f1693ec63366 100644
--- a/drivers/net/phy/phylink.c
+++ b/drivers/net/phy/phylink.c
@@ -629,8 +629,15 @@ static void phylink_resolve(struct work_struct *w)
phylink_link_down(pl);
cur_link_state = false;
}
+ phylink_pcs_config(pl, false, &link_state);
+ pl->link_config.interface = link_state.interface;
+ } else {
+ /* The interface remains unchanged, only the speed,
+ * duplex or pause settings have changed. Call the
+ * old mac_config() method to configure the MAC/PCS.
+ */
+ phylink_mac_config(pl, &link_state);
}
- phylink_mac_config(pl, &link_state);
}
if (link_state.link != cur_link_state) {