PROCESSOR-SDK-AM64X: PROCESSOR-SDK-AM64X: ICSSG multicast packets filter classification

Part Number: PROCESSOR-SDK-AM64X

Tool/software:

Hello Ti,

I'm using the latest TI SDK release Image + firmware:

https://www.ti.com/tool/download/PROCESSOR-SDK-LINUX-RT-AM64X

=> 09.02.01.10 (30 May 2024)

We are adding some specific filter classifier inside Linux kernel driver to be able to cover our specific use case. We need to do classification of packages 

HSR - GOOSE

This filter is working when we have unicast packets HSR-GOOSE. But when we add multicast address on the DUT and we send the multicast address GOOSE packets, the classification doesn't work anymore ... 

To configure the boards, we have :

  • On TestBoard1 and TestBoard2 we setup 100M with ethtool
    • ethtool -s eth1 speed 100 duplex full
    • ethtool -s eth2 speed 100 duplex full
  • Up interfaces eth1 eth2
  • Setup HSR with HW offload

Here is the DUT:

#DUT : 

root@am64xx-evm:~# /usr/bin/hsr_offload_script.sh hsr_hw eth1 eth2 192.168.150.10
hsr_hw eth1 eth2 192.168.150.10
ip=192.168.150.10
if=hsr0
mac=70:ff:76:1e:e7:8c
slave-a=eth1
slave-b=eth2
device=platform/icssg1-eth
hsr-tag-ins-offload: off
hsr-tag-rm-offload: off
hsr-fwd-offload: off
hsr-dup-offload: off
hsr-tag-ins-offload: on
hsr-tag-rm-offload: on
hsr-fwd-offload: on
hsr-dup-offload: on
hsr-tag-ins-offload: off
hsr-tag-rm-offload: off
hsr-fwd-offload: off
hsr-dup-offload: off
hsr-tag-ins-offload: on
hsr-tag-rm-offload: on
hsr-fwd-offload: on
hsr-dup-offload: on
[   86.034742] remoteproc remoteproc13: unsupported resource 5
[   86.046870] remoteproc remoteproc15: unsupported resource 5
root@am64xx-evm:~# ethtool eth1
Settings for eth1:
        Supported ports: [ TP    MII ]
        Supported link modes:   10baseT/Full
                                100baseT/Full
                                1000baseT/Full
                                1000baseX/Full
        Supported pause frame use: No
        Supports auto-negotiation: Yes
        Supported FEC modes: Not reported
        Advertised link modes:  10baseT/Full
                                100baseT/Full
                                1000baseT/Full
                                1000baseX/Full
        Advertised pause frame use: No
        Advertised auto-negotiation: Yes
        Advertised FEC modes: Not reported
        Link partner advertised link modes:  10baseT/Half 10baseT/Full
                                             100baseT/Half 100baseT/Full
        Link partner advertised pause frame use: Symmetric Receive-only
        Link partner advertised auto-negotiation: Yes
        Link partner advertised FEC modes: Not reported
        Speed: 100Mb/s
        Duplex: Full
        Auto-negotiation: on
        master-slave cfg: preferred slave
        master-slave status: slave
        Port: Twisted Pair
        PHYAD: 15
        Transceiver: external
        MDI-X: Unknown
        Current message level: 0x00000000 (0)
                              
        Link detected: yes
root@am64xx-evm:~# ip maddr add 01:00:5e:00:00:09^Cev hsr0
root@am64xx-evm:~# cat /proc/interrupts | grep -i icssg
137:         27          0  MSI-INTA 1970792 Level     icssg1-eth-tx0
141:          8          0  MSI-INTA 1970796 Level     icssg1-eth-tx0
237:          0          0  MSI-INTA 1971824 Level     icssg1-eth
238:          0          0  MSI-INTA 1971825 Level     icssg1-eth
239:          0          0  MSI-INTA 1971826 Level     icssg1-eth
240:          0          0  MSI-INTA 1971827 Level     icssg1-eth
241:          0          0  MSI-INTA 1971828 Level     icssg1-eth
242:          0          0  MSI-INTA 1971829 Level     icssg1-eth
243:          0          0  MSI-INTA 1971830 Level     icssg1-eth
244:          0          0  MSI-INTA 1971831 Level     icssg1-eth
253:          0          0  MSI-INTA 1971840 Level     icssg1-eth
254:          0          0  MSI-INTA 1971841 Level     icssg1-eth
255:          0          0  MSI-INTA 1971842 Level     icssg1-eth
256:          0          0  MSI-INTA 1971843 Level     icssg1-eth
257:          0          0  MSI-INTA 1971844 Level     icssg1-eth
258:          0          0  MSI-INTA 1971845 Level     icssg1-eth
259:          0          0  MSI-INTA 1971846 Level     icssg1-eth
260:          0          0  MSI-INTA 1971847 Level     icssg1-eth
522:          0          0  pruss-intc  24 Level     icssg1-eth
523:          0          0  pruss-intc  25 Level     icssg1-eth
root@am64xx-evm:~# ip maddr add 01:00:5e:00:00:09 dev hsr0^C
root@am64xx-evm:~# goose_app -s -a 1 -i hsr0  
Server application
Affinity set: CPU 1
Socket created on : hsr0, ID:7
^C
root@am64xx-evm:~# cat /proc/interrupts | grep -i icssg
137:       1049          0  MSI-INTA 1970792 Level     icssg1-eth-tx0
141:         10          0  MSI-INTA 1970796 Level     icssg1-eth-tx0
237:          0          0  MSI-INTA 1971824 Level     icssg1-eth
238:          0          0  MSI-INTA 1971825 Level     icssg1-eth
239:          0          0  MSI-INTA 1971826 Level     icssg1-eth
240:          0          0  MSI-INTA 1971827 Level     icssg1-eth
241:          0          0  MSI-INTA 1971828 Level     icssg1-eth
242:          0          0  MSI-INTA 1971829 Level     icssg1-eth
243:          0          0  MSI-INTA 1971830 Level     icssg1-eth
244:          0          0  MSI-INTA 1971831 Level     icssg1-eth
253:          0          0  MSI-INTA 1971840 Level     icssg1-eth
254:       1000          0  MSI-INTA 1971841 Level     icssg1-eth
255:          0          0  MSI-INTA 1971842 Level     icssg1-eth
256:          0          0  MSI-INTA 1971843 Level     icssg1-eth
257:          0          0  MSI-INTA 1971844 Level     icssg1-eth
258:          0          0  MSI-INTA 1971845 Level     icssg1-eth
259:          0          0  MSI-INTA 1971846 Level     icssg1-eth
260:          0          0  MSI-INTA 1971847 Level     icssg1-eth
522:          0          0  pruss-intc  24 Level     icssg1-eth
523:          0          0  pruss-intc  25 Level     icssg1-eth
root@am64xx-evm:~# ip maddr add 01:00:5e:00:00:05 dev hsr0                                          
root@am64xx-evm:~# goose_app -s -a 1 -i hsr0 
Server application
Affinity set: CPU 1
Socket created on : hsr0, ID:7
^C
root@am64xx-evm:~# ip maddr add 01:00:5e:00:00:05 dev hsr0
root@am64xx-evm:~# cat /proc/interrupts | grep -i icssg
137:       2064          0  MSI-INTA 1970792 Level     icssg1-eth-tx0
141:         10          0  MSI-INTA 1970796 Level     icssg1-eth-tx0
237:          0          0  MSI-INTA 1971824 Level     icssg1-eth
238:          0          0  MSI-INTA 1971825 Level     icssg1-eth
239:          0          0  MSI-INTA 1971826 Level     icssg1-eth
240:          0          0  MSI-INTA 1971827 Level     icssg1-eth
241:          0          0  MSI-INTA 1971828 Level     icssg1-eth
242:          0          0  MSI-INTA 1971829 Level     icssg1-eth
243:          0          0  MSI-INTA 1971830 Level     icssg1-eth
244:          0          0  MSI-INTA 1971831 Level     icssg1-eth
253:       1000          0  MSI-INTA 1971840 Level     icssg1-eth
254:       1000          0  MSI-INTA 1971841 Level     icssg1-eth
255:          0          0  MSI-INTA 1971842 Level     icssg1-eth
256:          0          0  MSI-INTA 1971843 Level     icssg1-eth
257:          0          0  MSI-INTA 1971844 Level     icssg1-eth
258:          0          0  MSI-INTA 1971845 Level     icssg1-eth
259:          0          0  MSI-INTA 1971846 Level     icssg1-eth
260:          0          0  MSI-INTA 1971847 Level     icssg1-eth
522:          0          0  pruss-intc  24 Level     icssg1-eth
523:          0          0  pruss-intc  25 Level     icssg1-eth
root@am64xx-evm:~# 

Here is the Sender  :

