Thu, May 17, 2018 at 04:48:28PM CEST, andrew@lunn.ch wrote:
quoted
quoted
Yes, modprobe dsa-loop-bdinfo first, which will create the
That is compiled inside "fixed_phy", isn't it?
Nope.
It follows a pattern seen with I2C and SPI subsystem. A bus driver
provides a bus to Linux. But i2c and SPI, unlike PCI or USB, you
cannot enumerate the devices on the bus, you need to know what devices
are there. So the board file registers an info structure, listing what
devices are on the bus. When the bus pops into existence, the core
links the bus to the info structure about devices on the bus and then
probes the devices.
The same is happening here. The fixed_phy driver provides an MDIO bus.
The info structure in dsa-loop-bdinfo says there is an dsa-loop device
at address 31 on that bus.
Combine the two causes the dsa-loop device to actually probe.
I understand. Yet I have no dsa_loop_bdinfo.ko module. In my .config I
have:
CONFIG_FIXED_PHY=y
CONFIG_NET_DSA_LOOP=m
I had to do this:
diff --git a/drivers/net/dsa/Makefile b/drivers/net/dsa/Makefile
index 15c2a831edf1..2d773d3a7d49 100644
--- a/drivers/net/dsa/Makefile
+++ b/drivers/net/dsa/Makefile
@@ -2,9 +2,7 @@
obj-$(CONFIG_NET_DSA_BCM_SF2) += bcm-sf2.o
bcm-sf2-objs := bcm_sf2.o bcm_sf2_cfp.o
obj-$(CONFIG_NET_DSA_LOOP) += dsa_loop.o
-ifdef CONFIG_NET_DSA_LOOP
-obj-$(CONFIG_FIXED_PHY) += dsa_loop_bdinfo.o
-endif
+obj-$(CONFIG_NET_DSA_LOOP) += dsa_loop_bdinfo.o
obj-$(CONFIG_NET_DSA_MT7530) += mt7530.o
obj-$(CONFIG_NET_DSA_MV88E6060) += mv88e6060.o
obj-$(CONFIG_NET_DSA_QCA8K) += qca8k.o
Now dsa_loop_bdinfo.ko gets compiled. I have no clue why it does not
work without the patch :O "obj-$(CONFIG_FIXED_PHY)" doesn't work.