Hi Andrew, Thank you for the quick reply. On Wed, Jul 15, 2020 at 12:27:16AM +0200, Andrew Lunn wrote: > I think this change is more complex than it needs to be. Only the CPU > port supports different interface modes. So i don't see the need to > handle both dev->interface and p->interface. Just first search > ksz_switch_register() first look in the cpu port node, and if not > found go back to the old location. The rest of the code can stay the > same. The driver supports (among others) the KSZ9897R, which comes with two MAC ports supporting[1, page 8] RGMII/RMII/MII (ports 6 and 7). Both of these can be connected to a CPU, so they can both operate as CPU ports in principle. However, one can only enable tail tagging for one of them at a time[1, page 39]. As the current driver expects tail tagging to be enabled on CPU ports, it doesn't work as is with the driver. It could still be used to form a ring of switches such that a single failing switch would leave two chains of switches attached to the CPU. This kind of failover seems to be part of the DSA vision (but I fail to find a reference at the moment). For these reasons, I think that there can be multiple CPU ports in future. Now there is a trade-off. Either we further encode the assumption of there being only a single CPU port more deeply into the driver (as it already does assume that) or we can take the opportunity to already lift it here with the vision for runtime reconfiguration of switch topologies. You seem to be in favour of more deeply encoding the "there can be only one CPU port" assumption. Based on that assumption, the rest of what you write makes very much sense to me. Is that the direction to go? Helmut [1] http://ww1.microchip.com/downloads/en/DeviceDoc/KSZ9897R-Data-Sheet-DS00002330D.pdf