Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3a44514f authored by Andrew Lunn's avatar Andrew Lunn Committed by David S. Miller
Browse files

dsa: Destroy fixed link phys after the phy has been disconnected



The phy is disconnected from the slave in dsa_slave_destroy(). Don't
destroy fixed link phys until after this, since there can be fixed
linked phys connected to ports.

Signed-off-by: default avatarAndrew Lunn <andrew@lunn.ch>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent b71be352
Loading
Loading
Loading
Loading
+12 −12
Original line number Diff line number Diff line
@@ -430,7 +430,18 @@ static void dsa_switch_destroy(struct dsa_switch *ds)
		hwmon_device_unregister(ds->hwmon_dev);
#endif

	/* Disable configuration of the CPU and DSA ports */
	/* Destroy network devices for physical switch ports. */
	for (port = 0; port < DSA_MAX_PORTS; port++) {
		if (!(ds->phys_port_mask & (1 << port)))
			continue;

		if (!ds->ports[port])
			continue;

		dsa_slave_destroy(ds->ports[port]);
	}

	/* Remove any fixed link PHYs */
	for (port = 0; port < DSA_MAX_PORTS; port++) {
		if (!(dsa_is_cpu_port(ds, port) || dsa_is_dsa_port(ds, port)))
			continue;
@@ -448,17 +459,6 @@ static void dsa_switch_destroy(struct dsa_switch *ds)
		}
	}

	/* Destroy network devices for physical switch ports. */
	for (port = 0; port < DSA_MAX_PORTS; port++) {
		if (!(ds->phys_port_mask & (1 << port)))
			continue;

		if (!ds->ports[port])
			continue;

		dsa_slave_destroy(ds->ports[port]);
	}

	mdiobus_unregister(ds->slave_mii_bus);
}