diff options
Diffstat (limited to 'drivers/net/phy/phylink.c')
-rw-r--r-- | drivers/net/phy/phylink.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/net/phy/phylink.c b/drivers/net/phy/phylink.c index 4421f283e910..13368e901628 100644 --- a/drivers/net/phy/phylink.c +++ b/drivers/net/phy/phylink.c @@ -619,9 +619,12 @@ static void phylink_resolve(struct work_struct *w) if (mac_config) { if (link_state.interface == pl->link_config.interface) { /* The interface remains unchanged, only the speed, - * duplex or pause settings have changed. + * duplex or pause settings have changed. If we have + * PCS ops, then we're programming the MAC using the + * mac_link_up() parameters rather than mac_config(). */ - phylink_mac_config(pl, &link_state); + if (!pl->pcs_ops) + phylink_mac_config(pl, &link_state); } else if (cur_link_state) { /* The interface has changed, but the link is up. * Force it down and retrigger resolution. |