diff options
Diffstat (limited to 'net/dsa/dsa2.c')
-rw-r--r-- | net/dsa/dsa2.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/net/dsa/dsa2.c b/net/dsa/dsa2.c index 5fff951a0a49..0f99297b2fb3 100644 --- a/net/dsa/dsa2.c +++ b/net/dsa/dsa2.c | |||
@@ -273,6 +273,7 @@ static int dsa_user_port_apply(struct device_node *port, u32 index, | |||
273 | if (err) { | 273 | if (err) { |
274 | dev_warn(ds->dev, "Failed to create slave %d: %d\n", | 274 | dev_warn(ds->dev, "Failed to create slave %d: %d\n", |
275 | index, err); | 275 | index, err); |
276 | ds->ports[index].netdev = NULL; | ||
276 | return err; | 277 | return err; |
277 | } | 278 | } |
278 | 279 | ||
@@ -394,9 +395,11 @@ static int dsa_dst_apply(struct dsa_switch_tree *dst) | |||
394 | return err; | 395 | return err; |
395 | } | 396 | } |
396 | 397 | ||
397 | err = dsa_cpu_port_ethtool_setup(dst->ds[0]); | 398 | if (dst->ds[0]) { |
398 | if (err) | 399 | err = dsa_cpu_port_ethtool_setup(dst->ds[0]); |
399 | return err; | 400 | if (err) |
401 | return err; | ||
402 | } | ||
400 | 403 | ||
401 | /* If we use a tagging format that doesn't have an ethertype | 404 | /* If we use a tagging format that doesn't have an ethertype |
402 | * field, make sure that all packets from this point on get | 405 | * field, make sure that all packets from this point on get |
@@ -433,7 +436,8 @@ static void dsa_dst_unapply(struct dsa_switch_tree *dst) | |||
433 | dsa_ds_unapply(dst, ds); | 436 | dsa_ds_unapply(dst, ds); |
434 | } | 437 | } |
435 | 438 | ||
436 | dsa_cpu_port_ethtool_restore(dst->ds[0]); | 439 | if (dst->ds[0]) |
440 | dsa_cpu_port_ethtool_restore(dst->ds[0]); | ||
437 | 441 | ||
438 | pr_info("DSA: tree %d unapplied\n", dst->tree); | 442 | pr_info("DSA: tree %d unapplied\n", dst->tree); |
439 | dst->applied = false; | 443 | dst->applied = false; |