This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CCS: K2H14 and TCI6638K2K (evm k2h) in ethernet uboot configuration.

Other Parts Discussed in Thread: TCI6638K2K

Tool/software: Code Composer Studio

Hi experts.

   I have a strange problem on our custom board with C66AK2H14 chip (core Rev 11) instead of TCI6638K2K
present on yours evm k2h evaluation board.
It seems a wrong 1GSwitchSubSystem configuration error, there are some patch to add at uboot to do that?
or in QMSS or some device three wrong parameter? I don't know.

I have configured (I suppose well) our phy (88E1548) but the ethernet packets no enter/exit from our board.

I use wireshark for see eth packets and to send I use packETH (configured using my PC eth data and
netcp@2000000 eth parameter).
The phy is configured as 1000M Ful Duplex, the external switch show autonegotiation end with success,
(as show in latest log).


The same code wich some little difference (not in eth parts) and some little difference in DTS runs in
EVM board without any problem, in the same HW configuration (external SWITCH + PC connections).

PS: in our board we not use phy interrupt (in evaluation board this signal was connected at GPIO/SPI
adapter connected in uController, I hope also in EVM this signa wal not handled from SOC).

I have seen also a strange configuration in arp request message, the uboot use MAC broadcast eth
00:00:00:00:00:00 instead of FF:FF:FF:FF:FF:FF, I have also tried to change this, without any success
(then I have removed my patch).

uclass.c@246: uclass_find_device_by_seq: 0 1

U-Boot 2018.01-00558-gafce7b16cd-dirty (Dec 13 2019 - 11:09:56 +0100)

CPU: 66AK2Hx Rev11 (DRSP)
Model: Rheinmetall DRSP board (UBoot)
DRAM:  DDR3A Speed will be configured for 1600 Operation.
DDR3A memory bank [DRSP-K2H-2G1600SED]
DDR3 speed 1600
DRAM: 2 GiB (includes reported below)
DRAM: 2 GiB
***************************************************************
Relocation Offset is: f3e86000
Relocating to ffe86000, new gd at fde75ed8, sp at fde75eb0
***************************************************************
uclass.c@246: uclass_find_device_by_seq: 0 -1
uclass.c@246: uclass_find_device_by_seq: 0 0
uclass.c@254:    - -1 -1 'root_driver'
uclass.c@262:    - not found
ofnode.c@136: ofnode_read_u32_array: ranges: ofnode.c@22: ofnode_read_u32: reg: ofnode.c@38: 0x0 (0)
ofnode.c@22: ofnode_read_u32: spi-max-frequency: ofnode.c@38: 0x337f980 (54000000)
ofnode.c@64: ofnode_read_bool: spi-cpol: ofnode.c@68: true
ofnode.c@64: ofnode_read_bool: spi-cpha: ofnode.c@68: true
ofnode.c@64: ofnode_read_bool: spi-cs-high: ofnode.c@68: false
ofnode.c@64: ofnode_read_bool: spi-3wire: ofnode.c@68: false
ofnode.c@64: ofnode_read_bool: spi-half-duplex: ofnode.c@68: false
ofnode.c@22: ofnode_read_u32: spi-tx-bus-width: ofnode.c@38: 0x1 (1)
ofnode.c@22: ofnode_read_u32: spi-rx-bus-width: ofnode.c@38: 0x1 (1)
eth_post_bind: Called
NAND:  1024 MiB
MMC:   
uclass.c@246: uclass_find_device_by_seq: 0 0
uclass.c@254:    - 0 -1 'spi@21000400'
uclass.c@254:    - 1 -1 'spi@21000600'
uclass.c@254:    - 2 -1 'spi@21000800'
uclass.c@262:    - not found
uclass.c@246: uclass_find_device_by_seq: 1 0
uclass.c@254:    - 0 -1 'spi@21000400'
uclass.c@258:    - found
uclass.c@246: uclass_find_device_by_seq: 0 -1
uclass.c@246: uclass_find_device_by_seq: 0 0
uclass.c@254:    - -1 -1 'soc'
uclass.c@262:    - not found
uclass.c@246: uclass_find_device_by_seq: 0 0
uclass.c@254:    - 0 -1 'spi@21000400'
uclass.c@254:    - 1 -1 'spi@21000600'
uclass.c@254:    - 2 -1 'spi@21000800'
uclass.c@262:    - not found
ofnode.c@22: ofnode_read_u32: spi-max-frequency: ofnode.c@33: (not found)
uclass.c@246: uclass_find_device_by_seq: 0 -1
uclass.c@246: uclass_find_device_by_seq: 0 0
uclass.c@254:    - -1 -1 'mt25qu256a@0'
uclass.c@262:    - not found
SF: Detected mt25qu256a with page size 256 Bytes, erase size 64 KiB, total 32 MiB
uclass.c@246: uclass_find_device_by_seq: 0 1
uclass.c@254:    - -1 -1 'netcp@2000000'
uclass.c@262:    - not found
uclass.c@246: uclass_find_device_by_seq: 0 2
uclass.c@254:    - -1 -1 'netcp@2000000'
uclass.c@262:    - not found
uclass.c@246: uclass_find_device_by_seq: 0 3
uclass.c@254:    - -1 -1 'netcp@2000000'
uclass.c@262:    - not found
uclass.c@246: uclass_find_device_by_seq: 0 0
uclass.c@254:    - -1 -1 'netcp@2000000'
uclass.c@262:    - not found
Net: eth_initialize: Called
uclass.c@246: uclass_find_device_by_seq: 0 -1
uclass.c@246: uclass_find_device_by_seq: 0 0
uclass.c@254:    - -1 -1 'netcp@2000000'
uclass.c@262:    - not found
ks2_eth_ofdata_to_platdata: Called
ks2_eth_bind_slaves: Called
ks2_eth_parse_slave_interface: Called
ks2_eth_probe: Called
ks2_serdes_init_cfg: base=0x232A000 clk=0x3, rate=0x1
keystone2_mdio_reset: Called
create_phy_by_mask: r=0 phy_id=0x1410EC0
phy_write: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0000 val=0x8000
phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0000 val=0x0000
netcp@2000000 connected to Marvell 88E1548
m88e1145_config_daia: Called
phy_write: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0016 val=0x00FF
phy_write: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0011 val=0x214B
phy_write: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0010 val=0x2144
phy_write: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0011 val=0x0C28
phy_write: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0010 val=0x2146
phy_write: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0011 val=0xB233
phy_write: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0010 val=0x214D
phy_write: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0011 val=0xDC0C
phy_write: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0010 val=0x2159
phy_write: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0016 val=0x00FB
phy_write: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0007 val=0xC00D
phy_write: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0016 val=0x0000
phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0010 val=0x3320
phy_write: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0010 val=0x3020
phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0010 val=0x3020
phy_write: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0010 val=0x3020
phy_write: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0016 val=0x0001
phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0000 val=0x0140
phy_write: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0000 val=0x1140
phy_write: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0016 val=0x0000
phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0004 val=0x01E1
phy_write: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0004 val=0x01E1
phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0009 val=0x0300
phy_write: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0009 val=0x0300
phy_write: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0016 val=0x0001
phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0004 val=0x0901
phy_write: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0004 val=0x0961
phy_write: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0016 val=0x0000
phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0009 val=0x0300
phy_write: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0009 val=0x1F00
phy_write: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0012 val=0x0000
phy_write: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0016 val=0x0002
phy_write: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0010 val=0x0008
phy_write: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0015 val=0x0006
phy_write: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0016 val=0x0000
phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0014 val=0x0020
phy_write: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0014 val=0x0020
genphy_config_aneg: Called
genphy_config_advert: Calleda
genphy_config_advert: phydev->supported=0x2ff
phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0004 val=0x01E1
genphy_config_advert: adv=0x1e1
adv2=0x1e1
phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x7949
bmsr=0x7949
bmsr2=0x7949
phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0009 val=0x1F00
adv4=0x1f00
adv5=0x1f00
changed=0x0
phy_write: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0009 val=0x1F00
err=0x0
genphy_config_aneg: return 1 0x0
genphy_config_aneg: return 2 0x0
phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0000 val=0x0000
genphy_restart_aneg: Called
phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0000 val=0x0000
phy_write: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0000 val=0x1200
phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0000 val=0x1000
phy_write: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0000 val=0x9000
eth_post_probe: Called
ks2_eth_read_rom_hwaddr: Called
eth0: netcp@2000000ks2_eth_write_hwaddr: Called


Net IF Nr: 1
Hit any key to stop autoboot:  0


DRSP_UBoot> setenv ipaddr 192.168.99.23
DRSP_UBoot> setenv gatewayip 192.168.99.1


DRSP_UBoot> dhcp
ks2_eth_stop: Called
eth_init: Called
Trying netcp@2000000
ks2_eth_start: Called
keystone_sgmii_config: Called interface 1 port 0

netcp@2000000 Waiting for SGMII auto negotiation to complete.
Exit: mask=0x5 status=0x3D done
ethss_config: Called
keystone2_mdio_reset: Called
m88e1145_startup_daia: Called
genphy_update_link: Called
phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x796D
phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x796D
genphy_update_link: Exit 1,phydev->link=0x1
genphy_update_link: Exit 1 phy.c @ 311, Link =1, speed=0, duplex=-1
m88e1xxx_parse_status: Called
phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0011 val=0xBC48
m88e1xxx_parse_status: Exit marvell.c @ 201, Link =1, speed=1000, duplex=1
keystone2_eth_gigabit_enable: Called
ethss_start: Called
mac_sl_reset: Called
mac_sl_config: Called
mac_sl_reset: Called
mac_sl_config: Called
mac_sl_reset: Called
mac_sl_config: Called
mac_sl_reset: Called
mac_sl_config: Called
BOOTP broadcast 1
eth_send: Called
genphy_update_link: Called
phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x796D
genphy_update_link: Exit 0,phydev->link=0x1 mii_reg=0x796D
ks2_eth_send: Called keystone_net.c @ 846 link=1
ksnav_send: Called keystone_nav.c @ 289 ret OK
K2H PKT: "ff ff ff ff ff ff 50 33 8b 6b 35 7c 08 00 45 00 01 48 00 00 40 00 ff 11 7a a5 00 00 00 00 ff ff ff ff 00 44 00 43 01 34 00 00 01 01 06 00 8b 6c 77 64 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
BOOTP broadcast 2
eth_send: Called
genphy_update_link: Called
phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x796D
genphy_update_link: Exit 0,phydev->link=0x1 mii_reg=0x796D
ks2_eth_send: Called keystone_net.c @ 846 link=1
ksnav_send: Called keystone_nav.c @ 289 ret OK
K2H PKT: "ff ff ff ff ff ff 50 33 8b 6b 35 7c 08 00 45 00 01 48 00 01 40 00 ff 11 7a a4 00 00 00 00 ff ff ff ff 00 44 00 43 01 34 00 00 01 01 06 00 8b 6c 78 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
BOOTP broadcast 3
eth_send: Called
genphy_update_link: Called
phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x796D
genphy_update_link: Exit 0,phydev->link=0x1 mii_reg=0x796D
ks2_eth_send: Called keystone_net.c @ 846 link=1
ksnav_send: Called keystone_nav.c @ 289 ret OK
K2H PKT: "ff ff ff ff ff ff 50 33 8b 6b 35 7c 08 00 45 00 01 48 00 02 40 00 ff 11 7a a3 00 00 00 00 ff ff ff ff 00 44 00 43 01 34 00 00 01 01 06 00 8b 6c 7a 58 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
BOOTP broadcast 4
eth_send: Called
genphy_update_link: Called
phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x796D
genphy_update_link: Exit 0,phydev->link=0x1 mii_reg=0x796D
ks2_eth_send: Called keystone_net.c @ 846 link=1
ksnav_send: Called keystone_nav.c @ 289 ret OK
K2H PKT: "ff ff ff ff ff ff 50 33 8b 6b 35 7c 08 00 45 00 01 48 00 03 40 00 ff 11 7a a2 00 00 00 00 ff ff ff ff 00 44 00 43 01 34 00 00 01 01 06 00 8b 6c 7e 43 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00
BOOTP broadcast 5
eth_send: Called
genphy_update_link: Called
phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x796D
genphy_update_link: Exit 0,phydev->link=0x1 mii_reg=0x796D
ks2_eth_send: Called keystone_net.c @ 846 link=1
ksnav_send: Called keystone_nav.c @ 289 ret OK
K2H PKT: "ff ff ff ff ff ff 50 33 8b 6b 35 7c 08 00 45 00 01 48 00 04 40 00 ff 11 7a a1 00 00 00 00 ff ff ff ff 00 44 00 43 01 34 00 00 01 01 06 00 8b 6c 86 16 00 03 00 00 00 00 00 00 00 00 00 00 00 00 00
BOOTP broadcast 6
eth_send: Called
genphy_update_link: Called
phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x796D
genphy_update_link: Exit 0,phydev->link=0x1 mii_reg=0x796D
ks2_eth_send: Called keystone_net.c @ 846 link=1
ksnav_send: Called keystone_nav.c @ 289 ret OK
K2H PKT: "ff ff ff ff ff ff 50 33 8b 6b 35 7c 08 00 45 00 01 48 00 05 40 00 ff 11 7a a0 00 00 00 00 ff ff ff ff 00 44 00 43 01 34 00 00 01 01 06 00 8b 6c 8d e9 00 05 00 00 00 00 00 00 00 00 00 00 00 00 00
BOOTP broadcast 7
eth_send: Called
genphy_update_link: Called
phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x796D
genphy_update_link: Exit 0,phydev->link=0x1 mii_reg=0x796D
ks2_eth_send: Called keystone_net.c @ 846 link=1
ksnav_send: Called keystone_nav.c @ 289 ret OK
K2H PKT: "ff ff ff ff ff ff 50 33 8b 6b 35 7c 08 00 45 00 01 48 00 06 40 00 ff 11 7a 9f 00 00 00 00 ff ff ff ff 00 44 00 43 01 34 00 00 01 01 06 00 8b 6c 95 bc 00 07 00 00 00 00 00 00 00 00 00 00 00 00 00
BOOTP broadcast 8
eth_send: Called
genphy_update_link: Called
phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x796D
genphy_update_link: Exit 0,phydev->link=0x1 mii_reg=0x796D
ks2_eth_send: Called keystone_net.c @ 846 link=1
ksnav_send: Called keystone_nav.c @ 289 ret OK
K2H PKT: "ff ff ff ff ff ff 50 33 8b 6b 35 7c 08 00 45 00 01 48 00 07 40 00 ff 11 7a 9e 00 00 00 00 ff ff ff ff 00 44 00 43 01 34 00 00 01 01 06 00 8b 6c 9d 8f 00 09 00 00 00 00 00 00 00 00 00 00 00 00 00
ks2_eth_stop: Called
ethss_stop: Called
mac_sl_reset: Called
mac_sl_reset: Called
mac_sl_reset: Called
mac_sl_reset: Called
genphy_shutdown: Called

Abort


DRSP_UBoot> ping 192.168.99.150
ks2_eth_stop: Called
eth_init: Called
Trying netcp@2000000
ks2_eth_start: Called
keystone_sgmii_config: Called interface 1 port 0

