AM335x Champs,
We've been able to get the GEMAC up and running using RMII. However, we are stuck in 10Mbit/sec speeds, 1.1Mbyte/sec in fact, and are trying to acheive the 100Mbits speeds. We've included a scope shot of the REFCLK. We are using the the LAN8720, which is the RMII version of the LAN8710 used on the Beaglebone and have boot strapped it to work in auto-negotiate mode.
Linux is indicating the following:
Inteface is up and auto-negotiating at 10Mbs
root@arm:~# ethtool eth0
Settings for eth0:
Supported ports: [ TP MII ]
Supported link modes: 10baseT/Half 10baseT/Full
Supported pause frame use: Symmetric Receive-only
Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full
Advertised pause frame use: Symmetric Receive-only
Advertised auto-negotiation: Yes
Speed: 10Mb/s
Duplex: Full
Port: MII
PHYAD: 0
Transceiver: external
Auto-negotiation: on
Current message level: 0x00000000 (0)
Link detected: yes
Copying 100MB file:
data.bin 100% 51MB 1.1MB/s 00:47
Only 1 packet dropped, i.e. almost zero error rate
eth0 Link encap:Ethernet HWaddr bc:6a:29:57:3e:dc
inet addr:192.168.98.101 Bcast:192.168.98.255 Mask:255.255.255.0
inet6 addr: fe80::be6a:29ff:fe57:3edc/64 Scope:Link
UP BROADCAST RUNNING ALLMULTI MULTICAST MTU:1500 Metric:1
RX packets:48946 errors:0 dropped:1 overruns:0 frame:0
TX packets:20632 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:57984084 (55.2 MiB) TX bytes:1419359 (1.3 MiB)
Linux also shows interface operating at 10MBPs
root@arm:~# ifconfig eth0 up
[ 1855.735443] net eth0: CPSW phy found : id is : 0x7c0f1
[ 1855.753204] ADDRCONF(NETDEV_UP): eth0: link is not ready
root@arm:~# [ 1859.729888] PHY: 0:00 - Link is Up - 10/Full
[ 1859.734924] ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
Reading the PHY's configuration Register seems to indicate a form of 100MB/s was negotiated, see the 0111100000101101 value read from the phy basic status register. The values for these bit fields are:
15 100BASE-T4
0 = no T4 ability
1 = T4 able
Value: 0b
14 100BASE-TX Full Duplex
0 = no TX full duplex ability
1 = TX with full duplex
Value: 1b
13 100BASE-TX Half Duplex
0 = no TX half duplex ability
1 = TX with half duplex
Value: 1b
12 10BASE-T Full Duplex
0 = no 10Mbps with full duplex ability
1 = 10Mbps with full duplex
Value: 1b
11 10BASE-T Half Duplex
0 = no 10Mbps with half duplex ability
1 = 10Mbps with half duplex
Value: 1b
10 100BASE-T2 Full Duplex
0 = PHY not able to perform full duplex 100BASE-T2
1 = PHY able to perform full duplex 100BASE-T2
Value: 0b
9 100BASE-T2 Half Duplex
0 = PHY not able to perform half duplex 100BASE-T2
1 = PHY able to perform half duplex 100BASE-T2
Value: 0b
8 Extended Status
0 = no extended status information in register 15
1 = extended status information in register 15
Value: 0b
7:6 RESERVED RO –
5 Auto-Negotiate Complete
0 = auto-negotiate process not completed
1 = auto-negotiate process completed
Value: 0b
4 Remote Fault
1 = remote fault condition detected
0 = no remote fault
Value: 0b
3 Auto-Negotiate Ability
0 = unable to perform auto-negotiation function
1 = able to perform auto-negotiation function
Value: 1b
2 Link Status
0 = link is down
1 = link is up
Value: 0b
1 Jabber Detect
0 = no jabber condition detected
1 = jabber condition detected
Value: 0b
0 Extended Capabilities
0 = does not support extended capabilities registers
1 = supports extended capabilities registers
Value: 1b
So this indicates 100MB/s was negotiated, but not 100BASE-T2 Full Duplex.
Could this be causing Linux negotiate to the lower speeds?
Could this be HW/CLK related?
REFCLK Scope:
Link to LAN8720 Datasheet:
Previous Related Threads:
[AM335x] Board Porting - BeagleBone MII to 2xRMII
Ethernet problem in U-Boot - can't ping