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.

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.

    https://e2e.ti.com/cfs-file/__key/communityserver-discussions-components-files/791/0001_2D00_net_2D00_ti_2D00_icssg_2D00_prueth_2D00_Remove_2D00_Block_2D00_bit_2D00_and_2D00_add_2D00_prints_2D00_.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

  • Hi Daolin,

    I'm testing the kernel patch + the latest pru fw that you shared with us. Here is the current status about 100 MBps link speed :

    HSR + multicast + GOOSE classification is now working.

    HSR + multicast + no-GOOSE classification is now working.

    HSR + VLAN + unicast + GOOSE classification is now working.

    HSR + VLAN + unicast +no-GOOSE classification is now working.

    I also did a test by adding a VLAN and it's not working ...

    HSR + VLAN + multicast + GOOSE packets are not received.

    Here is the procedures with 2 EVM-HS boards:

    Sender Board :

    am64xx-evm login: root
    Last login: Thu Apr 28 18:23:56 UTC 2022 from 192.168.100.30 on pts/0
    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
    [  453.698629] remoteproc remoteproc13: unsupported resource 5
    [  453.712183] 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.200.1
    hsr_hw eth1 eth2 192.168.200.1
    ip=192.168.200.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
    [  468.332460] remoteproc remoteproc13: unsupported resource 5
    [  468.346723] 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:~# goose_app -c -i hsr0.5 -m 01:00:5e:00:00:15 -n 1000 -p 400                       
    Client application
    Socket created on : hsr0.5, ID:8
    ^C
    root@am64xx-evm:~# ^Cose_app -c -i hsr0.5 -m 01:00:5e:00:00:15 -n 1000 -p 400
    root@am64xx-evm:~# 

    Device Under Test Board :

    am64xx-evm login: root
    Last login: Thu Apr 28 18:04:52 UTC 2022 from 192.168.100.30 on pts/0
    root@am64xx-evm:~# ip link set dev eth1 up
    [  436.444053] remoteproc remoteproc13: unsupported resource 5
    [  436.456410] 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.200.10
    hsr_hw eth1 eth2 192.168.200.10
    ip=192.168.200.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
    [  460.622626] remoteproc remoteproc13: unsupported resource 5
    [  460.635096] 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:~# ip maddr add 01:00:5e:00:00:15 dev hsr0.5                                        
    root@am64xx-evm:~# ip maddr show hsr0.5
    8:      hsr0.5
            link  33:33:00:00:00:01 users 2
            link  01:00:5e:00:00:01 users 2
            link  33:33:ff:1e:e7:8c users 2
            link  01:00:5e:00:00:15 users 2 static
            inet  224.0.0.1
            inet6 ff02::1:ff1e:e78c
            inet6 ff02::1
            inet6 ff01::1
    root@am64xx-evm:~# goose_app -s -i hsr0.5                                     
    Server application
    Socket created on : hsr0.5, ID:8
    ^C
    root@am64xx-evm:~# cat /proc/interrupts | grep -i icssg                                       
    137:         90          0  MSI-INTA 1970792 Level     icssg1-eth-tx0
    141:         20          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:          2          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:~# 

    As you can see, I added the mc address on the interface hsr0.5. It seems it's correctly added by showing different mc address. However, when I try to send the mc packet with the correct mc address on the Sender Board side, the Device Under Test doesn't receive anything.

    Is it possible on your side to reproduce ? And is it possible to fix this one ?

    - Tianyi

  • Hi Tianyi,

    Thanks for the update,

    I will try to investigate this issue today and see if I can see something similar.

    For the unicast version (HSR + VLAN + unicast + GOOSE classification is now working), did you use the same method of adding the VLAN tag as you did for this multicast test?

    -Daolin

  • Hi Daolin,

    Thank you for your fast update, yes I did exactly the same procedure !

    -Tianyi

  • Hi Tianyi,

    1. Just to confirm, did you apply the following patch to the Linux drivers? I expected to see some debug printouts from this patch but didn't seem them from your logs.

    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

    2. Instead of adding VLAN ID 5 to both sender and receiver EVMs, can you try adding VLAN ID 0 instead? When configuring VLAN ID 5 on my setup, I'm seeing the following output which looks like driver is adding the VLAN ID as 0 instead (could be an issue with the driver but testing this could help verify). Was there a particular reason for using VLAN ID 5?

    [   75.932083] 8021q: 802.1Q VLAN Support v1.8
    [   75.932143] 8021q: adding VLAN 0 to HW filter on device eth0
    [   75.932247] 8021q: adding VLAN 0 to HW filter on device eth1
    [   75.932346] 8021q: adding VLAN 0 to HW filter on device eth2
    [   75.932443] 8021q: adding VLAN 0 to HW filter on device hsr0

    In addition, I'm seeing the following section in the driver which seems to only account for "default_vlan" which is used when no VLAN ID is specified. It does not appear to handle the case when a specific VLAN ID is configured. Could you change "prueth->default_vlan" to "0" (this is a temporary hardcode to try and find a workaround). Using "0" is to align with the VLAN ID 0 configuration.

    static int icssg_prueth_hsr_add_mcast(struct net_device *ndev, const u8 *addr)
    {
        struct prueth_emac *emac = netdev_priv(ndev);
        struct prueth *prueth = emac->prueth;
    
        netdev_err(ndev, "%s():%d addr=%pM\n", __func__, __LINE__, addr);
        icssg_fdb_add_del(emac, addr, prueth->default_vlan, <---- change to 0
                  ICSSG_FDB_ENTRY_P0_MEMBERSHIP |
                  ICSSG_FDB_ENTRY_P1_MEMBERSHIP |
                  ICSSG_FDB_ENTRY_P2_MEMBERSHIP,
                  true); 
                  
                  ...

    After making the above two changes, I'm able to see the following which looks like MC HSR GOOSE VLAN packets are received in the 2nd RX queue.

    Sender EVM

    root@am64xx-evm:~# ip link add link hsr0 name hsr0.5 type vlan id 0
    [  102.406349] 8021q: 802.1Q VLAN Support v1.8
    [  102.406412] 8021q: adding VLAN 0 to HW filter on device eth0
    [  102.406516] 8021q: adding VLAN 0 to HW filter on device eth1
    root@am64xx-evm:~# [  102.406617] 8021q: adding VLAN 0 to HW filter on device eth2
    [  102.408153] 8021q: adding VLAN 0 to HW filter on device hsr0
    [  102.410908] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_add_mcast():89 addr=01:80:c2:00:00:21
    [  102.410940] DQ_DEBUG: prueth->default_vlan=1
    [  102.410944] DQ_DEBUG: prueth->vlan_tbl->fid_c1=63
    [  102.410947] DQ_DEBUG: prueth->vlan_tbl->fid=0
    [  102.410953] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=0, addr=01:80:c2:00:00:21, Adding
    [  102.410996] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_add_mcast():89 addr=01:80:c2:00:00:21
    [  102.411004] DQ_DEBUG: prueth->default_vlan=1
    [  102.411006] DQ_DEBUG: prueth->vlan_tbl->fid_c1=63
    [  102.411009] DQ_DEBUG: prueth->vlan_tbl->fid=0
    [  102.411013] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=0, addr=01:80:c2:00:00:21, Adding
    ip addr add 11.0.5.2/24 dev hsr0.5
    root@am64xx-evm:~# ip link set hsr0.5 up
    root@am64xx-evm:~# ./goose-app-ti-sdk -c -a 1 -i hsr0.5 -n 1000 -m 01:00:5e:00:00:15                                                                                                                 
    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:~# 

    Receiver EVM

    root@am64xx-evm:~# ip link add link hsr0 name hsr0.5 type vlan id 0
    [  101.808086] 8021q: 802.1Q VLAN Support v1.8
    root@am64xx-evm:~# [  101.808161] 8021q: adding VLAN 0 to HW filter on device eth0
    [  101.808265] 8021q: adding VLAN 0 to HW filter on device eth1
    [  101.808365] 8021q: adding VLAN 0 to HW filter on device eth2
    [  101.808462] 8021q: adding VLAN 0 to HW filter on device hsr0
    [  101.815029] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_add_mcast():89 addr=01:80:c2:00:00:21
    [  101.815058] DQ_DEBUG: prueth->default_vlan=1
    [  101.815062] DQ_DEBUG: prueth->vlan_tbl->fid_c1=63
    [  101.815066] DQ_DEBUG: prueth->vlan_tbl->fid=0
    [  101.815071] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=0, addr=01:80:c2:00:00:21, Adding
    [  101.815117] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_add_mcast():89 addr=01:80:c2:00:00:21
    [  101.815124] DQ_DEBUG: prueth->default_vlan=1
    [  101.815127] DQ_DEBUG: prueth->vlan_tbl->fid_c1=63
    [  101.815129] DQ_DEBUG: prueth->vlan_tbl->fid=0
    [  101.815133] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=0, addr=01:80:c2:00:00:21, Adding
    
    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:~# ip maddr add 01:00:5e:00:00:15 dev hsr0.5
    [  136.245041] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_add_mcast():89 addr=01:00:5e:00:00:15
    [  136.245072] DQ_DEBUG: prueth->default_vlan=1
    [  136.245076] DQ_DEBUG: prueth->vlan_tbl->fid_c1=63
    [  136.245079] DQ_DEBUG: prueth->vlan_tbl->fid=0
    [  136.245085] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=0, addr=01:00:5e:00:00:15, Adding
    [  136.245129] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_add_mcast():89 addr=01:00:5e:00:00:15
    [  136.245136] DQ_DEBUG: prueth->default_vlan=1
    [  136.245139] DQ_DEBUG: prueth->vlan_tbl->fid_c1=63
    [  136.245141] DQ_DEBUG: prueth->vlan_tbl->fid=0
    [  136.245145] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=0, addr=01:00:5e:00:00:15, Adding
    root@am64xx-evm:~# ip maddr show hsr0.5
    8:      hsr0.5
            link  33:33:00:00:00:01 users 2
            link  01:00:5e:00:00:01 users 2
            link  33:33:ff:1f:3d:c5 users 2
            link  01:00:5e:00:00:fb users 2
            link  01:00:5e:00:00:fc users 2
            link  33:33:00:01:00:03 users 2
            link  33:33:00:00:00:fb users 2
            link  01:00:5e:00:00:15 users 2 static
            inet  224.0.0.252
            inet  224.0.0.251
            inet  224.0.0.1
            inet6 ff02::fb
            inet6 ff02::1:3
            inet6 ff02::1:ff1f:3dc5
            inet6 ff02::1
            inet6 ff01::1
    root@am64xx-evm:~# [  157.541486] icssg-prueth icssg1-eth eth1: Link is Down
    [  157.556105] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_del_mcast():122 addr=01:80:c2:00:00:00
    [  157.556135] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addr=01:80:c2:00:00:00,  Deleting
    [  157.556159] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_del_mcast():122 addr=01:80:c2:00:00:03
    [  157.556167] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addr=01:80:c2:00:00:03,  Deleting
    [  157.556182] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_del_mcast():122 addr=01:80:c2:00:00:0e
    [  157.556189] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addr=01:80:c2:00:00:0e,  Deleting
    [  157.669467] icssg-prueth icssg1-eth eth2: Link is Down
    [  158.579605] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_del_mcast():122 addr=01:80:c2:00:00:0e
    [  158.579639] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addr=01:80:c2:00:00:0e,  Deleting
    [  158.579690] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_del_mcast():122 addr=01:80:c2:00:00:03
    [  158.579698] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addr=01:80:c2:00:00:03,  Deleting
    [  158.579732] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_del_mcast():122 addr=01:80:c2:00:00:00
    [  158.579740] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addr=01:80:c2:00:00:00,  Deleting
    [  158.580977] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_del_mcast():122 addr=01:00:5e:00:00:fc
    [  158.581004] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addr=01:00:5e:00:00:fc,  Deleting
    [  158.581039] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_del_mcast():122 addr=01:00:5e:00:00:fc
    [  158.581047] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addr=01:00:5e:00:00:fc,  Deleting
    [  158.581196] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_del_mcast():122 addr=33:33:00:01:00:03
    [  158.581205] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addr=33:33:00:01:00:03,  Deleting
    [  158.581228] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_del_mcast():122 addr=33:33:00:01:00:03
    [  158.581235] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=1, addr=33:33:00:01:00:03,  Deleting
    [  164.710153] icssg-prueth icssg1-eth eth1: Link is Up - 1Gbps/Full - flow control off
    [  164.718567] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_add_mcast():89 addr=01:80:c2:00:00:00
    [  164.718595] DQ_DEBUG: prueth->default_vlan=1
    [  164.718599] DQ_DEBUG: prueth->vlan_tbl->fid_c1=63
    [  164.718602] DQ_DEBUG: prueth->vlan_tbl->fid=0
    [  164.718607] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=0, addr=01:80:c2:00:00:00, Adding
    [  164.718633] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_add_mcast():89 addr=01:80:c2:00:00:03
    [  164.718640] DQ_DEBUG: prueth->default_vlan=1
    [  164.718642] DQ_DEBUG: prueth->vlan_tbl->fid_c1=63
    [  164.718645] DQ_DEBUG: prueth->vlan_tbl->fid=0
    [  164.718648] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=0, addr=01:80:c2:00:00:03, Adding
    [  164.718663] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_add_mcast():89 addr=01:80:c2:00:00:0e
    [  164.718670] DQ_DEBUG: prueth->default_vlan=1
    [  164.718672] DQ_DEBUG: prueth->vlan_tbl->fid_c1=63
    [  164.718674] DQ_DEBUG: prueth->vlan_tbl->fid=0
    [  164.718678] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=0, addr=01:80:c2:00:00:0e, Adding
    [  164.720075] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_add_mcast():89 addr=01:00:5e:00:00:fc
    [  164.720099] DQ_DEBUG: prueth->default_vlan=1
    [  164.720103] DQ_DEBUG: prueth->vlan_tbl->fid_c1=63
    [  164.720106] DQ_DEBUG: prueth->vlan_tbl->fid=0
    [  164.720112] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=0, addr=01:00:5e:00:00:fc, Adding
    [  164.720157] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_add_mcast():89 addr=01:00:5e:00:00:fc
    [  164.720164] DQ_DEBUG: prueth->default_vlan=1
    [  164.720167] DQ_DEBUG: prueth->vlan_tbl->fid_c1=63
    [  164.720169] DQ_DEBUG: prueth->vlan_tbl->fid=0
    [  164.720173] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=0, addr=01:00:5e:00:00:fc, Adding
    [  164.720422] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_add_mcast():89 addr=33:33:00:01:00:03
    [  164.720439] DQ_DEBUG: prueth->default_vlan=1
    [  164.720442] DQ_DEBUG: prueth->vlan_tbl->fid_c1=63
    [  164.720445] DQ_DEBUG: prueth->vlan_tbl->fid=0
    [  164.720449] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=0, addr=33:33:00:01:00:03, Adding
    [  164.720485] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_add_mcast():89 addr=33:33:00:01:00:03
    [  164.720493] DQ_DEBUG: prueth->default_vlan=1
    [  164.720495] DQ_DEBUG: prueth->vlan_tbl->fid_c1=63
    [  164.720498] DQ_DEBUG: prueth->vlan_tbl->fid=0
    [  164.720501] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=0, addr=33:33:00:01:00:03, Adding
    [  165.861491] icssg-prueth icssg1-eth eth2: Link is Up - 1Gbps/Full - flow control off
    [  165.866339] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_add_mcast():89 addr=01:80:c2:00:00:00
    [  165.866363] DQ_DEBUG: prueth->default_vlan=1
    [  165.866367] DQ_DEBUG: prueth->vlan_tbl->fid_c1=63
    [  165.866370] DQ_DEBUG: prueth->vlan_tbl->fid=0
    [  165.866376] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=0, addr=01:80:c2:00:00:00, Adding
    [  165.866402] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_add_mcast():89 addr=01:80:c2:00:00:03
    [  165.866408] DQ_DEBUG: prueth->default_vlan=1
    [  165.866411] DQ_DEBUG: prueth->vlan_tbl->fid_c1=63
    [  165.866414] DQ_DEBUG: prueth->vlan_tbl->fid=0
    [  165.866417] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=0, addr=01:80:c2:00:00:03, Adding
    [  165.866432] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_add_mcast():89 addr=01:80:c2:00:00:0e
    [  165.866438] DQ_DEBUG: prueth->default_vlan=1
    [  165.866441] DQ_DEBUG: prueth->vlan_tbl->fid_c1=63
    [  165.866443] DQ_DEBUG: prueth->vlan_tbl->fid=0
    [  165.866446] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():725 fid_c2=87, fid=0, addr=01:80:c2:00:00:0e, Adding
    root@am64xx-evm:~# ./goose-app-ti-sdk -s -i hsr0.5                                                                                                                                                   
    Server application
    Socket created on : hsr0.5, ID:8
    ^C
    root@am64xx-evm:~# ifconfig hsr0.5
    hsr0.5: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1494
            inet 11.0.5.10  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 1028  bytes 389649 (380.5 KiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 1053  bytes 406074 (396.5 KiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    root@am64xx-evm:~# cat /proc/interrupts | grep -i icssg                                                                                                                                               
    140:        105       1145  MSI-INTA 1970792 Level     icssg1-eth-tx0
    144:          2         75  MSI-INTA 1970796 Level     icssg1-eth-tx0
    240:         25          1  MSI-INTA 1971824 Level     icssg1-eth
    241:          0        174  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:         43          1  MSI-INTA 1971840 Level     icssg1-eth
    257:          0        826  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:~# 
    

    The above changes were my attempt at finding a workaround to this issue. The Linux developer for this driver is currently out of office for the next two weeks.

    -Daolin

  • Hi Daolin,

    Thank you for sharing the different steps. Yes I applied this patch and delete the logs (that is why there isn't any logs in my terminal).

    If I understand correctly, I need to change

    "prueth->default_vlan" to 0 + only use VLAN ID 0  to make it work ?

    Or just use VLAN ID 0 would make it work ?

    I will give a try on my side !

    -Tianyi

  • Hi Tianyi,

    "prueth->default_vlan" to 0 + only use VLAN ID 0  to make it work ?

    Yes, these two changes need to be made. Please keep in mind this is just a temporary test/workaround to see if this could result in the behavior your team expects. The "prueth->default_vlan" change to 0 needs to be made to icssg_prueth.c

    The internal team is understanding this issue to be mostly an implementation that needs to be made on the Linux driver side rather than the HSR PRU firmware side. However the main Linux developer for this is currently out of out for the next two weeks. The internal team is still discussing what is a better fix since my steps were only to work around the issue of VLAN ID always registered as 0 in the driver and the driver only handling the case of "default_vlan".

    What there a particular reason for using VLAN ID 5 in your original test?

    -Daolin

  • Hi Daolin,

    I just make the change above and it's working when hardcoding vlan 0 + add vlan 0.

    The selection of VLAN ID 5 was arbitrary However, the project team may will need multiple VLAN.

    -Tianyi

  • Hi Tianyi,

    Thanks for testing and confirming the hardcoded changes.

    To give more context into the root causes for the issue based on internal discussion:

    1. Supporting 4095 VLANs requires a lot of resources so typically switches reduce this by grouping using FID. You can find more information on 6.4.6.2.10 PRU_ICSSG Filter Data Base (FDB) in the TRM. Due to this we want to know what is your VLAN use case (i.e. will mapping multiple VLAN IDs to the same FID be sufficient or do you want flexibility to add static MC addresses per FID?)

    2. The FDB handling (icssg_fdb_add_del(emac, addr, prueth->default_vlan...) currently only handles the case of default_vlan (which is used when no VLAN_ID is present). It does not seem to handle the case of when a VLAN ID is present. As a consequence, the FID corresponding to the VLAN ID is not handled

    3. Even generically adding a VLAN ID of 5 to an hsr interface only adds it in the driver as VLAN ID 0. 

    root@am64xx-evm:~# ip link add link hsr0 name hsr0.5 type vlan id 5
    [  101.808086] 8021q: 802.1Q VLAN Support v1.8
    root@am64xx-evm:~# [  101.808161] 8021q: adding VLAN 0 to HW filter on device eth0
    [  101.808265] 8021q: adding VLAN 0 to HW filter on device eth1
    [  101.808365] 8021q: adding VLAN 0 to HW filter on device eth2
    [  101.808462] 8021q: adding VLAN 0 to HW filter on device hsr0

    Our internal team needs additional information on the VLAN use case in order to move forward with fixing the issue.

    Specifically some questions we would like some information on are

    1. Is MC filtering needed to be specific to VLAN?

    2. How many VLAN IDs are planned to be used in a given topology?

    3. Which range of VLAN ID #s are planned to be used?

    4. Will mapping multiple VLAN IDs to the same FID be sufficient or do you want flexibility to add static MC addresses per FID?

    As I understand from Milan today in the call, your team will need to confirm some of these details with your customer/project team end. Please let us know here once that information is available.

    -Daolin

  • Hi Daolin

    Some responses from project

    Q: who is doing configuration and how to choose number
    R:VLAN id is a configuration of publisher, which is configured by user.

    Q:is it just one VLAN id needed or you configure more than one VLAN ID - most important
    R:It could be more than one VLAN id because publishers could be from different VLANs.

    Q:Is MC filtering needed to be specific to VLAN?
    R: No.

    Q: How many VLAN IDs are planned to be used in a given topology?
    R: It highly depends on customer site network configuration, it could be one or ten more VLAN configured. Please note: as a subscriber, it is expected to receive packets from the subscribed publishers even VLAN id changes applied to any publisher at any time.

    Q:Which range of VLAN ID #s are planned to be used?
    R: From 0 to 4095

    Additionally, the VLAN tag shall not be checked by us, and it may be removed by an Ethernet switch already (customer user case).

    Let me know if there is some additional questions

  • Hello Tianyi/Milan,

    Thank you for sharing these additional details.

    May I ask who initially created the patches to implement filter classification offload (from the patches shared with us offline)? Based on these patches it appears the person who implemented these has familiarity with modifying the Linux driver.

    The main reason for asking this question is to see if someone from your end can directly implement the fixes in icssg_prueth.c driver since we've identified the root cause for this issue (from my previous response).

    The main implementation needed is to ensure that each VLAN ID that is added has an associated FID configured in the driver.

    -Daolin

  • Hi Daolin,

    Not sure about this. We will check at Monday and see what we can do. 

    Can you just confirm me when you will update PRU firmware repository with latest HSR binaries share as archive here? 

    Is this already done? This will simplify our integration

  • Hi Milan,

    Can you just confirm me when you will update PRU firmware repository with latest HSR binaries share as archive here? 

    I have asked our HSR PRU firmware developer for when this can be completed, he has informed me that there are some other non-HSR (but ICSSG PRU ethernet) fixes that need to be integrated into the set of firmware binaries. This is the main reason for the delay on merging into https://git.ti.com/cgit/processor-firmware/ti-linux-firmware/ 

    I will check with him early next week for when this can be merged into the repository.

    -Daolin

  • Hi Daolin,

    By checking a little bit in details the kernel code + your explanation, it seems when adding a HSR + VLAN multicast adress, it will always goes to the default one defined by : prueth->default_vlan.

    That means the feature HSR + VLAN + adding multicast address is not yet implemented in the kernel, could you confirm that ? This feature is very important for us ...

    -Tianyi

  • I just check with Milan, do you have any date for this adding HSR + VLAN + multicast address feature implementation ? We really need this by 15th of October to fit Project deadline ...

    -Tianyi

  • Hi Tianyi,

    Thanks for clarifying when this fix is needed, we will try to implement a patch by then.

    The current solution to this issue we are looking at implementing is ensuring that each VLAN ID that is added has an associated FID configured in the driver by using the same FID for any VLAN IDs. We believe this should be sufficient for your use case as it was mentioned before that the MC filtering is not specific to VLAN IDs. We just want to confirm if this is still correct?

    The developer is still assessing if the current solution is feasible to do in the driver and I have already scheduled an internal meeting to check on this Friday this week (I'm out of office Tues-Thurs).

    -Daolin

  • Hi Daolin,

    Thank you for your fast response !

    What do you mean by "the MC filtering is not specific to VLAN IDs" ?

    Like for example if I want to add a mc address 1 to the VLAN 1, this mc address 1 will also be added to the other VLAN (2, 3 and 4 ) ?

    -Tianyi

  • Hi Tianyi,

    What do you mean by "the MC filtering is not specific to VLAN IDs" ?
    Q:Is MC filtering needed to be specific to VLAN?
    R: No
    Like for example if I want to add a mc address 1 to the VLAN 1, this mc address 1 will also be added to the other VLAN (2, 3 and 4 ) ?

    This was in reference to the answer from Milan on several questions we asked about your VLAN use case. I believe our intention for this question was to ask if MC filtering is specifically used for just VLAN packets with specific VLAN IDs. I'll double check on this.

    Q:Which range of VLAN ID #s are planned to be used?
    R: From 0 to 4095
    1. Supporting 4095 VLANs requires a lot of resources so typically switches reduce this by grouping using FID. You can find more information on 6.4.6.2.10 PRU_ICSSG Filter Data Base (FDB) in the TRM. Due to this we want to know what is your VLAN use case (i.e. will mapping multiple VLAN IDs to the same FID be sufficient or do you want flexibility to add static MC addresses per FID?)

    The solution of using the same FID for all VLAN IDs is related to how the FDB is used to handle look up for VLAN-IDs. Given the previous statement of having to support multiple 4095 VLANs, this is part of the reason why we suggest this solution. 

    -Daolin

  • This was in reference to the answer from Milan on several questions we asked about your VLAN use case. I believe our intention for this question was to ask if MC filtering is specifically used for just VLAN packets with specific VLAN IDs. I'll double check on this.
    Like for example if I want to add a mc address 1 to the VLAN 1, this mc address 1 will also be added to the other VLAN (2, 3 and 4 ) ?

    Just checked, the intent of the question was if a given MC address filter would apply to a specific VLAN or apply to all VLANs regardless of VLAN ID.

    Because the answer from Milan indicating that MC filtering would not be specific to VLANs for the use case, we decided to go with using the same FID for all VLANs method. But please double check if this is still the case...

    -Daolin

  • Thank you for your fast response.
    I need to double check with Milan. But for me,

    when you add a mc address to VLAN id0 this mc address is only for VLAN id0 and is not shared between all the different VLANs !

    -Tianyi

  • Thanks Tianyi

    Please let me know what you confirmed with Milan as soon as possible, this way I can ensure our software team is not looking at a wrong way to implement.

    -Daolin

  • Hi Daolin,

    I come back to you for the update. I double check with Milan and internal team, and the multicast address can be shared for the different VLANs !

    -Tianyi

  • Currently, we integrate the pru firmware with the binaries that you shared with us, When are you planning to push the latest firmware code (including hsr fix) in your repo ?

  • Hi Tianyi,

    I double check with Milan and internal team, and the multicast address can be shared for the different VLANs !

    -Tianyi

    Thanks for confirming this, this aligns with what Milan answered before. We now have a patch (currently internal) based on the fix method I have previously described. I have not tested it yet (I won't be able to until Friday as I'm out of office currently).

    I will share the patch if it works when I'm back in office and have tested it.

    >>>Currently, we integrate the pru firmware with the binaries that you shared with us, When are you planning to push the latest firmware code (including hsr fix) in your repo ?

    The PRU HSR firmware binaries should now be in https://git.ti.com/cgit/processor-firmware/ti-linux-firmware/commit/?h=ti-linux-firmware&id=912bfc085de7741bde906ad69fc10ef1820a82b9. Please see if this works for you.

    -Daolin

  • Hi Tianyi,

    Please use this Linux driver patch to see if the MC VLAN issue is resolved for you.

    From 8b5117f89eb35c045709112fd03b3de0d9f591aa Mon Sep 17 00:00:00 2001
    From: Daolin Qiu <d-qiu@ti.com>
    Date: Fri, 11 Oct 2024 10:57:14 -0500
    Subject: [PATCH] use same FID for both port VLAN IDs and all VLAN IDs used
    
    ---
     drivers/net/ethernet/ti/icssg_config.c | 16 ++++++++++++----
     drivers/net/ethernet/ti/icssg_prueth.c |  2 +-
     2 files changed, 13 insertions(+), 5 deletions(-)
    
    diff --git a/drivers/net/ethernet/ti/icssg_config.c b/drivers/net/ethernet/ti/icssg_config.c
    index 41241d929..fe6f14494 100644
    --- a/drivers/net/ethernet/ti/icssg_config.c
    +++ b/drivers/net/ethernet/ti/icssg_config.c
    @@ -469,10 +469,18 @@ static void icssg_init_switch_mode(struct prueth *prueth)
     	/* Set enable VLAN aware mode, and FDBs for all PRUs */
     	regmap_write(prueth->miig_rt, FDB_GEN_CFG2, FDB_EN_ALL);
     	prueth->vlan_tbl = prueth->shram.va + EMAC_ICSSG_SWITCH_DEFAULT_VLAN_TABLE_OFFSET;
    -	for (i = 0; i < SZ_4K - 1; i++) {
    -		prueth->vlan_tbl[i].fid = i;
    -		prueth->vlan_tbl[i].fid_c1 = 0;
    -	}
    +
    +	if (prueth->is_hsr_offload_mode) {
    +        for (i = 0; i < SZ_4K - 1; i++) {
    +            prueth->vlan_tbl[i].fid = 1;
    +            prueth->vlan_tbl[i].fid_c1 = BIT(PRUETH_PORT_MII0) | BIT(PRUETH_PORT_MII1);
    +        }
    +    } else {
    +        for (i = 0; i < SZ_4K - 1; i++) {
    +            prueth->vlan_tbl[i].fid = i;
    +            prueth->vlan_tbl[i].fid_c1 = 0;
    +        }
    +    }
     
     	if (prueth->hw_bridge_dev)
     		icssg_class_set_host_mac_addr(prueth->miig_rt, prueth->hw_bridge_dev->dev_addr);
    diff --git a/drivers/net/ethernet/ti/icssg_prueth.c b/drivers/net/ethernet/ti/icssg_prueth.c
    index a10ec3664..2241a4db3 100644
    --- a/drivers/net/ethernet/ti/icssg_prueth.c
    +++ b/drivers/net/ethernet/ti/icssg_prueth.c
    @@ -2069,7 +2069,7 @@ static int emac_ndo_vlan_rx_add_vid(struct net_device *ndev,
     	int ret = 0;
     
     	if (prueth->is_hsr_offload_mode) {
    -		port_mask = BIT(PRUETH_PORT_HOST) | BIT(emac->port_id);
    +		port_mask = BIT(PRUETH_PORT_HOST);
     		untag_mask = 0;
     
     		netdev_dbg(emac->ndev, "VID add vid:%u port_mask:%X untag_mask %X\n",
    -- 
    2.34.1
    

    I replicated the test and it appears to be resolved on my setup.

    Sender EVM:

    am64xx-evm login: [   19.173019] icssg-prueth icssg1-eth eth2: icssg_prueth_add_mcast():1656 addr=3b
    [   19.173049] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():733 fid_c2=86, fid=0, addg
    [   19.176876] icssg-prueth icssg1-eth eth2: icssg_prueth_add_mcast():1656 addr=33:33:00:01:00:03
    [   19.176906] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():733 fid_c2=86, fid=0, addg
    root
    [   43.170994] audit: type=1006 audit(1657465002.914:2): pid=982 uid=0 old-auid=4294967295 auid=0 t1
    [   43.172235] audit: type=1300 audit(1657465002.914:2): arch=c00000b7 syscall=64 success=yes exit=)
    [   43.173240] audit: type=1327 audit(1657465002.914:2): proctitle="(systemd)"
    root@am64xx-evm:~# uname -a
    Linux am64xx-evm 6.1.83-rt28-00005-g96d770ab7607-dirty #11 SMP PREEMPT_RT Fri Oct 11 10:32:46 CDT 2x
    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"
    [   99.529225] icssg-prueth icssg1-eth eth1: Link is Down
    [   99.529858] icssg-prueth icssg1-eth eth1: icssg_prueth_del_mcast():1671 addr=33:33:00:00:00:01
    [   99.529874] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=82, fid=0, addg
    [   99.529892] icssg-prueth icssg1-eth eth1: icssg_prueth_del_mcast():1676 addr=33:33:00:00:00:01
    [   99.529899] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=84, fid=0, addg
    [   99.529919] icssg-prueth icssg1-eth eth1: icssg_prueth_del_mcast():1671 addr=01:00:5e:00:00:01
    [   99.529927] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=82, fid=0, addg
    [   99.529940] icssg-prueth icssg1-eth eth1: icssg_prueth_del_mcast():1676 addr=01:00:5e:00:00:01
    [   99.529948] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=84, fid=0, addg
    [   99.529966] icssg-prueth icssg1-eth eth1: icssg_prueth_del_mcast():1671 addr=33:33:ff:1e:9c:45
    [   99.529974] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=82, fid=0, addg
    [   99.529993] icssg-prueth icssg1-eth eth1: icssg_prueth_del_mcast():1671 addr=01:80:c2:00:00:00
    [   99.530000] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=82, fid=0, addg
    [   99.530014] icssg-prueth icssg1-eth eth1: icssg_prueth_del_mcast():1676 addr=01:80:c2:00:00:00
    [   99.530022] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=84, fid=0, addg
    [   99.530040] icssg-prueth icssg1-eth eth1: icssg_prueth_del_mcast():1671 addr=01:80:c2:00:00:03
    [   99.530048] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=82, fid=0, addg
    [   99.530061] icssg-prueth icssg1-eth eth1: icssg_prueth_del_mcast():1676 addr=01:80:c2:00:00:03
    [   99.530069] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=84, fid=0, addg
    [   99.530087] icssg-prueth icssg1-eth eth1: icssg_prueth_del_mcast():1671 addr=01:80:c2:00:00:0e
    [   99.530095] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=82, fid=0, addg
    [   99.530109] icssg-prueth icssg1-eth eth1: icssg_prueth_del_mcast():1676 addr=01:80:c2:00:00:0e
    [   99.530117] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=84, fid=0, addg
    [   99.538292] icssg-prueth icssg1-eth eth1: icssg_prueth_del_mcast():1671 addr=33:33:00:00:00:fb
    [   99.538317] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=82, fid=0, addg
    [   99.538333] icssg-prueth icssg1-eth eth1: icssg_prueth_del_mcast():1676 addr=33:33:00:00:00:fb
    [   99.538341] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=84, fid=0, addg
    [   99.538360] icssg-prueth icssg1-eth eth1: icssg_prueth_del_mcast():1671 addr=33:33:00:01:00:03
    [   99.538368] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=82, fid=0, addg
    [   99.538382] icssg-prueth icssg1-eth eth1: icssg_prueth_del_mcast():1676 addr=33:33:00:01:00:03
    [   99.538390] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=84, fid=0, addg
    [   99.638326] icssg-prueth icssg1-eth eth2: Link is Down
    [   99.639045] icssg-prueth icssg1-eth eth2: icssg_prueth_del_mcast():1671 addr=33:33:00:00:00:01
    [   99.639057] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():733 fid_c2=84, fid=0, addg
    [   99.639079] icssg-prueth icssg1-eth eth2: icssg_prueth_del_mcast():1671 addr=01:00:5e:00:00:01
    [   99.639087] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():733 fid_c2=84, fid=0, addg
    [   99.639106] icssg-prueth icssg1-eth eth2: icssg_prueth_del_mcast():1671 addr=33:33:ff:1e:9c:47
    [   99.639114] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():733 fid_c2=84, fid=0, addg
    [   99.646041] icssg-prueth icssg1-eth eth2: icssg_prueth_del_mcast():1671 addr=01:80:c2:00:00:00
    [   99.646065] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():733 fid_c2=84, fid=0, addg
    [   99.646087] icssg-prueth icssg1-eth eth2: icssg_prueth_del_mcast():1671 addr=01:80:c2:00:00:03
    [   99.646095] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():733 fid_c2=84, fid=0, addg
    [   99.646114] icssg-prueth icssg1-eth eth2: icssg_prueth_del_mcast():1671 addr=01:80:c2:00:00:0e
    [   99.646122] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():733 fid_c2=84, fid=0, addg
    [   99.646345] icssg-prueth icssg1-eth eth2: icssg_prueth_del_mcast():1671 addr=33:33:00:00:00:fb
    [   99.646355] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():733 fid_c2=84, fid=0, addg
    [   99.646375] icssg-prueth icssg1-eth eth2: icssg_prueth_del_mcast():1671 addr=33:33:00:01:00:03
    [   99.646383] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():733 fid_c2=84, fid=0, addg
    [   99.664491] remoteproc remoteproc7: stopped remote processor 3008a000.txpru
    [   99.664515] remoteproc remoteproc16: stopped remote processor 30084000.rtu
    [   99.664524] remoteproc remoteproc15: stopped remote processor 300b4000.pru
    [   99.664533] remoteproc remoteproc8: stopped remote processor 3008c000.txpru
    [   99.664542] remoteproc remoteproc11: stopped remote processor 30086000.rtu
    [   99.664550] remoteproc remoteproc10: 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
    [  101.870702] icssg-prueth icssg1-eth: Enabling HSR offload mode
    [  104.058247] remoteproc remoteproc15: powering up 300b4000.pru
    [  104.061974] remoteproc remoteproc15: Booting fw image ti-pruss/am65x-sr2-pru0-pruhsr-fw.elf, siz4
    [  104.062014] remoteproc remoteproc15: unsupported resource 5
    [  104.062040] remoteproc remoteproc15: remote processor 300b4000.pru is now up
    [  104.062083] remoteproc remoteproc16: powering up 30084000.rtu
    [  104.067185] remoteproc remoteproc16: Booting fw image ti-pruss/am65x-sr2-rtu0-pruhsr-fw.elf, siz8
    [  104.067246] remoteproc remoteproc16: remote processor 30084000.rtu is now up
    [  104.067287] remoteproc remoteproc7: powering up 3008a000.txpru
    [  104.071230] remoteproc remoteproc7: Booting fw image ti-pruss/am65x-sr2-txpru0-pruhsr-fw.elf, si0
    [  104.071290] remoteproc remoteproc7: remote processor 3008a000.txpru is now up
    [  104.071576] remoteproc remoteproc10: powering up 300b8000.pru
    [  104.074354] remoteproc remoteproc10: Booting fw image ti-pruss/am65x-sr2-pru1-pruhsr-fw.elf, siz4
    [  104.074397] remoteproc remoteproc10: unsupported resource 5
    [  104.074424] remoteproc remoteproc10: remote processor 300b8000.pru is now up
    [  104.074468] remoteproc remoteproc11: powering up 30086000.rtu
    [  104.075737] remoteproc remoteproc11: Booting fw image ti-pruss/am65x-sr2-rtu1-pruhsr-fw.elf, siz4
    [  104.075793] remoteproc remoteproc11: remote processor 30086000.rtu is now up
    [  104.075832] remoteproc remoteproc8: powering up 3008c000.txpru
    [  104.077281] remoteproc remoteproc8: Booting fw image ti-pruss/am65x-sr2-txpru1-pruhsr-fw.elf, si8
    [  104.077337] remoteproc remoteproc8: remote processor 3008c000.txpru is now up
    [  104.078776] pps pps0: new PPS source ptp2
    [  104.088428] icssg-prueth icssg1-eth eth1: emac_ndo_open():1842 addr=01:80:c2:00:00:00
    [  104.088458] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=87, fid=1, addg
    [  104.093241] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_add_mcast():89 addr=01:00:5e:00:00:01
    [  104.093266] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=87, fid=1, addg
    [  105.254722] icssg-prueth icssg1-eth eth2: emac_ndo_open():1842 addr=01:80:c2:00:00:00
    [  105.254753] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():733 fid_c2=87, fid=1, addg
    [  105.258313] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_add_mcast():89 addr=01:00:5e:00:00:01
    [  105.258340] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():733 fid_c2=87, fid=1, addg
    [  107.172750] icssg-prueth icssg1-eth eth1: Link is Up - 1Gbps/Full - flow control off
    [  107.172824] IPv6: ADDRCONF(NETDEV_CHANGE): eth1: link becomes ready
    [  107.172865] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_add_mcast():89 addr=33:33:00:00:00:01
    [  107.172882] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=87, fid=1, addg
    [  107.181306] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_add_mcast():89 addr=33:33:ff:1e:9c:45
    [  107.181336] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=87, fid=1, addg
    [  107.182392] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_add_mcast():89 addr=01:80:c2:00:00:00
    [  107.182417] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=87, fid=1, addg
    [  107.182441] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_add_mcast():89 addr=01:80:c2:00:00:03
    [  107.182448] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=87, fid=1, addg
    [  107.182463] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_add_mcast():89 addr=01:80:c2:00:00:0e
    [  107.182471] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=87, fid=1, addg
    [  108.324774] icssg-prueth icssg1-eth eth2: Link is Up - 1Gbps/Full - flow control off
    [  108.324859] IPv6: ADDRCONF(NETDEV_CHANGE): eth2: link becomes ready
    [  108.325321] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_add_mcast():89 addr=33:33:00:00:00:01
    [  108.325346] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():733 fid_c2=87, fid=1, addg
    [  108.325370] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_add_mcast():89 addr=33:33:ff:1e:9c:45
    [  108.325379] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():733 fid_c2=87, fid=1, addg
    [  108.326804] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_add_mcast():89 addr=01:80:c2:00:00:00
    [  108.326833] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():733 fid_c2=87, fid=1, addg
    [  108.326859] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_add_mcast():89 addr=01:80:c2:00:00:03
    [  108.326866] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():733 fid_c2=87, fid=1, addg
    [  108.326881] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_add_mcast():89 addr=01:80:c2:00:00:0e
    [  108.326888] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():733 fid_c2=87, fid=1, addg
    [  108.775237] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_add_mcast():89 addr=33:33:00:00:00:fb
    [  108.775267] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=87, fid=1, addg
    [  108.777824] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_add_mcast():89 addr=33:33:00:01:00:03
    [  108.777855] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=87, fid=1, addg
    [  109.325959] IPv6: ADDRCONF(NETDEV_CHANGE): hsr0: link becomes ready
    root@am64xx-evm:~# [  109.330386] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_add_mcast():89 addb
    [  109.330418] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=87, fid=1, addg
    [  109.330458] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_add_mcast():89 addr=01:00:5e:00:00:fb
    [  109.330466] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():733 fid_c2=87, fid=1, addg
    [  109.340898] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_add_mcast():89 addr=01:00:5e:00:00:fc
    [  109.340931] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=87, fid=1, addg
    [  109.340970] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_add_mcast():89 addr=01:00:5e:00:00:fc
    [  109.340978] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():733 fid_c2=87, fid=1, addg
    [  109.477037] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_add_mcast():89 addr=33:33:00:00:00:fb
    [  109.477069] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():733 fid_c2=87, fid=1, addg
    [  109.481109] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_add_mcast():89 addr=33:33:00:01:00:03
    [  109.481159] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():733 fid_c2=87, fid=1, addg
    [  118.436566] icssg-prueth icssg1-eth eth1: Link is Down
    [  118.451369] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_del_mcast():107 addr=01:80:c2:00:00:00
    [  118.451399] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=87, fid=1, addg
    [  118.451426] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_del_mcast():107 addr=01:80:c2:00:00:03
    [  118.451434] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=87, fid=1, addg
    [  118.451449] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_del_mcast():107 addr=01:80:c2:00:00:0e
    [  118.451456] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=87, fid=1, addg
    [  118.564578] icssg-prueth icssg1-eth eth2: Link is Down
    [  119.467757] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_del_mcast():107 addr=33:33:00:01:00:03
    [  119.467789] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=87, fid=1, addg
    [  119.467815] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_del_mcast():107 addr=01:00:5e:00:00:fc
    [  119.467823] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=87, fid=1, addg
    [  119.467855] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_del_mcast():107 addr=01:00:5e:00:00:fc
    [  119.467863] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():733 fid_c2=87, fid=1, addg
    [  119.467877] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_del_mcast():107 addr=33:33:00:01:00:03
    [  119.467885] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():733 fid_c2=87, fid=1, addg
    [  119.473471] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_del_mcast():107 addr=01:80:c2:00:00:00
    [  119.473500] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():733 fid_c2=87, fid=1, addg
    [  119.473524] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_del_mcast():107 addr=01:80:c2:00:00:03
    [  119.473532] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():733 fid_c2=87, fid=1, addg
    [  119.473546] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_del_mcast():107 addr=01:80:c2:00:00:0e
    [  119.473554] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():733 fid_c2=87, fid=1, addg
    [  125.735916] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_add_mcast():89 addr=01:00:5e:00:00:fc
    [  125.735946] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=87, fid=1, addg
    [  125.735986] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_add_mcast():89 addr=01:00:5e:00:00:fc
    [  125.735995] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():733 fid_c2=87, fid=1, addg
    [  125.736393] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_add_mcast():89 addr=33:33:00:01:00:03
    [  125.736416] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=87, fid=1, addg
    [  125.736449] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_add_mcast():89 addr=33:33:00:01:00:03
    [  125.736458] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():733 fid_c2=87, fid=1, addg
    [  125.738401] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_add_mcast():89 addr=01:80:c2:00:00:00
    [  125.738433] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():733 fid_c2=87, fid=1, addg
    [  125.738459] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_add_mcast():89 addr=01:80:c2:00:00:03
    [  125.738467] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():733 fid_c2=87, fid=1, addg
    [  125.738482] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_add_mcast():89 addr=01:80:c2:00:00:0e
    [  125.738489] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():733 fid_c2=87, fid=1, addg
    [  125.740259] icssg-prueth icssg1-eth eth2: Link is Up - 1Gbps/Full - flow control off
    [  126.628744] icssg-prueth icssg1-eth eth1: Link is Up - 1Gbps/Full - flow control off
    [  126.631942] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_add_mcast():89 addr=01:80:c2:00:00:00
    [  126.631974] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=87, fid=1, addg
    [  126.632001] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_add_mcast():89 addr=01:80:c2:00:00:03
    [  126.632009] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=87, fid=1, addg
    [  126.632023] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_add_mcast():89 addr=01:80:c2:00:00:0e
    [  126.632031] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=87, fid=1, addg
    
    root@am64xx-evm:~# ip link add link hsr0 name hsr0.5 type vlan id 5
    [  153.279565] 8021q: 802.1Q VLAN Support v1.8
    [  153.279624] 8021q: adding VLAN 0 to HW filter on device eth0
    root@am64xx-evm:~# [  153.279727] 8021q: adding VLAN 0 to HW filter on device eth1
    [  153.279827] 8021q: adding VLAN 0 to HW filter on device eth2
    [  153.279924] 8021q: adding VLAN 0 to HW filter on device hsr0
    [  153.289598] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_add_mcast():89 addr=01:80:c2:00:00:21
    [  153.289627] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=87, fid=1, addg
    [  153.289674] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_add_mcast():89 addr=01:80:c2:00:00:21
    [  153.289682] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():733 fid_c2=87, fid=1, addg
    
    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:~# ./goose-app-ti-sdk -c -a 1 -i hsr0.5 -n 1000 -m 01:00:5e:00:00:15^C            
    root@am64xx-evm:~# cat /proc/interrupts | grep -i icssg
    140:        191        113  MSI-INTA 1970792 Level     icssg1-eth-tx0
    144:         11         75  MSI-INTA 1970796 Level     icssg1-eth-tx0
    240:         56          2  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:         30         33  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: 572
         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: 572
         rx_class9_hits: 572
         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: 572
         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: 572
         rx_class9_hits: 572
         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 95  bytes 16718 (16.3 KiB)
            RX errors 0  dropped 8  overruns 0  frame 0
            TX packets 258  bytes 21278 (20.7 KiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    root@am64xx-evm:~# ./goose-app-ti-sdk -c -a 1 -i hsr0.5 -n 1000 -m 01:00:5e:00:00:15
    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:~# cat /proc/interrupts | grep -i icssg
    140:       1254        113  MSI-INTA 1970792 Level     icssg1-eth-tx0
    144:         13         75  MSI-INTA 1970796 Level     icssg1-eth-tx0
    240:         56          4  MSI-INTA 1971824 Level     icssg1-eth
    241:          0        782  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:         30         35  MSI-INTA 1971840 Level     icssg1-eth
    257:          0        218  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: 2698
         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: 2698
         rx_class9_hits: 2698
         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: 2695
         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: 2695
         rx_class9_hits: 2695
         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 1101  bytes 404638 (395.1 KiB)
            RX errors 0  dropped 8  overruns 0  frame 0
            TX packets 1351  bytes 430872 (420.7 KiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    root@am64xx-evm:~# ./goose-app-ti-sdk -c -i hsr0.5 -m 01:00:5e:00:00:15 -n 1000 -p 400
    Client application
    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:~# cat /proc/interrupts | grep -i icssg
    140:       1320       1183  MSI-INTA 1970792 Level     icssg1-eth-tx0
    144:         15         78  MSI-INTA 1970796 Level     icssg1-eth-tx0
    240:         56          7  MSI-INTA 1971824 Level     icssg1-eth
    241:          0       1533  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:         31         39  MSI-INTA 1971840 Level     icssg1-eth
    257:          0        467  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:~# 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 2107  bytes 792558 (773.9 KiB)
            RX errors 0  dropped 8  overruns 0  frame 0
            TX packets 2446  bytes 840596 (820.8 KiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    root@am64xx-evm:~# 
    
    root@am64xx-evm:~# 

    Receiver EVM:

    am64xx-evm login: root
    [   44.274583] audit: type=1006 audit(1657649203.075:2): pid=983 uid=0 old-auid=4294967295 auid=0 tt1
    [   44.274765] audit: type=1300 audit(1657649203.075:2): arch=c00000b7 syscall=64 success=yes exit=1)
    [   44.276107] audit: type=1327 audit(1657649203.075:2): proctitle="(systemd)"
    root@am64xx-evm:~# uname -a
    Linux am64xx-evm 6.1.83-rt28-00005-g96d770ab7607-dirty #11 SMP PREEMPT_RT Fri Oct 11 10:32:46 CDT 20x
    root@am64xx-evm:~# [   98.981215] icssg-prueth icssg1-eth eth1: Link is Down
    [   98.992672] icssg-prueth icssg1-eth eth1: icssg_prueth_del_mcast():1671 addr=33:33:00:01:00:03
    [   98.992703] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=82, fid=0, addrg
    [   98.992722] icssg-prueth icssg1-eth eth1: icssg_prueth_del_mcast():1676 addr=33:33:00:01:00:03
    [   98.992730] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=84, fid=0, addrg
    [   99.014038] icssg-prueth icssg1-eth eth1: icssg_prueth_del_mcast():1671 addr=01:80:c2:00:00:00
    [   99.014062] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=82, fid=0, addrg
    [   99.014079] icssg-prueth icssg1-eth eth1: icssg_prueth_del_mcast():1676 addr=01:80:c2:00:00:00
    [   99.014087] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=84, fid=0, addrg
    [   99.014108] icssg-prueth icssg1-eth eth1: icssg_prueth_del_mcast():1671 addr=01:80:c2:00:00:03
    [   99.014116] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=82, fid=0, addrg
    [   99.014130] icssg-prueth icssg1-eth eth1: icssg_prueth_del_mcast():1676 addr=01:80:c2:00:00:03
    [   99.014138] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=84, fid=0, addrg
    [   99.014157] icssg-prueth icssg1-eth eth1: icssg_prueth_del_mcast():1671 addr=01:80:c2:00:00:0e
    [   99.014165] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=82, fid=0, addrg
    [   99.014178] icssg-prueth icssg1-eth eth1: icssg_prueth_del_mcast():1676 addr=01:80:c2:00:00:0e
    [   99.014186] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=84, fid=0, addrg
    [   99.237233] icssg-prueth icssg1-eth eth2: Link is Down
    [  100.011754] icssg-prueth icssg1-eth eth2: icssg_prueth_del_mcast():1671 addr=33:33:00:01:00:03
    [  100.011834] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():733 fid_c2=84, fid=0, addrg
    [  100.023029] icssg-prueth icssg1-eth eth2: icssg_prueth_del_mcast():1671 addr=01:80:c2:00:00:00
    [  100.023053] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():733 fid_c2=84, fid=0, addrg
    [  100.023077] icssg-prueth icssg1-eth eth2: icssg_prueth_del_mcast():1671 addr=01:80:c2:00:00:03
    [  100.023085] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():733 fid_c2=84, fid=0, addrg
    [  100.023105] icssg-prueth icssg1-eth eth2: icssg_prueth_del_mcast():1671 addr=01:80:c2:00:00:0e
    [  100.023112] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():733 fid_c2=84, fid=0, addrg
    [  106.405637] icssg-prueth icssg1-eth eth2: Link is Up - 1Gbps/Full - flow control off
    [  106.411723] icssg-prueth icssg1-eth eth2: icssg_prueth_add_mcast():1656 addr=01:80:c2:00:00:00
    [  106.411751] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():733 fid_c2=84, fid=0, addrg
    [  106.411773] icssg-prueth icssg1-eth eth2: icssg_prueth_add_mcast():1656 addr=01:80:c2:00:00:03
    [  106.411781] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():733 fid_c2=84, fid=0, addrg
    [  106.411886] icssg-prueth icssg1-eth eth2: icssg_prueth_add_mcast():1656 addr=01:80:c2:00:00:0e
    [  106.411894] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():733 fid_c2=84, fid=0, addrg
    [  106.428917] icssg-prueth icssg1-eth eth2: icssg_prueth_add_mcast():1656 addr=33:33:00:01:00:03
    [  106.428946] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():733 fid_c2=84, fid=0, addrg
    [  107.173431] icssg-prueth icssg1-eth eth1: Link is Up - 1Gbps/Full - flow control off
    [  107.175288] icssg-prueth icssg1-eth eth1: icssg_prueth_add_mcast():1656 addr=01:80:c2:00:00:00
    [  107.175316] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=86, fid=0, addrg
    [  107.175338] icssg-prueth icssg1-eth eth1: icssg_prueth_add_mcast():1656 addr=01:80:c2:00:00:03
    [  107.175346] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=86, fid=0, addrg
    [  107.175365] icssg-prueth icssg1-eth eth1: icssg_prueth_add_mcast():1656 addr=01:80:c2:00:00:0e
    [  107.175372] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=86, fid=0, addrg
    [  107.202859] icssg-prueth icssg1-eth eth1: icssg_prueth_add_mcast():1656 addr=33:33:00:01:00:03
    [  107.202887] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=86, fid=0, addrg
    
    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"
    [  116.482869] icssg-prueth icssg1-eth eth1: Link is Down
    [  116.483506] icssg-prueth icssg1-eth eth1: icssg_prueth_del_mcast():1671 addr=33:33:00:00:00:01
    [  116.483522] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=82, fid=0, addrg
    [  116.483539] icssg-prueth icssg1-eth eth1: icssg_prueth_del_mcast():1676 addr=33:33:00:00:00:01
    [  116.483547] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=84, fid=0, addrg
    [  116.483566] icssg-prueth icssg1-eth eth1: icssg_prueth_del_mcast():1671 addr=01:00:5e:00:00:01
    [  116.483573] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=82, fid=0, addrg
    [  116.483587] icssg-prueth icssg1-eth eth1: icssg_prueth_del_mcast():1676 addr=01:00:5e:00:00:01
    [  116.483595] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=84, fid=0, addrg
    [  116.483614] icssg-prueth icssg1-eth eth1: icssg_prueth_del_mcast():1671 addr=33:33:ff:1f:3d:c5
    [  116.483622] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=82, fid=0, addrg
    [  116.483641] icssg-prueth icssg1-eth eth1: icssg_prueth_del_mcast():1671 addr=33:33:00:00:00:fb
    [  116.483648] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=82, fid=0, addrg
    [  116.483662] icssg-prueth icssg1-eth eth1: icssg_prueth_del_mcast():1676 addr=33:33:00:00:00:fb
    [  116.483670] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=84, fid=0, addrg
    [  116.483688] icssg-prueth icssg1-eth eth1: icssg_prueth_del_mcast():1671 addr=01:80:c2:00:00:00
    [  116.483696] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=82, fid=0, addrg
    [  116.483710] icssg-prueth icssg1-eth eth1: icssg_prueth_del_mcast():1676 addr=01:80:c2:00:00:00
    [  116.483717] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=84, fid=0, addrg
    [  116.483736] icssg-prueth icssg1-eth eth1: icssg_prueth_del_mcast():1671 addr=01:80:c2:00:00:03
    [  116.483744] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=82, fid=0, addrg
    [  116.483757] icssg-prueth icssg1-eth eth1: icssg_prueth_del_mcast():1676 addr=01:80:c2:00:00:03
    [  116.483765] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=84, fid=0, addrg
    [  116.483850] icssg-prueth icssg1-eth eth1: icssg_prueth_del_mcast():1671 addr=01:80:c2:00:00:0e
    [  116.483859] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=82, fid=0, addrg
    [  116.483874] icssg-prueth icssg1-eth eth1: icssg_prueth_del_mcast():1676 addr=01:80:c2:00:00:0e
    [  116.483882] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=84, fid=0, addrg
    [  116.483901] icssg-prueth icssg1-eth eth1: icssg_prueth_del_mcast():1671 addr=33:33:00:01:00:03
    [  116.483909] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=82, fid=0, addrg
    [  116.483923] icssg-prueth icssg1-eth eth1: icssg_prueth_del_mcast():1676 addr=33:33:00:01:00:03
    [  116.483930] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=84, fid=0, addrg
    [  116.582856] icssg-prueth icssg1-eth eth2: Link is Down
    [  116.583576] icssg-prueth icssg1-eth eth2: icssg_prueth_del_mcast():1671 addr=33:33:00:00:00:01
    [  116.583588] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():733 fid_c2=84, fid=0, addrg
    [  116.583611] icssg-prueth icssg1-eth eth2: icssg_prueth_del_mcast():1671 addr=01:00:5e:00:00:01
    [  116.583619] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():733 fid_c2=84, fid=0, addrg
    [  116.583638] icssg-prueth icssg1-eth eth2: icssg_prueth_del_mcast():1671 addr=33:33:ff:1f:3d:c7
    [  116.583645] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():733 fid_c2=84, fid=0, addrg
    [  116.583664] icssg-prueth icssg1-eth eth2: icssg_prueth_del_mcast():1671 addr=33:33:00:00:00:fb
    [  116.583672] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():733 fid_c2=84, fid=0, addrg
    [  116.583690] icssg-prueth icssg1-eth eth2: icssg_prueth_del_mcast():1671 addr=01:80:c2:00:00:00
    [  116.583698] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():733 fid_c2=84, fid=0, addrg
    [  116.583717] icssg-prueth icssg1-eth eth2: icssg_prueth_del_mcast():1671 addr=01:80:c2:00:00:03
    [  116.583725] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():733 fid_c2=84, fid=0, addrg
    [  116.583743] icssg-prueth icssg1-eth eth2: icssg_prueth_del_mcast():1671 addr=01:80:c2:00:00:0e
    [  116.583751] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():733 fid_c2=84, fid=0, addrg
    [  116.583770] icssg-prueth icssg1-eth eth2: icssg_prueth_del_mcast():1671 addr=33:33:00:01:00:03
    [  116.583777] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():733 fid_c2=84, fid=0, addrg
    [  116.609052] remoteproc remoteproc7: stopped remote processor 3008a000.txpru
    [  116.609077] remoteproc remoteproc12: stopped remote processor 30084000.rtu
    [  116.609086] remoteproc remoteproc11: stopped remote processor 300b4000.pru
    [  116.609095] remoteproc remoteproc8: stopped remote processor 3008c000.txpru
    [  116.609104] remoteproc remoteproc14: stopped remote processor 30086000.rtu
    [  116.609112] 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
    [  118.808147] icssg-prueth icssg1-eth: Enabling HSR offload mode
    [  120.993057] remoteproc remoteproc11: powering up 300b4000.pru
    [  120.996844] remoteproc remoteproc11: Booting fw image ti-pruss/am65x-sr2-pru0-pruhsr-fw.elf, size4
    [  120.996883] remoteproc remoteproc11: unsupported resource 5
    [  120.996911] remoteproc remoteproc11: remote processor 300b4000.pru is now up
    [  120.996955] remoteproc remoteproc12: powering up 30084000.rtu
    [  120.998963] remoteproc remoteproc12: Booting fw image ti-pruss/am65x-sr2-rtu0-pruhsr-fw.elf, size8
    [  120.999018] remoteproc remoteproc12: remote processor 30084000.rtu is now up
    [  120.999061] remoteproc remoteproc7: powering up 3008a000.txpru
    [  121.000363] remoteproc remoteproc7: Booting fw image ti-pruss/am65x-sr2-txpru0-pruhsr-fw.elf, siz0
    [  121.000424] remoteproc remoteproc7: remote processor 3008a000.txpru is now up
    [  121.000708] remoteproc remoteproc13: powering up 300b8000.pru
    [  121.004227] remoteproc remoteproc13: Booting fw image ti-pruss/am65x-sr2-pru1-pruhsr-fw.elf, size4
    [  121.004269] remoteproc remoteproc13: unsupported resource 5
    [  121.004295] remoteproc remoteproc13: remote processor 300b8000.pru is now up
    [  121.004338] remoteproc remoteproc14: powering up 30086000.rtu
    [  121.005589] remoteproc remoteproc14: Booting fw image ti-pruss/am65x-sr2-rtu1-pruhsr-fw.elf, size4
    [  121.005645] remoteproc remoteproc14: remote processor 30086000.rtu is now up
    [  121.005688] remoteproc remoteproc8: powering up 3008c000.txpru
    [  121.007078] remoteproc remoteproc8: Booting fw image ti-pruss/am65x-sr2-txpru1-pruhsr-fw.elf, siz8
    [  121.007130] remoteproc remoteproc8: remote processor 3008c000.txpru is now up
    [  121.008579] pps pps1: new PPS source ptp2
    [  121.020110] icssg-prueth icssg1-eth eth1: emac_ndo_open():1842 addr=01:80:c2:00:00:00
    [  121.021024] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=87, fid=1, addrg
    [  121.026528] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_add_mcast():89 addr=01:00:5e:00:00:01
    [  121.026561] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=87, fid=1, addrg
    [  122.176682] icssg-prueth icssg1-eth eth2: emac_ndo_open():1842 addr=01:80:c2:00:00:00
    [  122.176715] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():733 fid_c2=87, fid=1, addrg
    [  122.185142] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_add_mcast():89 addr=01:00:5e:00:00:01
    [  122.185169] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():733 fid_c2=87, fid=1, addrg
    [  124.133401] icssg-prueth icssg1-eth eth1: Link is Up - 1Gbps/Full - flow control off
    [  124.133480] IPv6: ADDRCONF(NETDEV_CHANGE): eth1: link becomes ready
    [  124.134170] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_add_mcast():89 addr=33:33:00:00:00:01
    [  124.134201] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=87, fid=1, addrg
    [  124.134228] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_add_mcast():89 addr=33:33:ff:1f:3d:c5
    [  124.134236] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=87, fid=1, addrg
    [  124.135234] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_add_mcast():89 addr=01:80:c2:00:00:00
    [  124.135265] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=87, fid=1, addrg
    [  124.135291] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_add_mcast():89 addr=01:80:c2:00:00:03
    [  124.135299] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=87, fid=1, addrg
    [  124.135313] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_add_mcast():89 addr=01:80:c2:00:00:0e
    [  124.135321] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=87, fid=1, addrg
    [  125.285409] icssg-prueth icssg1-eth eth2: Link is Up - 1Gbps/Full - flow control off
    [  125.285482] IPv6: ADDRCONF(NETDEV_CHANGE): eth2: link becomes ready
    [  125.285525] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_add_mcast():89 addr=33:33:00:00:00:01
    [  125.285544] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():733 fid_c2=87, fid=1, addrg
    [  125.291917] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_add_mcast():89 addr=33:33:ff:1f:3d:c5
    [  125.291948] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():733 fid_c2=87, fid=1, addrg
    [  125.291974] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_add_mcast():89 addr=01:80:c2:00:00:00
    [  125.291982] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():733 fid_c2=87, fid=1, addrg
    [  125.291996] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_add_mcast():89 addr=01:80:c2:00:00:03
    [  125.292004] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():733 fid_c2=87, fid=1, addrg
    [  125.292019] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_add_mcast():89 addr=01:80:c2:00:00:0e
    [  125.292027] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():733 fid_c2=87, fid=1, addrg
    [  125.733600] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_add_mcast():89 addr=33:33:00:00:00:fb
    [  125.733632] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=87, fid=1, addrg
    [  125.739539] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_add_mcast():89 addr=33:33:00:01:00:03
    [  125.739567] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=87, fid=1, addrg
    [  126.252680] IPv6: ADDRCONF(NETDEV_CHANGE): hsr0: link becomes ready
    [  126.265033] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_add_mcast():89 addr=01:00:5e:00:00:fb
    [  126.265068] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=87, fid=1, addrg
    root@am64xx-evm:~# [  126.265109] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_add_mcast():89 addrb
    [  126.265118] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():733 fid_c2=87, fid=1, addrg
    [  126.265762] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_add_mcast():89 addr=01:00:5e:00:00:fc
    [  126.265976] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=87, fid=1, addrg
    [  126.266023] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_add_mcast():89 addr=01:00:5e:00:00:fc
    [  126.266032] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():733 fid_c2=87, fid=1, addrg
    [  126.822953] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_add_mcast():89 addr=33:33:00:00:00:fb
    [  126.822985] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():733 fid_c2=87, fid=1, addrg
    [  126.831881] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_add_mcast():89 addr=33:33:00:01:00:03
    [  126.831910] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():733 fid_c2=87, fid=1, addrg
    
    root@am64xx-evm:~# ip link add link hsr0 name hsr0.5 type vlan id 5
    [  195.790617] 8021q: 802.1Q VLAN Support v1.8
    [  195.790675] 8021q: adding VLAN 0 to HW filter on device eth0
    [  195.790777] 8021q: adding VLAN 0 to HW filter on device eth1
    root@am64xx-evm:~# [  195.790983] 8021q: adding VLAN 0 to HW filter on device eth2
    [  195.791081] 8021q: adding VLAN 0 to HW filter on device hsr0
    [  195.795288] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_add_mcast():89 addr=01:80:c2:00:00:21
    [  195.795319] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=87, fid=1, addrg
    [  195.795360] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_add_mcast():89 addr=01:80:c2:00:00:21
    [  195.795369] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():733 fid_c2=87, fid=1, addrg
    
    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:~# ip maddr add 01:00:5e:00:00:15 dev hsr0.5
    [  225.199900] icssg-prueth icssg1-eth eth2: icssg_prueth_hsr_add_mcast():89 addr=01:00:5e:00:00:15
    root@am64xx-evm:~# [  225.199933] icssg-prueth icssg1-eth eth2: [danish] icssg_fdb_add_del():733 fidg
    [  225.200037] icssg-prueth icssg1-eth eth1: icssg_prueth_hsr_add_mcast():89 addr=01:00:5e:00:00:15
    [  225.200047] icssg-prueth icssg1-eth eth1: [danish] icssg_fdb_add_del():733 fid_c2=87, fid=1, addrg
    
    root@am64xx-evm:~# ip maddr show hsr0.5
    8:      hsr0.5
      link  33:33:00:00:00:01 users 2
      link  01:00:5e:00:00:01 users 2
      link  33:33:ff:1f:3d:c5 users 2
      link  01:00:5e:00:00:fb users 2
      link  01:00:5e:00:00:fc users 2
      link  33:33:00:01:00:03 users 2
      link  33:33:00:00:00:fb users 2
      link  01:00:5e:00:00:15 users 2 static
      inet  224.0.0.252
      inet  224.0.0.251
      inet  224.0.0.1
      inet6 ff02::fb
      inet6 ff02::1:3
      inet6 ff02::1:ff1f:3dc5
      inet6 ff02::1
      inet6 ff01::1
    root@am64xx-evm:~# goose_app -s -i hsr0.5
    -sh: goose_app: command not found
    root@am64xx-evm:~# ./goose-app-ti-sdk -s -i hsr0.5 
    Server application
    Socket created on : hsr0.5, ID:8
    ^C
    root@am64xx-evm:~# cat /proc/interrupts | grep -i icssg
    140:        114        184  MSI-INTA 1970792 Level     icssg1-eth-tx0
    144:         11         64  MSI-INTA 1970796 Level     icssg1-eth-tx0
    240:         18         18  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:         28         44  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: 652
         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: 652
         rx_class9_hits: 652
         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: 643
         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: 643
         rx_class9_hits: 643
         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 45  bytes 8798 (8.5 KiB)
            RX errors 0  dropped 10  overruns 0  frame 0
            TX packets 238  bytes 19650 (19.1 KiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    root@am64xx-evm:~# goose_app -s -i hsr0.5
    -sh: goose_app: command not found
    root@am64xx-evm:~# ./goose-app-ti-sdk -s -i hsr0.5
    Server application
    Socket created on : hsr0.5, ID:8
    ^C
    root@am64xx-evm:~# cat /proc/interrupts | grep -i icssg
    140:       1151        184  MSI-INTA 1970792 Level     icssg1-eth-tx0
    144:         12         64  MSI-INTA 1970796 Level     icssg1-eth-tx0
    240:         18         18  MSI-INTA 1971824 Level     icssg1-eth
    241:          0        662  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:         30         44  MSI-INTA 1971840 Level     icssg1-eth
    257:          0        338  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: 1762
         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: 1762
         rx_class9_hits: 1762
         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: 1747
         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: 1747
         rx_class9_hits: 1747
         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 1049  bytes 396078 (386.7 KiB)
            RX errors 0  dropped 10  overruns 0  frame 0
            TX packets 1282  bytes 426304 (416.3 KiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    root@am64xx-evm:~# ./goose-app-ti-sdk -s -i hsr0.5
    Server application
    Socket created on : hsr0.5, ID:8
    ^C
    root@am64xx-evm:~# cat /proc/interrupts | grep -i icssg
    140:       2266        231  MSI-INTA 1970792 Level     icssg1-eth-tx0
    144:         14         68  MSI-INTA 1970796 Level     icssg1-eth-tx0
    240:         21         18  MSI-INTA 1971824 Level     icssg1-eth
    241:          0       1344  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:         33         48  MSI-INTA 1971840 Level     icssg1-eth
    257:        318        338  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:~# 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 2057  bytes 784638 (766.2 KiB)
            RX errors 0  dropped 10  overruns 0  frame 0
            TX packets 2423  bytes 838774 (819.1 KiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    root@am64xx-evm:~# 
    
    root@am64xx-evm:~# 

    -Daolin

  • Hello Daolin,

    Thank you very much for the patch. We will test on our side and let you know about the result.

    -Tianyi

  • Hi Tianyi,

    Thanks for acknowledging that you have received the patch. Keep us informed on the test results once available.

    -Daolin

  • Hi Daolin,

    We did some tests on the patch and the result meet our expectation !

    -Tianyi

  • Hi Tianyi, 

    Thanks for the great news!

    If you don't have further issues on this topic could you click the "This Resolved My Issue" on https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1397896/processor-sdk-am64x-processor-sdk-am64x-icssg-multicast-packets-filter-classification/5457544#5457544?

    -Daolin