netcp@2000000 Waiting for SGMII auto negotiation to complete.
Exit: mask=0x5 status=0x3D done
ethss_config: Called
keystone2_mdio_reset: Called
m88e1145_startup_daia: Called
genphy_update_link: Called
phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x796D
genphy_update_link: Exit 0,phydev->link=0x1 mii_reg=0x796D
m88e1xxx_parse_status: Called
phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0011 val=0xAC48
m88e1xxx_parse_status: Exit marvell.c @ 201, Link =1, speed=1000, duplex=1
keystone2_eth_gigabit_enable: Called
ethss_start: Called
mac_sl_reset: Called
mac_sl_config: Called
mac_sl_reset: Called
mac_sl_config: Called
mac_sl_reset: Called
mac_sl_config: Called
mac_sl_reset: Called
mac_sl_config: Called
*** ERROR: `ipaddr' not set
ks2_eth_stop: Called
ethss_stop: Called
mac_sl_reset: Called
mac_sl_reset: Called
mac_sl_reset: Called
mac_sl_reset: Called
genphy_shutdown: Called
ping failed; host 192.168.99.150 is not alive


DRSP_UBoot> setenv ipaddr 192.168.99.23


DRSP_UBoot> ping 192.168.99.150        
ks2_eth_stop: Called
eth_init: Called
Trying netcp@2000000
ks2_eth_start: Called
keystone_sgmii_config: Called interface 1 port 0

netcp@2000000 Waiting for SGMII auto negotiation to complete.
Exit: mask=0x5 status=0x3D done
ethss_config: Called
keystone2_mdio_reset: Called
m88e1145_startup_daia: Called
genphy_update_link: Called
phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x796D
genphy_update_link: Exit 0,phydev->link=0x1 mii_reg=0x796D
m88e1xxx_parse_status: Called
phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0011 val=0xAC48
m88e1xxx_parse_status: Exit marvell.c @ 201, Link =1, speed=1000, duplex=1
keystone2_eth_gigabit_enable: Called
ethss_start: Called
mac_sl_reset: Called
mac_sl_config: Called
mac_sl_reset: Called
mac_sl_config: Called
mac_sl_reset: Called
mac_sl_config: Called
mac_sl_reset: Called
mac_sl_config: Called
ping_start: Called
Using netcp@2000000 device
ping_send: Called
set_icmp_header: Called
arp_raw_request: Called
MAC: target: 00:00:00:00:00:00 local: 50:33:8B:6B:35:7C
eth_send: Called
genphy_update_link: Called
phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x796D
genphy_update_link: Exit 0,phydev->link=0x1 mii_reg=0x796D
ks2_eth_send: Called keystone_net.c @ 846 link=1
ksnav_send: Called keystone_nav.c @ 289 ret OK
K2H PKT: "ff ff ff ff ff ff 50 33 8b 6b 35 7c 08 06 00 01 08 00 06 04 00 01 50 33 8b 6b 35 7c c0 a8 63 17 00 00 00 00 00 00 c0 a8 63 96 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 "
arp_raw_request: Called
MAC: target: 00:00:00:00:00:00 local: 50:33:8B:6B:35:7C
eth_send: Called
genphy_update_link: Called
phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x796D
genphy_update_link: Exit 0,phydev->link=0x1 mii_reg=0x796D
ks2_eth_send: Called keystone_net.c @ 846 link=1
ksnav_send: Called keystone_nav.c @ 289 ret OK
K2H PKT: "ff ff ff ff ff ff 50 33 8b 6b 35 7c 08 06 00 01 08 00 06 04 00 01 50 33 8b 6b 35 7c c0 a8 63 17 00 00 00 00 00 00 c0 a8 63 96 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 "
arp_raw_request: Called
MAC: target: 00:00:00:00:00:00 local: 50:33:8B:6B:35:7C
eth_send: Called
genphy_update_link: Called
phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x796D
genphy_update_link: Exit 0,phydev->link=0x1 mii_reg=0x796D
ks2_eth_send: Called keystone_net.c @ 846 link=1
ksnav_send: Called keystone_nav.c @ 289 ret OK
K2H PKT: "ff ff ff ff ff ff 50 33 8b 6b 35 7c 08 06 00 01 08 00 06 04 00 01 50 33 8b 6b 35 7c c0 a8 63 17 00 00 00 00 00 00 c0 a8 63 96 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 "
arp_raw_request: Called
MAC: target: 00:00:00:00:00:00 local: 50:33:8B:6B:35:7C
eth_send: Called
genphy_update_link: Called
phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x796D
genphy_update_link: Exit 0,phydev->link=0x1 mii_reg=0x796D
ks2_eth_send: Called keystone_net.c @ 846 link=1
ksnav_send: Called keystone_nav.c @ 289 ret OK
K2H PKT: "ff ff ff ff ff ff 50 33 8b 6b 35 7c 08 06 00 01 08 00 06 04 00 01 50 33 8b 6b 35 7c c0 a8 63 17 00 00 00 00 00 00 c0 a8 63 96 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 "
arp_raw_request: Called
....
ks2_eth_stop: Called
ethss_stop: Called
mac_sl_reset: Called
mac_sl_reset: Called
mac_sl_reset: Called
mac_sl_reset: Called
genphy_shutdown: Called

Abort
ping failed; host 192.168.99.150 is not alive
DRSP_UBoot> <INTERRUPT>
DRSP_UBoot>

I had added some printout to check if this state is recognizd from u-boot:

I had added the following changes in code (in wireshark nothing appear of this packets):

int ksnav_send(struct pktdma_cfg *pktdma, u32 *pkt, int num_bytes, u32 swinfo2)
{
    struct qm_host_desc *hd;
    uchar *data = (uchar *)pkt;

    hd = qm_pop(qm_cfg->qpool_num);
    printf("%s: Called %s @ %d ret %s\n",
           __func__, 1+strrchr(__FILE__, '/'), __LINE__, hd == NULL ? "Fail":"OK");
    if (hd == NULL)
        return QM_ERR;

    hd->desc_info    = num_bytes;
    hd->swinfo[2]    = swinfo2;
    hd->packet_info = qm_cfg->qpool_num;

    qm_buff_push(hd, pktdma->tx_snd_q, pkt, num_bytes);

    int i ;
    printf("K2H PKT: \"");
    for (i = 0; i < num_bytes; i++ )
        printf("%02x ", data[i]);
    printf("\" \n");

    return QM_OK;
}

I can't see the following also if I send arp req/arp reply or other eth packet from my PC,
I send arp messages when on board a ping command runs:
void arp_receive(struct ethernet_hdr *et, struct ip_udp_hdr *ip, int len)
{
    struct arp_hdr *arp;
    struct in_addr reply_ip_addr;
    int eth_hdr_size;

    /*
     * We have to deal with two types of ARP packets:
     * - REQUEST packets will be answered by sending  our
     *   IP address - if we know it.
     * - REPLY packates are expected only after we asked
     *   for the TFTP server's or the gateway's ethernet
     *   address; so if we receive such a packet, we set
     *   the server ethernet address
     */
    debug_cond(DEBUG_NET_PKT, "Got ARP\n");

    printf("Got ARP\n");

    arp = (struct arp_hdr *)ip;
    if (len < ARP_HDR_SIZE) {
        printf("bad length %d < %d\n", len, ARP_HDR_SIZE);
        return;
    }

    if (ntohs(arp->ar_hrd) != ARP_ETHER)
        return;

    uchar *data =(uchar *)et;
    int i, num_bytes = len;

    printf("RCV PKT: \"");
    for (i = 0; i < num_bytes; i++ )
        printf("%02x ", data[i]);
    printf("\" \n");

...

**** keystone-k2hk-drsp.dts: *****

....

&mdio {
    status = "ok";
    ethphy0: ethernet-phy@0 {
        compatible = "marvell,88E1548", "ethernet-phy-ieee802.3-c22";
        reg = <0>;
        local-mac-address = [ 12 18 31 7e 3e 6a ];
    };
};

**** keystone-drsp.dtsi: *****

....

        mdio: mdio@0 { //2090300 {
            compatible    = "ti,keystone_mdio", "ti,davinci_mdio";
            #address-cells = <1>;
            #size-cells = <0>;
            reg = <0x02090300 0x100>, <0x02F90500 0x100>;
            status = "disabled";
            clocks = <&clkcpgmac>;
            clock-names = "fck";
            bus_freq    = <2500000>;
        };
        /include/ "keystone-drsp-netcp.dtsi"
    };
};

**** keystone-drsp-netcp.dtsi: *****


qmss: qmss@2a40000 {
    compatible = "ti,keystone-navigator-qmss";
    dma-coherent;
    #address-cells = <1>;
    #size-cells    = <1>;
    clocks         = <&chipclk13>;
    ranges;
    queue-range    = <0 0x4000>;
    linkram0    = <0x100000 0x8000>;
    linkram1    = <0x0 0x10000>;
    qmgrs {
        #address-cells = <1>;
        #size-cells = <1>;
        ranges;
        qmgr0 {
            managed-queues = <0 0x2000>;
            reg = <0x2a40000 0x20000>,
                  <0x2a06000 0x400>,
                  <0x2a02000 0x1000>,
                  <0x2a03000 0x1000>,
                  <0x23a80000 0x20000>,
                  <0x2a80000 0x20000>;
            reg-names = "peek", "status", "config",
                      "region", "push", "pop";
        };

        qmgr1 {
            managed-queues = <0x2000 0x2000>;
            reg = <0x2a60000 0x20000>,
                  <0x2a06400 0x400>,
                  <0x2a04000 0x1000>,
                  <0x2a05000 0x1000>,
                  <0x23aa0000 0x20000>,
                  <0x2aa0000 0x20000>;
            reg-names = "peek", "status", "config",
                      "region", "push", "pop";
        };
    };
    queue-pools {
        qpend {
            qpend-0 {
                qrange = <658 8>;
                interrupts =<0 40 0xf04 0 41 0xf04 0 42 0xf04
                           0 43 0xf04 0 44 0xf04 0 45 0xf04
                           0 46 0xf04 0 47 0xf04>;
            };
            qpend-1 {
                qrange = <8704 16>;
                interrupts = <0 48 0xf04 0 49 0xf04 0 50 0xf04
                            0 51 0xf04 0 52 0xf04 0 53 0xf04
                            0 54 0xf04 0 55 0xf04 0 56 0xf04
                            0 57 0xf04 0 58 0xf04 0 59 0xf04
                            0 60 0xf04 0 61 0xf04 0 62 0xf04
                            0 63 0xf04>;
                qalloc-by-id;
            };
            qpend-2 {
                qrange = <8720 16>;
                interrupts = <0 64 0xf04 0 65 0xf04 0 66 0xf04
                            0 59/*67*/ 0xf04 0 68 0xf04 0 69 0xf04
                            0 70 0xf04 0 71 0xf04 0 72 0xf04
                            0 73 0xf04 0 74 0xf04 0 75 0xf04
                            0 76 0xf04 0 77 0xf04 0 78 0xf04
                            0 79 0xf04>;
            };
        };
        general-purpose {
            gp-0 {
                qrange = <4000 64>;
            };
            netcp-tx {
                qrange = <640 9>;
                qalloc-by-id;
            };
            netcpx-tx {
                qrange = <8752 8>;
                qalloc-by-id;
            };
        };
    };
    descriptor-regions {
        #address-cells = <1>;
        #size-cells = <1>;
        ranges;
        region-12 {
            id = <12>;
            region-spec = <8192 128>;    /* num_desc desc_size */
            link-index = <0x4000>;
        };
    };
}; /* qmss */
knav_dmas: knav_dmas@0 {
    compatible = "ti,keystone-navigator-dma";
    clocks = <&papllclk>/*, <&clkxge>*/;
    //clocks = <&papllclk>, <&clkxge>;
    #address-cells = <1>;
    #size-cells = <1>;
    ranges;
    ti,navigator-cloud-address = <0x23a80000 0x23a90000
                           0x23aa0000 0x23ab0000>;
    dma_gbe: dma_gbe@0 {
        reg = <0x2004000 0x100>,
            <0x2004400 0x120>,
            <0x2004800 0x300>,
            <0x2004c00 0x120>,
            <0x2005000 0x400>;
        reg-names = "global", "txchan", "rxchan",
                "txsched", "rxflow";
    };
};
gbe_subsys: subsys@2090000 {
    compatible = "syscon";
    reg = <0x02090000 0x100>;
};
xgbe_subsys: subsys@2f00000 {
    status = "ok";
    compatible = "syscon";
    reg = <0x02f00000 0x100>;
};
xgbe_pcsr: pcsr@2f00000 {
    status    = "disabled";
    compatible    = "syscon";
    reg        = <0x02f00600 0x100>;
};
netcp: netcp@2000000 {
    reg = <0x2620110 0x8>;
    reg-names = "efuse";
    compatible = "ti,netcp-1.0";
    #address-cells = <1>;
    #size-cells = <1>;
    ranges  = <0 0x2000000 0x100000>;
    clocks = <&papllclk>, <&clkcpgmac>, <&chipclk12>;
    dma-coherent;
    ti,navigator-dmas = <&dma_gbe 22>, <&dma_gbe 23>,
                        <&dma_gbe 24>, <&dma_gbe 25>,
                        <&dma_gbe 8>;
    ti,navigator-dma-names = "netrx0", "netrx1",
                             "netrx2", "netrx3",
                             "nettx";
    netcp-devices {
        ranges;
        #address-cells = <1>;
        #size-cells = <1>;
        gbe@90000 { // ETHSS
            #address-cells = <1>;
            #size-cells = <1>;
            label = "netcp-gbe";
            compatible = "ti,netcp-gbe";
            reg = <0x90000 0x300>, <0x90400 0x400>, <0x90800 0x700>;
            // enable-ale;
            tx-queue = <648>;
            tx-channel = "nettx";
            interfaces {
                gbe0: interface-0 {
                    slave-port = <0>;
                    link-interface = <1>;
                    phy-handle = <&ethphy0>;
                };
            };
            secondary-slave-ports {
            };
        };
    };
    netcp-interfaces {
        interface-0 {
            rx-channel = "netrx0";
            rx-pool = <1024 12>;
            tx-pool = <1024 12>;
            rx-queue-depth = <128 128 0 0>;
            rx-buffer-size = <1518 4096 0 0>;
            rx-queue = <8704>;
            tx-completion-queue = <8708>;
            efuse-mac = <1>;
            netcp-gbe = <&gbe0>;
        };
    };
};

 

PS: I has configured only the first phy to reduce debug prints, but also to enable them the
      situation not change, then some parameter in DTS are present to support multiphy.

I use ti-processor-sdk-linux-k2hk-evm-05.02.00.10 for host linux version.

I have some suggest to check to solve this "little" problem?
Every suggestion are welcome.

Best regards,

Dario

  • Hi Dario,

    Which Processor SDK Linux version are you using?

    Best Regards,
    Yordan

  • Hi Yordan.

    I have installed  ti-processor-sdk-linux-k2hk-evm-05.02.00.10-Linux-x86-Install.bin on my Linux PC, I suppose it should
    to be MCS5.2.0.10. Then I use u-boot-2018.01+gitAUTOINC+313dcd69c2-g313dcd69c2 with some my personal patches
    to handle our DDR bank chips (@1600 MHz) and our fdt which a quad SGMI phy marvell 1548P.

    I hope you could to suggest to me some triks to find the problem.

    BR

    Dario

  • Hi Yordan.

      I have a little update regarding this ticket.

    I have added a printout of GEth switch subsystem of statistic counter.

    int ethss_start(void)
    {
        int i;
        struct mac_sl_cfg cfg;

        printf("%s: Called\n", __func__);
    .....
        for (i = 0; i<0x20; i++)
          printf("%s: Called KS StatCount[0x%02X](0x%03X) %X \n", __func__,
                  i, 0xC00+i*4, *(u32 *)(GBETH_BASE+ 0xC00+i*4));

        return 0;
    }


    If I run the uboot dhcp command all counters are 0.

    If during this phase I send some ARP request message (using packETH tool from my PC connected at port 0 via external 1G switch) I can see some counter increased.

    Before send ARP request message:

    ethss_start: Called KS StatCount[0x00](0xC00) C
    ethss_start: Called KS StatCount[0x01](0xC04) 1
    ethss_start: Called KS StatCount[0x02](0xC08) 3
    ethss_start: Called KS StatCount[0x0C](0xC30) 4AC  
    ethss_start: Called KS StatCount[0x1A](0xC68) 8
    ethss_start: Called KS StatCount[0x1B](0xC6C) 2
    ethss_start: Called KS StatCount[0x1C](0xC70) 1
    ethss_start: Called KS StatCount[0x1D](0xC74) 1

    Send 3 ARP requests to custom board:

    ethss_start: Called KS StatCount[0x00](0xC00) F  <--- +3
    ethss_start: Called KS StatCount[0x01](0xC04) 1
    ethss_start: Called KS StatCount[0x02](0xC08) 3
    ethss_start: Called KS StatCount[0x0C](0xC30) 56C <--- + 3*64
    ethss_start: Called KS StatCount[0x1A](0xC68) B   <--- +3
    ethss_start: Called KS StatCount[0x1B](0xC6C) 2
    ethss_start: Called KS StatCount[0x1C](0xC70) 1
    ethss_start: Called KS StatCount[0x1D](0xC74) 1

    all the other counters remain at 0.

    I suppose some misconfiguration on qmss, pa or dma subsystem.

    Then, I suppose, the Marvell phy is well configured (almost, at this moment, in RX direction).

    Thank you for your support.

    BR,

    Dario

  • Hi,

       have you any news about this problem?

    This problem is very important for us and we can't able to analyze it,

    BR

    Dario

  • Hi Dario,

    Sorry for the delay. I am still looking into this, but unfortunately don't have updates. I've looped the design team to elaborate if they have ideas.

    Best Regards,
    Yordan

  • Hi, Dario,

    I didn't go through the debug print because it's hard to track where and what they are printed. I did went through your configuration and observe the following:

    1) DTS file doesn't take "//" to comment out the line. You should use "/*  */" instead.

    2) I don't see the serdes configuration and assume you purposely left them out in the post.

    3) In gbe@90000 node, the reg configuration for SGMII seems to me is off. It should be offset 0x90100 and lengh 0x200.

    4) I assume that each interface port should be bound to a serdes lane, but don't see that. 

    I don't know if these contribute to the issue, but you may want to look into them.

    Rex

  • Hi Rex,

       Thank you for your suggestion, I reply to you following.

    1) I can't see the probem (often I have used // instead of /**/, anyway now will try to replaced with /* .. */)

    2) also in evm dts|dtsi configuration files not exists any "serdes section" in all files. I have checked only in
            keystone-k2hk-evm.dts, keystone-k2hk-netcp.dtsi and keystobe-k2hk.dtsi
        (the other files I can't change them).

    3) in my ticket (for my error) I had removed this line, but exists, as report here (in this case I have defined the
        douple couple of SGMII address section becouse I have disabled the other three phy):

            gbe@90000 { /* ETHSS  eth switch system*/
                #address-cells = <1>;
                #size-cells = <1>;
                label = "netcp-gbe";
                compatible = "ti,netcp-gbe";
                reg = <0x90100 0x200>, <0x90400 0x200>, <0x90800 0x700>;
                /* enable-ale; */
                tx-queue = <648>;
                tx-channel = "nettx";

    4)  the serdes was defined on 10G interface in linux netcp dtsi file, not here.
        Here every ethphy"n" is mapped on interface-"n":
    interfaces {
                    gbe0: interface-0 {
                        slave-port = <0>;
                        link-interface = <1>;
                        phy-handle = <&ethphy0>;
                    };
                };
                secondary-slave-ports {
                };
            };
        };
        netcp-interfaces {
            interface-0 {
                rx-channel = "netrx0";
                rx-pool = <1024 12>;
                tx-pool = <1024 12>;
                rx-queue-depth = <128 128 0 0>;
                rx-buffer-size = <1518 4096 0 0>;
                rx-queue = <8704>;
                tx-completion-queue = <8708>;
                efuse-mac = <1>;
                netcp-gbe = <&gbe0>;
            };
    ...

    Some month ago I have working on 10G eth interface (on linux) as MAC/MAC connection (on RTM BOC)
    for that task I have study the DTS files syntax. In that case we have serdes defined, not in 1G interface 
    with external phy.

    PS: tomorrow I hope to try if your suggestion "solve" the problem. Still today I have some problem with
           CCS or jtag emulator (or custom board) something not work.

    Thank you again,
    BR

    Dario

  • Hi Rex,

      I have changed the comment lines and as I have supposed that's not the problem.

    If you think that the serdes configuration are needed (on K2H14 but not in TCI663x, I don't know) where can I
    find that section? Can I reuse the 10G configuration (adapated them here)?

    I have tried to run the same custom u-boot binary file on Evaluation board configured with custom board DTB
    file, the ethernet packets arrived (also if the phy configuration was 88E1548 and not 88E1111S). I suppose dts file
    is not the problem.

    Have you any news about this problem?


    BR,
    Dario

  • Hi, Dario,

    You are right. The u-boot has serdes configured in the code, not through dts. Kernel has it through DTS file.

    There several places in the dts files which I don't know if you purposely not showing them or they are simply not configured. These may not the cause of the issue, but worth to bring them up. In places, you only have one ethernet port configured, but other places you have two. In keystone-k2hk-drsp.dts, you have only one ethphy configured, Same in interfaces node in netcp-devices. In netcp-interfaces, you also have only one interface-0. In this node, the rx-queue and tx-completion-queue should be in consecutive number in their own category. Please take a look at keystone-k2hk-netcp.dtsi and see how the queues get assigned for 2 interfaces. As I mentioned earlier, these may not be the cause, but the queue assignment mentioned need to be corrected. 

    All other configuration look good to me. Can you try just ping instead of dhcp? 

    Rex

  • Hi Rex,

    thank you for your answer.

    My dts configuration is almost ready for use a quad phy (88E1548P).
    I have disabled the other three interfaces in dts for better investigate on the problem.

    When I have enabled all four phy I have redefined rx-queue andx-completion-queue to kept contigues,
    after that I have tried to ripristinate the original values, without any success.

    It is possible that I have removed part of some description info in my ticket. Then now I test (again) with
    almost original dts files (two phy with contigues values for rx-queue and tx-completion-queue) after
    double check on C code for all my changes.


    PS: I have stored all TI environment (ARM&C666x code&libraries) in my SVN server
            then I can see every changes (from me) done in uboot code.

    Follow complete (or partial) content of the dts files (I have removed only the comments):

    A) keystone-drsp-netcp.dtsi (complete)

    qmss: qmss@2a40000 {
        compatible = "ti,keystone-navigator-qmss";
        dma-coherent;
        #address-cells = <1>;
        #size-cells    = <1>;
        clocks         = <&chipclk13>;
        ranges;
        queue-range    = <0 0x4000>;
        linkram0    = <0x100000 0x8000>;
        linkram1    = <0x0 0x10000>;
        qmgrs {
            #address-cells = <1>;
            #size-cells = <1>;
            ranges;
            qmgr0 {
                managed-queues = <0 0x2000>;
                reg = <0x2a40000 0x20000>,
                      <0x2a06000 0x400>,
                      <0x2a02000 0x1000>,
                      <0x2a03000 0x1000>,
                      <0x23a80000 0x20000>,
                      <0x2a80000 0x20000>;
                reg-names = "peek", "status", "config",
                          "region", "push", "pop";
            };
            qmgr1 {
                managed-queues = <0x2000 0x2000>;
                reg = <0x2a60000 0x20000>,
                      <0x2a06400 0x400>,
                      <0x2a04000 0x1000>,
                      <0x2a05000 0x1000>,
                      <0x23aa0000 0x20000>,
                      <0x2aa0000 0x20000>;
                reg-names = "peek", "status", "config",
                          "region", "push", "pop";
            };
        };
        queue-pools {
            qpend {
                qpend-0 {
                    qrange = <658 8>;
                    interrupts =<0 40 0xf04 0 41 0xf04 0 42 0xf04
                               0 43 0xf04 0 44 0xf04 0 45 0xf04
                               0 46 0xf04 0 47 0xf04>;
                };
                qpend-1 {
                    qrange = <8704 16>;
                    interrupts = <0 48 0xf04 0 49 0xf04 0 50 0xf04
                                0 51 0xf04 0 52 0xf04 0 53 0xf04
                                0 54 0xf04 0 55 0xf04 0 56 0xf04
                                0 57 0xf04 0 58 0xf04 0 59 0xf04
                                0 60 0xf04 0 61 0xf04 0 62 0xf04
                                0 63 0xf04>;
                    qalloc-by-id;
                };
                qpend-2 {
                    qrange = <8720 16>;
                    interrupts = <0 64 0xf04 0 65 0xf04 0 66 0xf04
                                0 59 0xf04 0 68 0xf04 0 69 0xf04 /* is 59 a problem? */
                                0 70 0xf04 0 71 0xf04 0 72 0xf04
                                0 73 0xf04 0 74 0xf04 0 75 0xf04
                                0 76 0xf04 0 77 0xf04 0 78 0xf04
                                0 79 0xf04>;
                };
            };
            general-purpose {
                gp-0 {
                    qrange = <4000 64>;
                };
                netcp-tx {
                    qrange = <640 9>;
                    qalloc-by-id;
                };
                netcpx-tx {
                    qrange = <8752 8>;
                    qalloc-by-id;
                };
            };
        };
        descriptor-regions {
            #address-cells = <1>;
            #size-cells = <1>;
            ranges;
            region-12 {
                id = <12>;
                region-spec = <8192 128>;
                link-index = <0x4000>;
            };
        };
    };
    knav_dmas: knav_dmas@0 {
        compatible = "ti,keystone-navigator-dma";
        clocks = <&papllclk>;
        #address-cells = <1>;
        #size-cells = <1>;
        ranges;
        ti,navigator-cloud-address = <0x23a80000 0x23a90000
                               0x23aa0000 0x23ab0000>;
        dma_gbe: dma_gbe@0 {
            reg = <0x2004000 0x100>,
                <0x2004400 0x120>,
                <0x2004800 0x300>,
                <0x2004c00 0x120>,
                <0x2005000 0x400>;
            reg-names = "global", "txchan", "rxchan",
                    "txsched", "rxflow";
        };
    };
    gbe_subsys: subsys@2090000 {
        compatible = "syscon";
        reg = <0x02090000 0x100>;
    };
    netcp: netcp@2000000 {
        reg = <0x2620110 0x8>;
        reg-names = "efuse";
        compatible = "ti,netcp-1.0";
        #address-cells = <1>;
        #size-cells = <1>;
        ranges  = <0 0x2000000 0x100000>;
        clocks = <&papllclk>, <&clkcpgmac>, <&chipclk12>;
        dma-coherent;
        ti,navigator-dmas = <&dma_gbe 22>, <&dma_gbe 23>,
                <&dma_gbe 8>;
        ti,navigator-dma-names = "netrx0", "netrx1",
                         "nettx";
        netcp-devices {
            ranges;
            #address-cells = <1>;
            #size-cells = <1>;
            gbe@90000 {
                #address-cells = <1>;
                #size-cells = <1>;
                label = "netcp-gbe";
                compatible = "ti,netcp-gbe";
                reg = <0x90000 0x300>, <0x90400 0x400>, <0x90800 0x700>;
                tx-queue = <648>;
                tx-channel = "nettx";
                interfaces {
                    gbe0: interface-0 {
                        slave-port = <0>;
                        link-interface = <1>;
                        phy-handle = <&ethphy0>;
                    };
                   gbe1: interface-1 {
                        slave-port = <1>;
                        link-interface = <1>;
                        phy-handle = <&ethphy1>;
                    };
                };
                secondary-slave-ports {
                };
            };
        };
        netcp-interfaces {
            interface-0 {
                rx-channel = "netrx0";
                rx-pool = <1024 12>;
                tx-pool = <1024 12>;
                rx-queue-depth = <128 128 0 0>;
                rx-buffer-size = <1518 4096 0 0>;
                rx-queue = <8704>;
                tx-completion-queue = <8706>;
                efuse-mac = <1>;
                netcp-gbe = <&gbe0>;
            };
            interface-1 {
                rx-channel = "netrx1";
                rx-pool = <1024 12>;
                tx-pool = <1024 12>;
                rx-queue-depth = <128 128 0 0>;
                rx-buffer-size = <1518 4096 0 0>;
                rx-queue = <8705>;
                tx-completion-queue = <8707>;
                efuse-mac = <0>;
                local-mac-address = [50 33 8B 6B 35 7F];
                netcp-gbe = <&gbe1>;
            };
        };
    };

    B) keystone-k2hk.dtsi
    ....
            mdio: mdio@02090300 {
                compatible    = "ti,keystone_mdio", "ti,davinci_mdio";
                #address-cells = <1>;
                #size-cells = <0>;
                reg = <0x02090300 0x100>;
                status = "disabled";
                clocks = <&clkcpgmac>;
                clock-names = "fck";
                bus_freq    = <2500000>;
            };
    ....

    C) keystone-k2hk-drsp.dts

    ....
    &mdio {
            status = "ok";
            ethphy0: ethernet-phy@0 {
                    compatible = "marvell,88E1548", "ethernet-phy-ieee802.3-c22";
                    reg = <0>;
                    local-mac-address = [ 12 18 31 7e 3e 6a ];
            };
            ethphy1: ethernet-phy@1 {
                    compatible = "marvell,88E1548", "ethernet-phy-ieee802.3-c22";
                    reg = <1>;
            };
    };

    No changes in keystone_serdes.c & keystone_net.c (a part of some debug printout or
    when a packet sent, or statistic counter in internal GE Switch printout).
    arp.c prints the received packet contents.

    I had already tried to use ping (I remember that also on evaluation board with static IP ping not works,
    then I must run dhcp before to ping), but not seems work.


    DRSP_UBoot> setenv ipaddr 192.168.99.23
    DRSP_UBoot> setenv gatewayip 192.168.99.1
    DRSP_UBoot> printenv
    addr_load_sec_bm=0x0c08c000
    addr_mon=0x87000000
    addr_non_sec_mon=0x0c087fc0
    addr_secdb_key=0xc000000
    addr_ubi=0x82000000
    api_address=fde4fd00
    arch=arm
    args_all=setenv bootargs console=ttyS0,115200n8 rootwait=1 mtdparts=spi0.0:2m(u-boot-spl)ro,512k(params),30m(mi;
    args_net=setenv bootargs ${bootargs} rootfstype=nfs root=/dev/nfs rw nfsroot=${serverip}:${nfs_root},${nfs_optip
    args_ramfs=setenv bootargs ${bootargs} rdinit=/sbin/init rw root=/dev/ram0 initrd=0x808080000,80M
    args_ubi=setenv bootargs ${bootargs} rootfstype=ubifs root=ubi0:rootfs rootflags=sync rw ubi.mtd=ubifs,2048
    baudrate=115200
    board=ks2_evm
    board_name=ks2_evm
    boot=ubi
    boot_fdt=try
    bootcmd=run init_${boot}; run get_mon_${boot} run_mon; run get_kern_${boot}; run init_fw_rd_${boot}; run get_fdn
    bootdelay=50
    bootdir=/boot
    bootm_size=0x10000000
    burn_ubi=nand erase.part ubifs; nand write ${addr_ubi} ubifs ${filesize}
    burn_uboot_nand=nand erase 0 0x100000; nand write ${loadaddr} 0 ${filesize}
    burn_uboot_spi=sf probe; sf erase 0 0x100000; sf write ${loadaddr} 0 ${filesize}
    cpu=armv7
    ethact=netcp@2000000
    ethaddr=50:33:8b:6b:35:7c
    fdt_addr_r=0x88000000
    fdtaddr=0x88000000
    fdtcontroladdr=fff7cce0
    gatewayip=192.168.99.1
    get_fdt_net=dhcp ${fdtaddr} ${tftp_root}/${name_fdt}
    get_fdt_nfs=nfs ${fdtaddr} ${nfs_root}/boot/${name_fdt}
    get_fdt_ramfs=dhcp ${fdtaddr} ${tftp_root}/${name_fdt}
    get_fdt_ubi=ubifsload ${fdtaddr} ${bootdir}/${name_fdt}
    get_fit_mmc=load mmc ${bootpart} ${fit_loadaddr} ${bootdir}/${fit_bootfile}
    get_fit_net=dhcp ${fit_loadaddr} ${tftp_root}/${fit_bootfile}
    get_fit_nfs=nfs ${fit_loadaddr} ${nfs_root}/boot/${fit_bootfile}
    get_fit_ramfs=dhcp ${fit_loadaddr} ${tftp_root}/${fit_bootfile}
    get_fit_ubi=ubifsload ${fit_loadaddr} ${bootdir}/${fit_bootfile}
    get_fs_ramfs=dhcp ${rdaddr} ${tftp_root}/${name_fs}
    get_kern_net=dhcp ${loadaddr} ${tftp_root}/${name_kern}
    get_kern_nfs=nfs ${loadaddr} ${nfs_root}/boot/${name_kern}
    get_kern_ramfs=dhcp ${loadaddr} ${tftp_root}/${name_kern}
    get_kern_ubi=ubifsload ${loadaddr} ${bootdir}/${name_kern}
    get_mon_net=dhcp ${addr_mon} ${tftp_root}/${name_mon}
    get_mon_nfs=nfs ${addr_mon} ${nfs_root}/boot/${name_mon}
    get_mon_ramfs=dhcp ${addr_mon} ${tftp_root}/${name_mon}
    get_mon_ubi=ubifsload ${addr_mon} ${bootdir}/${name_mon}
    get_ubi_net=dhcp ${addr_ubi} ${tftp_root}/${name_ubi}
    get_ubi_nfs=nfs ${addr_ubi} ${nfs_root}/boot/${name_ubi}
    get_uboot_net=dhcp ${loadaddr} ${tftp_root}/${name_uboot}
    get_uboot_nfs=nfs ${loadaddr} ${nfs_root}/boot/${name_uboot}
    init_fw_rd_net=dhcp ${rdaddr} ${tftp_root}/${name_fw_rd}; run set_rd_spec
    init_fw_rd_nfs=nfs ${rdaddr} ${nfs_root}/boot/${name_fw_rd}; run set_rd_spec
    init_fw_rd_ramfs=setenv rd_spec -
    init_fw_rd_ubi=ubifsload ${rdaddr} ${bootdir}/${name_fw_rd}; run set_rd_spec
    init_net=run args_all args_net
    init_nfs=setenv autoload no; dhcp; run args_all args_net
    init_ramfs=run args_all args_ramfs get_fs_ramfs
    init_ubi=run args_all args_ubi; ubi part ubifs; ubifsmount ubi:rootfs;
    ipaddr=192.168.99.23
    kernel_addr_r=0x82000000
    loadaddr=0x82000000
    mem_lpae=1
    mtdparts=mtdparts=davinci_nand.0:1024k(bootloader)ro,512k(params)ro,-(ubifs)
    name_fdt=keystone-k2hk-evm.dtb
    name_fs=arago-console-image-k2hk-evm.cpio.gz
    name_fw_rd=k2-fw-initrd.cpio.gz
    name_kern=zImage
    name_mon=skern-k2hk.bin
    name_ubi=k2hk-evm-ubifs.ubi
    name_uboot=u-boot-spi-k2hk-evm.gph
    nfs_options=v3,tcp,rsize=4096,wsize=4096
    nfs_root=/export
    no_post=1
    pxefile_addr_r=0x80100000
    ramdisk_addr_r=0x88080000
    rdaddr=0x88080000
    run_kern=bootz ${loadaddr} ${rd_spec} ${fdtaddr}
    run_mon=mon_install ${addr_mon}
    run_mon_hs=mon_install ${addr_non_sec_mon} ${addr_load_sec_bm}
    scriptaddr=0x80000000
    set_rd_spec=setenv rd_spec ${rdaddr}:${filesize}
    soc=keystone
    stderr=serial
    stdin=serial
    stdout=serial
    tftp_root=/
    vendor=ti
    ver=U-Boot 2018.01-svn5 (Dec 27 2019 - 14:58:21 +0100)

    Environment size: 4028/262140 bytes


    DRSP_UBoot> setenv ipaddr 192.168.99.23  
    DRSP_UBoot> ping 192.168.99.140        
    ks2_eth_stop: Called
    eth_init: Called
    ks2_eth_start: Called
    keystone_sgmii_config: Called interface 1 port 0

    netcp@2000000 Waiting for SGMII auto negotiation to complete.
    Exit: mask=0x5 status=0x3D done
    ethss_config: Called
    keystone2_mdio_reset: Called
    m88e1145_startup_daia: Called
    genphy_update_link: Called
    phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x796D
    genphy_update_link: Exit 0,phydev->link=0x1 mii_reg=0x796D
    m88e1xxx_parse_status: Called
    phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0011 val=0xAC48
    m88e1xxx_parse_status: Exit marvell.c @ 201, Link =1, speed=1000, duplex=1
    keystone2_eth_gigabit_enable: Called
    ethss_start: Called
    mac_sl_reset: Called
    mac_sl_config: Called
    mac_sl_reset: Called
    mac_sl_config: Called
    mac_sl_reset: Called
    mac_sl_config: Called
    mac_sl_reset: Called
    mac_sl_config: Called
    ethss_start: Called KS StatCount[0x00](0xC00) 14A
    ethss_start: Called KS StatCount[0x01](0xC04) DA
    ethss_start: Called KS StatCount[0x02](0xC08) 70
    ethss_start: Called KS StatCount[0x03](0xC0C) 0
    ethss_start: Called KS StatCount[0x04](0xC10) 0
    ethss_start: Called KS StatCount[0x05](0xC14) 0
    ethss_start: Called KS StatCount[0x06](0xC18) 0
    ethss_start: Called KS StatCount[0x07](0xC1C) 0
    ethss_start: Called KS StatCount[0x08](0xC20) 0
    ethss_start: Called KS StatCount[0x09](0xC24) 0
    ethss_start: Called KS StatCount[0x0A](0xC28) 0
    ethss_start: Called KS StatCount[0x0B](0xC2C) 0
    ethss_start: Called KS StatCount[0x0C](0xC30) BCEC
    ethss_start: Called KS StatCount[0x0D](0xC34) 0
    ethss_start: Called KS StatCount[0x0E](0xC38) 0
    ethss_start: Called KS StatCount[0x0F](0xC3C) 0
    ethss_start: Called KS StatCount[0x10](0xC40) 0
    ethss_start: Called KS StatCount[0x11](0xC44) 0
    ethss_start: Called KS StatCount[0x12](0xC48) 0
    ethss_start: Called KS StatCount[0x13](0xC4C) 0
    ethss_start: Called KS StatCount[0x14](0xC50) 0
    ethss_start: Called KS StatCount[0x15](0xC54) 0
    ethss_start: Called KS StatCount[0x16](0xC58) 0
    ethss_start: Called KS StatCount[0x17](0xC5C) 0
    ethss_start: Called KS StatCount[0x18](0xC60) 0
    ethss_start: Called KS StatCount[0x19](0xC64) 0
    ethss_start: Called KS StatCount[0x1A](0xC68) B6
    ethss_start: Called KS StatCount[0x1B](0xC6C) 2C
    ethss_start: Called KS StatCount[0x1C](0xC70) 32
    ethss_start: Called KS StatCount[0x1D](0xC74) 36
    ethss_start: Called KS StatCount[0x1E](0xC78) 0
    ethss_start: Called KS StatCount[0x1F](0xC7C) 0
    ping_start: Called
    Using netcp@2000000 device
    ping_send: Called
    set_icmp_header: Called
    arp_raw_request: Called
    MAC: target: 00:00:00:00:00:00 local: 50:33:8B:6B:35:7C
    eth_send: Called
    genphy_update_link: Called
    phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x796D
    genphy_update_link: Exit 0,phydev->link=0x1 mii_reg=0x796D
    ks2_eth_send: Called keystone_net.c @ 853 link=1
    ksnav_send: Called keystone_nav.c @ 289 ret OK
    K2H PKT: "ff ff ff ff ff ff 50 33 8b 6b 35 7c 08 06 00 01 08 00 06 04 00 01 50 33 8b 6b 35 7c c0 a8 63 17 00 00
    arp_raw_request: Called
    MAC: target: 00:00:00:00:00:00 local: 50:33:8B:6B:35:7C
    eth_send: Called
    genphy_update_link: Called
    phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x796D
    genphy_update_link: Exit 0,phydev->link=0x1 mii_reg=0x796D
    ks2_eth_send: Called keystone_net.c @ 853 link=1
    ksnav_send: Called keystone_nav.c @ 289 ret OK
    K2H PKT: "ff ff ff ff ff ff 50 33 8b 6b 35 7c 08 06 00 01 08 00 06 04 00 01 50 33 8b 6b 35 7c c0 a8 63 17 00 00
    arp_raw_request: Called
    MAC: target: 00:00:00:00:00:00 local: 50:33:8B:6B:35:7C
    eth_send: Called
    genphy_update_link: Called
    phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x796D
    genphy_update_link: Exit 0,phydev->link=0x1 mii_reg=0x796D
    ks2_eth_send: Called keystone_net.c @ 853 link=1
    ksnav_send: Called keystone_nav.c @ 289 ret OK
    K2H PKT: "ff ff ff ff ff ff 50 33 8b 6b 35 7c 08 06 00 01 08 00 06 04 00 01 50 33 8b 6b 35 7c c0 a8 63 17 00 00
    arp_raw_request: Called
    MAC: target: 00:00:00:00:00:00 local: 50:33:8B:6B:35:7C
    eth_send: Called
    genphy_update_link: Called
    phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x796D
    genphy_update_link: Exit 0,phydev->link=0x1 mii_reg=0x796D
    ks2_eth_send: Called keystone_net.c @ 853 link=1
    ksnav_send: Called keystone_nav.c @ 289 ret OK
    K2H PKT: "ff ff ff ff ff ff 50 33 8b 6b 35 7c 08 06 00 01 08 00 06 04 00 01 50 33 8b 6b 35 7c c0 a8 63 17 00 00
    ks2_eth_stop: Called
    ethss_stop: Called
    mac_sl_reset: Called
    mac_sl_reset: Called
    mac_sl_reset: Called
    mac_sl_reset: Called
    genphy_shutdown: Called

    Abort
    ping failed; host 192.168.99.140 is not alive

    DRSP_UBoot> dhcp
    ks2_eth_stop: Called
    eth_init: Called
    ks2_eth_start: Called
    keystone_sgmii_config: Called interface 1 port 0

    netcp@2000000 Waiting for SGMII auto negotiation to complete.
    Exit: mask=0x5 status=0x3D done
    ethss_config: Called
    keystone2_mdio_reset: Called
    m88e1145_startup_daia: Called
    genphy_update_link: Called
    phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x796D
    genphy_update_link: Exit 0,phydev->link=0x1 mii_reg=0x796D
    m88e1xxx_parse_status: Called
    phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0011 val=0xAC48
    m88e1xxx_parse_status: Exit marvell.c @ 201, Link =1, speed=1000, duplex=1
    keystone2_eth_gigabit_enable: Called
    ethss_start: Called
    mac_sl_reset: Called
    mac_sl_config: Called
    mac_sl_reset: Called
    mac_sl_config: Called
    mac_sl_reset: Called
    mac_sl_config: Called
    mac_sl_reset: Called
    mac_sl_config: Called
    ethss_start: Called KS StatCount[0x00](0xC00) 1C0
    ethss_start: Called KS StatCount[0x01](0xC04) 144
    ethss_start: Called KS StatCount[0x02](0xC08) 7C
    ethss_start: Called KS StatCount[0x03](0xC0C) 0
    ethss_start: Called KS StatCount[0x04](0xC10) 0
    ethss_start: Called KS StatCount[0x05](0xC14) 0
    ethss_start: Called KS StatCount[0x06](0xC18) 0
    ethss_start: Called KS StatCount[0x07](0xC1C) 0
    ethss_start: Called KS StatCount[0x08](0xC20) 0
    ethss_start: Called KS StatCount[0x09](0xC24) 0
    ethss_start: Called KS StatCount[0x0A](0xC28) 0
    ethss_start: Called KS StatCount[0x0B](0xC2C) 0
    ethss_start: Called KS StatCount[0x0C](0xC30) EAA0
    ethss_start: Called KS StatCount[0x0D](0xC34) 0
    ethss_start: Called KS StatCount[0x0E](0xC38) 0
    ethss_start: Called KS StatCount[0x0F](0xC3C) 0
    ethss_start: Called KS StatCount[0x10](0xC40) 0
    ethss_start: Called KS StatCount[0x11](0xC44) 0
    ethss_start: Called KS StatCount[0x12](0xC48) 0
    ethss_start: Called KS StatCount[0x13](0xC4C) 0
    ethss_start: Called KS StatCount[0x14](0xC50) 0
    ethss_start: Called KS StatCount[0x15](0xC54) 0
    ethss_start: Called KS StatCount[0x16](0xC58) 0
    ethss_start: Called KS StatCount[0x17](0xC5C) 0
    ethss_start: Called KS StatCount[0x18](0xC60) 0
    ethss_start: Called KS StatCount[0x19](0xC64) 0
    ethss_start: Called KS StatCount[0x1A](0xC68) 106
    ethss_start: Called KS StatCount[0x1B](0xC6C) 34
    ethss_start: Called KS StatCount[0x1C](0xC70) 4E
    ethss_start: Called KS StatCount[0x1D](0xC74) 38
    ethss_start: Called KS StatCount[0x1E](0xC78) 0
    ethss_start: Called KS StatCount[0x1F](0xC7C) 0
    BOOTP broadcast 1
    eth_send: Called
    genphy_update_link: Called
    phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x796D
    genphy_update_link: Exit 0,phydev->link=0x1 mii_reg=0x796D
    ks2_eth_send: Called keystone_net.c @ 853 link=1
    ksnav_send: Called keystone_nav.c @ 289 ret OK
    K2H PKT: "ff ff ff ff ff ff 50 33 8b 6b 35 7c 08 00 45 00 01 48 00 0c 40 00 ff 11 7a 99 00 00 00 00 ff ff ff ff
    BOOTP broadcast 2
    eth_send: Called
    genphy_update_link: Called
    phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x796D
    genphy_update_link: Exit 0,phydev->link=0x1 mii_reg=0x796D
    ks2_eth_send: Called keystone_net.c @ 853 link=1
    ksnav_send: Called keystone_nav.c @ 289 ret OK
    K2H PKT: "ff ff ff ff ff ff 50 33 8b 6b 35 7c 08 00 45 00 01 48 00 0d 40 00 ff 11 7a 98 00 00 00 00 ff ff ff ff
    BOOTP broadcast 3
    eth_send: Called
    genphy_update_link: Called
    phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x796D
    genphy_update_link: Exit 0,phydev->link=0x1 mii_reg=0x796D
    ks2_eth_send: Called keystone_net.c @ 853 link=1
    ksnav_send: Called keystone_nav.c @ 289 ret OK
    K2H PKT: "ff ff ff ff ff ff 50 33 8b 6b 35 7c 08 00 45 00 01 48 00 0e 40 00 ff 11 7a 97 00 00 00 00 ff ff ff ff
    BOOTP broadcast 4
    eth_send: Called
    genphy_update_link: Called
    phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x796D
    genphy_update_link: Exit 0,phydev->link=0x1 mii_reg=0x796D
    ks2_eth_send: Called keystone_net.c @ 853 link=1
    ksnav_send: Called keystone_nav.c @ 289 ret OK
    K2H PKT: "ff ff ff ff ff ff 50 33 8b 6b 35 7c 08 00 45 00 01 48 00 0f 40 00 ff 11 7a 96 00 00 00 00 ff ff ff ff
    BOOTP broadcast 5
    eth_send: Called
    genphy_update_link: Called
    phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x796D
    genphy_update_link: Exit 0,phydev->link=0x1 mii_reg=0x796D
    ks2_eth_send: Called keystone_net.c @ 853 link=1
    ksnav_send: Called keystone_nav.c @ 289 ret OK
    K2H PKT: "ff ff ff ff ff ff 50 33 8b 6b 35 7c 08 00 45 00 01 48 00 10 40 00 ff 11 7a 95 00 00 00 00 ff ff ff ff
    BOOTP broadcast 6
    eth_send: Called
    genphy_update_link: Called
    phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x796D
    genphy_update_link: Exit 0,phydev->link=0x1 mii_reg=0x796D
    ks2_eth_send: Called keystone_net.c @ 853 link=1
    ksnav_send: Called keystone_nav.c @ 289 ret OK
    K2H PKT: "ff ff ff ff ff ff 50 33 8b 6b 35 7c 08 00 45 00 01 48 00 11 40 00 ff 11 7a 94 00 00 00 00 ff ff ff ff
    BOOTP broadcast 7
    eth_send: Called
    genphy_update_link: Called
    phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x796D
    genphy_update_link: Exit 0,phydev->link=0x1 mii_reg=0x796D
    ks2_eth_send: Called keystone_net.c @ 853 link=1
    ksnav_send: Called keystone_nav.c @ 289 ret OK
    K2H PKT: "ff ff ff ff ff ff 50 33 8b 6b 35 7c 08 00 45 00 01 48 00 12 40 00 ff 11 7a 93 00 00 00 00 ff ff ff ff
    ks2_eth_stop: Called
    ethss_stop: Called
    mac_sl_reset: Called
    mac_sl_reset: Called
    mac_sl_reset: Called
    mac_sl_reset: Called
    genphy_shutdown: Called

    Abort

    No changes. Now I see that netmask parameter is not set (in default parameter is not present)
    then I had tried to define all IP parameters (gatewayip, netmask and ipaddr) to try static ip with
    ping, also here the problem remain.
    The IP tried are my PC and a server already active, on my PC I have run wireshark any arp
    request is received from custom board.

    I had already tried to connect the eth port of custom board directly with my 1G eth interface
    (without external eth switch) without any success.

    BR,
    Dario

  • Hi, Dario,

    The configuration looks ok. I looked at the logs, it seems that the ARP doesn't get responded or is responded but not taken by your PHY. The ARP has source MAC address of "50 33 8b 6b 35 7c". 

            ethphy0: ethernet-phy@0 {
                    compatible = "marvell,88E1548", "ethernet-phy-ieee802.3-c22";
                    reg = <0>;
                    local-mac-address = [ 12 18 31 7e 3e 6a ];
            };

    I suspect it's the inconsistency in MAC address is causing it.  You should check if ARP Reply is send and where did it send to. Below is my logs from tcpdump from server. The ARP reply is sent back to originator and ICMP follows. EVM has IP 116.111 and server 116.223.

    14:12:09.472061 ARP, Request who-has 158.218.116.223 tell 158.218.116.111, length 46

                    0x0000: ffff ffff ffff 0800 2832 a00b 0806 0001 ........(2......

                    0x0010: 0800 0604 0001 0800 2832 a00b 9eda 746f ........(2....to

                    0x0020: 0000 0000 0000 9eda 74df 0000 0000 0000 ........t.......

                    0x0030: 0000 0000 0000 0000 0000 0000           ............

    14:12:09.472078 ARP, Reply 158.218.116.223 is-at b8:ac:6f:7f:c4:bd, length 28

                    0x0000: 0800 2832 a00b b8ac 6f7f c4bd 0806 0001 ..(2....o.......

                    0x0010: 0800 0604 0002 b8ac 6f7f c4bd 9eda 74df ........o.....t.

                    0x0020: 0800 2832 a00b 9eda 746f                 ..(2....to

    14:14:01.857979 IP 158.218.116.111 > 158.218.116.223: ICMP echo request, id 0, seq 15, length 8

                    0x0000: b8ac 6f7f c4bd 0800 2832 a00b 0800 4500 ..o.....(2....E.

                    0x0010: 001c 000f 4000 ff01 54ce 9eda 746f 9eda ....@...T...to..

                    0x0020: 74df 0800 f7f0 0000 000f 0000 0000 0000 t...............

                    0x0030: 0000 0000 0000 0000 0000 0000           ............

    14:14:01.857995 IP 158.218.116.223 > 158.218.116.111: ICMP echo reply, id 0, seq 15, length 8

                    0x0000: 0800 2832 a00b b8ac 6f7f c4bd 0800 4500 ..(2....o.....E.

                    0x0010: 001c 4f9b 0000 4001 0443 9eda 74df 9eda ..O...@..C..t...

                    0x0020: 746f 0000 fff0 0000 000f                 to........

  • Hi Rex,

       I have retried the same test, using the same binary file (working on evaluation board) here the MAC is randomly calculated (on second eth port).

    phy_write: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0000 val=0x1200
    genphy_restart_aneg: Called
    phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0000 val=0x1000
    phy_write: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0000 val=0x1200
    eth_post_probe: Called
    ks2_eth_read_rom_hwaddr: Called
    uclass.c@246: uclass_find_device_by_seq: 0 0
    uclass.c@254:    - -1 0 'netcp@2000000'
    uclass.c@258:    - found
    ks2_eth_write_hwaddr: Called

    Warning: netcp@2000000 using MAC address from ROM
    show_boot_progress: Boot reached stage 65
    eth0: netcp@2000000ks2_eth_write_hwaddr: Called

    ....

    phy_read: devad=0xFFFFFFFF phydev->addr=0x0001 regnum=0x0000 val=0x1000
    phy_write: devad=0xFFFFFFFF phydev->addr=0x0001 regnum=0x0000 val=0x1200
    eth_post_probe: Called
    ks2_eth_read_rom_hwaddr: Called
    net_random_ethaddr: Called

    Warning: netcp@slave-1 (eth1) using random MAC address - d6:35:68:73:04:b7
    , eth1: netcp@slave-1ks2_eth_write_hwaddr: Called


    Net IF Nr: 2
    initcall: 0c2223b9
    show_boot_progress: Boot reached stage 172
    Hit any key to stop autoboot:  0
    DRSP_UBoot>


    DRSP_UBoot> setenv ipaddr 192.168.99.23

    ***** Port 1 (left) eval ****
    DRSP_UBoot> ping 192.168.99.150        
    show_boot_progress: Boot reached stage 167
    ks2_eth_stop: Called
    eth_init: Called
    ks2_eth_start: Called
    keystone_sgmii_config: Called interface 1 port 0

    netcp@2000000 Waiting for SGMII auto negotiation to complete.
    Exit: mask=0x5 status=0x3D done
    ethss_config: Called
    keystone2_mdio_reset: Called
    m88e1011s_startup: Called genphy_update_link: Called
    phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x796D
    genphy_update_link: Exit 0,phydev->link=0x1 mii_reg=0x796D
    m88e1xxx_parse_status: Called
    phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0011 val=0xAC00
    m88e1xxx_parse_status: Exit marvell.c @ 201, Link =1, speed=1000, duplex=1
    keystone2_eth_gigabit_enable: Called
    ethss_start: Called
    mac_sl_reset: Called
    mac_sl_config: Called
    mac_sl_reset: Called
    mac_sl_config: Called
    mac_sl_reset: Called
    mac_sl_config: Called
    mac_sl_reset: Called
    mac_sl_config: Called
    ethss_start: Called KS StatCount[0x00](0xC00) 0
    ethss_start: Called KS StatCount[0x01](0xC04) 0
    ethss_start: Called KS StatCount[0x02](0xC08) 0
    ethss_start: Called KS StatCount[0x03](0xC0C) 0
    ethss_start: Called KS StatCount[0x04](0xC10) 0
    ethss_start: Called KS StatCount[0x05](0xC14) 0
    ethss_start: Called KS StatCount[0x06](0xC18) 0
    ethss_start: Called KS StatCount[0x07](0xC1C) 0
    ethss_start: Called KS StatCount[0x08](0xC20) 0
    ethss_start: Called KS StatCount[0x09](0xC24) 0
    ethss_start: Called KS StatCount[0x0A](0xC28) 0
    ethss_start: Called KS StatCount[0x0B](0xC2C) 0
    ethss_start: Called KS StatCount[0x0C](0xC30) 0
    ethss_start: Called KS StatCount[0x0D](0xC34) 0
    ethss_start: Called KS StatCount[0x0E](0xC38) 0
    ethss_start: Called KS StatCount[0x0F](0xC3C) 0
    ethss_start: Called KS StatCount[0x10](0xC40) 0
    ethss_start: Called KS StatCount[0x11](0xC44) 0
    ethss_start: Called KS StatCount[0x12](0xC48) 0
    ethss_start: Called KS StatCount[0x13](0xC4C) 0
    ethss_start: Called KS StatCount[0x14](0xC50) 0
    ethss_start: Called KS StatCount[0x15](0xC54) 0
    ethss_start: Called KS StatCount[0x16](0xC58) 0
    ethss_start: Called KS StatCount[0x17](0xC5C) 0
    ethss_start: Called KS StatCount[0x18](0xC60) 0
    ethss_start: Called KS StatCount[0x19](0xC64) 0
    ethss_start: Called KS StatCount[0x1A](0xC68) 0
    ethss_start: Called KS StatCount[0x1B](0xC6C) 0
    ethss_start: Called KS StatCount[0x1C](0xC70) 0
    ethss_start: Called KS StatCount[0x1D](0xC74) 0
    ethss_start: Called KS StatCount[0x1E](0xC78) 0
    ethss_start: Called KS StatCount[0x1F](0xC7C) 0
    ping_start: Called
    Using netcp@2000000 device
    ping_send: Called
    set_icmp_header: Called
    arp_raw_request: Called
    MAC: target: 00:00:00:00:00:00 local: D4:F5:13:AA:ED:CA
    eth_send: Called
    genphy_update_link: Called
    phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x796D
    genphy_update_link: Exit 0,phydev->link=0x1 mii_reg=0x796D
    ks2_eth_send: Called keystone_net.c @ 853 link=1
    ksnav_send: Called keystone_nav.c @ 289 ret OK
    K2H PKT: "ff ff ff ff ff ff d4 f5 13 aa ed ca 08 06 00 01 08 00 06 04 00 01 d4 f5 13 aa ed
    ksnav_recv: Called keystone_nav.c @ 318 ret OK
    K2H RCV: "ff ff ff ff ff ff 00 24 b2 1d 91 db 08 00 45 00 00 84 00 00 40 00 40 11 b8 18 c0
    ksnav_recv: Called keystone_nav.c @ 318 ret OK
    K2H RCV: "ff ff ff ff ff ff 00 24 b2 1d 91 db 08 00 45 00 00 84 00 00 40 00 40 11 f2 14 c0
    ksnav_recv: Called keystone_nav.c @ 318 ret OK
    K2H RCV: "ff ff ff ff ff ff 1c b0 44 62 eb 03 08 06 00 01 08 00 06 04 00 01 1c b0 44 62 eb
    Got ARP
    RCV PKT: "ff ff ff ff ff ff 1c b0 44 62 eb 03 08 06 00 01 08 00 06 04 00 01 1c b0 44 62 eb
    ksnav_recv: Called keystone_nav.c @ 318 ret OK

    ....

    RCV PKT: "d4 f5 13 aa ed ca 60 02 92 29 cb 5c 08 06 00 01 08 00 06 04 00 02 60 02 92 29 cb
    eth_send: Called
    genphy_update_link: Called
    phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x796D
    genphy_update_link: Exit 0,phydev->link=0x1 mii_reg=0x796D
    ks2_eth_send: Called keystone_net.c @ 853 link=1
    ksnav_send: Called keystone_nav.c @ 289 ret OK
    K2H PKT: "60 02 92 29 cb 5c d4 f5 13 aa ed ca 08 00 45 00 00 1c 00 00 40 00 ff 01 33 e2 c0
    ksnav_recv: Called keystone_nav.c @ 318 ret OK
    K2H RCV: "d4 f5 13 aa ed ca 60 02 92 29 cb 5c 08 00 45 00 00 1c a9 f0 00 00 40 01 88 f2 c0
    ping_receive: Called
    ks2_eth_stop: Called
    ethss_stop: Called
    mac_sl_reset: Called
    mac_sl_reset: Called
    mac_sl_reset: Called
    mac_sl_reset: Called
    genphy_shutdown: Called
    host 192.168.99.150 is alive
    DRSP_UBoot>

    ....


    ***** Port 2 (right) eval ****
    DRSP_UBoot> ping 192.168.99.150
    show_boot_progress: Boot reached stage 167
    ks2_eth_stop: Called
    eth_init: Called
    ks2_eth_start: Called
    keystone_sgmii_config: Called interface 1 port 1

    netcp@slave-1 Waiting for SGMII auto negotiation to complete.
    Exit: mask=0x5 status=0x3D done
    ethss_config: Called
    keystone2_mdio_reset: Called
    m88e1011s_startup: Called genphy_update_link: Called
    phy_read: devad=0xFFFFFFFF phydev->addr=0x0001 regnum=0x0001 val=0x796D
    genphy_update_link: Exit 0,phydev->link=0x1 mii_reg=0x796D
    m88e1xxx_parse_status: Called
    phy_read: devad=0xFFFFFFFF phydev->addr=0x0001 regnum=0x0011 val=0xAC00
    m88e1xxx_parse_status: Exit marvell.c @ 201, Link =1, speed=1000, duplex=1
    keystone2_eth_gigabit_enable: Called
    ethss_start: Called
    mac_sl_reset: Called
    mac_sl_config: Called
    mac_sl_reset: Called
    mac_sl_config: Called
    mac_sl_reset: Called
    mac_sl_config: Called
    mac_sl_reset: Called
    mac_sl_config: Called
    ethss_start: Called KS StatCount[0x00](0xC00) 39
    ethss_start: Called KS StatCount[0x01](0xC04) 37
    ethss_start: Called KS StatCount[0x02](0xC08) 0
    ethss_start: Called KS StatCount[0x03](0xC0C) 0
    ethss_start: Called KS StatCount[0x04](0xC10) 0
    ethss_start: Called KS StatCount[0x05](0xC14) 0
    ethss_start: Called KS StatCount[0x06](0xC18) 0
    ethss_start: Called KS StatCount[0x07](0xC1C) 0
    ethss_start: Called KS StatCount[0x08](0xC20) 0
    ethss_start: Called KS StatCount[0x09](0xC24) 0
    ethss_start: Called KS StatCount[0x0A](0xC28) 0
    ethss_start: Called KS StatCount[0x0B](0xC2C) 0
    ethss_start: Called KS StatCount[0x0C](0xC30) EEC
    ethss_start: Called KS StatCount[0x0D](0xC34) 7
    ethss_start: Called KS StatCount[0x0E](0xC38) 6
    ethss_start: Called KS StatCount[0x0F](0xC3C) 0
    ethss_start: Called KS StatCount[0x10](0xC40) 0
    ethss_start: Called KS StatCount[0x11](0xC44) 0
    ethss_start: Called KS StatCount[0x12](0xC48) 0
    ethss_start: Called KS StatCount[0x13](0xC4C) 0
    ethss_start: Called KS StatCount[0x14](0xC50) 0
    ethss_start: Called KS StatCount[0x15](0xC54) 0
    ethss_start: Called KS StatCount[0x16](0xC58) 0
    ethss_start: Called KS StatCount[0x17](0xC5C) 0
    ethss_start: Called KS StatCount[0x18](0xC60) 0
    ethss_start: Called KS StatCount[0x19](0xC64) 1C0
    ethss_start: Called KS StatCount[0x1A](0xC68) 3E
    ethss_start: Called KS StatCount[0x1B](0xC6C) 0
    ethss_start: Called KS StatCount[0x1C](0xC70) 4
    ethss_start: Called KS StatCount[0x1D](0xC74) 0
    ethss_start: Called KS StatCount[0x1E](0xC78) 0
    ethss_start: Called KS StatCount[0x1F](0xC7C) 0
    ping_start: Called
    Using netcp@slave-1 device
    ping_send: Called
    set_icmp_header: Called
    arp_raw_request: Called
    MAC: target: 00:00:00:00:00:00 local: D6:35:68:73:04:B7
    eth_send: Called
    genphy_update_link: Called
    phy_read: devad=0xFFFFFFFF phydev->addr=0x0001 regnum=0x0001 val=0x796D
    genphy_update_link: Exit 0,phydev->link=0x1 mii_reg=0x796D
    ks2_eth_send: Called keystone_net.c @ 853 link=1
    ksnav_send: Called keystone_nav.c @ 289 ret OK
    K2H PKT: "ff ff ff ff ff ff d6 35 68 73 04 b7 08 06 00 01 08 00 06 04 00 01 d6 35 68 73 04
    ksnav_recv: Called keystone_nav.c @ 318 ret OK
    K2H RCV: "ff ff ff ff ff ff 00 24 b2 1d 91 db 08 00 45 00 00 84 00 00 40 00 40 11 b8 18 c0
    ksnav_recv: Called keystone_nav.c @ 318 ret OK
    K2H RCV: "ff ff ff ff ff ff 00 24 b2 1d 91 db 08 00 45 00 00 84 00 00 40 00 40 11 f2 14 c0
    ksnav_recv: Called keystone_nav.c @ 318 ret OK

    ....

    phy_read: devad=0xFFFFFFFF phydev->addr=0x0001 regnum=0x0001 val=0x796D
    genphy_update_link: Exit 0,phydev->link=0x1 mii_reg=0x796D   
    ks2_eth_send: Called keystone_net.c @ 853 link=1
    ksnav_send: Called keystone_nav.c @ 289 ret OK
    K2H PKT: "60 02 92 29 cb 5c d6 35 68 73 04 b7 08 00 45 00 00 1c 00 03 40 00 ff 01 33 df c0
    ksnav_recv: Called keystone_nav.c @ 318 ret OK
    K2H RCV: "d6 35 68 73 04 b7 60 02 92 29 cb 5c 08 00 45 00 00 1c d3 0a 00 00 40 01 5f d8 c0
    ping_receive: Called
    ks2_eth_stop: Called
    ethss_stop: Called
    mac_sl_reset: Called
    mac_sl_reset: Called
    mac_sl_reset: Called
    mac_sl_reset: Called
    genphy_shutdown: Called
    host 192.168.99.150 is alive
    DRSP_UBoot>


    Now I have tried to fix MAC address with the followin lines in dts files.


        netcp-interfaces {
            interface-0 {
                rx-channel = "netrx0";
                rx-pool = <1024 12>;
                tx-pool = <1024 12>;
                rx-queue-depth = <128 128 0 0>;
                rx-buffer-size = <1518 4096 0 0>;
                rx-queue = <8704>;
                tx-completion-queue = <8706>;
    efuse-mac = <0>;
    local-mac-address = [ d4 f5 13 aa ed ca ];
                netcp-gbe = <&gbe0>;
            };
            interface-1 {
                rx-channel = "netrx1";
                rx-pool = <1024 12>;
                tx-pool = <1024 12>;
                rx-queue-depth = <128 128 0 0>;
                rx-buffer-size = <1518 4096 0 0>;
                rx-queue = <8705>;
                tx-completion-queue = <8707>;
                efuse-mac = <0>;
    local-mac-address = [ d6 35 68 73 04 b7 ];
                netcp-gbe = <&gbe1>;
            };

    ...

    &mdio {
        status = "ok";
        ethphy0: ethernet-phy@0 {
            compatible = "marvell,88E1548", "ethernet-phy-ieee802.3-c22";
            reg = <0>;
    local-mac-address = [ d4 f5 13 aa ed ca ];
        };

        ethphy1: ethernet-phy@1 {
            compatible = "marvell,88E1548", "ethernet-phy-ieee802.3-c22";
            reg = <1>;
    local-mac-address = [ d6 35 68 73 04 b7 ];
        };
    };

    For same strange problem both the eth IF ignore my MAC customization:

    phy_write: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0000 val=0x1200
    phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0000 val=0x1000
    phy_write: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0000 val=0x9000
    eth_post_probe: Called
    ks2_eth_read_rom_hwaddr: Called
    uclass.c@246: uclass_find_device_by_seq: 0 0
    uclass.c@254:    - -1 0 'netcp@2000000'
    uclass.c@258:    - found
    ks2_eth_write_hwaddr: Called

    Warning: netcp@2000000 using MAC address from ROM
    show_boot_progress: Boot reached stage 65

    ....

    phy_read: devad=0xFFFFFFFF phydev->addr=0x0001 regnum=0x0000 val=0x0000
    phy_write: devad=0xFFFFFFFF phydev->addr=0x0001 regnum=0x0000 val=0x1200
    phy_read: devad=0xFFFFFFFF phydev->addr=0x0001 regnum=0x0000 val=0x1000
    phy_write: devad=0xFFFFFFFF phydev->addr=0x0001 regnum=0x0000 val=0x9000
    eth_post_probe: Called
    ks2_eth_read_rom_hwaddr: Called
    net_random_ethaddr: Called

    Warning: netcp@slave-1 (eth1) using random MAC address - aa:a8:35:2e:b3:9c
    , eth1: netcp@slave-1ks2_eth_write_hwaddr: Called


    Net IF Nr: 2
    initcall: 0c2223b9
    show_boot_progress: Boot reached stage 172
    Hit any key to stop

    Anyway, any eth packet exits from internal switch, then on PC I haven't any ARP request (then also any ARP reply).

    first eth port on Custom board:

    setenv ipaddr 192.168.99.28
    DRSP_UBoot> ping 192.168.99.150        
    show_boot_progress: Boot reached stage 167
    ks2_eth_stop: Called
    eth_init: Called
    ks2_eth_start: Called
    keystone_sgmii_config: Called interface 1 port 0

    netcp@2000000 Waiting for SGMII auto negotiation to complete.
    Exit: mask=0x5 status=0x3D done
    ethss_config: Called
    keystone2_mdio_reset: Called
    m88e1145_startup_daia: Called
    genphy_update_link: Called
    phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x796D
    genphy_update_link: Exit 0,phydev->link=0x1 mii_reg=0x796D
    m88e1xxx_parse_status: Called
    phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0011 val=0xAC48
    m88e1xxx_parse_status: Exit marvell.c @ 201, Link =1, speed=1000, duplex=1
    keystone2_eth_gigabit_enable: Called
    ethss_start: Called
    mac_sl_reset: Called
    mac_sl_config: Called
    mac_sl_reset: Called
    mac_sl_config: Called
    mac_sl_reset: Called
    mac_sl_config: Called
    mac_sl_reset: Called
    mac_sl_config: Called
    ethss_start: Called KS StatCount[0x00](0xC00) 0
    ethss_start: Called KS StatCount[0x01](0xC04) 0
    ethss_start: Called KS StatCount[0x02](0xC08) 0
    ethss_start: Called KS StatCount[0x03](0xC0C) 0
    ethss_start: Called KS StatCount[0x04](0xC10) 0
    ethss_start: Called KS StatCount[0x05](0xC14) 0
    ethss_start: Called KS StatCount[0x06](0xC18) 0
    ethss_start: Called KS StatCount[0x07](0xC1C) 0
    ethss_start: Called KS StatCount[0x08](0xC20) 0
    ethss_start: Called KS StatCount[0x09](0xC24) 0
    ethss_start: Called KS StatCount[0x0A](0xC28) 0
    ethss_start: Called KS StatCount[0x0B](0xC2C) 0
    ethss_start: Called KS StatCount[0x0C](0xC30) 0
    ethss_start: Called KS StatCount[0x0D](0xC34) 0
    ethss_start: Called KS StatCount[0x0E](0xC38) 0
    ethss_start: Called KS StatCount[0x0F](0xC3C) 0
    ethss_start: Called KS StatCount[0x10](0xC40) 0
    ethss_start: Called KS StatCount[0x11](0xC44) 0
    ethss_start: Called KS StatCount[0x12](0xC48) 0
    ethss_start: Called KS StatCount[0x13](0xC4C) 0
    ethss_start: Called KS StatCount[0x14](0xC50) 0
    ethss_start: Called KS StatCount[0x15](0xC54) 0
    ethss_start: Called KS StatCount[0x16](0xC58) 0
    ethss_start: Called KS StatCount[0x17](0xC5C) 0
    ethss_start: Called KS StatCount[0x18](0xC60) 0
    ethss_start: Called KS StatCount[0x19](0xC64) 0
    ethss_start: Called KS StatCount[0x1A](0xC68) 0
    ethss_start: Called KS StatCount[0x1B](0xC6C) 0
    ethss_start: Called KS StatCount[0x1C](0xC70) 0
    ethss_start: Called KS StatCount[0x1D](0xC74) 0
    ethss_start: Called KS StatCount[0x1E](0xC78) 0
    ethss_start: Called KS StatCount[0x1F](0xC7C) 0
    ping_start: Called
    Using netcp@2000000 device
    ping_send: Called
    set_icmp_header: Called
    arp_raw_request: Called
    MAC: target: 00:00:00:00:00:00 local: 50:33:8B:6B:35:7C
    eth_send: Called
    genphy_update_link: Called
    phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x796D
    genphy_update_link: Exit 0,phydev->link=0x1 mii_reg=0x796D
    ks2_eth_send: Called keystone_net.c @ 853 link=1
    ksnav_send: Called keystone_nav.c @ 289 ret OK
    K2H PKT: "ff ff ff ff ff ff 50 33 8b 6b 35 7c 08 06 00 01 08 00 06 04 00 01 50 33 8b 6b 35
    arp_raw_request: Called
    MAC: target: 00:00:00:00:00:00 local: 50:33:8B:6B:35:7C
    eth_send: Called
    genphy_update_link: Called
    phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x796D
    genphy_update_link: Exit 0,phydev->link=0x1 mii_reg=0x796D
    ks2_eth_send: Called keystone_net.c @ 853 link=1
    ksnav_send: Called keystone_nav.c @ 289 ret OK
    K2H PKT: "ff ff ff ff ff ff 50 33 8b 6b 35 7c 08 06 00 01 08 00 06 04 00 01 50 33 8b 6b 35
    arp_raw_request: Called
    MAC: target: 00:00:00:00:00:00 local: 50:33:8B:6B:35:7C
    eth_send: Called
    genphy_update_link: Called
    phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x796D
    genphy_update_link: Exit 0,phydev->link=0x1 mii_reg=0x796D
    ks2_eth_send: Called keystone_net.c @ 853 link=1
    ksnav_send: Called keystone_nav.c @ 289 ret OK
    K2H PKT: "ff ff ff ff ff ff 50 33 8b 6b 35 7c 08 06 00 01 08 00 06 04 00 01 50 33 8b 6b 35
    arp_raw_request: Called
    MAC: target: 00:00:00:00:00:00 local: 50:33:8B:6B:35:7C
    eth_send: Called
    genphy_update_link: Called
    phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x796D
    genphy_update_link: Exit 0,phydev->link=0x1 mii_reg=0x796D
    ks2_eth_send: Called keystone_net.c @ 853 link=1
    ksnav_send: Called keystone_nav.c @ 289 ret OK
    K2H PKT: "ff ff ff ff ff ff 50 33 8b 6b 35 7c 08 06 00 01 08 00 06 04 00 01 50 33 8b 6b 35
    arp_raw_request: Called
    MAC: target: 00:00:00:00:00:00 local: 50:33:8B:6B:35:7C
    eth_send: Called
    genphy_update_link: Called
    phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x796D
    genphy_update_link: Exit 0,phydev->link=0x1 mii_reg=0x796D
    ks2_eth_send: Called keystone_net.c @ 853 link=1
    ksnav_send: Called keystone_nav.c @ 289 ret OK
    K2H PKT: "ff ff ff ff ff ff 50 33 8b 6b 35 7c 08 06 00 01 08 00 06 04 00 01 50 33 8b 6b 35
    arp_raw_request: Called
    MAC: target: 00:00:00:00:00:00 local: 50:33:8B:6B:35:7C
    eth_send: Called
    genphy_update_link: Called
    phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x796D
    genphy_update_link: Exit 0,phydev->link=0x1 mii_reg=0x796D
    ks2_eth_send: Called keystone_net.c @ 853 link=1
    ksnav_send: Called keystone_nav.c @ 289 ret OK
    K2H PKT: "ff ff ff ff ff ff 50 33 8b 6b 35 7c 08 06 00 01 08 00 06 04 00 01 50 33 8b 6b 35
    arp_raw_request: Called
    MAC: target: 00:00:00:00:00:00 local: 50:33:8B:6B:35:7C
    eth_send: Called
    genphy_update_link: Called
    phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x796D
    genphy_update_link: Exit 0,phydev->link=0x1 mii_reg=0x796D
    ks2_eth_send: Called keystone_net.c @ 853 link=1
    ksnav_send: Called keystone_nav.c @ 289 ret OK
    K2H PKT: "ff ff ff ff ff ff 50 33 8b 6b 35 7c 08 06 00 01 08 00 06 04 00 01 50 33 8b 6b 35
    arp_raw_request: Called
    MAC: target: 00:00:00:00:00:00 local: 50:33:8B:6B:35:7C
    eth_send: Called
    genphy_update_link: Called
    phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x796D
    genphy_update_link: Exit 0,phydev->link=0x1 mii_reg=0x796D
    ks2_eth_send: Called keystone_net.c @ 853 link=1
    ksnav_send: Called keystone_nav.c @ 289 ret OK
    K2H PKT: "ff ff ff ff ff ff 50 33 8b 6b 35 7c 08 06 00 01 08 00 06 04 00 01 50 33 8b 6b 35
    arp_raw_request: Called
    MAC: target: 00:00:00:00:00:00 local: 50:33:8B:6B:35:7C
    eth_send: Called
    genphy_update_link: Called
    phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x796D
    genphy_update_link: Exit 0,phydev->link=0x1 mii_reg=0x796D
    ks2_eth_send: Called keystone_net.c @ 853 link=1
    ksnav_send: Called keystone_nav.c @ 289 ret OK
    K2H PKT: "ff ff ff ff ff ff 50 33 8b 6b 35 7c 08 06 00 01 08 00 06 04 00 01 50 33 8b 6b 35
    arp_raw_request: Called
    MAC: target: 00:00:00:00:00:00 local: 50:33:8B:6B:35:7C
    eth_send: Called
    genphy_update_link: Called
    phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x796D
    genphy_update_link: Exit 0,phydev->link=0x1 mii_reg=0x796D
    ks2_eth_send: Called keystone_net.c @ 853 link=1
    ksnav_send: Called keystone_nav.c @ 289 ret OK
    K2H PKT: "ff ff ff ff ff ff 50 33 8b 6b 35 7c 08 06 00 01 08 00 06 04 00 01 50 33 8b 6b 35
    arp_raw_request: Called
    MAC: target: 00:00:00:00:00:00 local: 50:33:8B:6B:35:7C
    eth_send: Called
    genphy_update_link: Called
    phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x796D
    genphy_update_link: Exit 0,phydev->link=0x1 mii_reg=0x796D
    ks2_eth_send: Called keystone_net.c @ 853 link=1
    ksnav_send: Called keystone_nav.c @ 289 ret OK

    ...

    second eth port on Custom board

    DRSP_UBoot> ping 192.168.99.150
    show_boot_progress: Boot reached stage 167
    ks2_eth_stop: Called
    eth_init: Called
    ks2_eth_start: Called
    keystone_sgmii_config: Called interface 1 port 1

    netcp@slave-1 Waiting for SGMII auto negotiation to complete.
    Exit: mask=0x5 status=0x3D done
    ethss_config: Called
    keystone2_mdio_reset: Called
    m88e1145_startup_daia: Called
    genphy_update_link: Called
    phy_read: devad=0xFFFFFFFF phydev->addr=0x0001 regnum=0x0001 val=0x796D
    genphy_update_link: Exit 0,phydev->link=0x1 mii_reg=0x796D
    m88e1xxx_parse_status: Called
    phy_read: devad=0xFFFFFFFF phydev->addr=0x0001 regnum=0x0011 val=0xAC48
    m88e1xxx_parse_status: Exit marvell.c @ 201, Link =1, speed=1000, duplex=1
    keystone2_eth_gigabit_enable: Called
    ethss_start: Called
    mac_sl_reset: Called
    mac_sl_config: Called
    mac_sl_reset: Called
    mac_sl_config: Called
    mac_sl_reset: Called
    mac_sl_config: Called
    mac_sl_reset: Called
    mac_sl_config: Called
    ethss_start: Called KS StatCount[0x00](0xC00) 6D5
    ethss_start: Called KS StatCount[0x01](0xC04) 677
    ethss_start: Called KS StatCount[0x02](0xC08) 5E
    ethss_start: Called KS StatCount[0x03](0xC0C) 0
    ethss_start: Called KS StatCount[0x04](0xC10) 0
    ethss_start: Called KS StatCount[0x05](0xC14) 0
    ethss_start: Called KS StatCount[0x06](0xC18) 0
    ethss_start: Called KS StatCount[0x07](0xC1C) 0
    ethss_start: Called KS StatCount[0x08](0xC20) 0
    ethss_start: Called KS StatCount[0x09](0xC24) 0
    ethss_start: Called KS StatCount[0x0A](0xC28) 0
    ethss_start: Called KS StatCount[0x0B](0xC2C) 0
    ethss_start: Called KS StatCount[0x0C](0xC30) 26CFC
    ethss_start: Called KS StatCount[0x0D](0xC34) 0
    ethss_start: Called KS StatCount[0x0E](0xC38) 0
    ethss_start: Called KS StatCount[0x0F](0xC3C) 0
    ethss_start: Called KS StatCount[0x10](0xC40) 0
    ethss_start: Called KS StatCount[0x11](0xC44) 0
    ethss_start: Called KS StatCount[0x12](0xC48) 0
    ethss_start: Called KS StatCount[0x13](0xC4C) 0
    ethss_start: Called KS StatCount[0x14](0xC50) 0
    ethss_start: Called KS StatCount[0x15](0xC54) 0
    ethss_start: Called KS StatCount[0x16](0xC58) 0
    ethss_start: Called KS StatCount[0x17](0xC5C) 0
    ethss_start: Called KS StatCount[0x18](0xC60) 0
    ethss_start: Called KS StatCount[0x19](0xC64) 0
    ethss_start: Called KS StatCount[0x1A](0xC68) 628
    ethss_start: Called KS StatCount[0x1B](0xC6C) 5
    ethss_start: Called KS StatCount[0x1C](0xC70) 40
    ethss_start: Called KS StatCount[0x1D](0xC74) 68
    ethss_start: Called KS StatCount[0x1E](0xC78) 0
    ethss_start: Called KS StatCount[0x1F](0xC7C) 0
    ping_start: Called
    Using netcp@slave-1 device
    ping_send: Called
    set_icmp_header: Called
    arp_raw_request: Called
    MAC: target: 00:00:00:00:00:00 local: AA:A8:35:2E:B3:9C
    eth_send: Called
    genphy_update_link: Called
    phy_read: devad=0xFFFFFFFF phydev->addr=0x0001 regnum=0x0001 val=0x796D
    genphy_update_link: Exit 0,phydev->link=0x1 mii_reg=0x796D
    ks2_eth_send: Called keystone_net.c @ 853 link=1
    ksnav_send: Called keystone_nav.c @ 289 ret OK
    K2H PKT: "ff ff ff ff ff ff aa a8 35 2e b3 9c 08 06 00 01 08 00 06 04 00 01 aa a8 35 2e b3
    arp_raw_request: Called
    MAC: target: 00:00:00:00:00:00 local: AA:A8:35:2E:B3:9C
    eth_send: Called
    genphy_update_link: Called
    phy_read: devad=0xFFFFFFFF phydev->addr=0x0001 regnum=0x0001 val=0x796D
    genphy_update_link: Exit 0,phydev->link=0x1 mii_reg=0x796D
    ks2_eth_send: Called keystone_net.c @ 853 link=1
    ksnav_send: Called keystone_nav.c @ 289 ret OK
    K2H PKT: "ff ff ff ff ff ff aa a8 35 2e b3 9c 08 06 00 01 08 00 06 04 00 01 aa a8 35 2e b3
    arp_raw_request: Called
    MAC: target: 00:00:00:00:00:00 local: AA:A8:35:2E:B3:9C
    eth_send: Called
    genphy_update_link: Called
    phy_read: devad=0xFFFFFFFF phydev->addr=0x0001 regnum=0x0001 val=0x796D
    genphy_update_link: Exit 0,phydev->link=0x1 mii_reg=0x796D
    ks2_eth_send: Called keystone_net.c @ 853 link=1
    ksnav_send: Called keystone_nav.c @ 289 ret OK
    K2H PKT: "ff ff ff ff ff ff aa a8 35 2e b3 9c 08 06 00 01 08 00 06 04 00 01 aa a8 35 2e b3
    arp_raw_request: Called
    MAC: target: 00:00:00:00:00:00 local: AA:A8:35:2E:B3:9C
    eth_send: Called
    genphy_update_link: Called
    phy_read: devad=0xFFFFFFFF phydev->addr=0x0001 regnum=0x0001 val=0x796D
    genphy_update_link: Exit 0,phydev->link=0x1 mii_reg=0x796D
    ks2_eth_send: Called keystone_net.c @ 853 link=1
    ksnav_send: Called keystone_nav.c @ 289 ret OK
    K2H PKT: "ff ff ff ff ff ff aa a8 35 2e b3 9c 08 06 00 01 08 00 06 04 00 01 aa a8 35 2e b3
    arp_raw_request: Called
    MAC: target: 00:00:00:00:00:00 local: AA:A8:35:2E:B3:9C
    eth_send: Called
    genphy_update_link: Called
    phy_read: devad=0xFFFFFFFF phydev->addr=0x0001 regnum=0x0001 val=0x796D
    genphy_update_link: Exit 0,phydev->link=0x1 mii_reg=0x796D
    ks2_eth_send: Called keystone_net.c @ 853 link=1
    ksnav_send: Called keystone_nav.c @ 289 ret OK
    K2H PKT: "ff ff ff ff ff ff aa a8 35 2e b3 9c 08 06 00 01 08 00 06 04 00 01 aa a8 35 2e b3
    arp_raw_request: Called
    MAC: target: 00:00:00:00:00:00 local: AA:A8:35:2E:B3:9C
    eth_send: Called
    genphy_update_link: Called
    phy_read: devad=0xFFFFFFFF phydev->addr=0x0001 regnum=0x0001 val=0x796D
    genphy_update_link: Exit 0,phydev->link=0x1 mii_reg=0x796D
    ks2_eth_send: Called keystone_net.c @ 853 link=1
    ksnav_send: Called keystone_nav.c @ 289 ret OK
    K2H PKT: "ff ff ff ff ff ff aa a8 35 2e b3 9c 08 06 00 01 08 00 06 04 00 01 aa a8 35 2e b3

    BR,

    Dario

  • HI, Dario,

    How's your setup? Do you have 2 ethernet ports connected to the networks or only using eth1? If these are the case, could you try if only eth0 work? If you are only using eth1, I'll need to see where it gets the MAC address. It's been a while. I recall in the past, the mac address is from local-mac-address (or mac-address in the dts file). or you can take a look at the driver code to see where it prints "Getting mac address from ROM" and under what condition. 

    I have different interpretation on your comment of "u-boot is using all 0's as broadcast address". The ping doesn't find the destination mac address in the routing table and it shows all 0's. hence it sends the ARP out to find the MAC address for that IP address. I see the packet out with all F's.

    As in your logs, the MAC address of target IP can't be resolved (all 0's shown below) and hence, the K2H PKT: has first 6 bytes of ff's for broadcasting ARP to resolve it. Could you verify if ARP Reply gets sent back and what are the destination and source mac addresses?

    MAC: target: 00:00:00:00:00:00 local: 50:33:8B:6B:35:7C
    K2H PKT: "ff ff ff ff ff ff 50 33 8b 6b 35 7c 08 06 00 01 08 00 06 04 00 01 50 33 8b 6b 35

    Rex

  • Hi Rex,

       I am sorry for delayed answer.

    My HW setup is: evm k2h (or custom board) connected at external eth switch (3com) via single eth
    cable (I move it when I want to try secondary eth port).
    The eth switch is connected at my linux PC (IP address defined as static) via a eth cable where I
    run wireshark program (or I use packETH linux tool for ingress direction test).

    On custom board I use only the first two port present, (at the begin I had configured all 4 eth port
    connected at the swtch).

    When I want to try the ingress path I execute in custom board the uboot command "ping" after I have
    set correctly IP address (192.168.111.23) and netmask (255.255.255.0), my PC has static IP
    192.168.111.150 correctly set:

    [xxxx ~]: ifconfig eth0
    eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 192.168.111.150  netmask 255.255.255.0  broadcast 192.168.111.255
            inet6 fe80::6202:92ff:fe29:cb5c  prefixlen 64  scopeid 0x20<link>
            ether 60:02:92:29:cb:5c  txqueuelen 1000  (Ethernet)
            RX packets 0  bytes 0 (0.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 13693  bytes 1382902 (1.3 MB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
            device interrupt 19  

    [xxxx ~]: route
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    localhost.local 0.0.0.0         255.255.255.255 UH    0      0        0 lo
    192.168.99.0    0.0.0.0         255.255.255.0   U     0      0        0 wlan0
    192.168.111.0   0.0.0.0         255.255.255.0   U     0      0        0 eth0

    I have changed ksnav_recv function in this way to have some debug printout:

    void *ksnav_recv(struct pktdma_cfg *pktdma, u32 **pkt, int *num_bytes)
    {
        struct qm_host_desc *hd;
        uchar *data;
        int i;

        hd = qm_pop(pktdma->rx_rcv_q);
        if (!hd)
            return NULL;

        *pkt = (u32 *)hd->buff_ptr;
        *num_bytes = hd->desc_info & 0x3fffff;

        printf("%s: Called %s @ %d ret %s, len =%d\n",
                __func__, 1+strrchr(__FILE__, '/'), __LINE__, /*hd == NULL ? "Fail":*/"OK", *num_bytes);
        data = (uchar *)hd->buff_ptr;
        printf("%s: Called @ data:",__func__);
        for (i=0; i< 64; i++)
            printf(" %02X", data[i]);
        printf("\n");
        if ((*num_bytes) == 0)
           return NULL;

        data = (uchar *)hd->buff_ptr;

        printf("K2H RCV: \"");
        for (i = 0; i < *num_bytes; i++ )
            printf("%02x ", data[i]);
        printf("\" \n");

        return hd;
    }

    On Custom Board I execute the ping to start & configure all parts need.

    Before to start the first arp request I read the statistic counters (STATSA and B) and print the contents (the
    first time all counters are 0).
    When u-boot try some ping attempt I send from my PC (using packETH) some arp reply messages (with
    correctly MAC addresses and IP address) then the function ksnav_recv is called every times I send a
    arp reply message, as you can see in following log:

    DRSP_UBoot> ping 192.168.111.150
    show_boot_progress: Boot reached stage 167
    ks2_eth_stop: Called
    eth_init: Called
    ks2_eth_start: Called
    keystone_sgmii_config: Called interface 1 port 0

    netcp@2000000 Waiting for SGMII auto negotiation to complete.
    Exit: mask=0x5 status=0x3D done
    ethss_config: Called
    ksnav_init: Called @211
    ksnav_init: Called @216
    ksnav_init: Called @222
    ksnav_init: Called @234
    ksnav_rx_disable: Called @151
    ksnav_init: Called @268
    keystone2_mdio_reset: Called
    m88e1145_startup_daia: Called
    genphy_update_link: Called
    phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x796D
    phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x796D
    genphy_update_link: Exit 1,phydev->link=0x1
    genphy_update_link: Exit 1 phy.c @ 311, Link =1, speed=0, duplex=-1
    m88e1xxx_parse_status: Called
    phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0011 val=0xBC48
    m88e1xxx_parse_status: Exit marvell.c @ 200, Link =1, speed=1000, duplex=1
    keystone2_eth_gigabit_enable: Called
    ethss_start: Called
    mac_sl_reset: Called
    mac_sl_config: Called
    mac_sl_reset: Called
    mac_sl_config: Called
    mac_sl_reset: Called
    mac_sl_config: Called
    mac_sl_reset: Called
    mac_sl_config: Called
    ethss_start: KS STATSB[0x00](0xC00)(RXGOODFRAMES) 0
    ethss_start: KS STATSB[0x04](0xC04)(RXBROADCAST) 0
    ethss_start: KS STATSB[0x08](0xC08)(RXMULTICAST) 0
    ethss_start: KS STATSB[0x0C](0xC0C)(RXPAUSEFRAMES) 0
    ethss_start: KS STATSB[0x10](0xC10)(RXCRCERRORS) 0
    ethss_start: KS STATSB[0x14](0xC14)(RXALIGNCODEERRORS) 0
    ethss_start: KS STATSB[0x18](0xC18)(RXOVERSIZEDFRAMES) 0
    ethss_start: KS STATSB[0x1C](0xC1C)(RXJABBERFRAMES) 0
    ethss_start: KS STATSB[0x20](0xC20)(RXUNDERSIZED) 0
    ethss_start: KS STATSB[0x24](0xC24)(RXFRAGMENTS) 0
    ethss_start: KS STATSB[0x30](0xC30)(RXOCTETS) 0
    ethss_start: KS STATSB[0x34](0xC34)(TXGOODFRAMES) 0
    ethss_start: KS STATSB[0x38](0xC38)(TXBROADCAST) 0
    ethss_start: KS STATSB[0x3C](0xC3C)(TXMULTICAST) 0
    ethss_start: KS STATSB[0x40](0xC40)(TXPAUSEFRAMES) 0
    ethss_start: KS STATSB[0x44](0xC44)(TXDEFERRED) 0
    ethss_start: KS STATSB[0x48](0xC48)(TXCOLLISION) 0
    ethss_start: KS STATSB[0x4C](0xC4C)(TXSINGLECOLL) 0
    ethss_start: KS STATSB[0x50](0xC50)(TXMULTCOLL) 0
    ethss_start: KS STATSB[0x54](0xC54)(TXEXCESSIVE) 0
    ethss_start: KS STATSB[0x58](0xC58)(TXLATECOLLISIONS) 0
    ethss_start: KS STATSB[0x5C](0xC5C)(TXUNDERRUN) 0
    ethss_start: KS STATSB[0x60](0xC60)(TXCARRIERSENSEERRORS) 0
    ethss_start: KS STATSB[0x64](0xC64)(TXOCTETS) 0
    ethss_start: KS STATSB[0x68](0xC68)(64OCTETFRAMES) 0
    ethss_start: KS STATSB[0x6C](0xC6C)(65T127OCTET) 0
    ethss_start: KS STATSB[0x70](0xC70)(128T255OCTET) 0
    ethss_start: KS STATSB[0x74](0xC74)(256T511OCTET) 0
    ethss_start: KS STATSB[0x78](0xC78)(512T1023OCTET) 0
    ethss_start: KS STATSB[0x7C](0xC7C)(1024TUPOCTET) 0
    ethss_start: KS STATSB[0x80](0xC80)(NETOCTETS) 0
    ethss_start: KS STATSB[0x84](0xC84)(RXSOFOVERRUNS) 0
    ethss_start: KS STATSB[0x88](0xC88)(RXMOFOVERRUNS) 0
    ethss_start: KS STATSB[0x8C](0xC8C)(RXDMAOVERRUNS) 0
    ethss_start: KS STATSA[0x00](0xB00)(RXGOODFRAMES) 0
    ethss_start: KS STATSA[0x04](0xB04)(RXBROADCAST) 0
    ethss_start: KS STATSA[0x08](0xB08)(RXMULTICAST) 0
    ethss_start: KS STATSA[0x0C](0xB0C)(RXPAUSEFRAMES) 0
    ethss_start: KS STATSA[0x10](0xB10)(RXCRCERRORS) 0
    ethss_start: KS STATSA[0x14](0xB14)(RXALIGNCODEERRORS) 0
    ethss_start: KS STATSA[0x18](0xB18)(RXOVERSIZEDFRAMES) 0
    ethss_start: KS STATSA[0x1C](0xB1C)(RXJABBERFRAMES) 0
    ethss_start: KS STATSA[0x20](0xB20)(RXUNDERSIZED) 0
    ethss_start: KS STATSA[0x24](0xB24)(RXFRAGMENTS) 0
    ethss_start: KS STATSA[0x30](0xB30)(RXOCTETS) 0
    ethss_start: KS STATSA[0x34](0xB34)(TXGOODFRAMES) 0
    ethss_start: KS STATSA[0x38](0xB38)(TXBROADCAST) 0
    ethss_start: KS STATSA[0x3C](0xB3C)(TXMULTICAST) 0
    ethss_start: KS STATSA[0x40](0xB40)(TXPAUSEFRAMES) 0
    ethss_start: KS STATSA[0x44](0xB44)(TXDEFERRED) 0
    ethss_start: KS STATSA[0x48](0xB48)(TXCOLLISION) 0
    ethss_start: KS STATSA[0x4C](0xB4C)(TXSINGLECOLL) 0
    ethss_start: KS STATSA[0x50](0xB50)(TXMULTCOLL) 0
    ethss_start: KS STATSA[0x54](0xB54)(TXEXCESSIVE) 0
    ethss_start: KS STATSA[0x58](0xB58)(TXLATECOLLISIONS) 0
    ethss_start: KS STATSA[0x5C](0xB5C)(TXUNDERRUN) 0
    ethss_start: KS STATSA[0x60](0xB60)(TXCARRIERSENSEERRORS) 0
    ethss_start: KS STATSA[0x64](0xB64)(TXOCTETS) 0
    ethss_start: KS STATSA[0x68](0xB68)(64OCTETFRAMES) 0
    ethss_start: KS STATSA[0x6C](0xB6C)(65T127OCTET) 0
    ethss_start: KS STATSA[0x70](0xB70)(128T255OCTET) 0
    ethss_start: KS STATSA[0x74](0xB74)(256T511OCTET) 0
    ethss_start: KS STATSA[0x78](0xB78)(512T1023OCTET) 0
    ethss_start: KS STATSA[0x7C](0xB7C)(1024TUPOCTET) 0
    ethss_start: KS STATSA[0x80](0xB80)(NETOCTETS) 0
    ethss_start: KS STATSA[0x84](0xB84)(RXSOFOVERRUNS) 0
    ethss_start: KS STATSA[0x88](0xB88)(RXMOFOVERRUNS) 0
    ethss_start: KS STATSA[0x8C](0xB8C)(RXDMAOVERRUNS) 0
    ping_start: Called
    Using netcp@2000000 device
    ping_send: Called
    set_icmp_header: Called
    arp_raw_request: Called
    MAC: target: 00:00:00:00:00:00 local: 50:33:8B:6B:35:7C
    eth_send: Called
    genphy_update_link: Called
    phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x796D
    genphy_update_link: Exit 0,phydev->link=0x1 mii_reg=0x796D
    ks2_eth_send: Called keystone_net.c @ 906 link=1
    ksnav_send: Called keystone_nav.c @ 295 ret OK
    K2H PKT: "ff ff ff ff ff ff 50 33 8b 6b 35 7c 08 06 00 01 08 00 06 04 00 01 50 33 8b 6b 35 7c c0 a8 6f 17 00 00 00 00 00 00 c0 a8 6f 96 00 00 00 00 00 00 00 00 0
    arp_raw_request: Called
    MAC: target: 00:00:00:00:00:00 local: 50:33:8B:6B:35:7C
    eth_send: Called
    genphy_update_link: Called
    phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x796D
    genphy_update_link: Exit 0,phydev->link=0x1 mii_reg=0x796D
    ks2_eth_send: Called keystone_net.c @ 906 link=1
    ksnav_send: Called keystone_nav.c @ 295 ret OK
    K2H PKT: "ff ff ff ff ff ff 50 33 8b 6b 35 7c 08 06 00 01 08 00 06 04 00 01 50 33 8b 6b 35 7c c0 a8 6f 17 00 00 00 00 00 00 c0 a8 6f 96 00 00 00 00 00 00 00 00 0
    arp_raw_request: Called
    MAC: target: 00:00:00:00:00:00 local: 50:33:8B:6B:35:7C
    eth_send: Called
    genphy_update_link: Called
    phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x796D
    genphy_update_link: Exit 0,phydev->link=0x1 mii_reg=0x796D
    ks2_eth_send: Called keystone_net.c @ 906 link=1
    ksnav_send: Called keystone_nav.c @ 295 ret OK
    K2H PKT: "ff ff ff ff ff ff 50 33 8b 6b 35 7c 08 06 00 01 08 00 06 04 00 01 50 33 8b 6b 35 7c c0 a8 6f 17 00 00 00 00 00 00 c0 a8 6f 96 00 00 00 00 00 00 00 00 0
    arp_raw_request: Called
    MAC: target: 00:00:00:00:00:00 local: 50:33:8B:6B:35:7C
    eth_send: Called
    genphy_update_link: Called
    phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x796D
    genphy_update_link: Exit 0,phydev->link=0x1 mii_reg=0x796D
    ks2_eth_send: Called keystone_net.c @ 906 link=1
    ksnav_send: Called keystone_nav.c @ 295 ret OK
    K2H PKT: "ff ff ff ff ff ff 50 33 8b 6b 35 7c 08 06 00 01 08 00 06 04 00 01 50 33 8b 6b 35 7c c0 a8 6f 17 00 00 00 00 00 00 c0 a8 6f 96 00 00 00 00 00 00 00 00 0
    arp_raw_request: Called
    MAC: target: 00:00:00:00:00:00 local: 50:33:8B:6B:35:7C
    eth_send: Called
    genphy_update_link: Called
    phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x796D
    genphy_update_link: Exit 0,phydev->link=0x1 mii_reg=0x796D
    ks2_eth_send: Called keystone_net.c @ 906 link=1
    ksnav_send: Called keystone_nav.c @ 295 ret OK
    K2H PKT: "ff ff ff ff ff ff 50 33 8b 6b 35 7c 08 06 00 01 08 00 06 04 00 01 50 33 8b 6b 35 7c c0 a8 6f 17 00 00 00 00 00 00 c0 a8 6f 96 00 00 00 00 00 00 00 00 0
    ksnav_recv: Called keystone_nav.c @ 328 ret OK, len =0
    ksnav_recv: Called @ data: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 000
    ksnav_recv: Called keystone_nav.c @ 328 ret OK, len =0
    ksnav_recv: Called @ data: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 000
    ksnav_recv: Called keystone_nav.c @ 328 ret OK, len =0
    ksnav_recv: Called @ data: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 000
    arp_raw_request: Called
    MAC: target: 00:00:00:00:00:00 local: 50:33:8B:6B:35:7C
    eth_send: Called
    genphy_update_link: Called
    phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x796D
    genphy_update_link: Exit 0,phydev->link=0x1 mii_reg=0x796D
    ks2_eth_send: Called keystone_net.c @ 906 link=1
    ksnav_send: Called keystone_nav.c @ 295 ret OK
    K2H PKT: "ff ff ff ff ff ff 50 33 8b 6b 35 7c 08 06 00 01 08 00 06 04 00 01 50 33 8b 6b 35 7c c0 a8 6f 17 00 00 00 00 00 00 c0 a8 6f 96 00 00 00 00 00 00 00 00 0
    ks2_eth_stop: Called
    ethss_stop: Called
    mac_sl_reset: Called
    mac_sl_reset: Called
    mac_sl_reset: Called
    mac_sl_reset: Called
    ksnav_tx_disable: Called @186
    ksnav_rx_disable: Called @151
    genphy_shutdown: Called

    Abort
    ping failed; host 192.168.111.150 is not alive

    Now I run again a ping only to print STATSA & B contents, you can see all RX counters on STATSA and TX
    STATSB are 0 (no receive nothing from ARM core, and nothing exit from K2H), in the ingress direction RX
    counters are increased (3*64 = 192 = 0xC0) with correct number of packets/octets transmitted from PHY (at
    least the size is correct), all three packets are send at core from internal GBEth switch (and the core calls
    the function but the packet length is zero and the packet is discarded):


    DRSP_UBoot> ping 192.168.111.150
    show_boot_progress: Boot reached stage 167
    ks2_eth_stop: Called
    eth_init: Called
    ks2_eth_start: Called
    keystone_sgmii_config: Called interface 1 port 0

    netcp@2000000 Waiting for SGMII auto negotiation to complete.
    Exit: mask=0x5 status=0x3D done
    ethss_config: Called
    ksnav_init: Called @211
    ksnav_init: Called @216
    ksnav_init: Called @222
    ksnav_init: Called @234
    ksnav_rx_disable: Called @151
    ksnav_init: Called @268
    keystone2_mdio_reset: Called
    m88e1145_startup_daia: Called
    genphy_update_link: Called
    phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x796D
    genphy_update_link: Exit 0,phydev->link=0x1 mii_reg=0x796D
    m88e1xxx_parse_status: Called
    phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0011 val=0xAC48
    m88e1xxx_parse_status: Exit marvell.c @ 200, Link =1, speed=1000, duplex=1
    keystone2_eth_gigabit_enable: Called
    ethss_start: Called
    mac_sl_reset: Called
    mac_sl_config: Called
    mac_sl_reset: Called
    mac_sl_config: Called
    mac_sl_reset: Called
    mac_sl_config: Called
    mac_sl_reset: Called
    mac_sl_config: Called
    ethss_start: KS STATSB[0x00](0xC00)(RXGOODFRAMES) 3
    ethss_start: KS STATSB[0x04](0xC04)(RXBROADCAST) 0
    ethss_start: KS STATSB[0x08](0xC08)(RXMULTICAST) 0
    ethss_start: KS STATSB[0x0C](0xC0C)(RXPAUSEFRAMES) 0
    ethss_start: KS STATSB[0x10](0xC10)(RXCRCERRORS) 0
    ethss_start: KS STATSB[0x14](0xC14)(RXALIGNCODEERRORS) 0
    ethss_start: KS STATSB[0x18](0xC18)(RXOVERSIZEDFRAMES) 0
    ethss_start: KS STATSB[0x1C](0xC1C)(RXJABBERFRAMES) 0
    ethss_start: KS STATSB[0x20](0xC20)(RXUNDERSIZED) 0
    ethss_start: KS STATSB[0x24](0xC24)(RXFRAGMENTS) 0
    ethss_start: KS STATSB[0x30](0xC30)(RXOCTETS) C0
    ethss_start: KS STATSB[0x34](0xC34)(TXGOODFRAMES) 0
    ethss_start: KS STATSB[0x38](0xC38)(TXBROADCAST) 0
    ethss_start: KS STATSB[0x3C](0xC3C)(TXMULTICAST) 0
    ethss_start: KS STATSB[0x40](0xC40)(TXPAUSEFRAMES) 0
    ethss_start: KS STATSB[0x44](0xC44)(TXDEFERRED) 0
    ethss_start: KS STATSB[0x48](0xC48)(TXCOLLISION) 0
    ethss_start: KS STATSB[0x4C](0xC4C)(TXSINGLECOLL) 0
    ethss_start: KS STATSB[0x50](0xC50)(TXMULTCOLL) 0
    ethss_start: KS STATSB[0x54](0xC54)(TXEXCESSIVE) 0
    ethss_start: KS STATSB[0x58](0xC58)(TXLATECOLLISIONS) 0
    ethss_start: KS STATSB[0x5C](0xC5C)(TXUNDERRUN) 0
    ethss_start: KS STATSB[0x60](0xC60)(TXCARRIERSENSEERRORS) 0
    ethss_start: KS STATSB[0x64](0xC64)(TXOCTETS) 0
    ethss_start: KS STATSB[0x68](0xC68)(64OCTETFRAMES) 3
    ethss_start: KS STATSB[0x6C](0xC6C)(65T127OCTET) 0
    ethss_start: KS STATSB[0x70](0xC70)(128T255OCTET) 0
    ethss_start: KS STATSB[0x74](0xC74)(256T511OCTET) 0
    ethss_start: KS STATSB[0x78](0xC78)(512T1023OCTET) 0
    ethss_start: KS STATSB[0x7C](0xC7C)(1024TUPOCTET) 0
    ethss_start: KS STATSB[0x80](0xC80)(NETOCTETS) C0
    ethss_start: KS STATSB[0x84](0xC84)(RXSOFOVERRUNS) 0
    ethss_start: KS STATSB[0x88](0xC88)(RXMOFOVERRUNS) 0
    ethss_start: KS STATSB[0x8C](0xC8C)(RXDMAOVERRUNS) 0
    ethss_start: KS STATSA[0x00](0xB00)(RXGOODFRAMES) 0
    ethss_start: KS STATSA[0x04](0xB04)(RXBROADCAST) 0
    ethss_start: KS STATSA[0x08](0xB08)(RXMULTICAST) 0
    ethss_start: KS STATSA[0x0C](0xB0C)(RXPAUSEFRAMES) 0
    ethss_start: KS STATSA[0x10](0xB10)(RXCRCERRORS) 0
    ethss_start: KS STATSA[0x14](0xB14)(RXALIGNCODEERRORS) 0
    ethss_start: KS STATSA[0x18](0xB18)(RXOVERSIZEDFRAMES) 0
    ethss_start: KS STATSA[0x1C](0xB1C)(RXJABBERFRAMES) 0
    ethss_start: KS STATSA[0x20](0xB20)(RXUNDERSIZED) 0
    ethss_start: KS STATSA[0x24](0xB24)(RXFRAGMENTS) 0
    ethss_start: KS STATSA[0x30](0xB30)(RXOCTETS) 0
    ethss_start: KS STATSA[0x34](0xB34)(TXGOODFRAMES) 3
    ethss_start: KS STATSA[0x38](0xB38)(TXBROADCAST) 0
    ethss_start: KS STATSA[0x3C](0xB3C)(TXMULTICAST) 0
    ethss_start: KS STATSA[0x40](0xB40)(TXPAUSEFRAMES) 0
    ethss_start: KS STATSA[0x44](0xB44)(TXDEFERRED) 0
    ethss_start: KS STATSA[0x48](0xB48)(TXCOLLISION) 0
    ethss_start: KS STATSA[0x4C](0xB4C)(TXSINGLECOLL) 0
    ethss_start: KS STATSA[0x50](0xB50)(TXMULTCOLL) 0
    ethss_start: KS STATSA[0x54](0xB54)(TXEXCESSIVE) 0
    ethss_start: KS STATSA[0x58](0xB58)(TXLATECOLLISIONS) 0
    ethss_start: KS STATSA[0x5C](0xB5C)(TXUNDERRUN) 0
    ethss_start: KS STATSA[0x60](0xB60)(TXCARRIERSENSEERRORS) 0
    ethss_start: KS STATSA[0x64](0xB64)(TXOCTETS) C0
    ethss_start: KS STATSA[0x68](0xB68)(64OCTETFRAMES) 3
    ethss_start: KS STATSA[0x6C](0xB6C)(65T127OCTET) 0
    ethss_start: KS STATSA[0x70](0xB70)(128T255OCTET) 0
    ethss_start: KS STATSA[0x74](0xB74)(256T511OCTET) 0
    ethss_start: KS STATSA[0x78](0xB78)(512T1023OCTET) 0
    ethss_start: KS STATSA[0x7C](0xB7C)(1024TUPOCTET) 0
    ethss_start: KS STATSA[0x80](0xB80)(NETOCTETS) C0
    ethss_start: KS STATSA[0x84](0xB84)(RXSOFOVERRUNS) 0
    ethss_start: KS STATSA[0x88](0xB88)(RXMOFOVERRUNS) 0
    ethss_start: KS STATSA[0x8C](0xB8C)(RXDMAOVERRUNS) 0
    ping_start: Called
    Using netcp@2000000 device
    ping_send: Called
    set_icmp_header: Called
    arp_raw_request: Called
    MAC: target: 00:00:00:00:00:00 local: 50:33:8B:6B:35:7C
    eth_send: Called
    genphy_update_link: Called
    phy_read: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x796D
    genphy_update_link: Exit 0,phydev->link=0x1 mii_reg=0x796D
    ks2_eth_send: Called keystone_net.c @ 906 link=1
    ksnav_send: Called keystone_nav.c @ 295 ret OK
    K2H PKT: "ff ff ff ff ff ff 50 33 8b 6b 35 7c 08 06 00 01 08 00 06 04 00 01 50 33 8b 6b 35 7c c0 a8 6f 17 00 00 00 00 00 00 c0 a8 6f 96 00 00 00 00 00 00 00 00 0
    ks2_eth_stop: Called
    ethss_stop: Called
    mac_sl_reset: Called
    mac_sl_reset: Called
    mac_sl_reset: Called
    mac_sl_reset: Called
    ksnav_tx_disable: Called @186
    ksnav_rx_disable: Called @151
    genphy_shutdown: Called

    Abort
    ping failed; host 192.168.111.150 is not alive

    The I continue to suppose that the problem is in some wrong configuration in DMA/qmss modules
    due at some changes in HW components content in TI microprocessor, I remember you that the
    same binary application runs with success on evm board (with wrong PHY).

    It is possible have some double check with HW team to identify what is changed in new HW
    revision (I remember you that K2H is Rev 11, TCI6638 is Rev 2)?

    Best regards,
    Dario

  • Hi Rex,

      I have a news for you. 


    Two days ago I have removed the heatsink from evaluation board and I have seen that the chip mounted
    is really a 66K2H14AAW, instead on custom board we have used the 66K2H14XAAW.

    The difference is related at Secure Architecture module (we have bought this model for time availability),
    then we will disable it (if it is enabled).

    Is it possible that this HW block is the "real cause" of our problem?


    In uboot in keystone_net.c (and board.c) there is the following code:

        if (psc_enable_module(KS2_LPSC_CRYPTO))
            return -EACCES;

    Now I have replaced this block (in both the files) with:

        if (psc_disable_module(KS2_LPSC_CRYPTO))
            return -EACCES;

    Soon (I hope) I will done the test with this changes (now the custom board is not available).

    Cheers,
    Dario


  • Hi Rex,

        I have done this test with any success. Have you any news about this?

    Have you any idea to identify our problem? The Secure Architecture should to be the problem?


    Is it possible configure the internal GE switch module to forward on second eth port the traffic present on the first?
    In this way we can test hw connection and phy configuration. 

    Best regards,
    Dario

  • Hi, Dario,

    I am not sure what the "X" in the part number stands for, may be different grade. I assume the silicon rev 11 was taken from the prints on the chip. If that's what printed before the lot trace code, it is rev 1.1. I don't see any GbE related issue in the Errata. 

    The SA shouldn't not be any cause and it is not in the picture.

    There are still several things which haven't verified. It hasn't verify thh ARP reply packet on the PC or sniffer. A tcpdump on the PC would show what was sent out after getting ARP request. Also, can you dump the CPSW switch stats. We are more interested in the tx stats for host port which delivers packets to Navigator. You can collect rx stats as well this is outgoing direction. Could you check any dropped packets observed in cpsw or are packets received good?

    I also suggest that you analyze the descriptors received. Verify if the length is correct and what's in the buffer. These may have indication to why the navigator gets all 0's packets.

    Rex

  • Hi Rex.

    Regarding version I have added another if in print_cpuinfo (init.c):

    int print_cpuinfo(void)
    {
        u16 cpu = get_part_number();
        u8 rev = cpu_revision();

        puts("CPU: ");
        switch (cpu) {
        case CPU_66AK2Hx:
            puts("66AK2Hx ");
            break;
        case CPU_66AK2Lx:
            puts("66AK2Lx ");
            break;
        case CPU_66AK2Ex:
            puts("66AK2Ex ");
            break;
        case CPU_66AK2Gx:
            puts("66AK2Gx");
    #ifdef CONFIG_SOC_K2G
            {
                int speed = get_max_arm_speed(speeds);
                if (speed == SPD1000)
                    puts("-100 ");
                else if (speed == SPD600)
                    puts("-60 ");
                else
                    puts("-xx ");
            }
    #endif
            break;
        default:
            puts("Unknown\n");
        }

        if (rev == 2)
            puts("SR 2.0\n");
        else if (rev == 1)
            puts("SR 1.1\n");
        else if (rev == 0)
            puts("SR 1.0\n");
        else if (rev == 8)
            puts("SR 1.0\n");
        else if (rev == 11)
          {
    #ifdef DRSP
              drsp_reset_ethphy();
              puts("Rev11 (DRSP)\n");
    #endif
          }

        return 0;
    }

    Then the chip is rev 11 (eleven) not 1.1 (rev1) (only to avoid misunderstanding).
    The function called here is used to HW reset of all ETH  phy interfaces (88E1548P and a couple of 88X3310).

    I have added some info in printout to verify queue id and dma channel used to assured some wromg
    parameter was used, becouse very important value are hardcoded in C code, in fdt are ignored (not
    processed yet).

    The same code run for both the boards. Same queues and dma channel used in tx and rx direction.
    Obviously same connection with my PC.

    Eval Board.

    DRSP_UBoot> setenv ipaddr 192.168.111.23
    DRSP_UBoot> ping 192.168.111.150
    show_boot_progress@204: Boot reached stage 167
    ks2_eth_stop@977: Called
    eth_init@253: Called
    ks2_eth_start@874: Called
    keystone_sgmii_config@287: Called interface 1 port 0

    netcp@2000000 Waiting for SGMII auto negotiation to complete.
    keystone_sgmii_config@404: Exit: mask=0x5 status=0x3D done
    ethss_config@482: Called
    ksnav_init@211: Called
    ksnav_init@220: Called
    ksnav_init@226: Called
    ksnav_init@241: Called
    ksnav_init@242: pktdma config rx_rcv_q =4002 rx_flow=22 rx_ch_num=26 tx_ch_num=9
    ksnav_rx_disable@151: Called
    ksnav_init@278: Called
    keystone2_mdio_reset@131: Called
    m88e1011s_startup@210: Called
    genphy_update_link@246: Called
    phy_read@210: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x796D
    phy_read@210: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x796D
    genphy_update_link@306: Link: Up, speed: 0, duplex: Half
    m88e1xxx_parse_status@144: Called
    phy_read@210: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0011 val=0xBC40
    m88e1xxx_parse_status@199: Link: Up, speed: 1000, duplex: Full
    keystone2_eth_gigabit_enable@228: Called
    ethss_start@512: Called
    mac_sl_reset@416: Called
    mac_sl_config@444: Called
    mac_sl_reset@416: Called
    mac_sl_config@444: Called
    mac_sl_reset@416: Called
    mac_sl_config@444: Called
    mac_sl_reset@416: Called
    mac_sl_config@444: Called
    ethss_start@563: KS STATSB[0x00](0xC00)(RXGOODFRAMES) 0
    ethss_start@563: KS STATSB[0x04](0xC04)(RXBROADCAST) 0
    ethss_start@563: KS STATSB[0x08](0xC08)(RXMULTICAST) 0
    ethss_start@563: KS STATSB[0x0C](0xC0C)(RXPAUSEFRAMES) 0
    ethss_start@563: KS STATSB[0x10](0xC10)(RXCRCERRORS) 0
    ethss_start@563: KS STATSB[0x14](0xC14)(RXALIGNCODEERRORS) 0
    ethss_start@563: KS STATSB[0x18](0xC18)(RXOVERSIZEDFRAMES) 0
    ethss_start@563: KS STATSB[0x1C](0xC1C)(RXJABBERFRAMES) 0
    ethss_start@563: KS STATSB[0x20](0xC20)(RXUNDERSIZED) 0
    ethss_start@563: KS STATSB[0x24](0xC24)(RXFRAGMENTS) 0
    ethss_start@566: KS STATSB[0x30](0xC30)(RXOCTETS) 0
    ethss_start@566: KS STATSB[0x34](0xC34)(TXGOODFRAMES) 0
    ethss_start@566: KS STATSB[0x38](0xC38)(TXBROADCAST) 0
    ethss_start@566: KS STATSB[0x3C](0xC3C)(TXMULTICAST) 0
    ethss_start@566: KS STATSB[0x40](0xC40)(TXPAUSEFRAMES) 0
    ethss_start@566: KS STATSB[0x44](0xC44)(TXDEFERRED) 0
    ethss_start@566: KS STATSB[0x48](0xC48)(TXCOLLISION) 0
    ethss_start@566: KS STATSB[0x4C](0xC4C)(TXSINGLECOLL) 0
    ethss_start@566: KS STATSB[0x50](0xC50)(TXMULTCOLL) 0
    ethss_start@566: KS STATSB[0x54](0xC54)(TXEXCESSIVE) 0
    ethss_start@566: KS STATSB[0x58](0xC58)(TXLATECOLLISIONS) 0
    ethss_start@566: KS STATSB[0x5C](0xC5C)(TXUNDERRUN) 0
    ethss_start@566: KS STATSB[0x60](0xC60)(TXCARRIERSENSEERRORS) 0
    ethss_start@566: KS STATSB[0x64](0xC64)(TXOCTETS) 0
    ethss_start@566: KS STATSB[0x68](0xC68)(64OCTETFRAMES) 0
    ethss_start@566: KS STATSB[0x6C](0xC6C)(65T127OCTET) 0
    ethss_start@566: KS STATSB[0x70](0xC70)(128T255OCTET) 0
    ethss_start@566: KS STATSB[0x74](0xC74)(256T511OCTET) 0
    ethss_start@566: KS STATSB[0x78](0xC78)(512T1023OCTET) 0
    ethss_start@566: KS STATSB[0x7C](0xC7C)(1024TUPOCTET) 0
    ethss_start@566: KS STATSB[0x80](0xC80)(NETOCTETS) 0
    ethss_start@566: KS STATSB[0x84](0xC84)(RXSOFOVERRUNS) 0
    ethss_start@566: KS STATSB[0x88](0xC88)(RXMOFOVERRUNS) 0
    ethss_start@566: KS STATSB[0x8C](0xC8C)(RXDMAOVERRUNS) 0
    ethss_start@569: KS STATSA[0x00](0xB00)(RXGOODFRAMES) 0
    ethss_start@569: KS STATSA[0x04](0xB04)(RXBROADCAST) 0
    ethss_start@569: KS STATSA[0x08](0xB08)(RXMULTICAST) 0
    ethss_start@569: KS STATSA[0x0C](0xB0C)(RXPAUSEFRAMES) 0
    ethss_start@569: KS STATSA[0x10](0xB10)(RXCRCERRORS) 0
    ethss_start@569: KS STATSA[0x14](0xB14)(RXALIGNCODEERRORS) 0
    ethss_start@569: KS STATSA[0x18](0xB18)(RXOVERSIZEDFRAMES) 0
    ethss_start@569: KS STATSA[0x1C](0xB1C)(RXJABBERFRAMES) 0
    ethss_start@569: KS STATSA[0x20](0xB20)(RXUNDERSIZED) 0
    ethss_start@569: KS STATSA[0x24](0xB24)(RXFRAGMENTS) 0
    ethss_start@572: KS STATSA[0x30](0xB30)(RXOCTETS) 0
    ethss_start@572: KS STATSA[0x34](0xB34)(TXGOODFRAMES) 0
    ethss_start@572: KS STATSA[0x38](0xB38)(TXBROADCAST) 0
    ethss_start@572: KS STATSA[0x3C](0xB3C)(TXMULTICAST) 0
    ethss_start@572: KS STATSA[0x40](0xB40)(TXPAUSEFRAMES) 0
    ethss_start@572: KS STATSA[0x44](0xB44)(TXDEFERRED) 0
    ethss_start@572: KS STATSA[0x48](0xB48)(TXCOLLISION) 0
    ethss_start@572: KS STATSA[0x4C](0xB4C)(TXSINGLECOLL) 0
    ethss_start@572: KS STATSA[0x50](0xB50)(TXMULTCOLL) 0
    ethss_start@572: KS STATSA[0x54](0xB54)(TXEXCESSIVE) 0
    ethss_start@572: KS STATSA[0x58](0xB58)(TXLATECOLLISIONS) 0
    ethss_start@572: KS STATSA[0x5C](0xB5C)(TXUNDERRUN) 0
    ethss_start@572: KS STATSA[0x60](0xB60)(TXCARRIERSENSEERRORS) 0
    ethss_start@572: KS STATSA[0x64](0xB64)(TXOCTETS) 0
    ethss_start@572: KS STATSA[0x68](0xB68)(64OCTETFRAMES) 0
    ethss_start@572: KS STATSA[0x6C](0xB6C)(65T127OCTET) 0
    ethss_start@572: KS STATSA[0x70](0xB70)(128T255OCTET) 0
    ethss_start@572: KS STATSA[0x74](0xB74)(256T511OCTET) 0
    ethss_start@572: KS STATSA[0x78](0xB78)(512T1023OCTET) 0
    ethss_start@572: KS STATSA[0x7C](0xB7C)(1024TUPOCTET) 0
    ethss_start@572: KS STATSA[0x80](0xB80)(NETOCTETS) 0
    ethss_start@572: KS STATSA[0x84](0xB84)(RXSOFOVERRUNS) 0
    ethss_start@572: KS STATSA[0x88](0xB88)(RXMOFOVERRUNS) 0
    ethss_start@572: KS STATSA[0x8C](0xB8C)(RXDMAOVERRUNS) 0
    ping_start@85: Called
    Using netcp@2000000 device
    ping_send@54: Called
    set_icmp_header@31: Called
    arp_raw_request@59: Called
    arp_raw_request@78MAC: target: 00:00:00:00:00:00 local: D4:F5:13:AA:ED:CA
    eth_send@341: Called
    genphy_update_link@246: Called
    phy_read@210: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x796D
    genphy_update_link@261: Link: Up mii_reg: 0x796D
    ks2_eth_send@936: Called Link: Up
    ksnav_send@305: Called keystone_nav.c ret OK qpool_num=4000 tx_snd_q=648
    ksnav_send@319: K2H PKT: ""
    arp_raw_request@59: Called
    arp_raw_request@78MAC: target: 00:00:00:00:00:00 local: D4:F5:13:AA:ED:CA
    eth_send@341: Called
    genphy_update_link@246: Called
    phy_read@210: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x796D
    genphy_update_link@261: Link: Up mii_reg: 0x796D
    ks2_eth_send@936: Called Link: Up
    ksnav_send@305: Called keystone_nav.c ret OK qpool_num=4000 tx_snd_q=648
    ksnav_send@319: K2H PKT: ""
    arp_raw_request@59: Called
    arp_raw_request@78MAC: target: 00:00:00:00:00:00 local: D4:F5:13:AA:ED:CA
    eth_send@341: Called
    genphy_update_link@246: Called
    phy_read@210: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x796D
    genphy_update_link@261: Link: Up mii_reg: 0x796D
    ks2_eth_send@936: Called Link: Up
    ksnav_send@305: Called keystone_nav.c ret OK qpool_num=4000 tx_snd_q=648
    ksnav_send@319: K2H PKT: ""
    ksnav_recv@343: OK rx_rcv_q=FA2 len=64
    ksnav_recv@357: K2H RCV: "d4 f5 13 aa ed ca 60 02 92 29 cb 5c 08 06 00 01 08 00 06 04 00 02 60 02 92 29 cb 5c c0 a8 6f 96 d4 f5 13 aa ed ca c0 a8 6f 17 00 00 00 00
    arp_receive@148: MACGot ARP
    arp_receive@161: RCV ARP: "d4 f5 13 aa ed ca 60 02 92 29 cb 5c 08 06 00 01 08 00 06 04 00 02 60 02 92 29 cb 5c c0 a8 6f 96 d4 f5 13 aa ed ca c0 a8 6f 17 00 00 00 0
    eth_send@341: Called
    genphy_update_link@246: Called
    phy_read@210: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x796D
    genphy_update_link@261: Link: Up mii_reg: 0x796D
    ks2_eth_send@936: Called Link: Up
    ksnav_send@305: Called keystone_nav.c ret OK qpool_num=4000 tx_snd_q=648
    ksnav_send@319: K2H PKT: ""
    ksnav_recv@343: OK rx_rcv_q=FA2 len=64
    ksnav_recv@357: K2H RCV: "d4 f5 13 aa ed ca 60 02 92 29 cb 5c 08 00 45 00 00 1c 00 35 00 00 40 01 1a ae c0 a8 6f 96 c0 a8 6f 17 00 00 ff ff 00 00 00 00 00 00 00 00
    ping_receive@99: Called
    ks2_eth_stop@977: Called
    ethss_stop@582: Called
    mac_sl_reset@416: Called
    mac_sl_reset@416: Called
    mac_sl_reset@416: Called
    mac_sl_reset@416: Called
    ksnav_tx_disable@186: Called
    ksnav_rx_disable@151: Called
    genphy_shutdown@476: Called
    host 192.168.111.150 is alive


    Next ping only to show STATS counters. Final value several counter are differnt to 0.


    DRSP_UBoot> ping 192.168.111.150
    show_boot_progress@204: Boot reached stage 167
    ks2_eth_stop@977: Called
    eth_init@253: Called
    ks2_eth_start@874: Called
    keystone_sgmii_config@287: Called interface 1 port 0

    netcp@2000000 Waiting for SGMII auto negotiation to complete.
    keystone_sgmii_config@404: Exit: mask=0x5 status=0x3D done
    ethss_config@482: Called
    ksnav_init@211: Called
    ksnav_init@220: Called
    ksnav_init@226: Called
    ksnav_init@241: Called
    ksnav_init@242: pktdma config rx_rcv_q =4002 rx_flow=22 rx_ch_num=26 tx_ch_num=9
    ksnav_rx_disable@151: Called
    ksnav_init@278: Called
    keystone2_mdio_reset@131: Called
    m88e1011s_startup@210: Called
    genphy_update_link@246: Called
    phy_read@210: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x796D
    genphy_update_link@261: Link: Up mii_reg: 0x796D
    m88e1xxx_parse_status@144: Called
    phy_read@210: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0011 val=0xAC40
    m88e1xxx_parse_status@199: Link: Up, speed: 1000, duplex: Full
    keystone2_eth_gigabit_enable@228: Called
    ethss_start@512: Called
    mac_sl_reset@416: Called
    mac_sl_config@444: Called
    mac_sl_reset@416: Called
    mac_sl_config@444: Called
    mac_sl_reset@416: Called
    mac_sl_config@444: Called
    mac_sl_reset@416: Called
    mac_sl_config@444: Called
    ethss_start@563: KS STATSB[0x00](0xC00)(RXGOODFRAMES) 2
    ethss_start@563: KS STATSB[0x04](0xC04)(RXBROADCAST) 0
    ethss_start@563: KS STATSB[0x08](0xC08)(RXMULTICAST) 0
    ethss_start@563: KS STATSB[0x0C](0xC0C)(RXPAUSEFRAMES) 0
    ethss_start@563: KS STATSB[0x10](0xC10)(RXCRCERRORS) 0
    ethss_start@563: KS STATSB[0x14](0xC14)(RXALIGNCODEERRORS) 0
    ethss_start@563: KS STATSB[0x18](0xC18)(RXOVERSIZEDFRAMES) 0
    ethss_start@563: KS STATSB[0x1C](0xC1C)(RXJABBERFRAMES) 0
    ethss_start@563: KS STATSB[0x20](0xC20)(RXUNDERSIZED) 0
    ethss_start@563: KS STATSB[0x24](0xC24)(RXFRAGMENTS) 0
    ethss_start@566: KS STATSB[0x30](0xC30)(RXOCTETS) 80
    ethss_start@566: KS STATSB[0x34](0xC34)(TXGOODFRAMES) 7
    ethss_start@566: KS STATSB[0x38](0xC38)(TXBROADCAST) 6
    ethss_start@566: KS STATSB[0x3C](0xC3C)(TXMULTICAST) 0
    ethss_start@566: KS STATSB[0x40](0xC40)(TXPAUSEFRAMES) 0
    ethss_start@566: KS STATSB[0x44](0xC44)(TXDEFERRED) 0
    ethss_start@566: KS STATSB[0x48](0xC48)(TXCOLLISION) 0
    ethss_start@566: KS STATSB[0x4C](0xC4C)(TXSINGLECOLL) 0
    ethss_start@566: KS STATSB[0x50](0xC50)(TXMULTCOLL) 0
    ethss_start@566: KS STATSB[0x54](0xC54)(TXEXCESSIVE) 0
    ethss_start@566: KS STATSB[0x58](0xC58)(TXLATECOLLISIONS) 0
    ethss_start@566: KS STATSB[0x5C](0xC5C)(TXUNDERRUN) 0
    ethss_start@566: KS STATSB[0x60](0xC60)(TXCARRIERSENSEERRORS) 0
    ethss_start@566: KS STATSB[0x64](0xC64)(TXOCTETS) 1C0
    ethss_start@566: KS STATSB[0x68](0xC68)(64OCTETFRAMES) 9
    ethss_start@566: KS STATSB[0x6C](0xC6C)(65T127OCTET) 0
    ethss_start@566: KS STATSB[0x70](0xC70)(128T255OCTET) 0
    ethss_start@566: KS STATSB[0x74](0xC74)(256T511OCTET) 0
    ethss_start@566: KS STATSB[0x78](0xC78)(512T1023OCTET) 0
    ethss_start@566: KS STATSB[0x7C](0xC7C)(1024TUPOCTET) 0
    ethss_start@566: KS STATSB[0x80](0xC80)(NETOCTETS) 240
    ethss_start@566: KS STATSB[0x84](0xC84)(RXSOFOVERRUNS) 0
    ethss_start@566: KS STATSB[0x88](0xC88)(RXMOFOVERRUNS) 0
    ethss_start@566: KS STATSB[0x8C](0xC8C)(RXDMAOVERRUNS) 0
    ethss_start@569: KS STATSA[0x00](0xB00)(RXGOODFRAMES) 4
    ethss_start@569: KS STATSA[0x04](0xB04)(RXBROADCAST) 3
    ethss_start@569: KS STATSA[0x08](0xB08)(RXMULTICAST) 0
    ethss_start@569: KS STATSA[0x0C](0xB0C)(RXPAUSEFRAMES) 0
    ethss_start@569: KS STATSA[0x10](0xB10)(RXCRCERRORS) 0
    ethss_start@569: KS STATSA[0x14](0xB14)(RXALIGNCODEERRORS) 0
    ethss_start@569: KS STATSA[0x18](0xB18)(RXOVERSIZEDFRAMES) 0
    ethss_start@569: KS STATSA[0x1C](0xB1C)(RXJABBERFRAMES) 0
    ethss_start@569: KS STATSA[0x20](0xB20)(RXUNDERSIZED) 0
    ethss_start@569: KS STATSA[0x24](0xB24)(RXFRAGMENTS) 0
    ethss_start@572: KS STATSA[0x30](0xB30)(RXOCTETS) 100
    ethss_start@572: KS STATSA[0x34](0xB34)(TXGOODFRAMES) 2
    ethss_start@572: KS STATSA[0x38](0xB38)(TXBROADCAST) 0
    ethss_start@572: KS STATSA[0x3C](0xB3C)(TXMULTICAST) 0
    ethss_start@572: KS STATSA[0x40](0xB40)(TXPAUSEFRAMES) 0
    ethss_start@572: KS STATSA[0x44](0xB44)(TXDEFERRED) 0
    ethss_start@572: KS STATSA[0x48](0xB48)(TXCOLLISION) 0
    ethss_start@572: KS STATSA[0x4C](0xB4C)(TXSINGLECOLL) 0
    ethss_start@572: KS STATSA[0x50](0xB50)(TXMULTCOLL) 0
    ethss_start@572: KS STATSA[0x54](0xB54)(TXEXCESSIVE) 0
    ethss_start@572: KS STATSA[0x58](0xB58)(TXLATECOLLISIONS) 0
    ethss_start@572: KS STATSA[0x5C](0xB5C)(TXUNDERRUN) 0
    ethss_start@572: KS STATSA[0x60](0xB60)(TXCARRIERSENSEERRORS) 0
    ethss_start@572: KS STATSA[0x64](0xB64)(TXOCTETS) 80
    ethss_start@572: KS STATSA[0x68](0xB68)(64OCTETFRAMES) 6
    ethss_start@572: KS STATSA[0x6C](0xB6C)(65T127OCTET) 0
    ethss_start@572: KS STATSA[0x70](0xB70)(128T255OCTET) 0
    ethss_start@572: KS STATSA[0x74](0xB74)(256T511OCTET) 0
    ethss_start@572: KS STATSA[0x78](0xB78)(512T1023OCTET) 0
    ethss_start@572: KS STATSA[0x7C](0xB7C)(1024TUPOCTET) 0
    ethss_start@572: KS STATSA[0x80](0xB80)(NETOCTETS) 180
    ethss_start@572: KS STATSA[0x84](0xB84)(RXSOFOVERRUNS) 0
    ethss_start@572: KS STATSA[0x88](0xB88)(RXMOFOVERRUNS) 0
    ethss_start@572: KS STATSA[0x8C](0xB8C)(RXDMAOVERRUNS) 0
    ping_start@85: Called

    Custom board.

    Before to start eth packet my function print all statistic counters (mapped at base address 0x02090C00 for
    STATSB and 0x02090B00 for STATSA). STATSA counts port0 (microprocessor core) ingress and egress
    eth packets. Initial value are 0 for all counters.

    I have colorized the important info.

    DRSP_UBoot> setenv 192.168.111.23

    DRSP_UBoot> ping 192.168.111.150
    show_boot_progress@204: Boot reached stage 167
    ks2_eth_stop@977: Called
    eth_init@253: Called
    ks2_eth_start@874: Called
    keystone_sgmii_config@287: Called interface 1 port 0

    netcp@2000000 Waiting for SGMII auto negotiation to complete.
    keystone_sgmii_config@404: Exit: mask=0x5 status=0x3D done
    ethss_config@482: Called
    ksnav_init@211: Called
    ksnav_init@220: Called
    ksnav_init@226: Called
    ksnav_init@241: Called
    ksnav_init@242: pktdma config rx_rcv_q =4002 rx_flow=22 rx_ch_num=26 tx_ch_num=9
    ksnav_rx_disable@151: Called
    ksnav_init@278: Called
    keystone2_mdio_reset@131: Called
    m88e1145_startup_daia@778: Called
    genphy_update_link@246: Called
    phy_read@210: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x796D
    phy_read@210: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x796D
    genphy_update_link@306: Link: Up, speed: 0, duplex: Half
    m88e1xxx_parse_status@144: Called
    phy_read@210: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0011 val=0xBC08
    m88e1xxx_parse_status@199: Link: Up, speed: 1000, duplex: Full
    keystone2_eth_gigabit_enable@228: Called
    ethss_start@512: Called
    mac_sl_reset@416: Called
    mac_sl_config@444: Called
    mac_sl_reset@416: Called
    mac_sl_config@444: Called
    mac_sl_reset@416: Called
    mac_sl_config@444: Called
    mac_sl_reset@416: Called
    mac_sl_config@444: Called
    ethss_start@563: KS STATSB[0x00](0xC00)(RXGOODFRAMES) 0
    ethss_start@563: KS STATSB[0x04](0xC04)(RXBROADCAST) 0
    ethss_start@563: KS STATSB[0x08](0xC08)(RXMULTICAST) 0
    ethss_start@563: KS STATSB[0x0C](0xC0C)(RXPAUSEFRAMES) 0
    ethss_start@563: KS STATSB[0x10](0xC10)(RXCRCERRORS) 0
    ethss_start@563: KS STATSB[0x14](0xC14)(RXALIGNCODEERRORS) 0
    ethss_start@563: KS STATSB[0x18](0xC18)(RXOVERSIZEDFRAMES) 0
    ethss_start@563: KS STATSB[0x1C](0xC1C)(RXJABBERFRAMES) 0
    ethss_start@563: KS STATSB[0x20](0xC20)(RXUNDERSIZED) 0
    ethss_start@563: KS STATSB[0x24](0xC24)(RXFRAGMENTS) 0
    ethss_start@566: KS STATSB[0x30](0xC30)(RXOCTETS) 0
    ethss_start@566: KS STATSB[0x34](0xC34)(TXGOODFRAMES) 0
    ethss_start@566: KS STATSB[0x38](0xC38)(TXBROADCAST) 0
    ethss_start@566: KS STATSB[0x3C](0xC3C)(TXMULTICAST) 0
    ethss_start@566: KS STATSB[0x40](0xC40)(TXPAUSEFRAMES) 0
    ethss_start@566: KS STATSB[0x44](0xC44)(TXDEFERRED) 0
    ethss_start@566: KS STATSB[0x48](0xC48)(TXCOLLISION) 0
    ethss_start@566: KS STATSB[0x4C](0xC4C)(TXSINGLECOLL) 0
    ethss_start@566: KS STATSB[0x50](0xC50)(TXMULTCOLL) 0
    ethss_start@566: KS STATSB[0x54](0xC54)(TXEXCESSIVE) 0
    ethss_start@566: KS STATSB[0x58](0xC58)(TXLATECOLLISIONS) 0
    ethss_start@566: KS STATSB[0x5C](0xC5C)(TXUNDERRUN) 0
    ethss_start@566: KS STATSB[0x60](0xC60)(TXCARRIERSENSEERRORS) 0
    ethss_start@566: KS STATSB[0x64](0xC64)(TXOCTETS) 0
    ethss_start@566: KS STATSB[0x68](0xC68)(64OCTETFRAMES) 0
    ethss_start@566: KS STATSB[0x6C](0xC6C)(65T127OCTET) 0
    ethss_start@566: KS STATSB[0x70](0xC70)(128T255OCTET) 0
    ethss_start@566: KS STATSB[0x74](0xC74)(256T511OCTET) 0
    ethss_start@566: KS STATSB[0x78](0xC78)(512T1023OCTET) 0
    ethss_start@566: KS STATSB[0x7C](0xC7C)(1024TUPOCTET) 0
    ethss_start@566: KS STATSB[0x80](0xC80)(NETOCTETS) 0
    ethss_start@566: KS STATSB[0x84](0xC84)(RXSOFOVERRUNS) 0
    ethss_start@566: KS STATSB[0x88](0xC88)(RXMOFOVERRUNS) 0
    ethss_start@566: KS STATSB[0x8C](0xC8C)(RXDMAOVERRUNS) 0
    ethss_start@569: KS STATSA[0x00](0xB00)(RXGOODFRAMES) 0
    ethss_start@569: KS STATSA[0x04](0xB04)(RXBROADCAST) 0
    ethss_start@569: KS STATSA[0x08](0xB08)(RXMULTICAST) 0
    ethss_start@569: KS STATSA[0x0C](0xB0C)(RXPAUSEFRAMES) 0
    ethss_start@569: KS STATSA[0x10](0xB10)(RXCRCERRORS) 0
    ethss_start@569: KS STATSA[0x14](0xB14)(RXALIGNCODEERRORS) 0
    ethss_start@569: KS STATSA[0x18](0xB18)(RXOVERSIZEDFRAMES) 0
    ethss_start@569: KS STATSA[0x1C](0xB1C)(RXJABBERFRAMES) 0
    ethss_start@569: KS STATSA[0x20](0xB20)(RXUNDERSIZED) 0
    ethss_start@569: KS STATSA[0x24](0xB24)(RXFRAGMENTS) 0
    ethss_start@572: KS STATSA[0x30](0xB30)(RXOCTETS) 0
    ethss_start@572: KS STATSA[0x34](0xB34)(TXGOODFRAMES) 0
    ethss_start@572: KS STATSA[0x38](0xB38)(TXBROADCAST) 0
    ethss_start@572: KS STATSA[0x3C](0xB3C)(TXMULTICAST) 0
    ethss_start@572: KS STATSA[0x40](0xB40)(TXPAUSEFRAMES) 0
    ethss_start@572: KS STATSA[0x44](0xB44)(TXDEFERRED) 0
    ethss_start@572: KS STATSA[0x48](0xB48)(TXCOLLISION) 0
    ethss_start@572: KS STATSA[0x4C](0xB4C)(TXSINGLECOLL) 0
    ethss_start@572: KS STATSA[0x50](0xB50)(TXMULTCOLL) 0
    ethss_start@572: KS STATSA[0x54](0xB54)(TXEXCESSIVE) 0
    ethss_start@572: KS STATSA[0x58](0xB58)(TXLATECOLLISIONS) 0
    ethss_start@572: KS STATSA[0x5C](0xB5C)(TXUNDERRUN) 0
    ethss_start@572: KS STATSA[0x60](0xB60)(TXCARRIERSENSEERRORS) 0
    ethss_start@572: KS STATSA[0x64](0xB64)(TXOCTETS) 0
    ethss_start@572: KS STATSA[0x68](0xB68)(64OCTETFRAMES) 0
    ethss_start@572: KS STATSA[0x6C](0xB6C)(65T127OCTET) 0
    ethss_start@572: KS STATSA[0x70](0xB70)(128T255OCTET) 0
    ethss_start@572: KS STATSA[0x74](0xB74)(256T511OCTET) 0
    ethss_start@572: KS STATSA[0x78](0xB78)(512T1023OCTET) 0
    ethss_start@572: KS STATSA[0x7C](0xB7C)(1024TUPOCTET) 0
    ethss_start@572: KS STATSA[0x80](0xB80)(NETOCTETS) 0
    ethss_start@572: KS STATSA[0x84](0xB84)(RXSOFOVERRUNS) 0
    ethss_start@572: KS STATSA[0x88](0xB88)(RXMOFOVERRUNS) 0
    ethss_start@572: KS STATSA[0x8C](0xB8C)(RXDMAOVERRUNS) 0
    ping_start@85: Called
    Using netcp@2000000 device
    ping_send@54: Called
    set_icmp_header@31: Called
    arp_raw_request@59: Called
    arp_raw_request@78MAC: target: 00:00:00:00:00:00 local: 50:33:8B:6B:35:7C
    eth_send@341: Called
    genphy_update_link@246: Called
    phy_read@210: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x796D
    genphy_update_link@261: Link: Up mii_reg: 0x796D
    ks2_eth_send@936: Called Link: Up
    ksnav_send@305: Called keystone_nav.c ret OK qpool_num=4000 tx_snd_q=648
    ksnav_send@319: K2H PKT: ""
    arp_raw_request@59: Called
    arp_raw_request@78MAC: target: 00:00:00:00:00:00 local: 50:33:8B:6B:35:7C
    eth_send@341: Called
    genphy_update_link@246: Called
    phy_read@210: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x796D
    genphy_update_link@261: Link: Up mii_reg: 0x796D
    ks2_eth_send@936: Called Link: Up
    ksnav_send@305: Called keystone_nav.c ret OK qpool_num=4000 tx_snd_q=648
    ksnav_send@319: K2H PKT: ""
    arp_raw_request@59: Called
    arp_raw_request@78MAC: target: 00:00:00:00:00:00 local: 50:33:8B:6B:35:7C
    eth_send@341: Called
    genphy_update_link@246: Called
    phy_read@210: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x796D
    genphy_update_link@261: Link: Up mii_reg: 0x796D
    ks2_eth_send@936: Called Link: Up
    ksnav_send@305: Called keystone_nav.c ret OK qpool_num=4000 tx_snd_q=648
    ksnav_send@319: K2H PKT: ""
    arp_raw_request@59: Called
    arp_raw_request@78MAC: target: 00:00:00:00:00:00 local: 50:33:8B:6B:35:7C
    eth_send@341: Called
    genphy_update_link@246: Called
    phy_read@210: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x796D
    genphy_update_link@261: Link: Up mii_reg: 0x796D
    ks2_eth_send@936: Called Link: Up
    ksnav_send@305: Called keystone_nav.c ret OK qpool_num=4000 tx_snd_q=648
    ksnav_send@319: K2H PKT: ""
    arp_raw_request@59: Called
    arp_raw_request@78MAC: target: 00:00:00:00:00:00 local: 50:33:8B:6B:35:7C
    eth_send@341: Called
    genphy_update_link@246: Called
    phy_read@210: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x796D
    genphy_update_link@261: Link: Up mii_reg: 0x796D
    ks2_eth_send@936: Called Link: Up
    ksnav_send@305: Called keystone_nav.c ret OK qpool_num=4000 tx_snd_q=648
    ksnav_send@319: K2H PKT: ""
    arp_raw_request@59: Called
    arp_raw_request@78MAC: target: 00:00:00:00:00:00 local: 50:33:8B:6B:35:7C
    eth_send@341: Called
    genphy_update_link@246: Called
    phy_read@210: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x796D
    genphy_update_link@261: Link: Up mii_reg: 0x796D
    ks2_eth_send@936: Called Link: Up
    ksnav_send@305: Called keystone_nav.c ret OK qpool_num=4000 tx_snd_q=648
    ksnav_send@319: K2H PKT: ""
    arp_raw_request@59: Called
    arp_raw_request@78MAC: target: 00:00:00:00:00:00 local: 50:33:8B:6B:35:7C
    eth_send@341: Called
    genphy_update_link@246: Called
    phy_read@210: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x796D
    genphy_update_link@261: Link: Up mii_reg: 0x796D
    ks2_eth_send@936: Called Link: Up
    ksnav_send@305: Called keystone_nav.c ret OK qpool_num=4000 tx_snd_q=648
    ksnav_send@319: K2H PKT: ""
    arp_raw_request@59: Called
    arp_raw_request@78MAC: target: 00:00:00:00:00:00 local: 50:33:8B:6B:35:7C
    eth_send@341: Called
    genphy_update_link@246: Called
    phy_read@210: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x796D
    genphy_update_link@261: Link: Up mii_reg: 0x796D
    ks2_eth_send@936: Called Link: Up
    ksnav_send@305: Called keystone_nav.c ret OK qpool_num=4000 tx_snd_q=648
    ksnav_send@319: K2H PKT: ""
    arp_raw_request@59: Called

    .......... cut need only to reduce log .....

    eth_send@341: Called
    genphy_update_link@246: Called
    phy_read@210: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x796D
    genphy_update_link@261: Link: Up mii_reg: 0x796D
    ks2_eth_send@936: Called Link: Up
    ksnav_send@305: Called keystone_nav.c ret OK qpool_num=4000 tx_snd_q=648
    ksnav_send@319: K2H PKT: ""

    ARP Retry count exceeded; starting again
    ks2_eth_stop@977: Called
    ethss_stop@582: Called
    mac_sl_reset@416: Called
    mac_sl_reset@416: Called
    mac_sl_reset@416: Called
    mac_sl_reset@416: Called
    ksnav_tx_disable@186: Called
    ksnav_rx_disable@151: Called
    genphy_shutdown@476: Called
    ping failed; host 192.168.111.150 is not alive



    Next ping only to show STATS counters. Final value are 0 for all counters.

    DRSP_UBoot> ping 192.168.111.150
    show_boot_progress@204: Boot reached stage 167
    ks2_eth_stop@977: Called
    eth_init@253: Called
    ks2_eth_start@874: Called
    keystone_sgmii_config@287: Called interface 1 port 0

    netcp@2000000 Waiting for SGMII auto negotiation to complete.
    keystone_sgmii_config@404: Exit: mask=0x5 status=0x3D done
    ethss_config@482: Called
    ksnav_init@211: Called
    ksnav_init@220: Called
    ksnav_init@226: Called
    ksnav_init@241: Called
    ksnav_init@242: pktdma config rx_rcv_q =4002 rx_flow=22 rx_ch_num=26 tx_ch_num=9
    ksnav_rx_disable@151: Called
    ksnav_init@278: Called
    keystone2_mdio_reset@131: Called
    m88e1145_startup_daia@778: Called
    genphy_update_link@246: Called
    phy_read@210: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0001 val=0x796D
    genphy_update_link@261: Link: Up mii_reg: 0x796D
    m88e1xxx_parse_status@144: Called
    phy_read@210: devad=0xFFFFFFFF phydev->addr=0x0000 regnum=0x0011 val=0xAC08
    m88e1xxx_parse_status@199: Link: Up, speed: 1000, duplex: Full
    keystone2_eth_gigabit_enable@228: Called
    ethss_start@512: Called
    mac_sl_reset@416: Called
    mac_sl_config@444: Called
    mac_sl_reset@416: Called
    mac_sl_config@444: Called
    mac_sl_reset@416: Called
    mac_sl_config@444: Called
    mac_sl_reset@416: Called
    mac_sl_config@444: Called
    ethss_start@563: KS STATSB[0x00](0xC00)(RXGOODFRAMES) 0
    ethss_start@563: KS STATSB[0x04](0xC04)(RXBROADCAST) 0
    ethss_start@563: KS STATSB[0x08](0xC08)(RXMULTICAST) 0
    ethss_start@563: KS STATSB[0x0C](0xC0C)(RXPAUSEFRAMES) 0
    ethss_start@563: KS STATSB[0x10](0xC10)(RXCRCERRORS) 0
    ethss_start@563: KS STATSB[0x14](0xC14)(RXALIGNCODEERRORS) 0
    ethss_start@563: KS STATSB[0x18](0xC18)(RXOVERSIZEDFRAMES) 0
    ethss_start@563: KS STATSB[0x1C](0xC1C)(RXJABBERFRAMES) 0
    ethss_start@563: KS STATSB[0x20](0xC20)(RXUNDERSIZED) 0
    ethss_start@563: KS STATSB[0x24](0xC24)(RXFRAGMENTS) 0
    ethss_start@566: KS STATSB[0x30](0xC30)(RXOCTETS) 0
    ethss_start@566: KS STATSB[0x34](0xC34)(TXGOODFRAMES) 0
    ethss_start@566: KS STATSB[0x38](0xC38)(TXBROADCAST) 0
    ethss_start@566: KS STATSB[0x3C](0xC3C)(TXMULTICAST) 0
    ethss_start@566: KS STATSB[0x40](0xC40)(TXPAUSEFRAMES) 0
    ethss_start@566: KS STATSB[0x44](0xC44)(TXDEFERRED) 0
    ethss_start@566: KS STATSB[0x48](0xC48)(TXCOLLISION) 0
    ethss_start@566: KS STATSB[0x4C](0xC4C)(TXSINGLECOLL) 0
    ethss_start@566: KS STATSB[0x50](0xC50)(TXMULTCOLL) 0
    ethss_start@566: KS STATSB[0x54](0xC54)(TXEXCESSIVE) 0
    ethss_start@566: KS STATSB[0x58](0xC58)(TXLATECOLLISIONS) 0
    ethss_start@566: KS STATSB[0x5C](0xC5C)(TXUNDERRUN) 0
    ethss_start@566: KS STATSB[0x60](0xC60)(TXCARRIERSENSEERRORS) 0
    ethss_start@566: KS STATSB[0x64](0xC64)(TXOCTETS) 0
    ethss_start@566: KS STATSB[0x68](0xC68)(64OCTETFRAMES) 0
    ethss_start@566: KS STATSB[0x6C](0xC6C)(65T127OCTET) 0
    ethss_start@566: KS STATSB[0x70](0xC70)(128T255OCTET) 0
    ethss_start@566: KS STATSB[0x74](0xC74)(256T511OCTET) 0
    ethss_start@566: KS STATSB[0x78](0xC78)(512T1023OCTET) 0
    ethss_start@566: KS STATSB[0x7C](0xC7C)(1024TUPOCTET) 0
    ethss_start@566: KS STATSB[0x80](0xC80)(NETOCTETS) 0
    ethss_start@566: KS STATSB[0x84](0xC84)(RXSOFOVERRUNS) 0
    ethss_start@566: KS STATSB[0x88](0xC88)(RXMOFOVERRUNS) 0
    ethss_start@566: KS STATSB[0x8C](0xC8C)(RXDMAOVERRUNS) 0
    ethss_start@569: KS STATSA[0x00](0xB00)(RXGOODFRAMES) 0
    ethss_start@569: KS STATSA[0x04](0xB04)(RXBROADCAST) 0
    ethss_start@569: KS STATSA[0x08](0xB08)(RXMULTICAST) 0
    ethss_start@569: KS STATSA[0x0C](0xB0C)(RXPAUSEFRAMES) 0
    ethss_start@569: KS STATSA[0x10](0xB10)(RXCRCERRORS) 0
    ethss_start@569: KS STATSA[0x14](0xB14)(RXALIGNCODEERRORS) 0
    ethss_start@569: KS STATSA[0x18](0xB18)(RXOVERSIZEDFRAMES) 0
    ethss_start@569: KS STATSA[0x1C](0xB1C)(RXJABBERFRAMES) 0
    ethss_start@569: KS STATSA[0x20](0xB20)(RXUNDERSIZED) 0
    ethss_start@569: KS STATSA[0x24](0xB24)(RXFRAGMENTS) 0
    ethss_start@572: KS STATSA[0x30](0xB30)(RXOCTETS) 0
    ethss_start@572: KS STATSA[0x34](0xB34)(TXGOODFRAMES) 0
    ethss_start@572: KS STATSA[0x38](0xB38)(TXBROADCAST) 0
    ethss_start@572: KS STATSA[0x3C](0xB3C)(TXMULTICAST) 0
    ethss_start@572: KS STATSA[0x40](0xB40)(TXPAUSEFRAMES) 0
    ethss_start@572: KS STATSA[0x44](0xB44)(TXDEFERRED) 0
    ethss_start@572: KS STATSA[0x48](0xB48)(TXCOLLISION) 0
    ethss_start@572: KS STATSA[0x4C](0xB4C)(TXSINGLECOLL) 0
    ethss_start@572: KS STATSA[0x50](0xB50)(TXMULTCOLL) 0
    ethss_start@572: KS STATSA[0x54](0xB54)(TXEXCESSIVE) 0
    ethss_start@572: KS STATSA[0x58](0xB58)(TXLATECOLLISIONS) 0
    ethss_start@572: KS STATSA[0x5C](0xB5C)(TXUNDERRUN) 0
    ethss_start@572: KS STATSA[0x60](0xB60)(TXCARRIERSENSEERRORS) 0
    ethss_start@572: KS STATSA[0x64](0xB64)(TXOCTETS) 0
    ethss_start@572: KS STATSA[0x68](0xB68)(64OCTETFRAMES) 0
    ethss_start@572: KS STATSA[0x6C](0xB6C)(65T127OCTET) 0
    ethss_start@572: KS STATSA[0x70](0xB70)(128T255OCTET) 0
    ethss_start@572: KS STATSA[0x74](0xB74)(256T511OCTET) 0
    ethss_start@572: KS STATSA[0x78](0xB78)(512T1023OCTET) 0
    ethss_start@572: KS STATSA[0x7C](0xB7C)(1024TUPOCTET) 0
    ethss_start@572: KS STATSA[0x80](0xB80)(NETOCTETS) 0
    ethss_start@572: KS STATSA[0x84](0xB84)(RXSOFOVERRUNS) 0
    ethss_start@572: KS STATSA[0x88](0xB88)(RXMOFOVERRUNS) 0
    ethss_start@572: KS STATSA[0x8C](0xB8C)(RXDMAOVERRUNS) 0

    No counters changed after several transimmion packets.
    Nothing packet is arrived at internal GE switch. Then no packets exit from custom board.

    Thank you for your support.

    BR,
    Dario

  • Hi rex,

      I have noted that the papllclk clock is undefined in dts files and knav_dmas depend from that clock (I also have try to add it but I think the section is ignored in code).
    Is it possible that in evm this clock is enabled as default and in our new revision not? or in new revision is not enought activate it using the follow lines (ks2_eth_probe in keystone_net.c and board_eth_init in board.c)?

        if (psc_enable_module(KS2_LPSC_PA))
        {
            return -EACCES;
        }
    #endif

        if (psc_enable_module(KS2_LPSC_CPGMAC))
        {
            return -EACCES;
        }

    If this clock is not enabled is normal that no eth packet is sent at geth switch.

    I hope this is a good question for you.

    Regards,
    Dario

  • Hi, Dario,

    Ok. Based on the value of JTAGID, your chip revision should be 3.1.

    I'll let you do the decoding of cpsw stats rather that I dig into the cpsw spec and decode them. If the host port (port 0 of cpsw) stats shows tx is 0, could you check if port 1 rx stats is 0 or non-0. If 0, that means nothing gets delivered by serdes.

    Rex

  • Hi Rex.

    I have two questions for you:

    1) Regarding the possibility of forward on port 2 all traffic received in port 1, is it possible configure the
    internal switch proprerly? Which block or registers I will have to change to do it?

    2) Regarding the problem (statistic counters are increased but no traffic arriving at the ARM core), have you
    any idea?

    I suppose could to be possible a misconfiguration of pdsps, infact linux (running on evaluation board) 
    load several binary files :

    ks2_gbe_serdes.bin
    ks2_pa_pdsp2_classify1.bin
    ks2_pa_pdsp5_pam.bin
    ks2_qmss_pdsp_qos.bin
    sa_mci.fw
    ks2_pa_pdsp0_classify1.bin
    ks2_pa_pdsp3_classify2.bin
    ks2_pcie_serdes.bin
    ks2_pa_pdsp1_classify1.bin
    ks2_pa_pdsp4_pam.bin
    ks2_qmss_pdsp_acc48.bin

    (I think not all are used really)

    Is it possible that this loading is not needed for K2H14 (silicon rev 2) but for rev 3.1 not?

    I haven't found in u-boot any code regarding pdsp configuration or loading (are defines only
    the memory area pointers).

    Cheers,
    Dario

  • Hi, Dario,

    Sorry for slow response. I was on a business trip and just got back. 

    I am confused with your stats dump. I thought there are packets out (ARP), but no packets in. With the stats dump, it shows all 0. That means it shouldn't even have any ARP packets transmitted. Did you follow Section 2.3.4 in the GbE User's Guide to enable correct stats registers for the port you want to dump? It will be easier to use devmem2 command to dump the stats and easier to interpret the result as well. You just need to dump a few registers, such as rxgoodframes, rxbroadcast, txgoodframes, txbroadcast.

    To your questions:

    1) yes, but not easier/trivial. It will too much effort and not helping much. For debugging, you should really try using RTOS to make sure everything works then port the configuration over to Linux

    2) I don't know if I missed something. The custom board doesn't show any stats increase. There shouldn't be any packets received. You may want to check if the dump is correct per my earlier description.

    U-boot doesn't use PA. The firmware is not related to silicon revision, but how software download them. 

    Rex

  • Hi Rex.

      I have solved the problem. I have used Uboot 2019.01 (using the same enviroment tools 5.2.0.10) I have port my changes (environment + spi flash + marvell 1584, and so on) and two eth works (and also nor boot works).

    Thanks you.

    Dario