#sender : 
root@am64xx-evm:~# /usr/bin/hsr_offload_script.sh hsr_hw eth1 eth2 192.168.150.1
hsr_hw eth1 eth2 192.168.150.1
ip=192.168.150.1
if=hsr0
mac=70:ff:76:1e:9f:54
slave-a=eth1
slave-b=eth2
device=platform/icssg1-eth
hsr-tag-ins-offload: off
hsr-tag-rm-offload: off
hsr-fwd-offload: off
hsr-dup-offload: off
hsr-tag-ins-offload: on
hsr-tag-rm-offload: on
hsr-fwd-offload: on
hsr-dup-offload: on
hsr-tag-ins-offload: off
hsr-tag-rm-offload: off
hsr-fwd-offload: off
hsr-dup-offload: off
hsr-tag-ins-offload: on
hsr-tag-rm-offload: on
hsr-fwd-offload: on
hsr-dup-offload: on
[   65.974335] remoteproc remoteproc13: unsupported resource 5
[   65.988197] remoteproc remoteproc15: unsupported resource 5
root@am64xx-evm:~# goose_app -c -a 1 -i hsr0 -n 1000 -m 70:ff:76:1e:e7:8c            
Client application
Affinity set: CPU 1
Socket created on : hsr0, ID:7
[  140.128649] icssg-prueth icssg1-eth eth1: hsr_addr_subst_dest: Unknown node
Goose on hsr0: loops:1000. TX:1000/0 RX:1000/0 (success/fail)
Finished
 - success !
root@am64xx-evm:~# goose_app -c -a 1 -i hsr0 -n 1000 -m 01:00:5e:00:00:05
Client application
Affinity set: CPU 1
Socket created on : hsr0, ID:7
Goose on hsr0: loops:1000. TX:1000/0 RX:1000/0 (success/fail)
Finished
 - success !
root@am64xx-evm:~#

As you can se from cat /proc/interrupts | grep -i icssg from the DUT

the hsr goose unicast packets is going to the correct queues and the hsr goose muticast packet is nto going to the good one.

Remark : I also tested for 1Gbps link speed and the classification is not working, that maybe helps you !  Also, 100Mbps link speed is right now more important for us !

is it possible to reproduce this on your side ?

