summaryrefslogtreecommitdiffstats
path: root/net/dsa/legacy.c
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2017-11-09 01:26:50 +0100
committerDavid S. Miller <davem@davemloft.net>2017-11-09 01:26:50 +0100
commit19aeeb9f46cb4b9474ebeb50cb01b9a1adba73b8 (patch)
tree4595fb0d4562f8344212e3f0c2842d5ab8a63cfb /net/dsa/legacy.c
parentopenvswitch: enable NSH support (diff)
parentnet: dsa: rename probe and remove switch functions (diff)
downloadlinux-19aeeb9f46cb4b9474ebeb50cb01b9a1adba73b8.tar.xz
linux-19aeeb9f46cb4b9474ebeb50cb01b9a1adba73b8.zip
Merge branch 'dsa-setup-stage'
Vivien Didelot says: ==================== net: dsa: setup stage When probing a DSA switch, there is basically two stages. The first stage is the parsing of the switch device, from either device tree or platform data. It fetches the DSA tree to which it belongs, and validates its ports. The switch device is then added to the tree, and the second stage is called if this was the last switch of the tree. The second stage is the setup of the tree, which validates that the tree is complete, sets up the routing tables, the default CPU port for user ports, sets up the switch drivers and finally the master interfaces, which makes the whole switch fabric functional. This patch series covers the second setup stage. The setup and teardown of a switch tree have been separated into logical steps, and the probing of a switch now simply parses and adds a switch to a tree. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/dsa/legacy.c')
-rw-r--r--net/dsa/legacy.c20
1 files changed, 2 insertions, 18 deletions
diff --git a/net/dsa/legacy.c b/net/dsa/legacy.c
index 0511fe2feff7..4863e3e398b6 100644
--- a/net/dsa/legacy.c
+++ b/net/dsa/legacy.c
@@ -593,15 +593,7 @@ static int dsa_setup_dst(struct dsa_switch_tree *dst, struct net_device *dev,
if (!configured)
return -EPROBE_DEFER;
- /*
- * If we use a tagging format that doesn't have an ethertype
- * field, make sure that all packets from this point on get
- * sent to the tag format's receive function.
- */
- wmb();
- dev->dsa_ptr = dst->cpu_dp;
-
- return dsa_master_ethtool_setup(dst->cpu_dp->master);
+ return dsa_master_setup(dst->cpu_dp->master, dst->cpu_dp);
}
static int dsa_probe(struct platform_device *pdev)
@@ -666,15 +658,7 @@ static void dsa_remove_dst(struct dsa_switch_tree *dst)
{
int i;
- dsa_master_ethtool_restore(dst->cpu_dp->master);
-
- dst->cpu_dp->master->dsa_ptr = NULL;
-
- /* If we used a tagging format that doesn't have an ethertype
- * field, make sure that all packets from this point get sent
- * without the tag and go through the regular receive path.
- */
- wmb();
+ dsa_master_teardown(dst->cpu_dp->master);
for (i = 0; i < dst->pd->nr_chips; i++) {
struct dsa_switch *ds = dst->ds[i];