Subject: Re: [PATCH net-next] net: dsa: microchip: ksz8795: Fix KSZ8794 port map again

From: Andrew Lunn <[email-masked]>
Date: Tue, 19 Jan 2021 22:27:22 +0100

On Tue, Jan 19, 2021 at 09:55:18PM +0100, Marek Vasut wrote:
> The KSZ8795 switch has 4 external ports {0,1,2,3} and 1 CPU port {4}, so
> does the KSZ8765. The KSZ8794 seems to be repackaged KSZ8795 with different
> ID and port 3 not routed out, however the port 3 registers are present in
> the silicon, so the KSZ8794 switch has 3 external ports {0,1,2} and 1 CPU
> port {4}. Currently the driver always uses the last port as CPU port, on
> KSZ8795/KSZ8765 that is port 4 and that is OK, but on KSZ8794 that is port
> 3 and that is not OK, as it must also be port 4.
> 
> This patch adjusts the driver such that it always registers a switch with
> 5 ports total (4 external ports, 1 CPU port), always sets the CPU port to
> switch port 4, and then configures the external port mask according to
> the switch model -- 3 ports for KSZ8794 and 4 for KSZ8795/KSZ8765.

Hi Marek

What appears to be missing is any checks for somebody trying to use
the 'somewhat non-existent' port.

Assuming all the drivers set dev->port_mask properly, i think you can
add a check to ksz_enable_port() and return -EINVAL if the requested
port is not a member of port_mask.

     Andrew