I'm trying to add support for a Netgear EX6100 v1 which seems to be the same hardware as the EX3700 except for a RTL8211E phy for gigabit ethernet.
When I'm in the bootloader the phy connects at 1000M as expected, but when I boot into Linux the connection will thrash a few times before falling back to 100M:
[ 298.237857] br-lan: port 1(eth0) entered blocking state
[ 298.248347] br-lan: port 1(eth0) entered forwarding state
[ 298.444087] mtk_soc_eth 10100000.ethernet eth0: port 5 link up (1000Mbps/Full duplex)
[ 298.768116] br-lan: port 1(eth0) entered disabled state
[ 301.250549] br-lan: port 1(eth0) entered blocking state
[ 301.261041] br-lan: port 1(eth0) entered forwarding state
[ 301.657642] br-lan: port 1(eth0) entered disabled state
[ 303.655403] br-lan: port 1(eth0) entered blocking state
[ 303.665892] br-lan: port 1(eth0) entered forwarding state
[ 303.966073] mtk_soc_eth 10100000.ethernet eth0: port 5 link up (100Mbps/Full duplex)
The first potential problem is the generic driver is being used. Even if I add the realtek phy package, the switch probes the phys before the module is loaded. When I try an image with the driver built in to the kernel, it's the same thing though.
The next issue might be the rgmii delay. Looking at the way the registers are left by the bootloader, the mtk mac is probably rgmii-txid and the phy is rgmii. When I configure this, I see the same problem.
I'm not sure what else needs to be configured for the phy to work at 1000M. Other boards have power and oscillator settings, but I'm not sure how to figure those out. Are there any tools for tracing phy events that could help debug this? Are there any other settings that RTL phys usually need?