I am working on an embedded system that will connect a processor running Linux to an Ethernet switch via a "conduit" Ethernet link (e.g. eth0) using one of the port-based DSA frame tagging protocols, so that the Linux kernel will present the userspace with separate Ethernet links for each of the switch's user ports (e.g. lan1, lan2, lan3).
As I understand it this is usually done via a fixed phy-less conduit (e.g. xMII) and an MDIO link between the processor and the switch so that the processor can configure and control the physical user ports.
I want to do some software development ahead of receiving the hardware, so I want to "fake" the MDIO link, or in some other way configure the kernel, such that it uses port-based DSA frame tagging over an ordinary (PHY-equipped) Ethernet port.
The documentation of kernel modules dsa_loop and dsa_loop_bdinfo imply that these might be suitable, and the source code seems to link .netdev = "eth0" to some user ports ("lan1".."lan4") but even though I can modprobe dsa_loop into my kernel I don't see any virtual port devices created by the kernel (I am using ifconfig -a to show net devices).
~# lsmod
Module Size Used by
dsa_loop 16384 0
dsa_core 118784 1 dsa_loop
When doing the modprobe dsa_loop I see a call to dsa_loop_init but no call to dsa_loop_drv_probe.
So I guess I have several questions:
Are the dsa_loop and dsa_loop_init modules intended to allow DSA tagging to be performed on a "normal" Ethernet link?
How are these modules intended to be used?
Are there any other ways of configuring Linux to do this without access to the switch MDIO?