diff options
author | Russell King <rmk+kernel@armlinux.org.uk> | 2020-02-17 16:23:31 +0000 |
---|---|---|
committer | Russell King <rmk+kernel@armlinux.org.uk> | 2020-10-12 21:52:16 +0100 |
commit | 6f85be7ce3fa31f378cda12c46b787dbfd1b6bc7 (patch) | |
tree | 6ecb87c8ba16faf7af2dc27af094aa3a83f0a73e /net | |
parent | ab2e5046153fad0d9be339e86ca3ae90f7e1dbc5 (diff) |
net: phylink/dsa: fix DSA and CPU links
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
Diffstat (limited to 'net')
-rw-r--r-- | net/dsa/port.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/net/dsa/port.c b/net/dsa/port.c index 376d02373e59..2938a1b93d4f 100644 --- a/net/dsa/port.c +++ b/net/dsa/port.c @@ -485,6 +485,22 @@ static struct phy_device *dsa_port_get_phy_device(struct dsa_port *dp) return phydev; } +static void dsa_port_phylink_default_config(struct phylink_config *config, + struct phylink_link_state *state) +{ + struct dsa_port *dp = container_of(config, struct dsa_port, pl_config); + struct dsa_switch *ds = dp->ds; + + if (dp->type == DSA_PORT_TYPE_USER || + !ds->ops->phylink_default_config) { + dev_err(ds->dev, "p%d: improper configuration for port\n", + dp->index); + return; + } + + ds->ops->phylink_default_config(ds, dp->index, state); +} + static void dsa_port_phylink_validate(struct phylink_config *config, unsigned long *supported, struct phylink_link_state *state) @@ -590,6 +606,7 @@ static void dsa_port_phylink_mac_link_up(struct phylink_config *config, } const struct phylink_mac_ops dsa_port_phylink_mac_ops = { + .default_config = dsa_port_phylink_default_config, .validate = dsa_port_phylink_validate, .mac_pcs_get_state = dsa_port_phylink_mac_pcs_get_state, .mac_config = dsa_port_phylink_mac_config, |