Part Number: PROCESSOR-SDK-AM64X
Hi
I'm using the latest TI SDK release www.ti.com/.../PROCESSOR-SDK-AM64X , with rt-kernel : sha 3c08dbfd7b : https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/log/?h=ti-rt-linux-6.1.y-cicd
I see some issues when pinging packets between 2 boards EVMs with offload hsr solution. It seems, when we ping from EVM1 to EVM2, the packets don't go through the both path. There is only traffic on one path (let's call path A). And on the other path (let's call path B), there is no packets traffic. When we remove manually the pathA (the one with traffic), the ping stops working for 1s and restarts sending ping by using the pathB. At the end, we have packets lost.
For the offload HSR, Why don't we have packets traffic on both paths (pathA and pathB)?
Here is our setup: after flashing image, we disable the network (a requirement for our curstomer) :
systemctl disable dhcpcd.service
systemctl disable NetworkManager.service
systemctl disable systemd-resolved.service
systemctl disable systemd-networkd.service
sync
reboot
Then we enable hsr_offload firmware and starts pinging.
We are also placing 2 Profisharks to sniff packets between EVM1 eth1 <-> EVM2 eth1 and EVM1 eth2 <->EVM2 eth2. You can use ifconfig -s to check nb of packets in RX/TX (instead of Profisharks) :
root@am64xx-evm:~# ifconfig -s
Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
eth1 1500 0 0 0 0 16 0 0 0 BMRU
eth2 1500 0 0 0 0 8 0 0 0 BMRU
hsr0 1494 0 0 0 0 9 0 0 0 BMRU
lo 65536 480 0 0 0 480 0 0 0 LRU
root@am64xx-evm:~# ping 192.168.200.2 -i 0.1 -c 30
PING 192.168.200.2 (192.168.200.2): 56 data bytes
64 bytes from 192.168.200.2: seq=0 ttl=64 time=0.755 ms
64 bytes from 192.168.200.2: seq=1 ttl=64 time=0.287 ms
64 bytes from 192.168.200.2: seq=2 ttl=64 time=0.242 ms
64 bytes from 192.168.200.2: seq=3 ttl=64 time=0.250 ms
64 bytes from 192.168.200.2: seq=4 ttl=64 time=0.209 ms
64 bytes from 192.168.200.2: seq=5 ttl=64 time=0.244 ms
64 bytes from 192.168.200.2: seq=6 ttl=64 time=0.225 ms
64 bytes from 192.168.200.2: seq=7 ttl=64 time=0.232 ms
64 bytes from 192.168.200.2: seq=8 ttl=64 time=0.282 ms
64 bytes from 192.168.200.2: seq=9 ttl=64 time=0.222 ms
64 bytes from 192.168.200.2: seq=10 ttl=64 time=0.270 ms
64 bytes from 192.168.200.2: seq=11 ttl=64 time=0.240 ms
64 bytes from 192.168.200.2: seq=12 ttl=64 time=0.247 ms
64 bytes from 192.168.200.2: seq=13 ttl=64 time=0.234 ms
64 bytes from 192.168.200.2: seq=14 ttl=64 time=0.227 ms
64 bytes from 192.168.200.2: seq=15 ttl=64 time=0.275 ms
64 bytes from 192.168.200.2: seq=16 ttl=64 time=0.225 ms
64 bytes from 192.168.200.2: seq=17 ttl=64 time=0.220 ms
64 bytes from 192.168.200.2: seq=18 ttl=64 time=0.286 ms
64 bytes from 192.168.200.2: seq=19 ttl=64 time=0.229 ms
64 bytes from 192.168.200.2: seq=20 ttl=64 time=0.253 ms
64 bytes from 192.168.200.2: seq=21 ttl=64 time=0.242 ms
64 bytes from 192.168.200.2: seq=22 ttl=64 time=0.390 ms
64 bytes from 192.168.200.2: seq=23 ttl=64 time=0.270 ms
64 bytes from 192.168.200.2: seq=24 ttl=64 time=0.239 ms
64 bytes from 192.168.200.2: seq=25 ttl=64 time=0.304 ms
64 bytes from 192.168.200.2: seq=26 ttl=64 time=0.257 ms
64 bytes from 192.168.200.2: seq=27 ttl=64 time=0.222 ms
64 bytes from 192.168.200.2: seq=28 ttl=64 time=0.276 ms
64 bytes from 192.168.200.2: seq=29 ttl=64 time=0.260 ms
--- 192.168.200.2 ping statistics ---
30 packets transmitted, 30 packets received, 0% packet loss
round-trip min/avg/max = 0.209/0.270/0.755 ms
root@am64xx-evm:~# ifconfig -s
Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
eth1 1500 32 0 0 0 50 0 0 0 BMRU
eth2 1500 0 0 0 0 9 0 0 0 BMRU
hsr0 1494 32 0 0 0 42 0 0 0 BMRU
lo 65536 560 0 0 0 560 0 0 0 LRU
root@am64xx-evm:~#
Here we can that the EVM1 sends 32 packets in total. The 32 are going to eth1 and there is 0 packets that goes to eth2.