net: phy: marvell: network working with generic PHY and not with marvell PHY

From: Corentin Labbe
Date: Tue Jan 04 2022 - 05:58:09 EST


Hello

I have a gemini SSI 1328 box which has a cortina ethernet MAC with a Marvell 88E1118 as given by:
Marvell 88E1118 gpio-0:01: attached PHY driver (mii_bus:phy_addr=gpio-0:01, irq=POLL)
So booting with CONFIG_MARVELL_PHY=y lead to a non-working network with link set at 1Gbit
Setting 'max-speed = <100>;' (as current state in mainline dtb) lead to a working network.
By not working, I mean kernel started with ip=dhcp cannot get an IP.

Without CONFIG_MARVELL_PHY, the PHY is detected as generic:
Generic PHY gpio-0:01: attached PHY driver (mii_bus:phy_addr=gpio-0:01, irq=POLL)
but with a 1Gbit link, network is now working.
I am able to get an IP via DHCP and iperf give:
Test Complete. Summary Results:
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.04 sec 185 MBytes 154 Mbits/sec 2 sender
[ 5] 0.00-10.09 sec 185 MBytes 154 Mbits/sec receiver
CPU Utilization: local/sender 77.8% (0.5%u/77.2%s), remote/receiver 13.3% (0.6%u/12.7%s)

ethtool confirms the gigabit link:
Settings for eth0:
Supported ports: [ TP MII ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Half 1000baseT/Full
Supported pause frame use: Symmetric Receive-only
Supports auto-negotiation: Yes
Supported FEC modes: Not reported
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Half 1000baseT/Full
Advertised pause frame use: Symmetric Receive-only
Advertised auto-negotiation: Yes
Advertised FEC modes: Not reported
Link partner advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Link partner advertised pause frame use: No
Link partner advertised auto-negotiation: Yes
Link partner advertised FEC modes: Not reported
Speed: 1000Mb/s
Duplex: Full
Port: MII
PHYAD: 1
Transceiver: external
Auto-negotiation: on
Current message level: 0x00000007 (7)
drv probe link
Link detected: yes

With the marvell PHY, ethtool reports:
Settings for eth0:
Supported ports: [ TP MII ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Half 1000baseT/Full
Supported pause frame use: Symmetric Receive-only
Supports auto-negotiation: Yes
Supported FEC modes: Not reported
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Half 1000baseT/Full
Advertised pause frame use: Symmetric Receive-only
Advertised auto-negotiation: Yes
Advertised FEC modes: Not reported
Link partner advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Link partner advertised pause frame use: No
Link partner advertised auto-negotiation: Yes
Link partner advertised FEC modes: Not reported
Speed: 1000Mb/s
Duplex: Full
Port: Twisted Pair
PHYAD: 1
Transceiver: external
Auto-negotiation: on
MDI-X: Unknown
Current message level: 0x00000007 (7)
drv probe link
Link detected: yes
Only change vs generic I saw is MDI-X and Port: values

Do you have any idea why the marvell PHY "break" the network ?

Regards