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: Vivien Didelot <vivien.didelot@savoirfairelinux.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
17a22fcfc8
commit
ec15dd4269
|
@ -122,7 +122,7 @@ struct dsa_switch_tree {
|
|||
struct kref refcount;
|
||||
|
||||
/* Has this tree been applied to the hardware? */
|
||||
bool applied;
|
||||
bool setup;
|
||||
|
||||
/*
|
||||
* Configuration data for the platform device that owns
|
||||
|
|
|
@ -486,12 +486,18 @@ static void dsa_tree_teardown_master(struct dsa_switch_tree *dst)
|
|||
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;
|
||||
u32 index;
|
||||
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);
|
||||
if (err)
|
||||
return err;
|
||||
|
@ -510,17 +516,19 @@ static int dsa_dst_apply(struct dsa_switch_tree *dst)
|
|||
if (err)
|
||||
return err;
|
||||
|
||||
dst->applied = true;
|
||||
dst->setup = true;
|
||||
|
||||
pr_info("DSA: tree %d setup\n", dst->index);
|
||||
|
||||
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;
|
||||
u32 index;
|
||||
|
||||
if (!dst->applied)
|
||||
if (!dst->setup)
|
||||
return;
|
||||
|
||||
dsa_tree_teardown_master(dst);
|
||||
|
@ -535,8 +543,9 @@ static void dsa_dst_unapply(struct dsa_switch_tree *dst)
|
|||
|
||||
dsa_tree_teardown_default_cpu(dst);
|
||||
|
||||
pr_info("DSA: tree %d unapplied\n", dst->index);
|
||||
dst->applied = false;
|
||||
pr_info("DSA: tree %d torn down\n", dst->index);
|
||||
|
||||
dst->setup = false;
|
||||
}
|
||||
|
||||
static void dsa_tree_remove_switch(struct dsa_switch_tree *dst,
|
||||
|
@ -794,14 +803,9 @@ static int _dsa_register_switch(struct dsa_switch *ds)
|
|||
if (err == 1)
|
||||
return 0;
|
||||
|
||||
if (dst->applied) {
|
||||
pr_info("DSA: Disjoint trees?\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
err = dsa_dst_apply(dst);
|
||||
err = dsa_tree_setup(dst);
|
||||
if (err) {
|
||||
dsa_dst_unapply(dst);
|
||||
dsa_tree_teardown(dst);
|
||||
goto out_del_dst;
|
||||
}
|
||||
|
||||
|
@ -852,7 +856,7 @@ static void _dsa_unregister_switch(struct dsa_switch *ds)
|
|||
struct dsa_switch_tree *dst = ds->dst;
|
||||
unsigned int index = ds->index;
|
||||
|
||||
dsa_dst_unapply(dst);
|
||||
dsa_tree_teardown(dst);
|
||||
|
||||
dsa_tree_remove_switch(dst, index);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue