aboutsummaryrefslogtreecommitdiffstats
path: root/net/dsa/dsa2.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/dsa/dsa2.c')
-rw-r--r--net/dsa/dsa2.c12
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;