summaryrefslogtreecommitdiff
path: root/net/dsa/port.c
diff options
context:
space:
mode:
authorRussell King <rmk+kernel@armlinux.org.uk>2020-02-17 16:23:31 +0000
committerRussell King <rmk+kernel@armlinux.org.uk>2020-10-12 21:52:16 +0100
commit6f85be7ce3fa31f378cda12c46b787dbfd1b6bc7 (patch)
tree6ecb87c8ba16faf7af2dc27af094aa3a83f0a73e /net/dsa/port.c
parentab2e5046153fad0d9be339e86ca3ae90f7e1dbc5 (diff)
net: phylink/dsa: fix DSA and CPU links
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
Diffstat (limited to 'net/dsa/port.c')
-rw-r--r--net/dsa/port.c17
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,