Hi, i am using a custom board based on LX2160ARDB,
In my custom board we use below connection: SD2 lane4(PCIE GEN1 X1)->Intel I210->Marvell 88E1512 PHY->RJ45.
I210 to 88E1512 is SGMII to Copper mode. From u-boot log, i can see that auto-negotiation complete successfully and link was established, and PHY ID can be read successfully via I210 MDIO, but ping always failed like "ARP Retry count exceeded; starting again".
Since It is I210 MDIO to PHY 88E1512, so i didn't do any change to DTS file, and CONFIG_DM_ETH=y
I210 was detected under "dm tree"
Please help to check what i missed to make it working? thank you.
Please ignore "mic---xxx" strings since they are debugging output.
resetting ...
NOTICE: BL2: v2.4(release):LSDK-21.08-8-g924c47bb7
NOTICE: BL2: Built : 13:50:43, Jun 26 2024
NOTICE: UDIMM HMAA4GS7CJR8N-XN
NOTICE: DDR PMU Hardware version-0x1210
NOTICE: DDR PMU Firmware vision-0x1001 (vA-2019.04)
NOTICE: DDR4 UDIMM with 2-rank 64-bit bus (x8)
NOTICE: 32 GB DDR4, 64-bit, CL=22, ECC on, CS0+CS1
NOTICE: BL2: Booting BL31
NOTICE: BL31: v2.4(release):LSDK-21.08-8-g924c47bb7
NOTICE: BL31: Built : 13:50:43, Jun 26 2024
NOTICE: Welcome to lx2160acex7 BL31 Phase
U-Boot 2021.04-00042-g4fd5f74550 (Jun 26 2024 - 13:50:39 +0000)
Build Tag: 2.0.2.5
SoC: LX2160ACE Rev2.0 (0x87360020)
Clock Configuration:
CPU0(A72):2000 MHz CPU1(A72):2000 MHz CPU2(A72):2000 MHz
CPU3(A72):2000 MHz CPU4(A72):2000 MHz CPU5(A72):2000 MHz
CPU6(A72):2000 MHz CPU7(A72):2000 MHz CPU8(A72):2000 MHz
CPU9(A72):2000 MHz CPU10(A72):2000 MHz CPU11(A72):2000 MHz
CPU12(A72):2000 MHz CPU13(A72):2000 MHz CPU14(A72):2000 MHz
CPU15(A72):2000 MHz
Bus: 700 MHz DDR: 3200 MT/s
Reset Configuration Word (RCW):
00000000: 50838338 24500050 00000000 00000000
00000010: 00000000 0e010000 00000000 00000000
00000020: 110001a0 00002580 00000000 08000086
00000030: 09240000 00000001 00000000 00000000
00000040: 00000000 00000000 00000000 00000000
00000050: 00000000 00000000 00000000 00000000
00000060: 00000000 00000000 00027000 00000000
00000070: 0c830000 00190020
Model: SolidRun LX2160ACEX7 COM express type 7 based board
Board: LX2160ACE Rev2.0-CEX7, FlexSPI DEV#0
SERDES1 Reference: Clock1 = 161.13MHz Clock2 = 100MHz
SERDES2 Reference: Clock1 = 100MHz Clock2 = 100MHz
SERDES3 Reference: Clock1 = 100MHz Clock2 = 100Hz
DRAM: 31.9 GiB
DDR 31.9 GiB (DDR4, 64-bit, CL=22, ECC on)
DDR Chip-Select Interleaving Mode: CS0+CS1
dev_get_priv: null device
dev_get_priv: null device
mic---uclass_first_device_check---1
mic---uclass_first_device_check---2
Using SERDES1 Protocol: 3 (0x3)
Using SERDES2 Protocol: 4 (0x4)
Using SERDES3 Protocol: 3 (0x3)
PCIe1: pcie@3400000 disabled
PCIe2: pcie@3500000 Root Complex: x2 gen3
PCIe3: pcie@3600000 Root Complex: x1 gen1
PCIe4: pcie@3700000 Root Complex: x1 gen1
mic---e1000_eth_bind
PCIe5: pcie@3800000 Root Complex: x1 gen2
PCIe6: pcie@3900000 Root Complex: no link
WDT: Started with servicing (30s timeout)
MMC: FSL_SDHC: 0, FSL_SDHC: 1
Loading Environment from SPIFlash... SF: Detected mt35xu512aba with page size 256 Bytes, erase size 128 KiB, total 64 MiB
*** Warning - bad CRC, using default environment
EEPROM: mic---uclass_first_device_check---1
mic---uclass_first_device_check---2
TlvInfo v1 len=116
In: serial_pl01x
Out: serial_pl01x
Err: serial_pl01x
SEC0: RNG instantiated
fsl_board_late_init
Net: mic---eth_initialize in eth-uclass.c
mic---eth_common_init---1
mic---phy.c call phy_atheros_init
mic---phy.c call phy_marvell_init
mic---eth_initialize---2
mic---uclass_first_device_check---1
mic---uclass_first_device_check---2
mic---ar803x_config---1
eth0: DPMAC3@xgmii, eth1: DPMAC4@xgmii, eth2: DPMAC5@xgmii, eth3: DPMAC6@xgmii, eth4: DPMAC7@xgmii, eth5: DPMAC8@xgmii, eth6: DPMAC9@xgmii, eth7: DPMAC10@xgmii, eth8: DPMAC17@rgmii-id [PRIME]mic---e1000_eth_probe
mic---e1000_eth_probe, hw-name = e1000#0
mic---e1000_init_one, hw->pdev = 0xfbb1c4c0, hw->cardnum = 0x0
e1000: e1000#0: DEBUG: iobase 0x40000000
mic---e1000_init_one, PCI_COMMAND = 0x100006
mic---e1000_init_one, call e1000_sw_init, hw->hw_addr = 0x40000000
mic---e1000_sw_init---1
mic---e1000_sw_init---2, hw->mac_type = 0x0
mic---e1000_sw_init,hw->vendor_id=0x8086,hw->device_id=0x1538
mic---E1000_CTRL = 0x8940241
mic---E1000_STATUS = 0x380383
mic---E1000_I210_EECD = 0x4082b40
mic---E1000_CTRL_EXT = 0x2940840
mic---E1000_MDICNFG = 0x80200000
e1000_set_mac_type
mic---e1000_sw_init---3, hw->mac_type = 0x14
e1000_set_media_type
copper interface
mic---e1000_check_phy_reset_block, manc = 0x62000003
e1000_reset_hw
Masking off all interrupts
Issuing a global reset to MAC
PF OK
EEC OK
Masking off all interrupts
mic---e1000_init_one----2
e1000_init_eeprom_params
e1000_validate_eeprom_checksum
e1000_read_eeprom
e1000_is_onboard_nvm_eeprom
e1000: 18:59:f5:f3:5c:ee
e1000_write_hwaddr: mac=18:59:f5:f3:5c:ee
e1000_read_eeprom
e1000_is_onboard_nvm_eeprom
e1000_read_eeprom
e1000_is_onboard_nvm_eeprom
e1000_read_eeprom
e1000_is_onboard_nvm_eeprom
e1000_write_hwaddr: current mac=18:59:f5:f3:5c:ee
, eth9: e1000#0e1000_write_hwaddr: mac=18:59:f5:f3:5c:ee
e1000_read_eeprom
e1000_is_onboard_nvm_eeprom
e1000_read_eeprom
e1000_is_onboard_nvm_eeprom
e1000_read_eeprom
e1000_is_onboard_nvm_eeprom
e1000_write_hwaddr: current mac=18:59:f5:f3:5c:ee
mic---Reset Ethernet PHY
mic---reset_phy in eth_lx2160acex7.c
mic---reset_phy---2
SF: Detected mt35xu512aba with page size 256 Bytes, erase size 128 KiB, total 64 MiB
device 0 offset 0x640000, size 0x80000
SF: 524288 bytes @ 0x640000 Read: OK
device 0 offset 0xa00000, size 0x300000
SF: 3145728 bytes @ 0xa00000 Read: OK
device 0 offset 0xe00000, size 0x100000
SF: 1048576 bytes @ 0xe00000 Read: OK
crc32+
fsl-mc: Booting Management Complex ... SUCCESS
fsl-mc: Management Complex booted (version: 10.37.0, boot status: 0x1)
Hit any key to stop autoboot: 10 9 0
=> setenv ethact e1000#0
=> setenv serverip 172.25.40.161
=> setenv ipaddr 172.27.43.47
=> setenv netmask 255.255.255.128
=> setenv gatewayip 172.27.43.1
=>ping 10.79.53.211
net_loop---1
mic-net_init_loop, net_ethaddr = 18:59:f5:f3:5c:eenet_loop---2
mic---e1000_eth_start
e1000_reset_hw
Masking off all interrupts
Issuing a global reset to MAC
PF OK
EEC OK
Masking off all interrupts
e1000_init_hw
e1000_set_media_type
Initializing the IEEE VLAN
e1000_init_rx_addrs
Programming MAC Address into RAR[0]
Clearing RAR[1-15]
Zeroing the MTA
e1000_setup_link
mic---e1000_check_phy_reset_block, manc = 0x62000003
e1000_read_eeprom
e1000_is_onboard_nvm_eeprom
After fix-ups FlowControl is now = 1
e1000_setup_copper_link
e1000_copper_link_preconfig
e1000_detect_gig_phy
mic---E1000_MDICNFG before read phy id = 0x80200000
hw->mac_type = 0x14, hw->phy_id = 0x1410dd0
e1000_set_phy_type
PHY ID 0x1410DD0 detected
Phy ID = 1410dd0
e1000_set_phy_mode
e1000_copper_link_mgp_setup
mic---e1000_phy_reset
e1000_phy_reset
mic---e1000_check_phy_reset_block, manc = 0x62000003
mic---e1000_phy_reset, phy reset was not blocked
e1000_copper_link_autoneg
Reconfiguring auto-neg advertisement params
e1000_phy_setup_autoneg
autoneg_advertised 2f
Advertise 10mb Half duplex
Advertise 10mb Full duplex
Advertise 100mb Half duplex
Advertise 100mb Full duplex
Advertise 1000mb Full duplex
Auto-Neg Advertising de1
Restarting Auto-Neg
mic---dump phy mdio registers
mic---PHY_ID1 = 0x141
mic---PHY_ID2 = 0xdd1
mic---PHY_STATUS = 0x7949
mic---PHY_CTRL = 0x1140
e1000_wait_autoneg
Waiting for Auto-Neg to complete.
Auto-Neg complete.
e1000_copper_link_postconfig
e1000_config_collision_dist
e1000_config_fc_after_link_up
Flow Control = RX PAUSE frames only.
e1000_get_speed_and_duplex
1000 Mbs, Full Duplex
e1000_force_mac_fc
Valid link established!!!
Initializing the Flow Control address, typeand timer regs
e1000_config_collision_dist
mic-net_init_loop, net_ethaddr = 18:59:f5:f3:5c:eenet_loop---3, protocol is 0
net_loop---4
Using e1000#0 device
mic-arp_raw_request, net_ethaddr = 18:59:f5:f3:5c:ee, source_ip = 0x 2f2b1bac, target_ip = 0x 12b1bac
packet size = 0x2a
ff ff ff ff ff ff 18 59 f5 f3 5c ee 8 6 0 1 8
0 6 4 0 1 18 59 f5 f3 5c ee ac 1b 2b 2f 0
0 0 0 0 0 ac 1b 2b 1 mic---e1000_eth_send
mic-arp_raw_request, net_ethaddr = 18:59:f5:f3:5c:ee, source_ip = 0x 2f2b1bac, target_ip = 0x 12b1bac
packet size = 0x2a
ff ff ff ff ff ff 18 59 f5 f3 5c ee 8 6 0 1 8
0 6 4 0 1 18 59 f5 f3 5c ee ac 1b 2b 2f 0
0 0 0 0 0 ac 1b 2b 1 mic---e1000_eth_send
mic-arp_raw_request, net_ethaddr = 18:59:f5:f3:5c:ee, source_ip = 0x 2f2b1bac, target_ip = 0x 12b1bac
packet size = 0x2a
ff ff ff ff ff ff 18 59 f5 f3 5c ee 8 6 0 1 8
0 6 4 0 1 18 59 f5 f3 5c ee ac 1b 2b 2f 0
0 0 0 0 0 ac 1b 2b 1 mic---e1000_eth_send
mic-arp_raw_request, net_ethaddr = 18:59:f5:f3:5c:ee, source_ip = 0x 2f2b1bac, target_ip = 0x 12b1bac
packet size = 0x2a
ff ff ff ff ff ff 18 59 f5 f3 5c ee 8 6 0 1 8
0 6 4 0 1 18 59 f5 f3 5c ee ac 1b 2b 2f 0
0 0 0 0 0 ac 1b 2b 1 mic---e1000_eth_send
ARP Retry count exceeded; starting again
mic---e1000_eth_stop
ping failed; host 10.79.53.211 is not alive
=>
You could do the following test:
Please configure your PC with IP address 192.168.0.1 and netmask to 255.255.255.0. For our target board, configured IP address to 192.168.0.2 and netmask to 255.255.255.0. Then connect the target board and your PC directly with Ethernet cable. On the target board, ping 192.168.0.1 and check whether there is packet receiving on your PC.
Please turned off firewall & Network protection and disabled VPN on your PC.
In addition, you could boot up to Linux Kernel and check whether ping can work or not. The following is Linux Kernel configuration.
If this problem persists, it's better to contact Intel for this issue.