I have been working towards supporting the MT7530 switch as used in the MediaTek MT7621 SoC. Unlike the MediaTek MT7623 the MT7621 is built around a dual core MIPS CPU architecture. But underneath it is what appears to be the same 7530 switch.
The following 3 patches are more of an RFC than anything. They allow use of the mt7530 dsa driver on this device - though with some issues still to resolve. The primary change required is to not use the 7623 specific clock and regulator setup - none of that applies when using the 7621 (and maybe other devices?). The other change required is to set the 7530 MFC register CPU port number and enable bit. The unresolved issues I still have appear to be more related to the MT7621 ethernet driver (drivers/staging/mt7621-eth/*). I am hoping someone might have some ideas on these. I don't really have any good documentation on the ethernet devices on the 7621, so I am kind of working in the dark here. 1. TX packets are not getting an IP header checksum via the normal off-loaded checksumming when in DSA mode. I have to switch off NETIF_F_IP_CSUM, so the software stack generates the checksum. That checksum offloading works ok when not using the 7530 DSA driver. 2. Maximal sized RX packets get silently dropped. So receive side packets that are large (perfect case is the all-but-last packets in a fragemented larger packet) appear to be dropped at the mt7621 ethernet MAC level. The 7530 MIB switch register counters show receive packets at the physical switch port side and at the CPU switch port - but I get no packets received or errors in the 7621 ethernet MAC. If I set the mtu of the server at the other end a little smaller (a few bytes is enough) then I get all the packets through. It seems like the DSA/VLAN tag bytes are causing a too large packet to get silently dropped somewhere. Any thoughts greatly appreciated... Documentation/devicetree/bindings/net/dsa/mt7530.txt | 5 + drivers/net/dsa/mt7530.c | 95 ++++++++++++------- drivers/net/dsa/mt7530.h | 5 + 3 files changed, 70 insertions(+), 35 deletions(-)