-Tianyi

  • Hello Tianyi,

    I'm using the latest TI SDK release Image + firmware

    I want to first check if you are using the just the latest released from https://www.ti.com/tool/download/PROCESSOR-SDK-LINUX-RT-AM64X or if you are using the software after applying FW/Linux Driver patches that were used to used solve the following issues?

    I also tested for 1Gbps link speed and the classification is not working, that maybe helps you !

    Another clarification question for you, does this mean 1Gbps link speed for filter classification does not work for HSR GOOSE multicast packets only or in general it no longer works as specified in https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1390390/processor-sdk-am64x-icssg-filter-classification?

    -Daolin

  • Hi Daolin,

    Sorry for the misunderstanding, we are using the software after applying all the FW/Linux Driver patches that should solve the issues you mentionned above.

     https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1390390/processor-sdk-am64x-icssg-filter-classification highlights the classfication issue on :

    HSR - VLAN - GOOSE - unicast.

    This issue is tested on our side and is working right now !

    but for

    HSR -GOOSE - multicast packets

    it's not working for either 100 Mbps link speed or 1Gbps link speed ! Our current priority is to fix this issue for 100 Mbps link speed.

    - Tianyi

  • Hi Tianyi, 

    HSR -GOOSE - multicast packets

    it's not working for either 100 Mbps link speed or 1Gbps link speed ! Our current priority is to fix this issue for 100 Mbps link speed.

    Is this issue only on HSR-GOOSE multicast packets or also on HSR-VLAN-GOOSE multicast packets?

    -Daolin

  • Hi Daolin,

    I will give a try for HSR-VLAN-GOOSE for 100 Mbps link speed and 1Gbis link speed and let you know asap. 

    is it possible on your side to reproduce the issue mentioned in this ticket ?

    -Tianyi

  • Hi Tianyi, 

    I have informed the development team about this issue but there are still some things we need to clarify internally. 

    Most of the development and testing for the previous issue in https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1390390/processor-sdk-am64x-icssg-filter-classification was done on the development team's setup. It may take me some time to test on my setup due to how this test involves making some significant changes to the Linux drivers. Before I do so, I need to discuss with our internal team about our support for this.

    Typically, we don't specifically support applications that make modifications to our default SDK offering (including the changes to the Linux drivers), this is what I'm trying to discuss with the internal team about.

    -Daolin

  • I probably should have asked this earlier, but what is the reason why your team is making modifications to the Linux kernel drivers for classifying HSR VLAN GOOSE and HSR GOOSE packets instead of using "tc filter" command in Linux to specify the ethertype for GOOSE packets?

    Should Linux not already handle packet classification or is the purpose of the changes your team made to offload the classification to the PRU HSR firmware?

    -Daolin

  • Hi Daolin,

    tc filter is a software classification method and we want to use the PRU to classifier the different paquets.

    -Tianyi

  • HI Daolin,

    I gave a try on my side but when adding a mc address to vlan, we cannot send goose packets anymore ...

    #dut 
    
    am64xx-evm login: root
    
    Last login: Sun May  1 11:06:31 UTC 2022 on ttyS2
    
    root@am64xx-evm:~# ip link set dev eth1 up
    
    [   17.346744] remoteproc remoteproc13: unsupported resource 5
    
    [   17.358911] remoteproc remoteproc15: unsupported resource 5
    
    root@am64xx-evm:~# ip link set dev eth2 up
    
    root@am64xx-evm:~# /usr/bin/hsr_offload_script.sh hsr_hw eth1 eth2 192.168.150.10             
    
    hsr_hw eth1 eth2 192.168.150.10
    
    ip=192.168.150.10
    
    if=hsr0
    
    mac=70:ff:76:1e:e7:8c
    
    slave-a=eth1
    
    slave-b=eth2
    
    device=platform/icssg1-eth
    
    hsr-tag-ins-offload: off
    
    hsr-tag-rm-offload: off
    
    hsr-fwd-offload: off
    
    hsr-dup-offload: off
    
    hsr-tag-ins-offload: on
    
    hsr-tag-rm-offload: on
    
    hsr-fwd-offload: on
    
    hsr-dup-offload: on
    
    hsr-tag-ins-offload: off
    
    hsr-tag-rm-offload: off
    
    hsr-fwd-offload: off
    
    hsr-dup-offload: off
    
    hsr-tag-ins-offload: on
    
    hsr-tag-rm-offload: on
    
    hsr-fwd-offload: on
    
    hsr-dup-offload: on
    
    [   27.504233] remoteproc remoteproc13: unsupported resource 5
    
    [   27.517076] remoteproc remoteproc15: unsupported resource 5
    
    root@am64xx-evm:~# ip link add link hsr0 name hsr0.5 type vlan id 5
    
    root@am64xx-evm:~# ip addr add 11.0.5.10/24 dev hsr0.5
    
    root@am64xx-evm:~# ip link set dev hsr0.5 up
    
    root@am64xx-evm:~# cat /proc/interrupts | grep -i icssg                                       
    
    137:         69          0  MSI-INTA 1970792 Level     icssg1-eth-tx0
    
    141:         18          0  MSI-INTA 1970796 Level     icssg1-eth-tx0
    
    237:          1          0  MSI-INTA 1971824 Level     icssg1-eth
    
    238:          0          0  MSI-INTA 1971825 Level     icssg1-eth
    
    239:          0          0  MSI-INTA 1971826 Level     icssg1-eth
    
    240:          0          0  MSI-INTA 1971827 Level     icssg1-eth
    
    241:          0          0  MSI-INTA 1971828 Level     icssg1-eth
    
    242:          0          0  MSI-INTA 1971829 Level     icssg1-eth
    
    243:          0          0  MSI-INTA 1971830 Level     icssg1-eth
    
    244:          0          0  MSI-INTA 1971831 Level     icssg1-eth
    
    253:          1          0  MSI-INTA 1971840 Level     icssg1-eth
    
    254:          0          0  MSI-INTA 1971841 Level     icssg1-eth
    
    255:          0          0  MSI-INTA 1971842 Level     icssg1-eth
    
    256:          0          0  MSI-INTA 1971843 Level     icssg1-eth
    
    257:          0          0  MSI-INTA 1971844 Level     icssg1-eth
    
    258:          0          0  MSI-INTA 1971845 Level     icssg1-eth
    
    259:          0          0  MSI-INTA 1971846 Level     icssg1-eth
    
    260:          0          0  MSI-INTA 1971847 Level     icssg1-eth
    
    522:          0          0  pruss-intc  24 Level     icssg1-eth
    
    523:          0          0  pruss-intc  25 Level     icssg1-eth
    
    root@am64xx-evm:~# ip maddr add 01:00:5e:00:00:05 dev hsr0.5                                        
    
    root@am64xx-evm:~# goose_app -s -a 1 -i hsr0.5                                        
    
    Server application
    
    Affinity set: CPU 1
    
    Socket created on : hsr0.5, ID:8
    
    

    On Sender side :

    #Sender
    
    am64xx-evm login: root
    
    Last login: Sun May  1 11:05:57 UTC 2022 on ttyS2
    
    root@am64xx-evm:~# ethtool -s eth1 speed 100 duplex full 
    
    root@am64xx-evm:~# ethtool -s eth2 speed 100 duplex full 
    
    root@am64xx-evm:~# ip link set dev eth1 up
    
    [   32.442611] remoteproc remoteproc13: unsupported resource 5
    
    [   32.456026] remoteproc remoteproc15: unsupported resource 5
    
    root@am64xx-evm:~# ip link set dev eth2 up
    
    root@am64xx-evm:~# /usr/bin/hsr_offload_script.sh hsr_hw eth1 eth2 192.168.150.1              
    
    hsr_hw eth1 eth2 192.168.150.1
    
    ip=192.168.150.1
    
    if=hsr0
    
    mac=70:ff:76:1e:9f:54
    
    slave-a=eth1
    
    slave-b=eth2
    
    device=platform/icssg1-eth
    
    hsr-tag-ins-offload: off
    
    hsr-tag-rm-offload: off
    
    hsr-fwd-offload: off
    
    hsr-dup-offload: off
    
    hsr-tag-ins-offload: on
    
    hsr-tag-rm-offload: on
    
    hsr-fwd-offload: on
    
    hsr-dup-offload: on
    
    hsr-tag-ins-offload: off
    
    hsr-tag-rm-offload: off
    
    hsr-fwd-offload: off
    
    hsr-dup-offload: off
    
    hsr-tag-ins-offload: on
    
    hsr-tag-rm-offload: on
    
    hsr-fwd-offload: on
    
    hsr-dup-offload: on
    
    [   54.448249] remoteproc remoteproc13: unsupported resource 5
    
    [   54.483270] remoteproc remoteproc15: unsupported resource 5
    
    root@am64xx-evm:~# ip link add link hsr0 name hsr0.5 type vlan id 5
    
    root@am64xx-evm:~# ip addr add 11.0.5.2/24 dev hsr0.5
    
    root@am64xx-evm:~# ip link set hsr0.5 up
    
    root@am64xx-evm:~# ping 11.0.5.10                                                       
    
    PING 11.0.5.10 (11.0.5.10): 56 data bytes
    
    64 bytes from 11.0.5.10: seq=0 ttl=64 time=0.884 ms
    
    64 bytes from 11.0.5.10: seq=1 ttl=64 time=0.477 ms
    
    64 bytes from 11.0.5.10: seq=2 ttl=64 time=0.501 ms
    
    64 bytes from 11.0.5.10: seq=3 ttl=64 time=0.436 ms
    
    ^C
    
    --- 11.0.5.10 ping statistics ---
    
    4 packets transmitted, 4 packets received, 0% packet loss
    
    round-trip min/avg/max = 0.436/0.574/0.884 ms
    
    root@am64xx-evm:~# goose_app -c -a 1 -i hsr0.5 -n 1000 -m 70:ff:76:1e:e7:8c                    
    
    Client application
    
    Affinity set: CPU 1
    
    Socket created on : hsr0.5, ID:8
    
    Goose on hsr0.5: loops:1000. TX:1000/0 RX:1000/0 (success/fail)
    
    Finished
    
     - success !
    
    root@am64xx-evm:~# goose_app -c -a 1 -i hsr0.5 -n 1000 -m 01:00:5e:00:00:05
    
    Client application
    
    Affinity set: CPU 1
    
    Socket created on : hsr0.5, ID:8
    
    ^C
    
    root@am64xx-evm:~# 

    As you can see here, the sender is able to send unicast packets on VLAN hsr0.5 but it's not able to send multicast packets.

    -Tianyi

  • We can find similar result for 1Gbps link speed !

  • Hi Daolin,

    In case of 1Gbps link speed, I shared with you earlier that when I add mc address on the DUT and try to send with multicast packets on HSR VLAN, the DUT cannot receive any mc packets on HSR VLAN. I insert a Profishark between DUT and Sender.

    As you can see, the packets are well sent but the DUT didn't catch the mc address ...

    I suspect that when adding the mc address on the hsr0.5 interface, it didn't add properly ...

    -Tianyi

  • Hi Tianyi

    I suspect that when adding the mc address on the hsr0.5 interface, it didn't add properly ...

    What do you see when running "ip maddr show hsr0.5" after adding your multicast address filter? 

    Does multicast filtering in general still work without filter classification? (I.e. the test described here https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1389269/processor-sdk-am64x-multicast-filtering-on-raw-interfaces-not-working?)

    is it possible on your side to reproduce the issue mentioned in this ticket ?

    While I probably won't make the changes your team has made to the Linux drivers for filter classification to the PRU (this falls under an application specific issue which we don't usually support), I will try to test VLAN HSR Goose packet multicast filtering still works as expected and get back to you. 

    Additionally, Himanshu had shared the sources for the HSR VLAN firmware via a link to TI External Drive last week. Perhaps having the source code might also help your team with debugging this issue. Was your team able to access it?

    tc filter is a software classification method and we want to use the PRU to classifier the different paquets.

    To clarify, your team has made changes to the Linux drivers such that classification of packets can be offloaded to the PRU?

    -Daolin

  • While I probably won't make the changes your team has made to the Linux drivers for filter classification to the PRU (this falls under an application specific issue which we don't usually support), I will try to test VLAN HSR Goose packet multicast filtering still works as expected and get back to you. 

    Please disregard the quoted message. I realized it does night make sense to check multicast filtering works on it's own as you described problem lies in the classification to the PRU. (By the way, multicast filtering by itself still works). I tried to apply the patch with the changes made the Linux drivers shared via email but I'm encountering the following errors. I noticed the "drivers/net/ethernet" file exists for Kernel 6.6 but does not exist for the Kernel 6.1 (SDK 09.02.01.10); in Kernel 6.1 these files are in "drivers/net/ti". As mentioned before, we are using SDK 09.02.01.10 due to the full HSR offloaded features not available on SDK 10.0.

    ~/ti-processor-sdk-linux-rt-am64xx-evm-09.02.01.10/board-support/ti-u-boot-2023.04+gitAUTOINC+8366064208$ git am 0001-SE-patch-for-filetr-classification.patch
    Applying: SE patch for filetr classification
    error: drivers/net/ethernet/ti/icssg_classifier.c: does not exist in index
    error: drivers/net/ethernet/ti/icssg_config.c: does not exist in index
    error: drivers/net/ethernet/ti/icssg_config.h: does not exist in index
    error: drivers/net/ethernet/ti/icssg_ethtool.c: does not exist in index
    error: drivers/net/ethernet/ti/icssg_prueth.c: does not exist in index
    error: drivers/net/ethernet/ti/icssg_prueth.h: does not exist in index
    Patch failed at 0001 SE patch for filetr classification
    hint: Use 'git am --show-current-patch=diff' to see the failed patch
    When you have resolved this problem, run "git am --continue".
    If you prefer to skip this patch, run "git am --skip" instead.
    To restore the original branch and stop patching, run "git am --abort".

    ~/ti-processor-sdk-linux-rt-am64xx-evm-09.02.01.10/board-support/ti-u-boot-2023.04+gitAUTOINC+8366064208$ find -name "icssg_classifier.c"
    ./drivers/net/ti/icssg_classifier.c
    

    The raises the question, how is your team applying the changes since you are currently using Kernel 6.1? I'm guessing just apply the changes to "drivers/net/ti" directory?

    -Daolin

  • Hello Daolin,

    What do you see when running "ip maddr show hsr0.5" after adding your multicast address filter? 

    => I see the mc address added by hand

    Additionally, Himanshu had shared the sources for the HSR VLAN firmware via a link to TI External Drive last week. Perhaps having the source code might also help your team with debugging this issue. Was your team able to access it?

    => We still don't have the capacity to debug the firmware as we don't know any knowledge of this PRU firmware ... we are now trying to check how we can proceed with this firmware.

    To clarify, your team has made changes to the Linux drivers such that classification of packets can be offloaded to the PRU?

    =>Yes, the patches we shared with you has the goal of offloading classification offloaded on the PRU

    -Tianyi

  • It seems you applied the patch on the wrong software, according this one, you are in the u-boot and not in the kernel.

    ~/ti-processor-sdk-linux-rt-am64xx-evm-09.02.01.10/board-support/ti-u-boot-2023.04+gitAUTOINC+8366064208$

    Could you try to reapply on the kernel source code ?

    -Tianyi

  • Hi Tianyi,

    Thanks for your patience. I was able to apply the filter classification patches.

    In order to replicate your use-case and the issue described here, I first needed to establish the baseline behavior when filter classifying on unicast HSR-GOOSE packets at 1Gbps line speed. My observations showed some discrepancies with what seems to be the expected behavior on unicast packets. My results are reported in https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1390390/processor-sdk-am64x-icssg-filter-classification to keep the results for unicast separate to that thread.

    Can you confirm if what I saw on unicast packets aligns with what you expect for your use case?

    Additionally, is the goal to be able to classify both the following types of packets?

    1. HSR GOOSE 

    2. HSR VLAN GOOSE

    Information I'm getting from the firmware team is that currently in firmware it will only classify to different queues if received packet has VLAN tag. 

    -Daolin

  • Hi Milan/Tianyi,

    As mentioned in https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1405549/processor-sdk-am64x-hsr-network-stopped-after-several-hour-power-up-down, the attached firmware binaries that should fix the multicast filter classifier issue described in this thread given that the expected behavior is for the RX interrupts to hit the "second" ICSSG RX queues for eth1 and eth2 interfaces.

    7723.hsr_filter_short_frame_fixes.zip

    Please note that to get this working, the following Linux driver patch will also need to be applied. Be aware that this patch contains some debug printouts that have been added by our developer.

    0001-net-ti-icssg-prueth-Remove-Block-bit-and-add-prints-.patch

    I was able to test this out 1Gbps, hsr offload in cut-through forwarding, 2-evm setup, HSR GOOSE packets as I described in my previous messages. I did get a chance to check on 100Mbps mode nor HSR VLAN GOOSE packets combination so please double check if these work for you. My test results are below.

    EVM1 console:

    root@am64xx-evm:~# sh hsr_setup.sh hsr_hw eth1 eth2 192.168.1.10 cutthru                   
    ip=192.168.1.10
    if=hsr0
    mac=70:ff:76:1e:9c:45
    slave-a=eth1
    slave-b=eth2
    device=platform/icssg1-eth
    Cannot find device "hsr0"
    [ 4318.034217] icssg-prueth icssg1-eth eth1: Link is Down
    [ 4318.034854] icssg-prueth icssg1-eth eth1: icssg_prueth_del_mcast():1671 addr=33:33:00:00:00:01
    [ 4318.034869] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=82, fid=0, addg
    [ 4318.034887] icssg-prueth icssg1-eth eth1: icssg_prueth_del_mcast():1676 addr=33:33:00:00:00:01
    [ 4318.034895] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=84, fid=0, addg
    [ 4318.034914] icssg-prueth icssg1-eth eth1: icssg_prueth_del_mcast():1671 addr=01:00:5e:00:00:01
    [ 4318.034921] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=82, fid=0, addg
    [ 4318.034936] icssg-prueth icssg1-eth eth1: icssg_prueth_del_mcast():1676 addr=01:00:5e:00:00:01
    [ 4318.034943] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=84, fid=0, addg
    [ 4318.034962] icssg-prueth icssg1-eth eth1: icssg_prueth_del_mcast():1671 addr=33:33:ff:1e:9c:45
    [ 4318.034970] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=82, fid=0, addg
    [ 4318.034988] icssg-prueth icssg1-eth eth1: icssg_prueth_del_mcast():1671 addr=01:80:c2:00:00:00
    [ 4318.034996] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=82, fid=0, addg
    [ 4318.035010] icssg-prueth icssg1-eth eth1: icssg_prueth_del_mcast():1676 addr=01:80:c2:00:00:00
    [ 4318.035017] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=84, fid=0, addg
    [ 4318.035036] icssg-prueth icssg1-eth eth1: icssg_prueth_del_mcast():1671 addr=01:80:c2:00:00:03
    [ 4318.035043] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=82, fid=0, addg
    [ 4318.035057] icssg-prueth icssg1-eth eth1: icssg_prueth_del_mcast():1676 addr=01:80:c2:00:00:03
    [ 4318.035064] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=84, fid=0, addg
    [ 4318.035083] icssg-prueth icssg1-eth eth1: icssg_prueth_del_mcast():1671 addr=01:80:c2:00:00:0e
    [ 4318.035090] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=82, fid=0, addg
    [ 4318.035104] icssg-prueth icssg1-eth eth1: icssg_prueth_del_mcast():1676 addr=01:80:c2:00:00:0e
    [ 4318.035112] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=84, fid=0, addg
    [ 4318.035186] icssg-prueth icssg1-eth eth1: icssg_prueth_del_mcast():1671 addr=33:33:00:00:00:fb
    [ 4318.035195] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=82, fid=0, addg
    [ 4318.035209] icssg-prueth icssg1-eth eth1: icssg_prueth_del_mcast():1676 addr=33:33:00:00:00:fb
    [ 4318.035217] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=84, fid=0, addg
    [ 4318.035235] icssg-prueth icssg1-eth eth1: icssg_prueth_del_mcast():1671 addr=33:33:00:01:00:03
    [ 4318.035243] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=82, fid=0, addg
    [ 4318.035257] icssg-prueth icssg1-eth eth1: icssg_prueth_del_mcast():1676 addr=33:33:00:01:00:03
    [ 4318.035265] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=84, fid=0, addg
    [ 4318.152356] icssg-prueth icssg1-eth eth2: Link is Down
    [ 4318.153074] icssg-prueth icssg1-eth eth2: icssg_prueth_del_mcast():1671 addr=33:33:00:00:00:01
    [ 4318.153086] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():725 fid_c2=84, fid=0, addg
    [ 4318.153108] icssg-prueth icssg1-eth eth2: icssg_prueth_del_mcast():1671 addr=01:00:5e:00:00:01
    [ 4318.157192] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():725 fid_c2=84, fid=0, addg
    [ 4318.157238] icssg-prueth icssg1-eth eth2: icssg_prueth_del_mcast():1671 addr=33:33:ff:1e:9c:47
    [ 4318.157247] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():725 fid_c2=84, fid=0, addg
    [ 4318.157266] icssg-prueth icssg1-eth eth2: icssg_prueth_del_mcast():1671 addr=01:80:c2:00:00:00
    [ 4318.157274] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():725 fid_c2=84, fid=0, addg
    [ 4318.157293] icssg-prueth icssg1-eth eth2: icssg_prueth_del_mcast():1671 addr=01:80:c2:00:00:03
    [ 4318.157300] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():725 fid_c2=84, fid=0, addg
    [ 4318.157319] icssg-prueth icssg1-eth eth2: icssg_prueth_del_mcast():1671 addr=01:80:c2:00:00:0e
    [ 4318.157327] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():725 fid_c2=84, fid=0, addg
    [ 4318.157346] icssg-prueth icssg1-eth eth2: icssg_prueth_del_mcast():1671 addr=33:33:00:00:00:fb
    [ 4318.157353] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():725 fid_c2=84, fid=0, addg
    [ 4318.157372] icssg-prueth icssg1-eth eth2: icssg_prueth_del_mcast():1671 addr=33:33:00:01:00:03
    [ 4318.157380] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():725 fid_c2=84, fid=0, addg
    [ 4318.179425] remoteproc remoteproc7: stopped remote processor 3008a000.txpru
    [ 4318.179450] remoteproc remoteproc11: stopped remote processor 30084000.rtu
    [ 4318.179459] remoteproc remoteproc10: stopped remote processor 300b4000.pru
    [ 4318.179467] remoteproc remoteproc8: stopped remote processor 3008c000.txpru
    [ 4318.179476] remoteproc remoteproc13: stopped remote processor 30086000.rtu
    [ 4318.179485] remoteproc remoteproc12: stopped remote processor 300b8000.pru
    hsr-tag-ins-offload: off
    hsr-tag-rm-offload: off
    hsr-fwd-offload: off
    hsr-dup-offload: off
    hsr-tag-ins-offload: on
    hsr-tag-rm-offload: on
    hsr-fwd-offload: on
    hsr-dup-offload: on
    hsr-tag-ins-offload: off
    hsr-tag-rm-offload: off
    hsr-fwd-offload: off
    hsr-dup-offload: off
    hsr-tag-ins-offload: on
    hsr-tag-rm-offload: on
    hsr-fwd-offload: on
    hsr-dup-offload: on
    [ 4320.370638] icssg-prueth icssg1-eth: Enabling HSR offload mode
    [ 4322.571097] remoteproc remoteproc10: powering up 300b4000.pru
    [ 4322.574743] remoteproc remoteproc10: Booting fw image ti-pruss/am65x-sr2-pru0-pruhsr-fw.elf, siz4
    [ 4322.574780] remoteproc remoteproc10: unsupported resource 5
    [ 4322.574808] remoteproc remoteproc10: remote processor 300b4000.pru is now up
    [ 4322.574855] remoteproc remoteproc11: powering up 30084000.rtu
    [ 4322.579242] remoteproc remoteproc11: Booting fw image ti-pruss/am65x-sr2-rtu0-pruhsr-fw.elf, siz6
    [ 4322.579298] remoteproc remoteproc11: remote processor 30084000.rtu is now up
    [ 4322.579344] remoteproc remoteproc7: powering up 3008a000.txpru
    [ 4322.580626] remoteproc remoteproc7: Booting fw image ti-pruss/am65x-sr2-txpru0-pruhsr-fw.elf, si6
    [ 4322.580677] remoteproc remoteproc7: remote processor 3008a000.txpru is now up
    [ 4322.580960] remoteproc remoteproc12: powering up 300b8000.pru
    [ 4322.582290] remoteproc remoteproc12: Booting fw image ti-pruss/am65x-sr2-pru1-pruhsr-fw.elf, siz4
    [ 4322.582332] remoteproc remoteproc12: unsupported resource 5
    [ 4322.582357] remoteproc remoteproc12: remote processor 300b8000.pru is now up
    [ 4322.582402] remoteproc remoteproc13: powering up 30086000.rtu
    [ 4322.583601] remoteproc remoteproc13: Booting fw image ti-pruss/am65x-sr2-rtu1-pruhsr-fw.elf, siz8
    [ 4322.583655] remoteproc remoteproc13: remote processor 30086000.rtu is now up
    [ 4322.583696] remoteproc remoteproc8: powering up 3008c000.txpru
    [ 4322.584911] remoteproc remoteproc8: Booting fw image ti-pruss/am65x-sr2-txpru1-pruhsr-fw.elf, si4
    [ 4322.584968] remoteproc remoteproc8: remote processor 3008c000.txpru is now up
    [ 4322.587526] pps pps0: new PPS source ptp2
    [ 4322.598222] icssg-prueth icssg1-eth eth1: emac_ndo_open():1842 addr=01:80:c2:00:00:00
    [ 4322.598252] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addg
    [ 4322.602152] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_add_mcast():89 addr=01:00:5e:00:00:01
    [ 4322.602179] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addg
    [ 4323.771778] icssg-prueth icssg1-eth eth2: emac_ndo_open():1842 addr=01:80:c2:00:00:00
    [ 4323.771809] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addg
    [ 4323.773023] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_add_mcast():89 addr=01:00:5e:00:00:01
    [ 4323.773043] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addg
    [ 4325.668739] icssg-prueth icssg1-eth eth1: Link is Up - 1Gbps/Full - flow control off
    [ 4325.668812] IPv6: ADDRCONF(NETDEV_CHANGE): eth1: link becomes ready
    [ 4325.668857] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_add_mcast():89 addr=33:33:00:00:00:01
    [ 4325.668874] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addg
    [ 4325.676864] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_add_mcast():89 addr=33:33:ff:1e:9c:45
    [ 4325.676892] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addg
    [ 4325.676919] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_add_mcast():89 addr=01:80:c2:00:00:00
    [ 4325.676927] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addg
    [ 4325.676941] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_add_mcast():89 addr=01:80:c2:00:00:03
    [ 4325.676949] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addg
    [ 4325.676963] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_add_mcast():89 addr=01:80:c2:00:00:0e
    [ 4325.676971] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addg
    [ 4326.884727] icssg-prueth icssg1-eth eth2: Link is Up - 1Gbps/Full - flow control off
    [ 4326.884803] IPv6: ADDRCONF(NETDEV_CHANGE): eth2: link becomes ready
    [ 4326.885512] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_add_mcast():89 addr=33:33:00:00:00:01
    [ 4326.885543] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addg
    [ 4326.885905] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_add_mcast():89 addr=33:33:ff:1e:9c:45
    [ 4326.885929] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addg
    [ 4326.887178] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_add_mcast():89 addr=01:80:c2:00:00:00
    [ 4326.887208] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addg
    [ 4326.887233] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_add_mcast():89 addr=01:80:c2:00:00:03
    [ 4326.887241] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addg
    [ 4326.887255] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_add_mcast():89 addr=01:80:c2:00:00:0e
    [ 4326.887263] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addg
    [ 4327.588960] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_add_mcast():89 addr=33:33:00:00:00:fb
    [ 4327.588993] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addg
    [ 4327.598161] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_add_mcast():89 addr=33:33:00:01:00:03
    [ 4327.598185] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addg
    [ 4327.829896] IPv6: ADDRCONF(NETDEV_CHANGE): hsr0: link becomes ready
    root@am64xx-evm:~# [ 4327.836674] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_add_mcast():89 addb
    [ 4327.836705] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addg
    [ 4327.836746] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_add_mcast():89 addr=01:00:5e:00:00:fb
    [ 4327.836754] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addg
    [ 4327.840511] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_add_mcast():89 addr=01:00:5e:00:00:fc
    [ 4327.840538] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addg
    [ 4327.840578] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_add_mcast():89 addr=01:00:5e:00:00:fc
    [ 4327.840586] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addg
    [ 4328.229098] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_add_mcast():89 addr=33:33:00:00:00:fb
    [ 4328.229171] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addg
    [ 4328.239195] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_add_mcast():89 addr=33:33:00:01:00:03
    [ 4328.239224] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addg
    
    root@am64xx-evm:~# [ 4342.052613] icssg-prueth icssg1-eth eth1: Link is Down
    [ 4342.068340] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_del_mcast():107 addr=01:80:c2:00:00:00
    [ 4342.068369] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addg
    [ 4342.068394] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_del_mcast():107 addr=01:80:c2:00:00:03
    [ 4342.068402] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addg
    [ 4342.068417] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_del_mcast():107 addr=01:80:c2:00:00:0e
    [ 4342.068425] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addg
    [ 4342.244660] icssg-prueth icssg1-eth eth2: Link is Down
    [ 4343.088193] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_del_mcast():107 addr=33:33:00:01:00:03
    [ 4343.088224] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addg
    [ 4343.088250] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_del_mcast():107 addr=01:00:5e:00:00:fc
    [ 4343.088258] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addg
    [ 4343.088290] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_del_mcast():107 addr=01:00:5e:00:00:fc
    [ 4343.088298] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addg
    [ 4343.088313] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_del_mcast():107 addr=33:33:00:01:00:03
    [ 4343.088321] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addg
    [ 4343.092420] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_del_mcast():107 addr=01:80:c2:00:00:00
    [ 4343.092446] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addg
    [ 4343.092471] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_del_mcast():107 addr=01:80:c2:00:00:03
    [ 4343.092479] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addg
    [ 4343.092494] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_del_mcast():107 addr=01:80:c2:00:00:0e
    [ 4343.092502] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addg
    [ 4349.412735] icssg-prueth icssg1-eth eth2: Link is Up - 1Gbps/Full - flow control off
    [ 4349.417729] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_add_mcast():89 addr=01:80:c2:00:00:00
    [ 4349.417760] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addg
    [ 4349.417786] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_add_mcast():89 addr=01:80:c2:00:00:03
    [ 4349.417794] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addg
    [ 4349.417808] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_add_mcast():89 addr=01:80:c2:00:00:0e
    [ 4349.417816] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addg
    [ 4349.419191] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_add_mcast():89 addr=01:00:5e:00:00:fc
    [ 4349.419217] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addg
    [ 4349.419242] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_add_mcast():89 addr=33:33:00:01:00:03
    [ 4349.419250] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addg
    [ 4349.419280] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_add_mcast():89 addr=01:00:5e:00:00:fc
    [ 4349.419289] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addg
    [ 4349.419303] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_add_mcast():89 addr=33:33:00:01:00:03
    [ 4349.419311] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addg
    [ 4350.244767] icssg-prueth icssg1-eth eth1: Link is Up - 1Gbps/Full - flow control off
    [ 4350.246710] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_add_mcast():89 addr=01:80:c2:00:00:00
    [ 4350.246741] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addg
    [ 4350.246768] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_add_mcast():89 addr=01:80:c2:00:00:03
    [ 4350.246776] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addg
    [ 4350.246790] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_add_mcast():89 addr=01:80:c2:00:00:0e
    [ 4350.246798] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addg
    
    root@am64xx-evm:~# cat /proc/interrupts | grep -i icssg
    140:        122        116  MSI-INTA 1970792 Level     icssg1-eth-tx0
    144:         61         89  MSI-INTA 1970796 Level     icssg1-eth-tx0
    240:         41         76  MSI-INTA 1971824 Level     icssg1-eth
    241:          0          0  MSI-INTA 1971825 Level     icssg1-eth
    242:          0          0  MSI-INTA 1971826 Level     icssg1-eth
    243:          0          0  MSI-INTA 1971827 Level     icssg1-eth
    244:          0          0  MSI-INTA 1971828 Level     icssg1-eth
    245:          0          0  MSI-INTA 1971829 Level     icssg1-eth
    246:          0          0  MSI-INTA 1971830 Level     icssg1-eth
    247:          0          0  MSI-INTA 1971831 Level     icssg1-eth
    256:         46         54  MSI-INTA 1971840 Level     icssg1-eth
    257:          0          0  MSI-INTA 1971841 Level     icssg1-eth
    258:          0          0  MSI-INTA 1971842 Level     icssg1-eth
    259:          0          0  MSI-INTA 1971843 Level     icssg1-eth
    260:          0          0  MSI-INTA 1971844 Level     icssg1-eth
    261:          0          0  MSI-INTA 1971845 Level     icssg1-eth
    262:          0          0  MSI-INTA 1971846 Level     icssg1-eth
    263:          0          0  MSI-INTA 1971847 Level     icssg1-eth
    527:          0          0  pruss-intc  24 Level     icssg1-eth
    528:          0          0  pruss-intc  25 Level     icssg1-eth
    root@am64xx-evm:~# ethtool -S eth1 | grep -i class
         rx_class0_hits: 365
         rx_class1_hits: 0
         rx_class2_hits: 0
         rx_class3_hits: 0
         rx_class4_hits: 0
         rx_class5_hits: 0
         rx_class6_hits: 0
         rx_class7_hits: 0
         rx_class8_hits: 365
         rx_class9_hits: 365
         rx_class10_hits: 0
         rx_class11_hits: 0
         rx_class12_hits: 0
         rx_class13_hits: 0
         rx_class14_hits: 0
         rx_class15_hits: 0
    root@am64xx-evm:~# ethtool -S eth2 | grep -i class                                                  
         rx_class0_hits: 368
         rx_class1_hits: 0
         rx_class2_hits: 0
         rx_class3_hits: 0
         rx_class4_hits: 0
         rx_class5_hits: 0
         rx_class6_hits: 0
         rx_class7_hits: 0
         rx_class8_hits: 368
         rx_class9_hits: 368
         rx_class10_hits: 0
         rx_class11_hits: 0
         rx_class12_hits: 0
         rx_class13_hits: 0
         rx_class14_hits: 0
         rx_class15_hits: 0
    root@am64xx-evm:~# ifconfig hsr0
    hsr0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1494
            inet 192.168.1.10  netmask 255.255.255.0  broadcast 0.0.0.0
            inet6 fe80::72ff:76ff:fe1e:9c45  prefixlen 64  scopeid 0x20<link>
            ether 70:ff:76:1e:9c:45  txqueuelen 1000  (Ethernet)
            RX packets 68  bytes 12200 (11.9 KiB)
            RX errors 0  dropped 6  overruns 0  frame 0
            TX packets 136  bytes 11178 (10.9 KiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    root@am64xx-evm:~# ethtool -S hsr0
    no stats available
    root@am64xx-evm:~# ./goose-app-ti-sdk -c -a 1 -i hsr0 -n 1000 -m 01:00:5e:00:00:05
    Client application
    Affinity set: CPU 1
    Socket created on : hsr0, ID:7
    Goose on hsr0: loops:1000. TX:1000/0 RX:1000/0 (success/fail)
    Finished
     - success !
    root@am64xx-evm:~# cat /proc/interrupts | grep -i icssg
    140:        126       1185  MSI-INTA 1970792 Level     icssg1-eth-tx0
    144:         61         93  MSI-INTA 1970796 Level     icssg1-eth-tx0
    240:         41         80  MSI-INTA 1971824 Level     icssg1-eth
    241:          0        833  MSI-INTA 1971825 Level     icssg1-eth
    242:          0          0  MSI-INTA 1971826 Level     icssg1-eth
    243:          0          0  MSI-INTA 1971827 Level     icssg1-eth
    244:          0          0  MSI-INTA 1971828 Level     icssg1-eth
    245:          0          0  MSI-INTA 1971829 Level     icssg1-eth
    246:          0          0  MSI-INTA 1971830 Level     icssg1-eth
    247:          0          0  MSI-INTA 1971831 Level     icssg1-eth
    256:         46         54  MSI-INTA 1971840 Level     icssg1-eth
    257:          0        167  MSI-INTA 1971841 Level     icssg1-eth
    258:          0          0  MSI-INTA 1971842 Level     icssg1-eth
    259:          0          0  MSI-INTA 1971843 Level     icssg1-eth
    260:          0          0  MSI-INTA 1971844 Level     icssg1-eth
    261:          0          0  MSI-INTA 1971845 Level     icssg1-eth
    262:          0          0  MSI-INTA 1971846 Level     icssg1-eth
    263:          0          0  MSI-INTA 1971847 Level     icssg1-eth
    527:          0          0  pruss-intc  24 Level     icssg1-eth
    528:          0          0  pruss-intc  25 Level     icssg1-eth
    root@am64xx-evm:~# ethtool -S eth1 | grep -i class
         rx_class0_hits: 2535
         rx_class1_hits: 2000
         rx_class2_hits: 0
         rx_class3_hits: 0
         rx_class4_hits: 0
         rx_class5_hits: 0
         rx_class6_hits: 0
         rx_class7_hits: 0
         rx_class8_hits: 2535
         rx_class9_hits: 2535
         rx_class10_hits: 0
         rx_class11_hits: 0
         rx_class12_hits: 0
         rx_class13_hits: 0
         rx_class14_hits: 0
         rx_class15_hits: 0
    root@am64xx-evm:~# ethtool -S eth2 | grep -i class                                                  
         rx_class0_hits: 2544
         rx_class1_hits: 2000
         rx_class2_hits: 0
         rx_class3_hits: 0
         rx_class4_hits: 0
         rx_class5_hits: 0
         rx_class6_hits: 0
         rx_class7_hits: 0
         rx_class8_hits: 2544
         rx_class9_hits: 2544
         rx_class10_hits: 0
         rx_class11_hits: 0
         rx_class12_hits: 0
         rx_class13_hits: 0
         rx_class14_hits: 0
         rx_class15_hits: 0
    root@am64xx-evm:~# ifconfig hsr0
    hsr0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1494
            inet 192.168.1.10  netmask 255.255.255.0  broadcast 0.0.0.0
            inet6 fe80::72ff:76ff:fe1e:9c45  prefixlen 64  scopeid 0x20<link>
            ether 70:ff:76:1e:9c:45  txqueuelen 1000  (Ethernet)
            RX packets 1072  bytes 399480 (390.1 KiB)
            RX errors 0  dropped 6  overruns 0  frame 0
            TX packets 1215  bytes 415928 (406.1 KiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    root@am64xx-evm:~# 
    

    EVM2 console:

    root@am64xx-evm:~# sh hsr_setup.sh hsr_hw eth1 eth2 192.168.1.30 cutthru                    
    ip=192.168.1.30
    if=hsr0
    mac=70:ff:76:1f:3d:c5
    slave-a=eth1
    slave-b=eth2
    device=platform/icssg1-eth
    Cannot find device "hsr0"
    [ 4340.266040] icssg-prueth icssg1-eth eth1: Link is Down
    [ 4340.266678] icssg-prueth icssg1-eth eth1: icssg_prueth_del_mcast():1671 addr=33:33:00:00:00:01
    [ 4340.266694] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=82, fid=0, addrg
    [ 4340.266711] icssg-prueth icssg1-eth eth1: icssg_prueth_del_mcast():1676 addr=33:33:00:00:00:01
    [ 4340.266719] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=84, fid=0, addrg
    [ 4340.266739] icssg-prueth icssg1-eth eth1: icssg_prueth_del_mcast():1671 addr=01:00:5e:00:00:01
    [ 4340.266746] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=82, fid=0, addrg
    [ 4340.266760] icssg-prueth icssg1-eth eth1: icssg_prueth_del_mcast():1676 addr=01:00:5e:00:00:01
    [ 4340.266768] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=84, fid=0, addrg
    [ 4340.266787] icssg-prueth icssg1-eth eth1: icssg_prueth_del_mcast():1671 addr=33:33:ff:1f:3d:c5
    [ 4340.266794] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=82, fid=0, addrg
    [ 4340.266813] icssg-prueth icssg1-eth eth1: icssg_prueth_del_mcast():1671 addr=33:33:00:00:00:fb
    [ 4340.266820] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=82, fid=0, addrg
    [ 4340.266834] icssg-prueth icssg1-eth eth1: icssg_prueth_del_mcast():1676 addr=33:33:00:00:00:fb
    [ 4340.266842] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=84, fid=0, addrg
    [ 4340.266860] icssg-prueth icssg1-eth eth1: icssg_prueth_del_mcast():1671 addr=01:80:c2:00:00:00
    [ 4340.266868] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=82, fid=0, addrg
    [ 4340.266882] icssg-prueth icssg1-eth eth1: icssg_prueth_del_mcast():1676 addr=01:80:c2:00:00:00
    [ 4340.266889] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=84, fid=0, addrg
    [ 4340.266908] icssg-prueth icssg1-eth eth1: icssg_prueth_del_mcast():1671 addr=01:80:c2:00:00:03
    [ 4340.266915] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=82, fid=0, addrg
    [ 4340.266929] icssg-prueth icssg1-eth eth1: icssg_prueth_del_mcast():1676 addr=01:80:c2:00:00:03
    [ 4340.266937] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=84, fid=0, addrg
    [ 4340.275092] icssg-prueth icssg1-eth eth1: icssg_prueth_del_mcast():1671 addr=01:80:c2:00:00:0e
    [ 4340.275116] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=82, fid=0, addrg
    [ 4340.275143] icssg-prueth icssg1-eth eth1: icssg_prueth_del_mcast():1676 addr=01:80:c2:00:00:0e
    [ 4340.275151] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=84, fid=0, addrg
    [ 4340.275173] icssg-prueth icssg1-eth eth1: icssg_prueth_del_mcast():1671 addr=33:33:00:01:00:03
    [ 4340.275180] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=82, fid=0, addrg
    [ 4340.275194] icssg-prueth icssg1-eth eth1: icssg_prueth_del_mcast():1676 addr=33:33:00:01:00:03
    [ 4340.275202] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=84, fid=0, addrg
    [ 4340.357189] icssg-prueth icssg1-eth eth2: Link is Down
    [ 4340.357911] icssg-prueth icssg1-eth eth2: icssg_prueth_del_mcast():1671 addr=33:33:00:00:00:01
    [ 4340.357925] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():725 fid_c2=84, fid=0, addrg
    [ 4340.357947] icssg-prueth icssg1-eth eth2: icssg_prueth_del_mcast():1671 addr=01:00:5e:00:00:01
    [ 4340.362297] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():725 fid_c2=84, fid=0, addrg
    [ 4340.362352] icssg-prueth icssg1-eth eth2: icssg_prueth_del_mcast():1671 addr=33:33:ff:1f:3d:c7
    [ 4340.362361] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():725 fid_c2=84, fid=0, addrg
    [ 4340.362380] icssg-prueth icssg1-eth eth2: icssg_prueth_del_mcast():1671 addr=33:33:00:00:00:fb
    [ 4340.362388] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():725 fid_c2=84, fid=0, addrg
    [ 4340.362407] icssg-prueth icssg1-eth eth2: icssg_prueth_del_mcast():1671 addr=01:80:c2:00:00:00
    [ 4340.362415] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():725 fid_c2=84, fid=0, addrg
    [ 4340.362434] icssg-prueth icssg1-eth eth2: icssg_prueth_del_mcast():1671 addr=01:80:c2:00:00:03
    [ 4340.362441] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():725 fid_c2=84, fid=0, addrg
    [ 4340.362460] icssg-prueth icssg1-eth eth2: icssg_prueth_del_mcast():1671 addr=01:80:c2:00:00:0e
    [ 4340.362468] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():725 fid_c2=84, fid=0, addrg
    [ 4340.362487] icssg-prueth icssg1-eth eth2: icssg_prueth_del_mcast():1671 addr=33:33:00:01:00:03
    [ 4340.362494] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():725 fid_c2=84, fid=0, addrg
    [ 4340.380521] remoteproc remoteproc7: stopped remote processor 3008a000.txpru
    [ 4340.380546] remoteproc remoteproc11: stopped remote processor 30084000.rtu
    [ 4340.380555] remoteproc remoteproc10: stopped remote processor 300b4000.pru
    [ 4340.380564] remoteproc remoteproc8: stopped remote processor 3008c000.txpru
    [ 4340.380573] remoteproc remoteproc14: stopped remote processor 30086000.rtu
    [ 4340.380581] remoteproc remoteproc13: stopped remote processor 300b8000.pru
    hsr-tag-ins-offload: off
    hsr-tag-rm-offload: off
    hsr-fwd-offload: off
    hsr-dup-offload: off
    hsr-tag-ins-offload: on
    hsr-tag-rm-offload: on
    hsr-fwd-offload: on
    hsr-dup-offload: on
    hsr-tag-ins-offload: off
    hsr-tag-rm-offload: off
    hsr-fwd-offload: off
    hsr-dup-offload: off
    hsr-tag-ins-offload: on
    hsr-tag-rm-offload: on
    hsr-fwd-offload: on
    hsr-dup-offload: on
    [ 4342.571172] icssg-prueth icssg1-eth: Enabling HSR offload mode
    [ 4344.763110] remoteproc remoteproc10: powering up 300b4000.pru
    [ 4344.766592] remoteproc remoteproc10: Booting fw image ti-pruss/am65x-sr2-pru0-pruhsr-fw.elf, size4
    [ 4344.766632] remoteproc remoteproc10: unsupported resource 5
    [ 4344.766660] remoteproc remoteproc10: remote processor 300b4000.pru is now up
    [ 4344.766705] remoteproc remoteproc11: powering up 30084000.rtu
    [ 4344.771808] remoteproc remoteproc11: Booting fw image ti-pruss/am65x-sr2-rtu0-pruhsr-fw.elf, size6
    [ 4344.771867] remoteproc remoteproc11: remote processor 30084000.rtu is now up
    [ 4344.771910] remoteproc remoteproc7: powering up 3008a000.txpru
    [ 4344.776185] remoteproc remoteproc7: Booting fw image ti-pruss/am65x-sr2-txpru0-pruhsr-fw.elf, siz6
    [ 4344.776244] remoteproc remoteproc7: remote processor 3008a000.txpru is now up
    [ 4344.776529] remoteproc remoteproc13: powering up 300b8000.pru
    [ 4344.777767] remoteproc remoteproc13: Booting fw image ti-pruss/am65x-sr2-pru1-pruhsr-fw.elf, size4
    [ 4344.777804] remoteproc remoteproc13: unsupported resource 5
    [ 4344.777830] remoteproc remoteproc13: remote processor 300b8000.pru is now up
    [ 4344.777874] remoteproc remoteproc14: powering up 30086000.rtu
    [ 4344.780326] remoteproc remoteproc14: Booting fw image ti-pruss/am65x-sr2-rtu1-pruhsr-fw.elf, size8
    [ 4344.780381] remoteproc remoteproc14: remote processor 30086000.rtu is now up
    [ 4344.780427] remoteproc remoteproc8: powering up 3008c000.txpru
    [ 4344.781667] remoteproc remoteproc8: Booting fw image ti-pruss/am65x-sr2-txpru1-pruhsr-fw.elf, siz4
    [ 4344.781722] remoteproc remoteproc8: remote processor 3008c000.txpru is now up
    [ 4344.783226] pps pps1: new PPS source ptp2
    [ 4344.795308] icssg-prueth icssg1-eth eth1: emac_ndo_open():1842 addr=01:80:c2:00:00:00
    [ 4344.795338] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addrg
    [ 4344.797696] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_add_mcast():89 addr=01:00:5e:00:00:01
    [ 4344.797729] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addrg
    [ 4345.956846] icssg-prueth icssg1-eth eth2: emac_ndo_open():1842 addr=01:80:c2:00:00:00
    [ 4345.956878] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addrg
    [ 4345.957746] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_add_mcast():89 addr=01:00:5e:00:00:01
    [ 4345.957773] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addrg
    [ 4347.877601] icssg-prueth icssg1-eth eth1: Link is Up - 1Gbps/Full - flow control off
    [ 4347.877674] IPv6: ADDRCONF(NETDEV_CHANGE): eth1: link becomes ready
    [ 4347.877722] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_add_mcast():89 addr=33:33:00:00:00:01
    [ 4347.877740] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addrg
    [ 4347.886185] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_add_mcast():89 addr=33:33:ff:1f:3d:c5
    [ 4347.886212] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addrg
    [ 4347.886237] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_add_mcast():89 addr=01:80:c2:00:00:00
    [ 4347.886245] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addrg
    [ 4347.886259] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_add_mcast():89 addr=01:80:c2:00:00:03
    [ 4347.886267] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addrg
    [ 4347.886281] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_add_mcast():89 addr=01:80:c2:00:00:0e
    [ 4347.886288] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addrg
    [ 4349.029575] icssg-prueth icssg1-eth eth2: Link is Up - 1Gbps/Full - flow control off
    [ 4349.029650] IPv6: ADDRCONF(NETDEV_CHANGE): eth2: link becomes ready
    [ 4349.029694] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_add_mcast():89 addr=33:33:00:00:00:01
    [ 4349.029712] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addrg
    [ 4349.032298] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_add_mcast():89 addr=33:33:ff:1f:3d:c5
    [ 4349.032327] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addrg
    [ 4349.032352] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_add_mcast():89 addr=01:80:c2:00:00:00
    [ 4349.032360] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addrg
    [ 4349.032375] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_add_mcast():89 addr=01:80:c2:00:00:03
    [ 4349.032382] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addrg
    [ 4349.032397] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_add_mcast():89 addr=01:80:c2:00:00:0e
    [ 4349.032404] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addrg
    [ 4349.222275] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_add_mcast():89 addr=33:33:00:00:00:fb
    [ 4349.222306] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addrg
    [ 4349.227277] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_add_mcast():89 addr=33:33:00:01:00:03
    [ 4349.227307] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addrg
    [ 4350.026754] IPv6: ADDRCONF(NETDEV_CHANGE): hsr0: link becomes ready
    root@am64xx-evm:~# [ 4350.030055] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_add_mcast():89 addrb
    [ 4350.030086] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addrg
    [ 4350.030125] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_add_mcast():89 addr=01:00:5e:00:00:fb
    [ 4350.030137] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addrg
    [ 4350.035367] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_add_mcast():89 addr=01:00:5e:00:00:fc
    [ 4350.035393] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addrg
    [ 4350.035436] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_add_mcast():89 addr=01:00:5e:00:00:fc
    [ 4350.035445] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addrg
    [ 4350.246518] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_add_mcast():89 addr=33:33:00:00:00:fb
    [ 4350.246551] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addrg
    [ 4350.258230] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_add_mcast():89 addr=33:33:00:01:00:03
    [ 4350.258257] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addrg
    
    root@am64xx-evm:~# cat /proc/interrupts | grep -i icssg
    140:        122        115  MSI-INTA 1970792 Level     icssg1-eth-tx0
    144:         40        102  MSI-INTA 1970796 Level     icssg1-eth-tx0
    240:         29         62  MSI-INTA 1971824 Level     icssg1-eth
    241:          0          0  MSI-INTA 1971825 Level     icssg1-eth
    242:          0          0  MSI-INTA 1971826 Level     icssg1-eth
    243:          0          0  MSI-INTA 1971827 Level     icssg1-eth
    244:          0          0  MSI-INTA 1971828 Level     icssg1-eth
    245:          0          0  MSI-INTA 1971829 Level     icssg1-eth
    246:          0          0  MSI-INTA 1971830 Level     icssg1-eth
    247:          0          0  MSI-INTA 1971831 Level     icssg1-eth
    256:        108          9  MSI-INTA 1971840 Level     icssg1-eth
    257:          0          0  MSI-INTA 1971841 Level     icssg1-eth
    258:          0          0  MSI-INTA 1971842 Level     icssg1-eth
    259:          0          0  MSI-INTA 1971843 Level     icssg1-eth
    260:          0          0  MSI-INTA 1971844 Level     icssg1-eth
    261:          0          0  MSI-INTA 1971845 Level     icssg1-eth
    262:          0          0  MSI-INTA 1971846 Level     icssg1-eth
    263:          0          0  MSI-INTA 1971847 Level     icssg1-eth
    527:          0          0  pruss-intc  24 Level     icssg1-eth
    528:          0          0  pruss-intc  25 Level     icssg1-eth
    root@am64xx-evm:~# ethtool -S eth1 | grep -i class
         rx_class0_hits: 450
         rx_class1_hits: 0
         rx_class2_hits: 0
         rx_class3_hits: 0
         rx_class4_hits: 0
         rx_class5_hits: 0
         rx_class6_hits: 0
         rx_class7_hits: 0
         rx_class8_hits: 450
         rx_class9_hits: 450
         rx_class10_hits: 0
         rx_class11_hits: 0
         rx_class12_hits: 0
         rx_class13_hits: 0
         rx_class14_hits: 0
         rx_class15_hits: 0
    root@am64xx-evm:~# ethtool -S eth2 | grep -i class                                                   
         rx_class0_hits: 449
         rx_class1_hits: 0
         rx_class2_hits: 0
         rx_class3_hits: 0
         rx_class4_hits: 0
         rx_class5_hits: 0
         rx_class6_hits: 0
         rx_class7_hits: 0
         rx_class8_hits: 449
         rx_class9_hits: 449
         rx_class10_hits: 0
         rx_class11_hits: 0
         rx_class12_hits: 0
         rx_class13_hits: 0
         rx_class14_hits: 0
         rx_class15_hits: 0
    root@am64xx-evm:~# ifconfig hsr0
    hsr0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1494
            inet 192.168.1.30  netmask 255.255.255.0  broadcast 0.0.0.0
            inet6 fe80::72ff:76ff:fe1f:3dc5  prefixlen 64  scopeid 0x20<link>
            ether 70:ff:76:1f:3d:c5  txqueuelen 1000  (Ethernet)
            RX packets 16  bytes 4102 (4.0 KiB)
            RX errors 0  dropped 10  overruns 0  frame 0
            TX packets 111  bytes 9256 (9.0 KiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    root@am64xx-evm:~# ip maddr add 01:00:5e:00:00:05 dev hsr0
    [ 4524.993560] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_add_mcast():89 addr=01:00:5e:00:00:05
    root@am64xx-evm:~# [ 4524.993592] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fidg
    [ 4524.993634] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_add_mcast():89 addr=01:00:5e:00:00:05
    [ 4524.993643] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addrg
    
    root@am64xx-evm:~# ipmaddr show hsr0
    7:      hsr0
            link  33:33:00:00:00:01 users 3
            link  01:00:5e:00:00:01 users 3
            link  33:33:ff:1f:3d:c5 users 3
            link  01:00:5e:00:00:fb users 3
            link  01:00:5e:00:00:fc users 3
            link  33:33:00:00:00:fb users 3
            link  33:33:00:01:00:03 users 3
            link  01:00:5e:00:00:05 users 3 static
            inet  224.0.0.252
            inet  224.0.0.251
            inet  224.0.0.1
            inet6 ff02::1:3
            inet6 ff02::fb
            inet6 ff02::1:ff1f:3dc5
            inet6 ff02::1
            inet6 ff01::1
    root@am64xx-evm:~# /goose-app-ti-sdk -s -i hsr0^C
    root@am64xx-evm:~# /goose-app-ti-sdk -s -i hsr0
    -sh: /goose-app-ti-sdk: No such file or directory
    root@am64xx-evm:~# ls
    PA_stats.txt                                goose-app-ti-sdk
    configure_network.sh                        hsr_setup.sh
    configure_switch_setup.sh                   hsr_setup_050724.sh
    cpsw_switch_cpsw_evm1_master_ptp_eth0.pcap  icssg_notswitch_ptp_eth1.pcap
    cpsw_switch_cpsw_evm1_master_ptp_eth1.pcap  icssg_notswitch_ptp_eth2.pcap
    cpsw_switch_cpsw_evm2_master_ptp_eth0.pcap  icssg_switch_cpsw_master_ptp_eth1.pcap
    cpsw_switch_cpsw_evm2_master_ptp_eth1.pcap  icssg_switch_cpsw_master_ptp_eth2.pcap
    cut_thru_switch_setup.sh                    icssg_switch_cpsw_ptp_eth1.pcap
    defconfig                                   icssg_switch_cpsw_ptp_eth2.pcap
    devmem2-range.sh                            icssg_switch_ptp_eth1.pcap
    filter_pa_stats.py                          icssg_switch_ptp_eth2.pcap
    filtered_PA_stats.txt                       map_pa_stats.py
    filtered_description_PA_stats.txt           store_forward_switch_setup.sh
    gPTP.cfg                                    vlan_icssg_switch_setup.sh
    root@am64xx-evm:~# ./goose-app-ti-sdk -s -i hsr0                                                     
    Server application
    Socket created on : hsr0, ID:7
    ^C
    root@am64xx-evm:~# cat /proc/interrupts | grep -i icssg
    140:        182       1129  MSI-INTA 1970792 Level     icssg1-eth-tx0
    144:         43        102  MSI-INTA 1970796 Level     icssg1-eth-tx0
    240:         31         62  MSI-INTA 1971824 Level     icssg1-eth
    241:          0        860  MSI-INTA 1971825 Level     icssg1-eth
    242:          0          0  MSI-INTA 1971826 Level     icssg1-eth
    243:          0          0  MSI-INTA 1971827 Level     icssg1-eth
    244:          0          0  MSI-INTA 1971828 Level     icssg1-eth
    245:          0          0  MSI-INTA 1971829 Level     icssg1-eth
    246:          0          0  MSI-INTA 1971830 Level     icssg1-eth
    247:          0          0  MSI-INTA 1971831 Level     icssg1-eth
    256:        108         11  MSI-INTA 1971840 Level     icssg1-eth
    257:          0        140  MSI-INTA 1971841 Level     icssg1-eth
    258:          0          0  MSI-INTA 1971842 Level     icssg1-eth
    259:          0          0  MSI-INTA 1971843 Level     icssg1-eth
    260:          0          0  MSI-INTA 1971844 Level     icssg1-eth
    261:          0          0  MSI-INTA 1971845 Level     icssg1-eth
    262:          0          0  MSI-INTA 1971846 Level     icssg1-eth
    263:          0          0  MSI-INTA 1971847 Level     icssg1-eth
    527:          0          0  pruss-intc  24 Level     icssg1-eth
    528:          0          0  pruss-intc  25 Level     icssg1-eth
    root@am64xx-evm:~# ethtool -S eth1 | grep -i class
         rx_class0_hits: 1621
         rx_class1_hits: 1000
         rx_class2_hits: 0
         rx_class3_hits: 0
         rx_class4_hits: 0
         rx_class5_hits: 0
         rx_class6_hits: 0
         rx_class7_hits: 0
         rx_class8_hits: 1621
         rx_class9_hits: 1621
         rx_class10_hits: 0
         rx_class11_hits: 0
         rx_class12_hits: 0
         rx_class13_hits: 0
         rx_class14_hits: 0
         rx_class15_hits: 0
    root@am64xx-evm:~# ethtool -S eth2 | grep -i class                                                   
         rx_class0_hits: 1624
         rx_class1_hits: 1000
         rx_class2_hits: 0
         rx_class3_hits: 0
         rx_class4_hits: 0
         rx_class5_hits: 0
         rx_class6_hits: 0
         rx_class7_hits: 0
         rx_class8_hits: 1624
         rx_class9_hits: 1624
         rx_class10_hits: 0
         rx_class11_hits: 0
         rx_class12_hits: 0
         rx_class13_hits: 0
         rx_class14_hits: 0
         rx_class15_hits: 0
    root@am64xx-evm:~# ifconfig hsr0
    hsr0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1494
            inet 192.168.1.30  netmask 255.255.255.0  broadcast 0.0.0.0
            inet6 fe80::72ff:76ff:fe1f:3dc5  prefixlen 64  scopeid 0x20<link>
            ether 70:ff:76:1f:3d:c5  txqueuelen 1000  (Ethernet)
            RX packets 1020  bytes 391382 (382.2 KiB)
            RX errors 0  dropped 10  overruns 0  frame 0
            TX packets 1190  bytes 414006 (404.3 KiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    root@am64xx-evm:~# 
    

    -Daolin

  • Hi Daolin

    we started to test power off/on issue and we will shortly start MC issue... One additional question

    PRU firmware that you share with us, is it integrated in your repo ti-linux-firmware?  https://git.ti.com/cgit/processor-firmware/ti-linux-firmware/

    For testing purpose this is not important but on our side for easy integration we prefer to have it in ti-linux-firmware. 

  • Hi Milan, 

    Apologies for the late reply, I was out of office the last two days. From my understanding, it has probably has not been integrated into our ti-linux-firmware repo. I do not see a commit that would be related to the firmware binaries shared with you.

    My understanding is that we want to verify if this firmware that has been shared you fixes both the power off/on and the MC issue before trying to integrate into ti-linux-firmware.

    -Daolin

  • Hi Daolin, 

    Thanks for info... generaly project told us power up/down is fixed... MC we will test next week... Like this we can confirm with you and we can proceed with integation in  ti-linux-firmware 

  • Hi Milan,

    Okay, keep me posted on the progress of the testing. 

    -Daolin