Commit ec15dd42 authored by Vivien Didelot's avatar Vivien Didelot Committed by David S. Miller

net: dsa: setup and teardown tree

This commit provides better scope for the DSA tree setup and teardown
functions. It renames the "applied" bool to "setup" and print a message
when the tree is setup, as it is done during teardown.

At the same time, check dst->setup in dsa_tree_setup, where it is set to
true.
Signed-off-by: default avatarVivien Didelot <vivien.didelot@savoirfairelinux.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 17a22fcf
...@@ -122,7 +122,7 @@ struct dsa_switch_tree { ...@@ -122,7 +122,7 @@ struct dsa_switch_tree {
struct kref refcount; struct kref refcount;
/* Has this tree been applied to the hardware? */ /* Has this tree been applied to the hardware? */
bool applied; bool setup;
/* /*
* Configuration data for the platform device that owns * Configuration data for the platform device that owns
......
...@@ -486,12 +486,18 @@ static void dsa_tree_teardown_master(struct dsa_switch_tree *dst) ...@@ -486,12 +486,18 @@ static void dsa_tree_teardown_master(struct dsa_switch_tree *dst)
return dsa_master_teardown(master); return dsa_master_teardown(master);
} }
static int dsa_dst_apply(struct dsa_switch_tree *dst) static int dsa_tree_setup(struct dsa_switch_tree *dst)
{ {
struct dsa_switch *ds; struct dsa_switch *ds;
u32 index; u32 index;
int err; int err;
if (dst->setup) {
pr_err("DSA: tree %d already setup! Disjoint trees?\n",
dst->index);
return -EEXIST;
}
err = dsa_tree_setup_default_cpu(dst); err = dsa_tree_setup_default_cpu(dst);
if (err) if (err)
return err; return err;
...@@ -510,17 +516,19 @@ static int dsa_dst_apply(struct dsa_switch_tree *dst) ...@@ -510,17 +516,19 @@ static int dsa_dst_apply(struct dsa_switch_tree *dst)
if (err) if (err)
return err; return err;
dst->applied = true; dst->setup = true;
pr_info("DSA: tree %d setup\n", dst->index);
return 0; return 0;
} }
static void dsa_dst_unapply(struct dsa_switch_tree *dst) static void dsa_tree_teardown(struct dsa_switch_tree *dst)
{ {
struct dsa_switch *ds; struct dsa_switch *ds;
u32 index; u32 index;
if (!dst->applied) if (!dst->setup)
return; return;
dsa_tree_teardown_master(dst); dsa_tree_teardown_master(dst);
...@@ -535,8 +543,9 @@ static void dsa_dst_unapply(struct dsa_switch_tree *dst) ...@@ -535,8 +543,9 @@ static void dsa_dst_unapply(struct dsa_switch_tree *dst)
dsa_tree_teardown_default_cpu(dst); dsa_tree_teardown_default_cpu(dst);
pr_info("DSA: tree %d unapplied\n", dst->index); pr_info("DSA: tree %d torn down\n", dst->index);
dst->applied = false;
dst->setup = false;
} }
static void dsa_tree_remove_switch(struct dsa_switch_tree *dst, static void dsa_tree_remove_switch(struct dsa_switch_tree *dst,
...@@ -794,14 +803,9 @@ static int _dsa_register_switch(struct dsa_switch *ds) ...@@ -794,14 +803,9 @@ static int _dsa_register_switch(struct dsa_switch *ds)
if (err == 1) if (err == 1)
return 0; return 0;
if (dst->applied) { err = dsa_tree_setup(dst);
pr_info("DSA: Disjoint trees?\n");
return -EINVAL;
}
err = dsa_dst_apply(dst);
if (err) { if (err) {
dsa_dst_unapply(dst); dsa_tree_teardown(dst);
goto out_del_dst; goto out_del_dst;
} }
...@@ -852,7 +856,7 @@ static void _dsa_unregister_switch(struct dsa_switch *ds) ...@@ -852,7 +856,7 @@ static void _dsa_unregister_switch(struct dsa_switch *ds)
struct dsa_switch_tree *dst = ds->dst; struct dsa_switch_tree *dst = ds->dst;
unsigned int index = ds->index; unsigned int index = ds->index;
dsa_dst_unapply(dst); dsa_tree_teardown(dst);
dsa_tree_remove_switch(dst, index); dsa_tree_remove_switch(dst, index);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment