Skip to content

Commit

Permalink
net: dsa: setup and teardown tree
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
vivien authored and davem330 committed Nov 9, 2017
1 parent 17a22fc commit ec15dd4
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 15 deletions.
2 changes: 1 addition & 1 deletion include/net/dsa.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
32 changes: 18 additions & 14 deletions net/dsa/dsa2.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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);
Expand All @@ -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,
Expand Down Expand Up @@ -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;
}

Expand Down Expand Up @@ -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);
}
Expand Down

0 comments on commit ec15dd4

Please sign in to comment.