Access point multiple routes

There is some "unique" behavior associated with the integrated switch in the IPQ40xx devices, of which the EA8300 is just one impacted.

I haven't picked this back up again, but this is perhaps worth a read:

The DSA functionality in 4.19 turned out to be something of a dead end as, at least a couple months ago, it didn't support VLANs in any reasonable way.

I've got a couple projects on my desk along with an EA8300 and will be looking at getting both the QCA-specific packet tags and the VLAN tagging to be able to support this kind of application.

The "interesting" parts of qcom-ipq4019.dtsi include

                ess-switch@c000000 {
                        compatible = "qcom,ess-switch";
                        reg = <0xc000000 0x80000>;
                        switch_access_mode = "local bus";
                        resets = <&gcc ESS_RESET>;
                        reset-names = "ess_rst";
                        clocks = <&gcc GCC_ESS_CLK>;
                        clock-names = "ess_clk";
                        switch_cpu_bmp = <0x1>;
                        switch_lan_bmp = <0x1e>;
                        switch_wan_bmp = <0x20>;
                        switch_mac_mode = <0>; /* PORT_WRAPPER_PSGMII */
                        switch_initvlas = <0x7c 0x54>;
                        status = "disabled";
                };

which associate the ports with the CPU via the switch_*_bmp values

and

                        gmac0: gmac0 {
                                local-mac-address = [00 00 00 00 00 00];
                                vlan_tag = <1 0x1f>;
                        };

                        gmac1: gmac1 {
                                local-mac-address = [00 00 00 00 00 00];
                                qcom,phy_mdio_addr = <4>;
                                qcom,poll_required = <1>;
                                qcom,forced_speed = <1000>;
                                qcom,forced_duplex = <1>;
                                vlan_tag = <2 0x20>;
                        };

which, as I recall, effectively "hard codes" the switch's VLAN tags for those ports.

Edit: The driver code itself looks to be in drivers/net/phy/ar40xx.c, though I haven't re-found where the Ethernet mapping gets consumed yet.

Edit: See also drivers/net/ethernet/qualcomm/essedma/edma.c