From: Jiri Pirko Date: Wed, 3 Apr 2019 12:24:26 +0000 (+0200) Subject: dsa: pass switch ID through devlink_port_attrs_set() X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=15b04aceeb83086ea3109c331cb7d8c2767fa0c6;p=linux.git dsa: pass switch ID through devlink_port_attrs_set() Pass the switch ID down the to devlink through devlink_port_attrs_set() so it can be used by devlink_compat_switch_id_get(). Leave ndo_get_port_parent_id implementation only for legacy. Signed-off-by: Jiri Pirko Reviewed-by: Florian Fainelli Signed-off-by: David S. Miller --- diff --git a/net/dsa/dsa2.c b/net/dsa/dsa2.c index 4493b2ff3438a..d122f1bcdab2d 100644 --- a/net/dsa/dsa2.c +++ b/net/dsa/dsa2.c @@ -260,6 +260,7 @@ static int dsa_port_setup(struct dsa_port *dp) { enum devlink_port_flavour flavour; struct dsa_switch *ds = dp->ds; + struct dsa_switch_tree *dst = ds->dst; int err; if (dp->type == DSA_PORT_TYPE_UNUSED) @@ -286,7 +287,8 @@ static int dsa_port_setup(struct dsa_port *dp) * independent from front panel port numbers. */ devlink_port_attrs_set(&dp->devlink_port, flavour, - dp->index, false, 0, NULL, 0); + dp->index, false, 0, + (const char *) &dst->index, sizeof(dst->index)); err = devlink_port_register(ds->devlink, &dp->devlink_port, dp->index); if (err) diff --git a/net/dsa/slave.c b/net/dsa/slave.c index f83525909c57a..ce26dddc82707 100644 --- a/net/dsa/slave.c +++ b/net/dsa/slave.c @@ -379,6 +379,13 @@ static int dsa_slave_get_port_parent_id(struct net_device *dev, struct dsa_switch *ds = dp->ds; struct dsa_switch_tree *dst = ds->dst; + /* For non-legacy ports, devlink is used and it takes + * care of the name generation. This ndo implementation + * should be removed with legacy support. + */ + if (dp->ds->devlink) + return -EOPNOTSUPP; + ppid->id_len = sizeof(dst->index); memcpy(&ppid->id, &dst->index, ppid->id_len);