net: dsa: Add new binding implementation
[cascardo/linux.git] / net / dsa / dsa.c
index 6c314f3..ce3b942 100644 (file)
@@ -294,6 +294,7 @@ static int dsa_switch_setup_one(struct dsa_switch *ds, struct device *parent)
                        }
                        dst->cpu_switch = index;
                        dst->cpu_port = i;
+                       ds->cpu_port_mask |= 1 << i;
                } else if (!strcmp(name, "dsa")) {
                        ds->dsa_port_mask |= 1 << i;
                } else {
@@ -492,6 +493,10 @@ static void dsa_switch_destroy(struct dsa_switch *ds)
                if (!(dsa_is_cpu_port(ds, port) || dsa_is_dsa_port(ds, port)))
                        continue;
                dsa_cpu_dsa_destroy(ds->ports[port].dn);
+
+               /* Clearing a bit which is not set does no harm */
+               ds->cpu_port_mask |= ~(1 << port);
+               ds->dsa_port_mask |= ~(1 << port);
        }
 
        if (ds->slave_mii_bus && ds->drv->phy_read)