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