|
@@ -935,6 +935,14 @@ static void dsa_remove_dst(struct dsa_switch_tree *dst)
|
|
|
{
|
|
|
int i;
|
|
|
|
|
|
+ dst->master_netdev->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();
|
|
|
+
|
|
|
for (i = 0; i < dst->pd->nr_chips; i++) {
|
|
|
struct dsa_switch *ds = dst->ds[i];
|
|
|
|
|
@@ -988,14 +996,6 @@ static int dsa_suspend(struct device *d)
|
|
|
struct dsa_switch_tree *dst = platform_get_drvdata(pdev);
|
|
|
int i, ret = 0;
|
|
|
|
|
|
- dst->master_netdev->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();
|
|
|
-
|
|
|
for (i = 0; i < dst->pd->nr_chips; i++) {
|
|
|
struct dsa_switch *ds = dst->ds[i];
|
|
|
|