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.

TDA4VM: IGMP Packets are dropping when TI switch connected in between PC1 to PC2.

Part Number: TDA4VM

Network topology:

PC1 (192.168.1.10) <=====> TI Switch <=======> PC2 (192.168.1.20)

Here I have configure TDA4VM as switch and ping also working in between PC1 to PC2. But IGMP packets are dropping.

Same thing if try between PC1 to PC2 without TI switch at the it is working as expected.

In this case, is it required to configure to enable multicast traffic ?   

 

  • Hi,

    Are you using Native linux driver or ethfw to control the switch?

    Regards,
    Tanmay

  • Hi Tanmay,

    Thank you for reply.

    I am using below steps to make switch:

    1. loading dtbo "setenv name_overlays ti/k3-j721e-evm-quad-port-eth-exp.dtbo". ( or we have updated in same dtbo details uEnv.txt file any one step we are following to load this dtbo file).

    2.rm -rf /lib/firmware/j7-main-r5f0_0-fw

    3.ln -s /lib/firmware/ti-ipc/j721e/ipc_echo_test_mcu2_0_release_strip.xer5f /lib/firmware/j7-main-r5f0_0-fw

    4.sync

    After reboot below settings we are doing :

    devlink dev param set platform/c000000.ethernet \
    name switch_mode value true cmode runtime
    
    ip link add name br0 type bridge
    ip link set dev br0 type bridge ageing_time 1000
    ip link set dev eth1 up
    ip link set dev eth2 up
    ip link set dev eth3 up
    ip link set dev eth4 up
    ip link set dev eth1 master br0
    ip link set dev eth2 master br0
    ip link set dev eth3 master br0
    ip link set dev eth4 master br0
    
    [*] ip link set dev br0 type bridge vlan_filtering 1
    
    [*] bridge vlan add dev br0 vid 1 pvid untagged self
    
    Note: Steps [*] are mandatory.

    After all this configuration ping between PC1 to PC2 working. But IGMP of packets are missing here.

      PC1 <====> (TI switch ) <======> PC2 

  • Hi Pawan,

    Can you turn the multicast_flood to "on" using the command mentioned here : https://software-dl.ti.com/jacinto7/esd/processor-sdk-linux-jacinto7/09_01_00_06/exports/docs/linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSWng-Native-Ethernet.html#multicast-flooding

    By default, for multicast, the packets are flooded to host port (A72 in your case) and then the linux running on A72 will manage the multicast traffic. The switch isn't configured for multicast forwarding.

    Regards,
    Tanmay

  • Hi Tanmay,

    I have configured below but still it is not working.

    bridge link set dev eth1 mcast_flood on
    bridge link set dev eth4 mcast_flood on

    Network topology is 

    PC1 <======> ETH1 port  ((( TI Hardware))) ETH4 Port <=======> PC2

    Actually I am running cyclonedds in PC1 and PC2.  when i connect without TI switch cyclonedds messages working between PC1 and PC2.

     

  • HI Pavan,

    Can you see any multicast packets being received on the interface on TDA4VM. You can run "tcpdump -i eth1/eth4" to see the packets on eth1 or eth4.

    If you are receiving the packets, but they are not being forwarded to the other port, there might be additional configuration required on linux on the TDA4VM for cyclonedds which I am not aware of.

    Regards,
    Tanmay

  • Hi Tanmay,

    Here two observation i have, when device is booted and not doing any switch configuration as below 

    At the a can see the multicast traffic on eth1 and eth4 port:

    root@j721e-evm:~#
    root@j721e-evm:~#
    root@j721e-evm:~# 19:04:44.514256 IP 192.168.1.10.59349 > 239.255.0.1.7400: UDP, length 424
    19:04:44.524245 IP 192.168.1.10 > 224.0.0.22: igmp v3 report, 1 group record(s)
    19:04:44.614587 IP 192.168.1.10.59349 > 239.255.0.1.7400: UDP, length 424
    19:04:45.386271 IP6 j721e-evm > ip6-allrouters: ICMP6, router solicitation, length 16
    19:04:45.516432 IP 192.168.1.10 > 224.0.0.22: igmp v3 report, 1 group record(s)
    19:04:46.152580 IP6 j721e-evm > ip6-allrouters: ICMP6, router solicitation, length 16
    19:04:47.828007 IP 0.0.0.0.bootpc > 255.255.255.255.bootps: BOOTP/DHCP, Request from 70:ff:76:1e:b8:17 (oui Unknown), length 291
    19:04:48.546154 IP 0.0.0.0.bootpc > 255.255.255.255.bootps: BOOTP/DHCP, Request from 70:ff:76:1e:b8:14 (oui Unknown), length 291
    19:04:52.614369 IP 192.168.1.10.59349 > 239.255.0.1.7400: UDP, length 424
    19:04:54.249571 IP 192.168.1.20.37506 > 239.255.0.1.7400: UDP, length 428
    19:04:54.259961 IP 192.168.1.20 > 224.0.0.22: igmp v3 report, 1 group record(s)
    19:04:54.349915 IP 192.168.1.20.37506 > 239.255.0.1.7400: UDP, length 428
    19:04:54.979863 IP 192.168.1.20 > 224.0.0.22: igmp v3 report, 1 group record(s)
    19:05:00.614182 IP 192.168.1.10.59349 > 239.255.0.1.7400: UDP, length 424
    19:05:02.349844 IP 192.168.1.20.37506 > 239.255.0.1.7400: UDP, length 428
    19:05:08.614148 IP 192.168.1.10.59349 > 239.255.0.1.7400: UDP, length 424
    19:05:08.965024 IP6 fe80::f4ae:f893:58b4:e6af > ip6-allrouters: ICMP6, router solicitation, length 8
    19:05:10.243320 IP 192.168.1.20.mdns > 224.0.0.251.mdns: 0 [9q] PTR (QM)? _ipps._tcp.local. PTR (QM)? _ftp._tcp.local. PTR (QM)? _webdav._tcp.local. PTR (QM)? _webdavs._tcp.local. PTR (QM)? _sftp-ssh._tcp.local. PTR (QM)? _smb._tcp.local. PTR (QM)? _afpovertcp._tcp.local. PTR (QM)? _nfs._tcp.local. PTR (QM)? _ipp._tcp.local. (141)
    19:05:10.243432 IP6 fe80::f4ae:f893:58b4:e6af.mdns > ff02::fb.mdns: 0 [9q] PTR (QM)? _ipps._tcp.local. PTR (QM)? _ftp._tcp.local. PTR (QM)? _webdav._tcp.local. PTR (QM)? _webdavs._tcp.local. PTR (QM)? _sftp-ssh._tcp.local. PTR (QM)? _smb._tcp.local. PTR (QM)? _afpovertcp._tcp.local. PTR (QM)? _nfs._tcp.local. PTR (QM)? _ipp._tcp.local. (141)
    19:05:10.349646 IP 192.168.1.20.37506 > 239.255.0.1.7400: UDP, length 428
    19:05:15.707326 IP6 j721e-evm > ip6-allrouters: ICMP6, router solicitation, length 16
    19:05:16.614095 IP 192.168.1.10.59349 > 239.255.0.1.7400: UDP, length 424
    19:05:17.368732 IP6 j721e-evm > ip6-allrouters: ICMP6, router solicitation, length 16
    19:05:18.349629 IP 192.168.1.20.37506 > 239.255.0.1.7400: UDP, length 428
    19:05:19.588546 IP 0.0.0.0.bootpc > 255.255.255.255.bootps: BOOTP/DHCP, Request from 70:ff:76:1e:b8:17 (oui Unknown), length 291
    19:05:21.162569 IP 0.0.0.0.bootpc > 255.255.255.255.bootps: BOOTP/DHCP, Request from 70:ff:76:1e:b8:14 (oui Unknown), length 291
    19:05:24.614033 IP 192.168.1.10.59349 > 239.255.0.1.7400: UDP, length 424
    19:05:26.349615 IP 192.168.1.20.37506 > 239.255.0.1.7400: UDP, length 428
    19:05:32.614023 IP 192.168.1.10.59349 > 239.255.0.1.7400: UDP, length 424
    19:05:34.349577 IP 192.168.1.20.37506 > 239.255.0.1.7400: UDP, length 428
    19:05:40.613993 IP 192.168.1.10.59349 > 239.255.0.1.7400: UDP, length 424
    19:05:42.349555 IP 192.168.1.20.37506 > 239.255.0.1.7400: UDP, length 428
    root@j721e-evm:~# ^C
    root@j721e-evm:~# 19:05:48.613856 IP 192.168.1.10.59349 > 239.255.0.1.7400: UDP, length 424
    19:05:50.349361 IP 192.168.1.20.37506 > 239.255.0.1.7400: UDP, length 428
    19:05:56.613780 IP 192.168.1.10.59349 > 239.255.0.1.7400: UDP, length 424
    19:05:58.349384 IP 192.168.1.20.37506 > 239.255.0.1.7400: UDP, length 428
    19:06:04.613750 IP 192.168.1.10.59349 > 239.255.0.1.7400: UDP, length 424
    19:06:06.349347 IP 192.168.1.20.37506 > 239.255.0.1.7400: UDP, length 428

    Here

    192.168.1.10 (PC1) connected to eth4

    192.168.1.20 (PC2) connected to eth1

    switch configuration :

    # Set device parameter
    devlink dev param set platform/c000000.ethernet name switch_mode value true cmode runtime

    # Add a new bridge and set its ageing time
    ip link add name br0 type bridge
    ip link set dev br0 type bridge ageing_time 1000

    # Bring down ethernet interfaces
    ip link set dev eth1 down
    ip link set dev eth2 down
    ip link set dev eth3 down
    ip link set dev eth4 down

    # Bring up ethernet interfaces
    ip link set dev eth1 up
    ip link set dev eth2 up
    ip link set dev eth3 up
    ip link set dev eth4 up

    # Add ethernet interfaces to the bridge
    ip link set dev eth1 master br0
    ip link set dev eth2 master br0
    ip link set dev eth3 master br0
    ip link set dev eth4 master br0

    # Enable VLAN filtering on the bridge
    ip link set dev br0 type bridge vlan_filtering 1

    # Add a VLAN to the bridge
    bridge vlan add dev br0 vid 1 pvid untagged self

    bridge link set dev eth1 mcast_flood on

    bridge link set dev eth4 mcast_flood on

    After doing above configuration this multicast traffic not showing in eth1 and eth4 interface.

    i hope some configuration missing here, switch should not drop any packet after doing above configuration 

  • Hi Pavan,

    Can you also add the following command to the configuration steps and see if you are able to receive multicast traffic:

    bridge vlan add dev br0 vid 1 self

    If not, then can you print the ALE table using the attached code: 

    #include <ctype.h>
    #include <error.h>
    #include <fcntl.h>
    #include <stdarg.h>
    #include <stdint.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <sys/mman.h>
    #include <unistd.h>
    
    #define MEMORY "/dev/mem"
    
    #define CPSW_9G_PORT_NUM        8
    #define CPSW_5G_PORT_NUM        4
    #define CPSW_2G_PORT_NUM        1
    
    #define ALE_TBLCTL_2G              0x4603E020
    #define ALE_TBLW2_2G               0x4603E034
    #define ALE_TBLW1_2G               0x4603E038
    #define ALE_TBLW0_2G               0x4603E03C
    
    #define ALE_TBLCTL_9G              0x0C03E020
    #define ALE_TBLW2_9G               0x0C03E034
    #define ALE_TBLW1_9G               0x0C03E038
    #define ALE_TBLW0_9G               0x0C03E03C
    
    #define ALE_TABLE_DEPTH_2G         64
    #define ALE_TABLE_DEPTH_5G         512
    #define ALE_TABLE_DEPTH_9G         1024
    
    
    #define ALE_ENTRY_EMTPY         0x0
    #define ALE_ENTRY_ADDR          0x1
    #define ALE_ENTRY_VLAN          0x2
    #define ALE_ENTRY_VLAN_ADDR     0x3
    
    int      fd;
    
    unsigned page_size, mapped_size, offset_in_page;
    void *   map_base, *virt_addr;
    int      fd;
    
    uint32_t mmio_read_32(unsigned long int addr);
    void mmio_write_32(unsigned long int addr, uint32_t value);
    
    static void unmap_address(void)
    {
        if (munmap(map_base, mapped_size) == -1)
            fprintf(stderr, "munmap");
        close(fd);
    }
    
    static int map_address(off_t target)
    {
        unsigned int width = 8 * sizeof(uint64_t);
    
        fd = open(MEMORY, (O_RDWR | O_SYNC));
        if (fd < 0)
        {
            fprintf(stderr, "Could not open %s!\n", MEMORY);
            return -5;
        }
    
        mapped_size = page_size = getpagesize();
        offset_in_page          = (unsigned)target & (page_size - 1);
        if (offset_in_page + width > page_size)
        {
            /*
             * This access spans pages.
             * Must map two pages to make it possible:
             */
            mapped_size *= 2;
        }
        map_base = mmap(NULL, mapped_size, (PROT_READ | PROT_WRITE), MAP_SHARED, fd, target & ~(off_t)(page_size - 1));
        if (map_base == MAP_FAILED)
        {
            fprintf(stderr, "Map fail\n");
            return -1;
        }
    
        virt_addr = (char *)map_base + offset_in_page;
        return 0;
    }
    
    static uint64_t read_reg(int width)
    {
        uint64_t read_result = 0x0;
    
        switch (width)
        {
            case 8:
                read_result = *(volatile uint8_t *)virt_addr;
                break;
            case 16:
                read_result = *(volatile uint16_t *)virt_addr;
                break;
            case 32:
                read_result = *(volatile uint32_t *)virt_addr;
                break;
            case 64:
                read_result = *(volatile uint64_t *)virt_addr;
                break;
            default:
                fprintf(stderr, "bad width");
        }
    
        return read_result;
    }
    
    static void write_reg(int width, uint64_t writeval)
    {
        switch (width)
        {
            case 8:
                *(volatile uint8_t *)virt_addr = writeval;
                break;
            case 16:
                *(volatile uint16_t *)virt_addr = writeval;
                break;
            case 32:
                *(volatile uint32_t *)virt_addr = writeval;
                break;
            case 64:
                *(volatile uint64_t *)virt_addr = writeval;
                break;
            default:
                fprintf(stderr, "bad width");
        }
    }
    
    uint32_t mmio_read_32(unsigned long int addr)
    {
        uint32_t v = 0;
        int      r;
    
        r = map_address(addr);
        if (r)
            return 0;
        v = read_reg(32);
        unmap_address();
        return v;
    }
    
    void mmio_write_32(unsigned long int addr, uint32_t value)
    {
        int r;
    
        r = map_address(addr);
        if (r)
            return;
        write_reg(32, value);
        unmap_address();
    }
    
    void cpsw_print_stat_with_index_nonzero(char* regName, uint32_t portnum, uint32_t regIdx, unsigned long int regAddr)
    {
        uint32_t regVal = mmio_read_32(regAddr);
        if (0 != regVal)
        {
            printf("STAT_%d_%s[%d]= %x\n", portnum, regName, regIdx, regVal);
        }
    }
    
    void cpsw_print_stat_nonzero(char* regName, uint32_t portnum, unsigned long int regAddr)
    {
        uint32_t regVal = mmio_read_32(regAddr);
        if (0 != regVal)
        {
            printf("STAT_%d_%s= %x\n",portnum, regName, regVal);
        }
    }
    
    void cpsw_2g_statsprint_nonzero()
    {
        uint32_t i, regAddr, portnum;
    
        printf("          STATS          \n");
    
        portnum = 0;
        printf("--------------------------------\n");
        printf("          PORT%d STATS          \n",portnum);
        printf("--------------------------------\n");
        cpsw_print_stat_nonzero("RXGOODFRAMES              ", portnum, (0x4603A000U));
        cpsw_print_stat_nonzero("RXBROADCASTFRAMES         ", portnum, (0x4603A004U));
        cpsw_print_stat_nonzero("RXMULTICASTFRAMES         ", portnum, (0x4603A008U));
        cpsw_print_stat_nonzero("RXCRCERRORS               ", portnum, (0x4603A010U));
        cpsw_print_stat_nonzero("RXOVERSIZEDFRAMES         ", portnum, (0x4603A018U));
        cpsw_print_stat_nonzero("RXUNDERSIZEDFRAMES        ", portnum, (0x4603A020U));
        cpsw_print_stat_nonzero("RXFRAGMENTS               ", portnum, (0x4603A024U));
        cpsw_print_stat_nonzero("ALE_DROP                  ", portnum, (0x4603A028U));
        cpsw_print_stat_nonzero("ALE_OVERRUN_DROP          ", portnum, (0x4603A02CU));
        cpsw_print_stat_nonzero("RXOCTETS                  ", portnum, (0x4603A030U));
        cpsw_print_stat_nonzero("TXGOODFRAMES              ", portnum, (0x4603A034U));
        cpsw_print_stat_nonzero("TXBROADCASTFRAMES         ", portnum, (0x4603A038U));
        cpsw_print_stat_nonzero("TXMULTICASTFRAMES         ", portnum, (0x4603A03CU));
        cpsw_print_stat_nonzero("TXOCTETS                  ", portnum, (0x4603A064U));
        cpsw_print_stat_nonzero("OCTETFRAMES64             ", portnum, (0x4603A068U));
        cpsw_print_stat_nonzero("OCTETFRAMES65T127         ", portnum, (0x4603A06CU));
        cpsw_print_stat_nonzero("OCTETFRAMES128T255        ", portnum, (0x4603A070U));
        cpsw_print_stat_nonzero("OCTETFRAMES256T511        ", portnum, (0x4603A074U));
        cpsw_print_stat_nonzero("OCTETFRAMES512T1023       ", portnum, (0x4603A078U));
        cpsw_print_stat_nonzero("OCTETFRAMES1024TUP        ", portnum, (0x4603A07CU));
        cpsw_print_stat_nonzero("NETOCTETS                 ", portnum, (0x4603A080U));
        cpsw_print_stat_nonzero("RX_BOTTOM_OF_FIFO_DROP    ", portnum, (0x4603A084U));
        cpsw_print_stat_nonzero("PORTMASK_DROP             ", portnum, (0x4603A088U));
        cpsw_print_stat_nonzero("RX_TOP_OF_FIFO_DROP       ", portnum, (0x4603A08CU));
        cpsw_print_stat_nonzero("ALE_RATE_LIMIT_DROP       ", portnum, (0x4603A090U));
        cpsw_print_stat_nonzero("ALE_VID_INGRESS_DROP      ", portnum, (0x4603A094U));
        cpsw_print_stat_nonzero("ALE_DA_EQ_SA_DROP         ", portnum, (0x4603A098U));
        cpsw_print_stat_nonzero("ALE_BLOCK_DROP            ", portnum, (0x4603A09CU));
        cpsw_print_stat_nonzero("ALE_SECURE_DROP           ", portnum, (0x4603A0A0U));
        cpsw_print_stat_nonzero("ALE_AUTH_DROP             ", portnum, (0x4603A0A4U));
        cpsw_print_stat_nonzero("ALE_UNKN_UNI              ", portnum, (0x4603A0A8U));
        cpsw_print_stat_nonzero("ALE_UNKN_UNI_BCNT         ", portnum, (0x4603A0ACU));
        cpsw_print_stat_nonzero("ALE_UNKN_MLT              ", portnum, (0x4603A0B0U));
        cpsw_print_stat_nonzero("ALE_UNKN_MLT_BCNT         ", portnum, (0x4603A0B4U));
        cpsw_print_stat_nonzero("ALE_UNKN_BRD              ", portnum, (0x4603A0B8U));
        cpsw_print_stat_nonzero("ALE_UNKN_BRD_BCNT         ", portnum, (0x4603A0BCU));
        cpsw_print_stat_nonzero("ALE_POL_MATCH             ", portnum, (0x4603A0C0U));
        cpsw_print_stat_nonzero("ALE_POL_MATCH_RED         ", portnum, (0x4603A0C4U));
        cpsw_print_stat_nonzero("ALE_POL_MATCH_YELLOW      ", portnum, (0x4603A0C8U));
        cpsw_print_stat_nonzero("TX_MEMORY_PROTECT_ERROR   ", portnum, (0x4603A17CU));
    
        portnum = 1;
        printf("--------------------------------\n");
        printf("          PORT%d STATS          \n",portnum);
        printf("--------------------------------\n");
        cpsw_print_stat_nonzero("RXGOODFRAMES              ", portnum, (0x4603A200U));
        cpsw_print_stat_nonzero("RXBROADCASTFRAMES         ", portnum, (0x4603A204U));
        cpsw_print_stat_nonzero("RXMULTICASTFRAMES         ", portnum, (0x4603A208U));
        cpsw_print_stat_nonzero("RXPAUSEFRAMES             ", portnum, (0x4603A20CU));
        cpsw_print_stat_nonzero("RXCRCERRORS               ", portnum, (0x4603A210U));
        cpsw_print_stat_nonzero("RXALIGNCODEERRORS         ", portnum, (0x4603A214U));
        cpsw_print_stat_nonzero("RXOVERSIZEDFRAMES         ", portnum, (0x4603A218U));
        cpsw_print_stat_nonzero("RXJABBERFRAMES            ", portnum, (0x4603A21CU));
        cpsw_print_stat_nonzero("RXUNDERSIZEDFRAMES        ", portnum, (0x4603A220U));
        cpsw_print_stat_nonzero("RXFRAGMENTS               ", portnum, (0x4603A224U));
        cpsw_print_stat_nonzero("ALE_DROP                  ", portnum, (0x4603A228U));
        cpsw_print_stat_nonzero("ALE_OVERRUN_DROP          ", portnum, (0x4603A22CU));
        cpsw_print_stat_nonzero("RXOCTETS                  ", portnum, (0x4603A230U));
        cpsw_print_stat_nonzero("TXGOODFRAMES              ", portnum, (0x4603A234U));
        cpsw_print_stat_nonzero("TXBROADCASTFRAMES         ", portnum, (0x4603A238U));
        cpsw_print_stat_nonzero("TXMULTICASTFRAMES         ", portnum, (0x4603A23CU));
        cpsw_print_stat_nonzero("TXPAUSEFRAMES             ", portnum, (0x4603A240U));
        cpsw_print_stat_nonzero("TXDEFERREDFRAMES          ", portnum, (0x4603A244U));
        cpsw_print_stat_nonzero("TXCOLLISIONFRAMES         ", portnum, (0x4603A248U));
        cpsw_print_stat_nonzero("TXSINGLECOLLFRAMES        ", portnum, (0x4603A24CU));
        cpsw_print_stat_nonzero("TXMULTCOLLFRAMES          ", portnum, (0x4603A250U));
        cpsw_print_stat_nonzero("TXEXCESSIVECOLLISIONS     ", portnum, (0x4603A254U));
        cpsw_print_stat_nonzero("TXLATECOLLISIONS          ", portnum, (0x4603A258U));
        cpsw_print_stat_nonzero("RXIPGERROR                ", portnum, (0x4603A25CU));
        cpsw_print_stat_nonzero("TXCARRIERSENSEERRORS      ", portnum, (0x4603A260U));
        cpsw_print_stat_nonzero("TXOCTETS                  ", portnum, (0x4603A264U));
        cpsw_print_stat_nonzero("OCTETFRAMES64             ", portnum, (0x4603A268U));
        cpsw_print_stat_nonzero("OCTETFRAMES65T127         ", portnum, (0x4603A26CU));
        cpsw_print_stat_nonzero("OCTETFRAMES128T255        ", portnum, (0x4603A270U));
        cpsw_print_stat_nonzero("OCTETFRAMES256T511        ", portnum, (0x4603A274U));
        cpsw_print_stat_nonzero("OCTETFRAMES512T1023       ", portnum, (0x4603A278U));
        cpsw_print_stat_nonzero("OCTETFRAMES1024TUP        ", portnum, (0x4603A27CU));
        cpsw_print_stat_nonzero("NETOCTETS                 ", portnum, (0x4603A280U));
        cpsw_print_stat_nonzero("RX_BOTTOM_OF_FIFO_DROP    ", portnum, (0x4603A284U));
        cpsw_print_stat_nonzero("PORTMASK_DROP             ", portnum, (0x4603A288U));
        cpsw_print_stat_nonzero("RX_TOP_OF_FIFO_DROP       ", portnum, (0x4603A28CU));
        cpsw_print_stat_nonzero("ALE_RATE_LIMIT_DROP       ", portnum, (0x4603A290U));
        cpsw_print_stat_nonzero("ALE_VID_INGRESS_DROP      ", portnum, (0x4603A294U));
        cpsw_print_stat_nonzero("ALE_DA_EQ_SA_DROP         ", portnum, (0x4603A298U));
        cpsw_print_stat_nonzero("ALE_BLOCK_DROP            ", portnum, (0x4603A29CU));
        cpsw_print_stat_nonzero("ALE_SECURE_DROP           ", portnum, (0x4603A2A0U));
        cpsw_print_stat_nonzero("ALE_AUTH_DROP             ", portnum, (0x4603A2A4U));
        cpsw_print_stat_nonzero("ALE_UNKN_UNI              ", portnum, (0x4603A2A8U));
        cpsw_print_stat_nonzero("ALE_UNKN_UNI_BCNT         ", portnum, (0x4603A2ACU));
        cpsw_print_stat_nonzero("ALE_UNKN_MLT              ", portnum, (0x4603A2B0U));
        cpsw_print_stat_nonzero("ALE_UNKN_MLT_BCNT         ", portnum, (0x4603A2B4U));
        cpsw_print_stat_nonzero("ALE_UNKN_BRD              ", portnum, (0x4603A2B8U));
        cpsw_print_stat_nonzero("ALE_UNKN_BRD_BCNT         ", portnum, (0x4603A2BCU));
        cpsw_print_stat_nonzero("ALE_POL_MATCH             ", portnum, (0x4603A2C0U));
        cpsw_print_stat_nonzero("ALE_POL_MATCH_RED         ", portnum, (0x4603A2C4U));
        cpsw_print_stat_nonzero("ALE_POL_MATCH_YELLOW      ", portnum, (0x4603A2C8U));
        cpsw_print_stat_nonzero("TX_MEMORY_PROTECT_ERROR   ", portnum, (0x4603A37CU));
    
        for (i = 0; i < 8; i++)
        {
            regAddr = 0x4603A380U + (i * 0x4U);
            cpsw_print_stat_with_index_nonzero("TX_PRI_REG             ", portnum, i, regAddr);
        }
    
        for (i = 0; i < 8; i++)
        {
            regAddr = 0x4603A3A0U + (i * 0x4U);
            cpsw_print_stat_with_index_nonzero("TX_PRI_BCNT_REG        ", portnum, i, regAddr);
        }
    
        for (i = 0; i < 8; i++)
        {
            regAddr = 0x4603A3C0U + (i * 0x4U);
            cpsw_print_stat_with_index_nonzero("TX_PRI_DROP_REG        ", portnum, i, regAddr);
        }
    
        for (i = 0; i < 8; i++)
        {
            regAddr = 0x4603A3E0U + (i * 0x4U);
            cpsw_print_stat_with_index_nonzero("TX_PRI_DROP_BCNT_REG   ", portnum, i, regAddr);
        }
    }
    
    void cpsw_ng_statsprint_nonzero(uint32_t numMacPorts)
    {
        uint32_t i, regAddr, portnum;
        uint32_t baseAddr;
        printf("          STATS          \n");
    
        portnum = 0;
        printf("--------------------------------\n");
        printf("          PORT%d STATS          \n",portnum);
        printf("--------------------------------\n");
        cpsw_print_stat_nonzero("RXGOODFRAMES              ", portnum, (0x0C03A000U));
        cpsw_print_stat_nonzero("RXBROADCASTFRAMES         ", portnum, (0x0C03A004U));
        cpsw_print_stat_nonzero("RXMULTICASTFRAMES         ", portnum, (0x0C03A008U));
        cpsw_print_stat_nonzero("RXCRCERRORS               ", portnum, (0x0C03A010U));
        cpsw_print_stat_nonzero("RXOVERSIZEDFRAMES         ", portnum, (0x0C03A018U));
        cpsw_print_stat_nonzero("RXUNDERSIZEDFRAMES        ", portnum, (0x0C03A020U));
        cpsw_print_stat_nonzero("RXFRAGMENTS               ", portnum, (0x0C03A024U));
        cpsw_print_stat_nonzero("ALE_DROP                  ", portnum, (0x0C03A028U));
        cpsw_print_stat_nonzero("ALE_OVERRUN_DROP          ", portnum, (0x0C03A02CU));
        cpsw_print_stat_nonzero("RXOCTETS                  ", portnum, (0x0C03A030U));
        cpsw_print_stat_nonzero("TXGOODFRAMES              ", portnum, (0x0C03A034U));
        cpsw_print_stat_nonzero("TXBROADCASTFRAMES         ", portnum, (0x0C03A038U));
        cpsw_print_stat_nonzero("TXMULTICASTFRAMES         ", portnum, (0x0C03A03CU));
        cpsw_print_stat_nonzero("TXOCTETS                  ", portnum, (0x0C03A064U));
        cpsw_print_stat_nonzero("OCTETFRAMES64             ", portnum, (0x0C03A068U));
        cpsw_print_stat_nonzero("OCTETFRAMES65T127         ", portnum, (0x0C03A06CU));
        cpsw_print_stat_nonzero("OCTETFRAMES128T255        ", portnum, (0x0C03A070U));
        cpsw_print_stat_nonzero("OCTETFRAMES256T511        ", portnum, (0x0C03A074U));
        cpsw_print_stat_nonzero("OCTETFRAMES512T1023       ", portnum, (0x0C03A078U));
        cpsw_print_stat_nonzero("OCTETFRAMES1024TUP        ", portnum, (0x0C03A07CU));
        cpsw_print_stat_nonzero("NETOCTETS                 ", portnum, (0x0C03A080U));
        cpsw_print_stat_nonzero("RX_BOTTOM_OF_FIFO_DROP    ", portnum, (0x0C03A084U));
        cpsw_print_stat_nonzero("PORTMASK_DROP             ", portnum, (0x0C03A088U));
        cpsw_print_stat_nonzero("RX_TOP_OF_FIFO_DROP       ", portnum, (0x0C03A08CU));
        cpsw_print_stat_nonzero("ALE_RATE_LIMIT_DROP       ", portnum, (0x0C03A090U));
        cpsw_print_stat_nonzero("ALE_VID_INGRESS_DROP      ", portnum, (0x0C03A094U));
        cpsw_print_stat_nonzero("ALE_DA_EQ_SA_DROP         ", portnum, (0x0C03A098U));
        cpsw_print_stat_nonzero("ALE_BLOCK_DROP            ", portnum, (0x0C03A09CU));
        cpsw_print_stat_nonzero("ALE_SECURE_DROP           ", portnum, (0x0C03A0A0U));
        cpsw_print_stat_nonzero("ALE_AUTH_DROP             ", portnum, (0x0C03A0A4U));
        cpsw_print_stat_nonzero("ALE_UNKN_UNI              ", portnum, (0x0C03A0A8U));
        cpsw_print_stat_nonzero("ALE_UNKN_UNI_BCNT         ", portnum, (0x0C03A0ACU));
        cpsw_print_stat_nonzero("ALE_UNKN_MLT              ", portnum, (0x0C03A0B0U));
        cpsw_print_stat_nonzero("ALE_UNKN_MLT_BCNT         ", portnum, (0x0C03A0B4U));
        cpsw_print_stat_nonzero("ALE_UNKN_BRD              ", portnum, (0x0C03A0B8U));
        cpsw_print_stat_nonzero("ALE_UNKN_BRD_BCNT         ", portnum, (0x0C03A0BCU));
        cpsw_print_stat_nonzero("ALE_POL_MATCH             ", portnum, (0x0C03A0C0U));
        cpsw_print_stat_nonzero("ALE_POL_MATCH_RED         ", portnum, (0x0C03A0C4U));
        cpsw_print_stat_nonzero("ALE_POL_MATCH_YELLOW      ", portnum, (0x0C03A0C8U));
        cpsw_print_stat_nonzero("TX_MEMORY_PROTECT_ERROR   ", portnum, (0x0C03A17CU));
    
        for (i = 0; i < 8; i++)
        {
            regAddr = 0x0C03A180U + (i * 0x4U);
            cpsw_print_stat_with_index_nonzero("TX_PRI_REG             ", portnum, i, regAddr);
        }
    
        for (i = 0; i < 8; i++)
        {
            regAddr = 0x0C03A1A0U + (i * 0x4U);
            cpsw_print_stat_with_index_nonzero("TX_PRI_BCNT_REG        ", portnum, i, regAddr);
        }
    
        for (i = 0; i < 8; i++)
        {
            regAddr = 0x0C03A1C0U + (i * 0x4U);
            cpsw_print_stat_with_index_nonzero("TX_PRI_DROP_REG        ", portnum, i, regAddr);
        }
    
        for (i = 0; i < 8; i++)
        {
            regAddr = 0x0C03A1E0U + (i * 0x4U);
            cpsw_print_stat_with_index_nonzero("TX_PRI_DROP_BCNT_REG   ", portnum, i, regAddr);
        }
    
        for (portnum = 1; portnum <= numMacPorts; portnum++)
        {
            printf("--------------------------------\n");
            printf("          PORT%d STATS          \n",portnum);
            printf("--------------------------------\n");
            baseAddr = 0x0C03A200U + ((portnum-1) * 0x200);
    
            cpsw_print_stat_nonzero("RXGOODFRAMES              ", portnum, (baseAddr));
            cpsw_print_stat_nonzero("RXBROADCASTFRAMES         ", portnum, (baseAddr + 0x4U));
            cpsw_print_stat_nonzero("RXMULTICASTFRAMES         ", portnum, (baseAddr + 0x8U));
            cpsw_print_stat_nonzero("RXPAUSEFRAMES             ", portnum, (baseAddr + 0xCU));
            cpsw_print_stat_nonzero("RXCRCERRORS               ", portnum, (baseAddr + 0x10U));
            cpsw_print_stat_nonzero("RXALIGNCODEERRORS         ", portnum, (baseAddr + 0x14U));
            cpsw_print_stat_nonzero("RXOVERSIZEDFRAMES         ", portnum, (baseAddr + 0x18U));
            cpsw_print_stat_nonzero("RXJABBERFRAMES            ", portnum, (baseAddr + 0x1CU));
            cpsw_print_stat_nonzero("RXUNDERSIZEDFRAMES        ", portnum, (baseAddr + 0x20U));
            cpsw_print_stat_nonzero("RXFRAGMENTS               ", portnum, (baseAddr + 0x24U));
            cpsw_print_stat_nonzero("ALE_DROP                  ", portnum, (baseAddr + 0x28U));
            cpsw_print_stat_nonzero("ALE_OVERRUN_DROP          ", portnum, (baseAddr + 0x2CU));
            cpsw_print_stat_nonzero("RXOCTETS                  ", portnum, (baseAddr + 0x30U));
            cpsw_print_stat_nonzero("TXGOODFRAMES              ", portnum, (baseAddr + 0x34U));
            cpsw_print_stat_nonzero("TXBROADCASTFRAMES         ", portnum, (baseAddr + 0x38U));
            cpsw_print_stat_nonzero("TXMULTICASTFRAMES         ", portnum, (baseAddr + 0x3CU));
            cpsw_print_stat_nonzero("TXPAUSEFRAMES             ", portnum, (baseAddr + 0x40U));
            cpsw_print_stat_nonzero("TXDEFERREDFRAMES          ", portnum, (baseAddr + 0x44U));
            cpsw_print_stat_nonzero("TXCOLLISIONFRAMES         ", portnum, (baseAddr + 0x48U));
            cpsw_print_stat_nonzero("TXSINGLECOLLFRAMES        ", portnum, (baseAddr + 0x4CU));
            cpsw_print_stat_nonzero("TXMULTCOLLFRAMES          ", portnum, (baseAddr + 0x50U));
            cpsw_print_stat_nonzero("TXEXCESSIVECOLLISIONS     ", portnum, (baseAddr + 0x54U));
            cpsw_print_stat_nonzero("TXLATECOLLISIONS          ", portnum, (baseAddr + 0x58U));
            cpsw_print_stat_nonzero("RXIPGERROR                ", portnum, (baseAddr + 0x5CU));
            cpsw_print_stat_nonzero("TXCARRIERSENSEERRORS      ", portnum, (baseAddr + 0x60U));
            cpsw_print_stat_nonzero("TXOCTETS                  ", portnum, (baseAddr + 0x64U));
            cpsw_print_stat_nonzero("OCTETFRAMES64             ", portnum, (baseAddr + 0x68U));
            cpsw_print_stat_nonzero("OCTETFRAMES65T127         ", portnum, (baseAddr + 0x6CU));
            cpsw_print_stat_nonzero("OCTETFRAMES128T255        ", portnum, (baseAddr + 0x70U));
            cpsw_print_stat_nonzero("OCTETFRAMES256T511        ", portnum, (baseAddr + 0x74U));
            cpsw_print_stat_nonzero("OCTETFRAMES512T1023       ", portnum, (baseAddr + 0x78U));
            cpsw_print_stat_nonzero("OCTETFRAMES1024TUP        ", portnum, (baseAddr + 0x7CU));
            cpsw_print_stat_nonzero("NETOCTETS                 ", portnum, (baseAddr + 0x80U));
            cpsw_print_stat_nonzero("RX_BOTTOM_OF_FIFO_DROP    ", portnum, (baseAddr + 0x84U));
            cpsw_print_stat_nonzero("PORTMASK_DROP             ", portnum, (baseAddr + 0x88U));
            cpsw_print_stat_nonzero("RX_TOP_OF_FIFO_DROP       ", portnum, (baseAddr + 0x8CU));
            cpsw_print_stat_nonzero("ALE_RATE_LIMIT_DROP       ", portnum, (baseAddr + 0x90U));
            cpsw_print_stat_nonzero("ALE_VID_INGRESS_DROP      ", portnum, (baseAddr + 0x94U));
            cpsw_print_stat_nonzero("ALE_DA_EQ_SA_DROP         ", portnum, (baseAddr + 0x98U));
            cpsw_print_stat_nonzero("ALE_BLOCK_DROP            ", portnum, (baseAddr + 0x9CU));
            cpsw_print_stat_nonzero("ALE_SECURE_DROP           ", portnum, (baseAddr + 0xA0U));
            cpsw_print_stat_nonzero("ALE_AUTH_DROP             ", portnum, (baseAddr + 0xA4U));
            cpsw_print_stat_nonzero("ALE_UNKN_UNI              ", portnum, (baseAddr + 0xA8U));
            cpsw_print_stat_nonzero("ALE_UNKN_UNI_BCNT         ", portnum, (baseAddr + 0xACU));
            cpsw_print_stat_nonzero("ALE_UNKN_MLT              ", portnum, (baseAddr + 0xB0U));
            cpsw_print_stat_nonzero("ALE_UNKN_MLT_BCNT         ", portnum, (baseAddr + 0xB4U));
            cpsw_print_stat_nonzero("ALE_UNKN_BRD              ", portnum, (baseAddr + 0xB8U));
            cpsw_print_stat_nonzero("ALE_UNKN_BRD_BCNT         ", portnum, (baseAddr + 0xBCU));
            cpsw_print_stat_nonzero("ALE_POL_MATCH             ", portnum, (baseAddr + 0xC0U));
            cpsw_print_stat_nonzero("ALE_POL_MATCH_RED         ", portnum, (baseAddr + 0xC4U));
            cpsw_print_stat_nonzero("ALE_POL_MATCH_YELLOW      ", portnum, (baseAddr + 0xC8U));
            cpsw_print_stat_nonzero("TX_MEMORY_PROTECT_ERROR   ", portnum, (baseAddr + 0x17CU));
    
            for (i = 0; i < 8; i++)
            {
                regAddr = (baseAddr + 0x180U) + (i * 0x4U);
                cpsw_print_stat_with_index_nonzero("TX_PRI_REG             ", portnum, i, regAddr);
            }
    
            for (i = 0; i < 8; i++)
            {
                regAddr = (baseAddr + 0x1A0U) + (i * 0x4U);
                cpsw_print_stat_with_index_nonzero("TX_PRI_BCNT_REG        ", portnum, i, regAddr);
            }
    
            for (i = 0; i < 8; i++)
            {
                regAddr = (baseAddr + 0x1C0U) + (i * 0x4U);
                cpsw_print_stat_with_index_nonzero("TX_PRI_DROP_REG        ", portnum, i, regAddr);
            }
    
            for (i = 0; i < 8; i++)
            {
                regAddr = (baseAddr + 0x1E0U) + (i * 0x4U);
                cpsw_print_stat_with_index_nonzero("TX_PRI_DROP_BCNT_REG   ", portnum, i, regAddr);
            }
        }
    }
    
    void cpsw_5g_statsprint_nonzero()
    {
        cpsw_ng_statsprint_nonzero(CPSW_5G_PORT_NUM);
    }
    
    void cpsw_9g_statsprint_nonzero()
    {
        cpsw_ng_statsprint_nonzero(CPSW_9G_PORT_NUM);
    }
    
    void cpsw_clear_stat(uint32_t regAddr)
    {
        uint32_t regVal = mmio_read_32(regAddr);
        mmio_write_32(regAddr, regVal);
    }
    
    void cpsw_2g_clear_stats()
    {
        uint32_t portnum, baseAddr, numStats;
    
        for (portnum = 0; portnum <= CPSW_2G_PORT_NUM; portnum++)
        {
            baseAddr = 0x4603A000U + (portnum * 0x200);
    
            printf("Clearing stats for port[%d]\n", portnum);
            for (numStats = 0; numStats < 128U; numStats++)
            {
                cpsw_clear_stat(baseAddr + (numStats*0x4));
            }
        }
    
        printf("--------CLEARED ALL STATS-------\n");
    }
    
    void show_ale_entry_multicast_2g(uint32_t index, uint32_t word0, uint32_t word1, uint32_t word2)
    {
        printf("---------------------------------------------\n");
        printf(" Entry %u - Multicast\n", index);
        printf("---------------------------------------------\n");
        printf("PORT_MASK        = %x\n", (word2 >>  2) & 0x1FF);
        printf("SUPER            = %u\n", (word2 >>  1) & 0x1);
        printf("MCAST_FWD_STATE  = %u\n", (word1 >> 30) & 0x3);
        printf("ENTRY_TYPE       = %u\n", (word1 >> 28) & 0x3);
        printf("MULTICAST_ADDR   = %x %x\n", (word1 >>  0) & 0xFFFF, word0);
    }
    
    void show_ale_entry_multicast_9g(uint32_t index, uint32_t word0, uint32_t word1, uint32_t word2)
    {
        printf("---------------------------------------------\n");
        printf(" Entry %u - Multicast\n", index);
        printf("---------------------------------------------\n");
        printf("PORT_MASK        = %x\n", (word2 >>  2) & 0x1FF);
        printf("SUPER            = %u\n", (word2 >>  1) & 0x1);
        printf("MCAST IGNORE BITS= %u\n", (word2 >>  0) & 0x1);
        printf("MCAST_FWD_STATE  = %u\n", (word1 >> 30) & 0x3);
        printf("ENTRY_TYPE       = %u\n", (word1 >> 28) & 0x3);
        printf("MULTICAST_ADDR   = %x %x\n", (word1 >>  0) & 0xFFFF, word0);
    }
    
    void show_ale_entry_vlan_multicast_2g(uint32_t index, uint32_t word0, uint32_t word1, uint32_t word2)
    {
        printf("---------------------------------------------\n");
        printf(" Entry %u - VLAN/Multicast\n", index);
        printf("---------------------------------------------\n");
        printf("PORT_MASK        = %x\n", (word2 >>  2) & 0x1FF);
        printf("SUPER            = %u\n", (word2 >>  1) & 0x1);
        printf("MCAST_FWD_STATE  = %u\n", (word1 >> 30) & 0x3);
        printf("ENTRY_TYPE       = %u\n", (word1 >> 28) & 0x3);
        printf("VLAN_ID          = %u\n", (word1 >> 16) & 0xFFF);
        printf("MULTICAST_ADDR   = %x %x\n", (word1 >>  0) & 0xFFFF, word0);
    }
    
    void show_ale_entry_vlan_multicast_9g(uint32_t index, uint32_t word0, uint32_t word1, uint32_t word2)
    {
        printf("---------------------------------------------\n");
        printf(" Entry %u - VLAN/Multicast\n", index);
        printf("---------------------------------------------\n");
        printf("PORT_MASK        = %x\n", (word2 >>  2) & 0x1FF);
        printf("SUPER            = %u\n", (word2 >>  1) & 0x1);
        printf("MCAST_FWD_STATE  = %u\n", (word1 >> 30) & 0x3);
        printf("ENTRY_TYPE       = %u\n", (word1 >> 28) & 0x3);
        printf("VLAN_ID          = %u\n", (word1 >> 16) & 0xFFF);
        printf("MULTICAST_ADDR   = %x %x\n", (word1 >>  0) & 0xFFFF, word0);
    }
    
    void show_ale_entry_unicast_2g(uint32_t index, uint32_t word0, uint32_t word1, uint32_t word2)
    {
        printf("---------------------------------------------\n");
        printf(" Entry %u - Unicast\n", index);
        printf("---------------------------------------------\n");
        printf("PORT_NUMBER      = %u\n", (word2 >>  2) & 0x1FF);
        printf("BLOCK            = %u\n", (word2 >>  1) & 0x1);
        printf("SECURE           = %u\n", (word2 >>  0) & 0x1);
        printf("UNICAST_TYPE     = %u\n", (word1 >> 30) & 0x3);
        printf("ENTRY_TYPE       = %u\n", (word1 >> 28) & 0x3);
        printf("UNICAST_ADDR     = %x %x\n", (word1 >>  0) & 0xFFFF, word0);
    }
    
    void show_ale_entry_unicast_9g(uint32_t index, uint32_t word0, uint32_t word1, uint32_t word2)
    {
        printf("---------------------------------------------\n");
        printf(" Entry %u - Unicast\n", index);
        printf("---------------------------------------------\n");
        printf("TRUNK            = %u\n", (word2 >> 10) & 0x1);
        printf("PORT_NUMBER      = %u\n", (word2 >> 2) & 0xF);
        printf("BLOCK            = %u\n", (word2 >> 1) & 0x1);
        printf("SECURE           = %u\n", (word2 >> 0) & 0x1);
        printf("TOUCH            = %u\n", (word1 >> 31) & 0x1);
        printf("AGEABLE          = %u\n", (word1 >> 30) & 0x1);
        printf("ENTRY_TYPE       = %u\n", (word1 >> 28) & 0x3);
        printf("UNICAST_ADDR     = %x %x\n", (word1 >>  0) & 0xFFFF, word0);
    }
    
    void show_ale_entry_oui_unicast_2g(uint32_t index, uint32_t word0, uint32_t word1, uint32_t word2)
    {
        printf("---------------------------------------------\n");
        printf(" Entry %u - OUI Unicast\n", index);
        printf("---------------------------------------------\n");
        printf("UNICAST_TYPE     = %u\n", (word1 >> 30) & 0x3);
        printf("ENTRY_TYPE       = %u\n", (word1 >> 28) & 0x3);
        printf("UNICAST_OUI      = %x %x\n", (word1 >>  0) & 0xFFFF, (word0 >> 24) & 0xFF);
    }
    
    void show_ale_entry_oui_unicast_9g(uint32_t index, uint32_t word0, uint32_t word1, uint32_t word2)
    {
        printf("---------------------------------------------\n");
        printf(" Entry %u - OUI Unicast\n", index);
        printf("---------------------------------------------\n");
        printf("ENTRY_TYPE       = %u\n", (word1 >> 28) & 0x3);
        printf("UNICAST_OUI      = %x %x\n", (word1 >>  0) & 0xFFFF, (word0 >> 24) & 0xFF);
    }
    
    void show_ale_entry_vlan_unicast_2g(uint32_t index, uint32_t word0, uint32_t word1, uint32_t word2)
    {
        printf("---------------------------------------------\n");
        printf(" Entry %u - VLAN/Unicast\n", index);
        printf("---------------------------------------------\n");
        printf("PORT_NUMBER       = %u\n", (word2 >>  2) & 0x1FF);
        printf("BLOCK             = %u\n", (word2 >>  1) & 0x1);
        printf("SECURE            = %u\n", (word2 >>  0) & 0x1);
        printf("UNICAST_TYPE      = %u\n", (word1 >> 30) & 0x3);
        printf("ENTRY_TYPE        = %u\n", (word1 >> 28) & 0x3);
        printf("VLAN_ID           = %u\n", (word1 >> 16) & 0xFFF);
        printf("UNICAST_ADDR      = %x %x\n", (word1 >>  0) & 0xFFFF, word0);
    }
    
    void show_ale_entry_vlan_unicast_9g(uint32_t index, uint32_t word0, uint32_t word1, uint32_t word2)
    {
        printf("---------------------------------------------\n");
        printf(" Entry %u - VLAN/Unicast\n", index);
        printf("---------------------------------------------\n");
        printf("TRUNK             = %u\n", (word2 >> 10) & 0x1);
        printf("PORT_NUMBER       = %u\n", (word2 >> 2) & 0x1FF);
        printf("BLOCK             = %u\n", (word2 >> 1) & 0x1);
        printf("TOUCH             = %u\n", (word1 >> 31) & 0x1);
        printf("AGEABLE           = %u\n", (word1 >> 30) & 0x1);
        printf("SECURE            = %u\n", (word2 >> 0) & 0x1);
        printf("ENTRY_TYPE        = %u\n", (word1 >> 28) & 0x3);
        printf("VLAN_ID           = %u\n", (word1 >> 16) & 0xFFF);
        printf("UNICAST_ADDR      = %x %x\n", (word1 >> 0) & 0xFFFF, word0);
    }
    
    void show_ale_entry_vlan_2g(uint32_t index, uint32_t word0, uint32_t word1, uint32_t word2)
    {
        printf("---------------------------------------------\n");
        printf(" Entry %u - VLAN\n", index);
        printf("---------------------------------------------\n");
        printf("ENTRY_TYPE        = %u\n", (word1 >> 28) & 0x3);
        printf("VLAN_ID           = %u\n", (word1 >> 16) & 0xFFF);
        printf("FORCE_UNTAG_EG    = %u\n", (word0 >> 24) & 0x1FF);
        printf("REG_MCAST_FLOOD   = %u\n", (word0 >> 16) & 0x1FF);
        printf("UNREG_MCAST_FLOOD = %u\n", (word0 >>  8) & 0x1FF);
        printf("VLAN_MEMBER_LIST  = %u\n", (word0 >>  0) & 0x1FF);
    }
    
    void show_ale_entry_vlan_inner_9g(uint32_t index, uint32_t word0, uint32_t word1, uint32_t word2)
    {
        printf("---------------------------------------------\n");
        printf(" Entry %u - VLAN INNER \n", index);
        printf("---------------------------------------------\n");
        printf("ENTRY_TYPE        = %u\n", (word1 >> 28) & 0x3);
        printf("IVLAN_ID           = %u\n", (word1 >> 16) & 0xFFF);
        printf("NO FRAG           = %u\n", (word1 >> 15) & 0x1);
        printf("REG_MCAST_FLOOD   = %u\n", (word1 >> 4) & 0x1FF);
        printf("VLAN FWD Untagged Egress = %u\n",
                                    ((word1 & 0x1) << 8) + (word0 >> 24) & 0x1FF);
        printf("LMT NEXT HDR      = %u\n", (word0 >> 23) & 0x1);
        printf("UNREG_MCAST_FLOOD = %u\n", (word0 >> 12) & 0x1FF);
        printf("VLAN_MEMBER_LIST  = %u\n", (word0 >>  0) & 0x1FF);
    }
    
    void show_ale_entry_vlan_outer_9g(uint32_t index, uint32_t word0, uint32_t word1, uint32_t word2)
    {
        printf("---------------------------------------------\n");
        printf(" Entry %u - VLAN OUTER\n", index);
        printf("---------------------------------------------\n");
        printf("ENTRY_TYPE        = %u\n", (word1 >> 28) & 0x3);
        printf("OVLAN_ID           = %u\n", (word1 >> 16) & 0xFFF);
        printf("NO FRAG           = %u\n", (word1 >> 15) & 0x1);
        printf("REG_MCAST_FLOOD   = %u\n", (word1 >> 4) & 0x1FF);
        printf("VLAN FWD Untagged Egress = %u\n",
                                    ((word1 & 0x1) << 8) + (word0 >> 24) & 0x1FF);
        printf("LMT NEXT HDR      = %u\n", (word0 >> 23) & 0x1);
        printf("UNREG_MCAST_FLOOD = %u\n", (word0 >> 12) & 0x1FF);
        printf("VLAN_MEMBER_LIST  = %u\n", (word0 >>  0) & 0x1FF);
    }
    
    void show_ale_entry_vlan_ethertype_9g(uint32_t index, uint32_t word0, uint32_t word1, uint32_t word2)
    {
        printf("---------------------------------------------\n");
        printf(" Entry %u - VLAN ETHERTYPE \n", index);
        printf("---------------------------------------------\n");
        printf("ENTRY_TYPE        = %u\n", (word1 >> 28) & 0x3);
        printf("ETHERTYPE  = %u\n", (word0 >>  0) & 0xFFFF);
    }
    
    void show_ale_entry_vlan_ip4_9g(uint32_t index, uint32_t word0, uint32_t word1, uint32_t word2)
    {
        printf("---------------------------------------------\n");
        printf(" Entry %u - VLAN IPV4 \n", index);
        printf("---------------------------------------------\n");
        printf("IGNORE BITS       = %u\n", (word2 >> 1) & 0x1F);
        printf("ENTRY_TYPE        = %u\n", (word1 >> 28) & 0x3);
        printf("IPV4 ADDR  = %u\n", word0);
    }
    
    void show_ale_entry_vlan_ip6_9g(uint32_t index, uint32_t word0, uint32_t word1, uint32_t word2)
    {
        printf("---------------------------------------------\n");
        printf(" Entry %u - VLAN IPV6 \n", index);
        printf("---------------------------------------------\n");
        printf("Understanding Gap hence not printing :(");
    }
    
    void cpsw_print_ale_table_2g()
    {
        uint32_t word0, word1, word2;
        uint32_t type;
        int i;
    
        printf("---------------------------------------------\n");
        printf("-------CPSW2G ALE TABLE----------------------\n");
        printf("---------------------------------------------\n");
    
        for (i = 0; i < ALE_TABLE_DEPTH_2G; i++)
        {
            mmio_write_32(ALE_TBLCTL_2G, i);
    
            word0 = mmio_read_32(ALE_TBLW0_2G);
            word1 = mmio_read_32(ALE_TBLW1_2G);
            word2 = mmio_read_32(ALE_TBLW2_2G);
    
            if (0)
            {
    
                printf("WORD1  = %u\n", word0);
                printf("WORD1  = %u\n", word1);
                printf("WORD1  = %u\n", word2);
            }
    
            /* ENTRY_TYPE (bits 61:60) */
            type = (word1 >> 28) & 0x3;
    
            if (type == ALE_ENTRY_EMTPY) {
                //printf(" Entry %u - Empty\n", i);
            } else if (type == ALE_ENTRY_ADDR) {
                if ((word1 >> 8) & 0x1) {
                    show_ale_entry_multicast_2g(i, word0, word1, word2);
    //            } else if ((word1 >> 30) & 0x3) {
    //                show_ale_entry_oui_unicast(i, word0, word1, word2);
                } else {
                    show_ale_entry_unicast_2g(i, word0, word1, word2);
                }
            } else if (type == ALE_ENTRY_VLAN) {
                show_ale_entry_vlan_2g(i, word0, word1, word2);
            } else if (type == ALE_ENTRY_VLAN_ADDR) {
                if ((word1 >> 8) & 0x1) {
                    show_ale_entry_vlan_multicast_2g(i, word0, word1, word2);
                } else {
                    show_ale_entry_vlan_unicast_2g(i, word0, word1, word2);
                }
            }
        }
    
        printf("Completed analysis of %u ALE entries\n", i);
    }
    
    void cpsw_print_ale_table_ng(numAleEntries)
    {
        uint32_t word0, word1, word2;
        uint32_t type;
        uint32_t vlanEntryType;
        int i;
    
        printf("---------------------------------------------\n");
        printf("-------CPSWnG ALE TABLE----------------------\n");
        printf("---------------------------------------------\n");
        for (i = 0; i < numAleEntries; i++)
        {
            mmio_write_32(ALE_TBLCTL_9G, i);
    
            word0 = mmio_read_32(ALE_TBLW0_9G);
            word1 = mmio_read_32(ALE_TBLW1_9G);
            word2 = mmio_read_32(ALE_TBLW2_9G);
    
            if (0)
            {
                printf("WORD0  = %x\n", word0);
                printf("WORD1  = %x\n", word1);
                printf("WORD2  = %x\n", word2);
            }
    
            /* ENTRY_TYPE (bits 61:60) */
            type = (word1 >> 28) & 0x3;
    
            if (type == ALE_ENTRY_EMTPY)
            {
                //printf(" Entry %u - Empty\n", i);
            }
            else if (type == ALE_ENTRY_ADDR)
            {
                if ((word1 >> 8) & 0x1)
                {
                    show_ale_entry_multicast_9g(i, word0, word1, word2);
                }
                else if ( ((word1 >> 30) & 0x3) == 0x2 )
                {
                   show_ale_entry_oui_unicast_9g(i, word0, word1, word2);
                }
                else
                {
                    show_ale_entry_unicast_9g(i, word0, word1, word2);
                }
            }
            else if (type == ALE_ENTRY_VLAN)
            {
                vlanEntryType = ((word1 >> 30) & 0x3);
                vlanEntryType |= ((word2 >> 0) & 0x1);
    
                if ( 0x0 == vlanEntryType)
                {
                    show_ale_entry_vlan_inner_9g(i, word0, word1, word2);
                }
                else if ( 0x2 == vlanEntryType)
                {
                    show_ale_entry_vlan_outer_9g(i, word0, word1, word2);
                }
                else if ( 0x4 == vlanEntryType)
                {
                    show_ale_entry_vlan_ethertype_9g(i, word0, word1, word2);
                }
                else if ( 0x6 == vlanEntryType )
                {
                    show_ale_entry_vlan_ip4_9g(i, word0, word1, word2);
                }
                else if ((word1 >> 30) & 0x1)
                {
                    show_ale_entry_vlan_ip6_9g(i, word0, word1, word2);
                }
    
            }
            else if (type == ALE_ENTRY_VLAN_ADDR)
            {
                if ((word1 >> 8) & 0x1)
                {
                    show_ale_entry_vlan_multicast_9g(i, word0, word1, word2);
                }
                else {
                    show_ale_entry_vlan_unicast_9g(i, word0, word1, word2);
                }
            }
        }
    
        printf("Completed analysis of %u ALE entries\n", i);
    }
    
    void cpsw_print_ale_table_5g()
    {
        cpsw_print_ale_table_ng(ALE_TABLE_DEPTH_5G);
    }
    
    void cpsw_print_ale_table_9g()
    {
        cpsw_print_ale_table_ng(ALE_TABLE_DEPTH_9G);
    }
    
    void cpsw_ng_clear_stats(uint32_t numMacPorts)
    {
        uint32_t portnum, baseAddr, numStats;
    
        for (portnum = 0; portnum <= numMacPorts; portnum++)
        {
            baseAddr = 0x0C03A000U + (portnum * 0x200);
    
            printf("Clearing stats for port[%d]\n",portnum);
            for (numStats = 0; numStats < 128U; numStats++)
            {
                cpsw_clear_stat(baseAddr + (numStats*0x4));
            }
        }
    
        printf("--------CLEARED ALL STATS-------\n");
    }
    
    void cpsw_5g_clear_stats()
    {
        cpsw_ng_clear_stats(CPSW_5G_PORT_NUM);
    }
    
    void cpsw_9g_clear_stats()
    {
        cpsw_ng_clear_stats(CPSW_9G_PORT_NUM);
    }
    
    int main()
    {
        cpsw_print_ale_table_9g();
        
    }
    

    Please copy this to the device, then build this using "gcc print_ale.c -o print_ale" and then execute this using "./print_ale". Share the output here.

    Thanks and Regards,
    Tanmay

  • Hi Tanmay,

    I have added extra command to configuration and complete configuration as below.

    And multicast traffic not received. please find below complete details.

    configuration:

    # Set device parameter
    devlink dev param set platform/c000000.ethernet name switch_mode value true cmode runtime

    # Add a new bridge and set its ageing time
    ip link add name br0 type bridge
    ip link set dev br0 type bridge ageing_time 1000

    # Bring down ethernet interfaces
    ip link set dev eth1 down
    ip link set dev eth2 down
    ip link set dev eth3 down
    ip link set dev eth4 down

    # Bring up ethernet interfaces
    ip link set dev eth1 up
    ip link set dev eth2 up
    ip link set dev eth3 up
    ip link set dev eth4 up

    # Add ethernet interfaces to the bridge
    ip link set dev eth1 master br0
    ip link set dev eth2 master br0
    ip link set dev eth3 master br0
    ip link set dev eth4 master br0

    # Enable VLAN filtering on the bridge
    ip link set dev br0 type bridge vlan_filtering 1

    # Add a VLAN to the bridge
    bridge vlan add dev br0 vid 1 pvid untagged self

    bridge link set dev eth1 mcast_flood on

    bridge link set dev eth4 mcast_flood on

    bridge vlan add dev br0 vid 1 self


    print_ale logs as below:

    root@j721e-evm:~#
    root@j721e-evm:~#
    root@j721e-evm:~#
    root@j721e-evm:~#
    root@j721e-evm:~# 17:54:30.002394 IP6 j721e-evm > ip6-allrouters: ICMP6, router solicitation, length 16

    root@j721e-evm:~#
    root@j721e-evm:~#
    root@j721e-evm:~# 17:55:03.512538 IP 0.0.0.0.bootpc > 255.255.255.255.bootps: BOOTP/DHCP, Request from 70:ff:76:1e:b8:14 (oui Unknown), length 291
    17:55:05.267188 IP 0.0.0.0.bootpc > 255.255.255.255.bootps: BOOTP/DHCP, Request from 70:ff:76:1e:b8:17 (oui Unknown), length 291

    root@j721e-evm:~#
    root@j721e-evm:~# vim print_ale.c
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~- print_ale.c 1/1 100%I print_ale.c 1/1 100%#include <ctype.h> I print_ale.c [Modified] 2/2 100%#include <error.h> I print_ale.c [Modified] 3/3 100%#include <fcntl.h> I print_ale.c [Modified] 4/4 100%#include <stdarg.h> I print_ale.c [Modified] 5/5 100%#include <stdint.h> I print_ale.c [Modified] 6/6 100%#include <stdio.h> I print_ale.c [Modified] 7/7 100%#include <stdlib.h> I print_ale.c [Modified] 8/8 100%#include <sys/mman.h> I print_ale.c [Modified] 9/9 100%#include <unistd.h> I print_ale.c [Modified] 10/10 100% I print_ale.c [Modified] 11/11 100%#define MEMORY "/dev/mem" I print_ale.c [Modified] 12/12 100% I print_ale.c [Modified] 13/13 100%#define CPSW_9G_PORT_NUM 8 I print_ale.c [Modified] 14/14 100%#define CPSW_5G_PORT_NUM 4 I print_ale.c [Modified] 15/15 100%#define CPSW_2G_PORT_NUM 1 I print_ale.c [Modified] 16/16 100% I print_ale.c [Modified] 17/17 100%#define ALE_TBLCTL_2G 0x4603E020 I print_ale.c [Modified] 18/18 100%#define ALE_TBLW2_2G 0x4603E034 I print_ale.c [Modified] 19/19 100%#define ALE_TBLW1_2G 0x4603E038 I print_ale.c [Modified] 20/20 100%#define ALE_TBLW0_2G0x4603E03C I print_ale.c [Modified] 21/21 100% I print_ale.c [Modified] 22/22 100%#define ALE_TBLCTL_9G 0x0C03E020 I print_ale.c [Modified] 23/23 100%#define ALE_TBLW2_9G 0x0C03E034 I print_ale.c [Modified] 24/24 100%#define ALE_TBLW1_9G 0x0C03E038 I print_ale.c [Modified] 25/25 100%#define ALE_TBLW0_9G 0x0C03E03C I print_ale.c [Modified] 26/26 100% I print_ale.c [Modified] 27/27 100%#define ALE_TABLE_DEPTH_2G 64 I print_ale.c [Modified] 28/28 100%#define ALE_TABLE_DEPTH_5G 512 I print_ale.c [Modified] 29/29 100%#define ALE_TABLE_DEPTH_9G 1024 I print_ale.c [Modified] 30/30 100% I print_ale.c [Modified] 31/31 100% I print_ale.c [Modified] 32/32 100%#define ALE_ENTRY_EMTPY 0x0 I print_ale.c [Modified] 33/33 100%#define ALE_ENTRY_ADDR 0x1 I print_ale.c [Modified] 34/34 100%#defineALE_ENTRY_VLAN0x2 I print_ale.c [Modified] 35/35 100%#define ALE_ENTRY_VLAN_ADDR 0x3 I print_ale.c [Modified] 36/36 100% I print_ale.c [Modified] 37/37 100%int fd; I print_ale.c [Modified] 38/38 100% I print_ale.c [Modified] 39/39 100%unsigned page_size, mapped_size, offset_in_page; I print_ale.c [Modified] 40/40 100%void * map_base, *virt_addr; I print_ale.c [Modified] 41/41 100%int fd; I print_ale.c [Modified] 42/42 100% I print_ale.c [Modified] 43/43 100%uint32_t mmio_read_32(unsigned long int addr); I print_ale.c [Modified] 44/44 100%void mmio_write_32(unsigned long int addr, uint32_t value); I print_ale.c [Modified] 45/45 100% I print_ale.c [Modified] 46/46 100%static void unmap_address(void) I print_ale.c [Modified] 47/47 100%{ I print_ale.c [Modified] 48/48 100%if (munmap(map_base, mapped_size) == -1) I print_ale.c [Modified] 49/49 100%fprintf(stderr, "munmap"); I print_ale.c [Modified] 50/50 100%close(fd); I print_ale.c [Modified] 51/51 100%} I print_ale.c [Modified] 52/52 100% I print_ale.c [Modified] 53/53 100%static int map_address(off_t target) I print_ale.c [Modified] 54/54 100%{ I print_ale.c [Modified] 55/55 100%unsigned int width = 8 * sizeof(uint64_t); I print_ale.c [Modified] 56/56 100% I print_ale.c [Modified] 57/57 100%I print_ale.c [Modified] 58/58 100%fd = open(MEMORY, (O_RDWR | O_SYNC)); if (fd< 0) I print_ale.c [Modified] 59/59 100%{ I print_ale.c [Modified] 60/60 100%fprintf(stderr, "Could not open %s!\n",MEMORY); I print_ale.c [Modified] 61/61 100%return -5; I print_ale.c [Modified] 62/62 100%} I print_ale.c [Modified] 63/63 100%errorfcntlstdarg.h>into.h> lib.h>ys/mman.h>unistd.h> #define MEMORY "/dev/mem" #define CPSW_9G_PORT_NUM 85G_PORT_NUM 42G_PORT_NUM 1 #define ALE_TBLCTL_2G 0x4603E020W2_2G 0x4603E0341_2G 0x4603E0380_2G 0x4603E03C #define ALE_TBLCTL_9G 0x0C03E020W2_9G 0x0C03E0341_9G 0x0C03E0380_9G 0x0C03E03C #define ALE_TABLE_DEPTH_2G 645G 5129G 1024 #define ALE_ENTRY_EMTPY 0x0ADDR 0x1VLAN 0x2_ADDR 0x3 int fd; unsigned page_size, mapped_size, offset_in_page;void * map_base, *virt_addr; int fd; uint32_t mmio_read_32(unsigned long int addr);void mmio_write_32(unsigned long int addr, uint32_t value); static void unmap_address(void){ if (munmap(map_base, mapped_size) == -1) fprintf(stderr, "munmap"); close(fd); } static int map_address(off_t target){ unsigned int width = 8 * sizeof(uint64_t); fd = open(MEMORY, (O_RDWR | O_SYNC));if (fd < 0) { fprintf(stderr, "Could not open %s!\n", MEMORY);return -5; } I print_ale.c [Modified] 64/64 100%mapped_size = page_sfcntlstdarg.h>into.h> lib.h>ys/mman.h>unistd.h> #define MEMORY "/dev/mem" #define CPSW_9G_PORT_NUM 85G_PORT_NUM 42G_PORT_NUM 1 #define ALE_TBLCTL_2G 0x4603E020W2_2G 0x4603E0341_2G 0x4603E0380_2G 0x4603E03C #define ALE_TBLCTL_9G 0x0C03E020W2_9G 0x0C03E0341_9G 0x0C03E0380_9G 0x0C03E03C #define ALE_TABLE_DEPTH_2G 645G 5129G 1024 #define ALE_ENTRY_EMTPY 0x0ADDR 0x1VLAN 0x2_ADDR 0x3 int fd; unsigned page_size, mapped_size, offset_in_page;void * map_base, *virt_addr; int fd; uint32_t mmio_read_32(unsigned long int addr);void mmio_write_32(unsigned long int addr, uint32_t value); static void unmap_address(void){ if (munmap(map_base, mapped_size) == -1) fprintf(stderr, "munmap"); close(fd); } static int map_address(off_t target){ unsigned int width = 8 * sizeof(uint64_t); fd = open(MEMORY, (O_RDWR | O_SYNC));if (fd < 0) { fprintf(stderr, "Could not open %s!\n", MEMORY);return -5; } mapped_size = page_size = getpagesize(); I print_ale.c [Modified] 65/65 100%I print_ale.c [Modified] 66/66 100%I print_ale.c [Modified] 67/67 100%I print_ale.c [Modified] 68/68 100%I print_ale.c [Modified] 69/69 100%I print_ale.c [Modified] 70/70 100%I print_ale.c [Modified] 71/71 100%I print_ale.c [Modified] 72/72 100%I print_ale.c [Modified] 73/73 100%I print_ale.c [Modified] 74/74 100%I print_ale.c [Modified] 75/75 100%I print_ale.c [Modified] 76/76 100%I print_ale.c [Modified] 77/77 100%I print_ale.c [Modified] 78/78 100%I print_ale.c [Modified] 79/79 100%I print_ale.c [Modified] 80/80 100%I print_ale.c [Modified] 81/81 100%I print_ale.c [Modified] 82/82 100%I print_ale.c [Modified] 83/83 100%I print_ale.c [Modified] 84/84 100%I print_ale.c [Modified] 85/85 100%I print_ale.c [Modified] 86/86 100%define ALE_TBLW0_9G 0x0C03E03C define ALE_TABLE_DEPTH_2G 64define ALE_TABLE_DEPTH_5G 512define ALE_TABLE_DEPTH_9G 1024 #define ALE_ENTRY_EMTPY 0x0ALE_ENTRY_ADDR 0x1#define ALE_ENTRY_VLAN 0x2ALE_ENTRY_VLAN_ADDR 0x3 int fd; unsigned page_size, mapped_size, offset_in_page;void * map_base, *virt_addr; int fd; uint32_t mmio_read_32(unsigned long int addr);void mmio_write_32(unsigned long int addr, uint32_t value); static void unmap_address(void) { if (munmap(map_base, mapped_size) == -1) fprintf(stderr, "munmap"); close(fd); } static int map_address(off_t target){ unsigned int width = 8 * sizeof(uint64_t); fd = open(MEMORY, (O_RDWR | O_SYNC));if (fd < 0) { fprintf(stderr, "Could not open %s!\n", MEMORY); return -5; } mapped_size = page_size = getpagesize(); offset_in_page = (unsigned)target & (page_size - 1); if (offset_in_page + width > page_size) { /* * This access spans pages. * Must map two pages to make it possible: */ mapped_size *= 2; }map_base = mmap(NULL, mapped_size, (PROT_READ | PROT_WRITE), MAP_SHARED, fd, target & ~(off_t)(page_size - 1)); if (map_base == MAP_FAILED) { fprintf(stderr, "Map fail\n"); return -1;} virt_addr = (char *)map_base + offset_in_page;return 0; } static uint64_t read_reg(int width){ I print_ale.c [Modified] 87/87 100%uint64_t read_res #define ALE_TABLE_DEPTH_2G 645G 5129G 1024 #define ALE_ENTRY_EMTPY 0x0ADDR 0x1VLAN 0x2_ADDR 0x3 int fd; unsigned page_size, mapped_size, offset_in_page;void * map_base, *virt_addr; int fd; uint32_t mmio_read_32(unsigned long int addr);void mmio_write_32(unsigned long int addr, uint32_t value); static void unmap_address(void){ if (munmap(map_base, mapped_size) == -1) fprintf(stderr, "munmap"); close(fd); } static int map_address(off_t target){ unsigned int width = 8 * sizeof(uint64_t); fd = open(MEMORY, (O_RDWR | O_SYNC));if (fd < 0) { fprintf(stderr, "Could not open %s!\n", MEMORY);return -5; } mapped_size = page_size = getpagesize();offset_in_page = (unsigned)target & (page_size - 1);if (offset_in_page + width > page_size) { /* * This access spans pages.Must map two pages to make it possible:/ mapped_size *= 2;} map_base = mmap(NULL, mapped_size, (PROT_READ | PROT_WRITE), MAP_SHARED, fd, target & ~(off_t)(page_size - 1));if (map_base == MAP_FAILED) { fprintf(stderr, "Map fail\n");return -1; } virt_addr = (char *)map_base + offset_in_page;return 0; } static uint64_t read_reg(int width){ uint64_t read_result = 0x0; I print_ale.c [Modified] 88/88 100%I print_ale.c [Modified] 89/89 100%I print_ale.c [Modified] 90/90 100%I print_ale.c [Modified] 91/91 100%I print_ale.c [Modified] 92/92 100%I print_ale.c [Modified] 93/93 100%I print_ale.c [Modified] 94/94 100%I print_ale.c [Modified] 95/95 100%I print_ale.c [Modified] 96/96 100%I print_ale.c [Modified] 97/97 100%I print_ale.c [Modified] 98/98 100%I print_ale.c [Modified] 99/99 100%I print_ale.c [Modified] 100/100 100%I print_ale.c [Modified] 101/101 100%I print_ale.c [Modified] 102/102 100%I print_ale.c [Modified] 103/103 100%I print_ale.c [Modified] 104/104 100%I print_ale.c [Modified] 105/105 100%I print_ale.c [Modified] 106/106 100%I print_ale.c [Modified] 107/107 100%static void unmap_address(void){ if (munmap(map_base, mapped_size) == -1) fprintf(stderr, "munmap"); close(fd);} static int map_address(off_t target){ unsigned int width = 8 * sizeof(uint64_t); fd = open(MEMORY, (O_RDWR | O_SYNC));if (fd < 0) { fprintf(stderr, "Could not open %s!\n", MEMORY); return -5;} mapped_size = page_size = getpagesize(); offset_in_page = (unsigned)target & (page_size - 1); if (offset_in_page + width > page_size) { /* * This access spans pages. * Must map two pages to make it possible: */mapped_size *= 2; } map_base = mmap(NULL, mapped_size, (PROT_READ | PROT_WRITE), MAP_SHARED, fd, target & ~(off_t)(page_size - 1));if (map_base == MAP_FAILED) { fprintf(stderr, "Map fail\n"); return -1;} virt_addr = (char *)map_base + offset_in_page;return 0;} static uint64_t read_reg(int width) { uint64_t read_result = 0x0; switch (width) { case 8: read_result = *(volatile uint8_t *)virt_addr; break; case 16: read_result = *(volatile uint16_t *)virt_addr; break;case 32: read_result = *(volatile uint32_t *)virt_addr; break;case 64: read_result = *(volatile uint64_t *)virt_addr; break; default:fprintf(stderr, "bad width"); } return read_result; I print_ale.c [Modified] 108/108 100%I print_ale.c [Modified] 109/109 100%I print_ale.c [Modified] 110/110 100%I print_ale.c [Modified] 111/111 100%I print_ale.c [Modified] 112/112 100%I print_ale.c [Modified] 113/113 100%I print_ale.c [Modified] 114/114 100%I print_ale.c [Modified] 115/115 100%I print_ale.c [Modified] 116/116 100%I print_ale.c [Modified] 117/117 100%I print_ale.c [Modified] 118/118 100%I print_ale.c [Modified] 119/119 100%I print_ale.c [Modified] 120/120 100%I print_ale.c [Modified] 121/121 100%I print_ale.c [Modified] 122/122 100%I print_ale.c [Modified] 123/123 100%I print_ale.c [Modified] 124/124 100%I print_ale.c [Modified] 125/125 100%I print_ale.c [Modified] 126/126 100%I print_ale.c [Modified] 127/127 100%I print_ale.c [Modified] 128/128 100% { /* * This access spans pages. * Must map two pages to make it possible: */ mapped_size *= 2;} map_base = mmap(NULL, mapped_size, (PROT_READ | PROT_WRITE), MAP_SHARED, fd, target & ~(off_t)(page_size - 1)); if (map_base == MAP_FAILED){ fprintf(stderr, "Map fail\n"); return -1; } virt_addr = (char *)map_base + offset_in_page; return 0; } static uint64_t read_reg(int width) { uint64_t read_result = 0x0; switch (width){ case 8: read_result = *(volatile uint8_t *)virt_addr; break; case 16: read_result = *(volatile uint16_t *)virt_addr; break; case 32: read_result = *(volatile uint32_t *)virt_addr; break case 64:read_result = *(volatile uint64_t *)virt_addr; break; default: fprintf(stderr, "bad width");} return read_result;} static void write_reg(int width, uint64_t writeval){ switch (width){ case 8: *(volatile uint8_t *)virt_addr = writeval;break; case 16: *(volatile uint16_t *)virt_addr = writeval;break; case 32: *(volatile uint32_t *)virt_addr = writeval;break; case 64: *(volatile uint64_t *)virt_addr = writeval;break; default:fprintf(stderr, "bad width");} I print_ale.c [Modified] 129/129 100%I print_ale.c [Modified] 130/130 100%I print_ale.c [Modified] 131/131 100%I print_ale.c [Modified] 132/132 100%I print_ale.c [Modified] 133/133 100%I print_ale.c [Modified] 134/134 100%I print_ale.c [Modified] 135/135 100%I print_ale.c [Modified] 136/136 100%I print_ale.c [Modified] 137/137 100%I print_ale.c [Modified] 138/138 100%I print_ale.c [Modified] 139/139 100%I print_ale.c [Modified] 140/140 100%I print_ale.c [Modified] 141/141 100%I print_ale.c [Modified] 142/142 100%I print_ale.c [Modified] 143/143 100%I print_ale.c [Modified] 144/144 100%I print_ale.c [Modified] 145/145 100%I print_ale.c [Modified] 146/146 100%I print_ale.c [Modified] 147/147 100%I print_ale.c [Modified] 148/148 100%I print_ale.c [Modified] 149/149 100% switch (width){ case 8: read_result = *(volatile uint8_t *)virt_addr; break; case 16: read_result = *(volatile uint16_t *)virt_addr; break; case 32: read_result = *(volatile uint32_t *)virt_addr; break case 64:read_result = *(volatile uint64_t *)virt_addr; break; default: fprintf(stderr, "bad width");} return read_result;} static void write_reg(int width, uint64_t writeval){ switch (width){ case 8: *(volatile uint8_t *)virt_addr = writeval;break; case 16: *(volatile uint16_t *)virt_addr = writeval;break; case 32: *(volatile uint32_t *)virt_addr = writeval;break; case 64: *(volatile uint64_t *)virt_addr = writeval;break; default:fprintf(stderr, "bad width");} uint32_t mmio_read_32(unsigned long int addr) uint32_t v = 0;int r; r = map_address(addr); if (r) return 0;v = read_reg(32); unmap_address();return v; } void mmio_write_32(unsigned long int addr, uint32_t value){ int r; r = map_address(addr); if (r)I print_ale.c [Modified] 150/150 100%I print_ale.c [Modified] 151/151 100%I print_ale.c [Modified] 152/152 100%I print_ale.c [Modified] 153/153 100%I print_ale.c [Modified] 154/154 100%I print_ale.c [Modified] 155/155 100%I print_ale.c [Modified] 156/156 100%I print_ale.c [Modified] 157/157 100%I print_ale.c [Modified] 158/158 100%I print_ale.c [Modified] 159/159 100%I print_ale.c [Modified] 160/160 100%I print_ale.c [Modified] 161/161 100%I print_ale.c [Modified] 162/162 100%I print_ale.c [Modified] 163/163 100%I print_ale.c [Modified] 164/164 100%I print_ale.c [Modified] 165/165 100%I print_ale.c [Modified] 166/166 100%I print_ale.c [Modified] 167/167 100%I print_ale.c [Modified] 168/168 100%return read_result;} static void write_reg(int width, uint64_t writeval){ switch (width){ case 8: *(volatile uint8_t *)virt_addr = writeval; break;case 16: *(volatile uint16_t *)virt_addr = writeval; break;case 32: *(volatile uint32_t *)virt_addr = writeval; break;case 64: *(volatile uint64_t *)virt_addr = writeval;break; default: fprintf(stderr, "bad width");}} uint32_t mmio_read_32(unsigned long int addr){ uint32_t v = 0;int r; r = map_address(addr);if (r) return 0; v = read_reg(32);unmap_address(); return v; } void mmio_write_32(unsigned long int addr, uint32_t value){ int r; r = map_address(addr);if (r) return; write_reg(32, value);nmap_address();} void cpsw_print_stat_with_index_nonzero(char* regName, uint32_t portnum, uint32_t regIdx, unsigned long int regAddr){ uint32_t regVal = mmio_read_32(regAddr);if (0 != regVal) { printf("STAT_%d_%s[%d]= %x\n", portnum, regName, regIdx, regVal); }} void cpsw_print_stat_nonzero(char* regName, uint32_t portnum, unsigned long int regAddr){ uint32_t regVal = mmio_read_32(regAddr);if (0 != regVal) { I print_ale.c [Modified] 169/169 100%I print_ale.c [Modified] 170/170 100%I print_ale.c [Modified] 171/171 100%I print_ale.c [Modified] 172/172 100%I print_ale.c [Modified] 173/173 100%I print_ale.c [Modified] 174/174 100%I print_ale.c [Modified] 175/175 100%I print_ale.c [Modified] 176/176 100%I print_ale.c [Modified] 177/177 100%I print_ale.c [Modified] 178/178 100%I print_ale.c [Modified] 179/179 100%I print_ale.c [Modified] 180/180 100%I print_ale.c [Modified] 181/181 100%I print_ale.c [Modified] 182/182 100%I print_ale.c [Modified] 183/183 100%I print_ale.c [Modified] 184/184 100%I print_ale.c [Modified] 185/185 100%I print_ale.c [Modified] 186/186 100%I print_ale.c [Modified] 187/187 100%I print_ale.c [Modified] 188/188 100%I print_ale.c [Modified] 189/189 100%} uint32_t mmio_read_32(unsigned long int addr) uint32_t v = 0;int r; r = map_address(addr); if (r) return 0;v = read_reg(32); unmap_address();return v; } void mmio_write_32(unsigned long int addr, uint32_t value){ int r; r = map_address(addr); if (r) return;write_reg(32, value); unmap_address(); } void cpsw_print_stat_with_index_nonzero(char* regName, uint32_t portnum, uint32_t regIdx, unsigned long int regAddr){uint32_t regVal = mmio_read_32(regAddr);0 != regVal){ printf("STAT_%d_%s[%d]= %x\n", portnum, regName, regIdx, regVal);} } void cpsw_print_stat_nonzero(char* regName, uint32_t portnum, unsigned long int regAddr){ uint32_t regVal = mmio_read_32(regAddr);f (0 != regVal){ printf("STAT_%d_%s= %x\n",portnum, regName, regVal);} } void cpsw_2g_statsprint_nonzero(){uint32_t i, regAddr, portnum; printf(" STATS \n"); portnum = 0; printf("--------------------------------\n");printf(" PORT%d STATS \n",portnum); printf("--------------------------------\n"); cpsw_print_stat_nonzero("RXGOODFRAMES ", portnum, (0x4603A000U));cpsw_print_stat_nonzero("RXBROADCASTFRAMES ", portnum, (0x4603A004U)); cpsw_print_stat_nonzero("RXMULTICASTFRAMES ", portnum, (0x4603A008U)); cpsw_print_stat_nonzero("RXCRCERRORS ", portnum, (0x4603A010U));cpsw_print_stat_nonzero("RXOVERSIZEDFRAMES ", portnum, (0x4603A018U));cpsw_print_stat_nonzero("RXUNDERSIZEDFRAMES ", portnum, (0x4603A020U));cpsw_print_stat_nonzero("RXFRAGMENTS ", portnum, (0x4603A024U));I print_ale.c [Modified] 190/190 100%I print_ale.c [Modified] 191/191 100%I print_ale.c [Modified] 192/192 100%I print_ale.c [Modified] 193/193 100%I print_ale.c [Modified] 194/194 100%I print_ale.c [Modified] 195/195 100%I print_ale.c [Modified] 196/196 100%I print_ale.c [Modified] 197/197 100%I print_ale.c [Modified] 198/198 100%I print_ale.c [Modified] 199/199 100%I print_ale.c [Modified] 200/200 100%I print_ale.c [Modified] 201/201 100%I print_ale.c [Modified] 202/202 100%I print_ale.c [Modified] 203/203 100%I print_ale.c [Modified] 204/204 100%I print_ale.c [Modified] 205/205 100%I print_ale.c [Modified] 206/206 100%I print_ale.c [Modified] 207/207 100%I print_ale.c [Modified] 208/208 100%I print_ale.c [Modified] 209/209 100%I print_ale.c [Modified] 210/210 100%I print_ale.c [Modified] 211/211 100%I print_ale.c [Modified] 212/212 100%write_reg(32, value); unmap_address();} void cpsw_print_stat_with_index_nonzero(char* regName, uint32_t portnum, uint32_t regIdx, unsigned long int regAddr){ uint32_t regVal = mmio_read_32(regAddr);if (0 != regVal){ printf("STAT_%d_%s[%d]= %x\n", portnum, regName, regIdx, regVal);} } void cpsw_print_stat_nonzero(char* regName, uint32_t portnum, unsigned long int regAddr){uint32_t regVal = mmio_read_32(regAddr); if (0 != regVal) { printf("STAT_%d_%s= %x\n",portnum, regName, regVal);}} void cpsw_2g_statsprint_nonzero(){ int32_t i, regAddr, portnum; printf(" STATS \n"); portnum = 0;printf("--------------------------------\n");printf(" PORT%d STATS \n",portnum);printf("--------------------------------\n");cpsw_print_stat_nonzero("RXGOODFRAMES ", portnum, (0x4603A000U));cpsw_print_stat_nonzero("RXBROADCASTFRAMES ", portnum, (0x4603A004U)); cpsw_print_stat_nonzero("RXMULTICASTFRAMES ", portnum, (0x4603A008U));cpsw_print_stat_nonzero("RXCRCERRORS ", portnum, (0x4603A010U)); cpsw_print_stat_nonzero("RXOVERSIZEDFRAMES ", portnum, (0x4603A018U)); cpsw_print_stat_nonzero("RXUNDERSIZEDFRAMES ", portnum, (0x4603A020U));cpsw_print_stat_nonzero("RXFRAGMENTS ", portnum, (0x4603A024U));cpsw_print_stat_nonzero("ALE_DROP ", portnum, (0x4603A028U));cpsw_print_stat_nonzero("ALE_OVERRUN_DROP ", portnum, (0x4603A02CU));cpsw_print_stat_nonzero("RXOCTETS ", portnum, (0x4603A030U));cpsw_print_stat_nonzero("TXGOODFRAMES ", portnum, (0x4603A034U)); cpsw_print_stat_nonzero("TXBROADCASTFRAMES ", portnum, (0x4603A038U));cpsw_print_stat_nonzero("TXMULTICASTFRAMES ", portnum, (0x4603A03CU)); cpsw_print_stat_nonzero("TXOCTETS ", portnum, (0x4603A064U)); cpsw_print_stat_nonzero("OCTETFRAMES64 ", portnum, (0x4603A068U));cpsw_print_stat_nonzero("OCTETFRAMES65T127 ", portnum, (0x4603A06CU));cpsw_print_stat_nonzero("OCTETFRAMES128T255 ", portnum, (0x4603A070U));cpsw_print_stat_nonzero("OCTETFRAMES256T511 ", portnum, (0x4603A074U));cpsw_print_stat_nonzero("OCTETFRAMES512T1023 ", portnum, (0x4603A078U));cpsw_print_stat_nonzero("OCTETFRAMES1024TUP ", portnum, (0x4603A07CU));cpsw_print_stat_nonzero("NETOCTETS ", portnum, (0x4603A080U));cpsw_print_stat_nonzero("RX_BOTTOM_OF_FIFO_DROP ", portnum, (0x4603A084U));cpsw_print_stat_nonzero("PORTMASK_DROP ", portnum, (0x4603A088U));_TOP_OF_FIFO_DROP ", portnum, (0x4603A08CALE_RATE_LIMIT_DROP ", portnum, (0x4603A090ALE_VID_INGRESS_DROP ", portnum, (0x4603A094ALE_DA_EQ_SA_DROP ", portnum, (0x4603A098ALE_BLOCK_DROP ", portnum, (0x4603A09CALE_SECURE_DROP ", portnum, (0x4603A0AALE_AUTH_DROP ", portnum, (0x4603A0AI print_ale.c [Modified] 213/213 100%I print_ale.c [Modified] 214/214 100%I print_ale.c [Modified] 215/215 100%I print_ale.c [Modified] 216/216 100%I print_ale.c [Modified] 217/217 100%I print_ale.c [Modified] 218/218 100%I print_ale.c [Modified] 219/219 100%I print_ale.c [Modified] 220/220 100%I print_ale.c [Modified] 221/221 100%I print_ale.c [Modified] 222/222 100%I print_ale.c [Modified] 223/223 100%I print_ale.c [Modified] 224/224 100%I print_ale.c [Modified] 225/225 100%I print_ale.c [Modified] 226/226 100%I print_ale.c [Modified] 227/227 100%I print_ale.c [Modified] 228/228 100%I print_ale.c [Modified] 229/229 100%I print_ale.c [Modified] 230/230 100%I print_ale.c [Modified] 231/231 100%I print_ale.c [Modified] 232/232 100%I print_ale.c [Modified] 233/233 100%I print_ale.c [Modified] 234/234 100% void cpsw_2g_statsprint_nonzero(){uint32_t i, regAddr, portnum; printf(" STATS \n"); portnum = 0; printf("--------------------------------\n");printf(" PORT%d STATS \n",portnum); printf("--------------------------------\n"); cpsw_print_stat_nonzero("RXGOODFRAMES ", portnum, (0x4603A000U));cpsw_print_stat_nonzero("RXBROADCASTFRAMES ", portnum, (0x4603A004U)); cpsw_print_stat_nonzero("RXMULTICASTFRAMES ", portnum, (0x4603A008U)); cpsw_print_stat_nonzero("RXCRCERRORS ", portnum, (0x4603A010U));cpsw_print_stat_nonzero("RXOVERSIZEDFRAMES ", portnum, (0x4603A018U));cpsw_print_stat_nonzero("RXUNDERSIZEDFRAMES ", portnum, (0x4603A020U));cpsw_print_stat_nonzero("RXFRAGMENTS ", portnum, (0x4603A024U));cpsw_print_stat_nonzero("ALE_DROP ", portnum, (0x4603A028U));cpsw_print_stat_nonzero("ALE_OVERRUN_DROP ", portnum, (0x4603A02CU)); cpsw_print_stat_nonzero("RXOCTETS ", portnum, (0x4603A030U));cpsw_print_stat_nonzero("TXGOODFRAMES ", portnum, (0x4603A034U)); cpsw_print_stat_nonzero("TXBROADCASTFRAMES ", portnum, (0x4603A038U)); cpsw_print_stat_nonzero("TXMULTICASTFRAMES ", portnum, (0x4603A03CU));cpsw_print_stat_nonzero("TXOCTETS ", portnum, (0x4603A064U));cpsw_print_stat_nonzero("OCTETFRAMES64 ", portnum, (0x4603A068U));cpsw_print_stat_nonzero("OCTETFRAMES65T127 ", portnum, (0x4603A06CU));cpsw_print_stat_nonzero("OCTETFRAMES128T255 ", portnum, (0x4603A070U));cpsw_print_stat_nonzero("OCTETFRAMES256T511 ", portnum, (0x4603A074U));cpsw_print_stat_nonzero("OCTETFRAMES512T1023 ", portnum, (0x4603A078U));cpsw_print_stat_nonzero("OCTETFRAMES1024TUP ", portnum, (0x4603A07CU));cpsw_print_stat_nonzero("NETOCTETS ", portnum, (0x4603A080U));_BOTTOM_OF_FIFO_DROP ", portnum, (0x4603A084PORTMASK_DROP ", portnum, (0x4603A088_TOP_OF_FIFO_DROP ", portnum, (0x4603A08CALE_RATE_LIMIT_DROP ", portnum, (0x4603A09ALE_VID_INGRESS_DROP ", portnum, (0x4603A094ALE_DA_EQ_SA_DROP ", portnum, (0x4603A098ALE_BLOCK_DROP ", portnum, (0x4603A09CSECURE_DROP ", portnum, (0x4603A0A0AUTH_DROP ", portnum, (0x4603A0A4ALE_UNKN_UNI ", portnum, (0x4603A0A8ALE_UNKN_UNI_BCNT ", portnum, (0x4603A0ACALE_UNKN_MLT ", portnum, (0x4603A0B0ALE_UNKN_MLT_BCNT ", portnum, (0x4603A0B4ALE_UNKN_BRD ", portnum, (0x4603A0B8ALE_UNKN_BRD_BCNT ", portnum, (0x4603A0BCALE_POL_MATCH ", portnum, (0x4603A0C0ALE_POL_MATCH_RED ", portnum, (0x4603A0C4ALE_POL_MATCH_YELLOW ", portnum, (0x4603A0C8TX_MEMORY_PROTECT_ERROR ", portnum, (0x4603A17C portnum = 1; printf("--------------------------------\n"); printf(" PORT%d STATS \n",portnum); printf("--------------------------------\n"); RXGOODFRAMES ", portnum, (0x4603A20RXBROADCASTFRAMES ", portnum, (0x4603A20RXMULTICASTFRAMES ", portnum, (0x4603A20RXPAUSEFRAMES ", portnum, (0x4603A20RXCRCERRORS ", portnum, (0x4603A21RXALIGNCODEERRORS ", portnum, (0x4603A21cpsw_print_stat_nonzero("RI print_ale.c [Modified] 235/235 100%I print_ale.c [Modified] 236/236 100%I print_ale.c [Modified] 237/237 100%I print_ale.c [Modified] 238/238 100%I print_ale.c [Modified] 239/239 100%I print_ale.c [Modified] 240/240 100%I print_ale.c [Modified] 241/241 100%I print_ale.c [Modified] 242/242 100%I print_ale.c [Modified] 243/243 100%I print_ale.c [Modified] 244/244 100%I print_ale.c [Modified] 245/245 100%I print_ale.c [Modified] 246/246 100%I print_ale.c [Modified] 247/247 100%I print_ale.c [Modified] 248/248 100%I print_ale.c [Modified] 249/249 100%I print_ale.c [Modified] 250/250 100%I print_ale.c [Modified] 251/251 100%I print_ale.c [Modified] 252/252 100%I print_ale.c [Modified] 253/253 100%I print_ale.c [Modified] 254/254 100%I print_ale.c [Modified] 255/255 100%I print_ale.c [Modified] 256/256 100%I print_ale.c [Modified] 257/257 100%cpsw_print_stat_nonzero("TXOCTETS ", portnum, (0x4603A064U)); cpsw_print_stat_nonzero("OCTETFRAMES64 ", portnum, (0x4603A068U)); cpsw_print_stat_nonzero("OCTETFRAMES65T127 ", portnum, (0x4603A06CU));cpsw_print_stat_nonzero("OCTETFRAMES128T255 ", portnum, (0x4603A070U));cpsw_print_stat_nonzero("OCTETFRAMES256T511 ", portnum, (0x4603A074U));cpsw_print_stat_nonzero("OCTETFRAMES512T1023 ", portnum, (0x4603A078U));cpsw_print_stat_nonzero("OCTETFRAMES1024TUP ", portnum, (0x4603A07CU));cpsw_print_stat_nonzero("NETOCTETS ", portnum, (0x4603A080U));cpsw_print_stat_nonzero("RX_BOTTOM_OF_FIFO_DROP ", portnum, (0x4603A084U));cpsw_print_stat_nonzero("PORTMASK_DROP ", portnum, (0x4603A088U));cpsw_print_stat_nonzero("RX_TOP_OF_FIFO_DROP ", portnum, (0x4603A08CU));ALE_RATE_LIMIT_DROP ", portnum, (0x4603A09ALE_VID_INGRESS_DROP ", portnum, (0x4603A09ALE_DA_EQ_SA_DROP ", portnum, (0x4603A09ALE_BLOCK_DROP ", portnum, (0x4603A09CALE_SECURE_DROP ", portnum, (0x4603A0A0ALE_AUTH_DROP ", portnum, (0x4603A0A4ALE_UNKN_UNI ", portnum, (0x4603A0A8UNKN_UNI_BCNT ", portnum, (0x4603A0ACUNKN_MLT ", portnum, (0x4603A0B0ALE_UNKN_MLT_BCNT ", portnum, (0x4603A0B4ALE_UNKN_BRD ", portnum, (0x4603A0B8ALE_UNKN_BRD_BCNT ", portnum, (0x4603A0BCALE_POL_MATCH ", portnum, (0x4603A0C0ALE_POL_MATCH_RED ", portnum, (0x4603A0CALE_POL_MATCH_YELLOW ", portnum, (0x4603A0CTX_MEMORY_PROTECT_ERROR ", portnum, (0x4603A17 portnum = 1; printf("--------------------------------\n"); printf(" PORT%d STATS \n",portnum); printf("--------------------------------\n"); GOODFRAMES ", portnum, (0x4603A200RXBROADCASTFRAMES ", portnum, (0x4603A204MULTICASTFRAMES ", portnum, (0x4603A208RXPAUSEFRAMES ", portnum, (0x4603A20CRXCRCERRORS ", portnum, (0x4603A210RXALIGNCODEERRORS ", portnum, (0x4603A214RXOVERSIZEDFRAMES ", portnum, (0x4603A218RXJABBERFRAMES ", portnum, (0x4603A21CRXUNDERSIZEDFRAMES ", portnum, (0x4603A220RXFRAGMENTS ", portnum, (0x4603A224DROP ", portnum, (0x4603A228OVERRUN_DROP ", portnum, (0x4603A22CRXOCTETS ", portnum, (0x4603A230TXGOODFRAMES ", portnum, (0x4603A234TXBROADCASTFRAMES ", portnum, (0x4603A238TXMULTICASTFRAMES ", portnum, (0x4603A23CTXPAUSEFRAMES ", portnum, (0x4603A240TXDEFERREDFRAMES ", portnum, (0x4603A244COLLISIONFRAMES ", portnum, (0x4603A248cpsw_print_stat_nonzero("TXSINGLECOLLFRAMES ", portnum, (0x4603A24CU));cpsw_print_stat_nonzero("TXMULTCOLLFRAMES ", portnum, (0x4603A250U));cpsw_print_stat_nonzero("TXEXCESSIVECOLLISIONS ", portnum, (0x4603A254U));cpsw_print_stat_nonzero("TXLATECOLLISIONS ", portnum, (0x4603A258U));cpsw_print_stat_nonzero("RXIPGERROR ", portnum, (0x4603A25CU));TXCARRIERSENSEERRORS ", portnum, (0x4603A26TXOCTETS ", portnum, (0x4603A26OCTETFRAMES64 ", portnum, (0x4603A26OCTETFRAMES65T127 ", portnum, (0x4603A26OCTETFRAMES128T255 ", portnum, (0x4603A27OCTETFRAMES256T511 ", portnum, (0x4603A27 I print_ale.c [Modified] 258/258 100%I print_ale.c [Modified] 259/259 100%I print_ale.c [Modified] 260/260 100%I print_ale.c [Modified] 261/261 100%I print_ale.c [Modified] 262/262 100%I print_ale.c [Modified] 263/263 100%I print_ale.c [Modified] 264/264 100%I print_ale.c [Modified] 265/265 100%I print_ale.c [Modified] 266/266 100%I print_ale.c [Modified] 267/267 100%I print_ale.c [Modified] 268/268 100%I print_ale.c [Modified] 269/269 100%I print_ale.c [Modified] 270/270 100%I print_ale.c [Modified] 271/271 100%I print_ale.c [Modified] 272/272 100%I print_ale.c [Modified] 273/273 100%I print_ale.c [Modified] 274/274 100%I print_ale.c [Modified] 275/275 100%I print_ale.c [Modified] 276/276 100%I print_ale.c [Modified] 277/277 100%I print_ale.c [Modified] 278/278 100%I print_ale.c [Modified] 279/279 100%I print_ale.c [Modified] 280/280 100%I print_ale.c [Modified] 281/281 100%I print_ale.c [Modified] 282/282 100%I print_ale.c [Modified] 283/283 100%I print_ale.c [Modified] 284/284 100%I print_ale.c [Modified] 285/285 100%I print_ale.c [Modified] 286/286 100%I print_ale.c [Modified] 287/287 100%I print_ale.c [Modified] 288/288 100%I print_ale.c [Modified] 289/289 100%I print_ale.c [Modified] 290/290 100%I print_ale.c [Modified] 291/291 100%I print_ale.c [Modified] 292/292 100%I print_ale.c [Modified] 293/293 100%I print_ale.c [Modified] 294/294 100%I print_ale.c [Modified] 295/295 100%I print_ale.c [Modified] 296/296 100%I print_ale.c [Modified] 297/297 100%I print_ale.c [Modified] 298/298 100%I print_ale.c [Modified] 299/299 100%I print_ale.c [Modified] 300/300 100%I print_ale.c [Modified] 301/301 100%ALE_UNKN_UNI_BCNT ", portnum, (0x4603A2ACALE_UNKN_MLT ", portnum, (0x4603A2B0ALE_UNKN_MLT_BCNT ", portnum, (0x4603A2B4ALE_UNKN_BRD ", portnum, (0x4603A2B8ALE_UNKN_BRD_BCNT ", portnum, (0x4603A2BCALE_POL_MATCH ", portnum, (0x4603A2C0ALE_POL_MATCH_RED ", portnum, (0x4603A2C4ALE_POL_MATCH_YELLOW ", portnum, (0x4603A2C8TX_MEMORY_PROTECT_ERROR ", portnum, (0x4603A37C for (i = 0; i < 8; i++) { regAddr = 0x4603A380U + (i * 0x4U); cpsw_print_stat_with_index_nonzero("TX_PRI_REG ", portnum, i, regAddr);} for (i = 0; i < 8; i++) { regAddr = 0x4603A3A0U + (i * 0x4U); cpsw_print_stat_with_index_nonzero("TX_PRI_BCNT_REG ", portnum, i, regAddr);} for (i = 0; i < 8; i++) { regAddr = 0x4603A3C0U + (i * 0x4U); cpsw_print_stat_with_index_nonzero("TX_PRI_DROP_REG ", portnum, i, regAddr);} for (i = 0; i < 8; i++){ regAddr = 0x4603A3E0U + (i * 0x4U); ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~I print_ale.c [Modified] 302/302 100%I print_ale.c [Modified] 303/303 100%I print_ale.c [Modified] 304/304 100%I print_ale.c [Modified] 305/305 100%I print_ale.c [Modified] 306/306 100%I print_ale.c [Modified] 307/307 100%I print_ale.c [Modified] 308/308 100%I print_ale.c [Modified] 309/309 100%I print_ale.c [Modified] 310/310 100%I print_ale.c [Modified] 311/311 100%I print_ale.c [Modified] 312/312 100%I print_ale.c [Modified] 313/313 100%I print_ale.c [Modified] 314/314 100%I print_ale.c [Modified] 315/315 100%I print_ale.c [Modified] 316/316 100%I print_ale.c [Modified] 317/317 100%I print_ale.c [Modified] 318/318 100%I print_ale.c [Modified] 319/319 100%I print_ale.c [Modified] 320/320 100%I print_ale.c [Modified] 321/321 100%I print_ale.c [Modified] 322/322 100%I print_ale.c [Modified] 323/323 100%I print_ale.c [Modified] 324/324 100%I print_ale.c [Modified] 325/325 100%I print_ale.c [Modified] 326/326 100%I print_ale.c [Modified] 327/327 100%I print_ale.c [Modified] 328/328 100%I print_ale.c [Modified] 329/329 100%I print_ale.c [Modified] 330/330 100%I print_ale.c [Modified] 331/331 100%I print_ale.c [Modified] 332/332 100%I print_ale.c [Modified] 333/333 100%I print_ale.c [Modified] 334/334 100%I print_ale.c [Modified] 335/335 100%I print_ale.c [Modified] 336/336 100%I print_ale.c [Modified] 337/337 100%I print_ale.c [Modified] 338/338 100%I print_ale.c [Modified] 339/339 100%I print_ale.c [Modified] 340/340 100%I print_ale.c [Modified] 341/341 100%I print_ale.c [Modified] 342/342 100%I print_ale.c [Modified] 343/343 100%I print_ale.c [Modified] 344/344 100%I print_ale.c [Modified] 345/345 100%I print_ale.c [Modified] 346/346 100%} for (i = 0; i < 8; i++) { regAddr = 0x4603A3A0U + (i * 0x4U); cpsw_print_stat_with_index_nonzero("TX_PRI_BCNT_REG ", portnum, i, regAddr);} for (i = 0; i < 8; i++) { regAddr = 0x4603A3C0U + (i * 0x4U); cpsw_print_stat_with_index_nonzero("TX_PRI_DROP_REG ", portnum, i, regAddr);} for (i = 0; i < 8; i++){ regAddr = 0x4603A3E0U + (i * 0x4U); cpsw_print_stat_with_index_nonzero("TX_PRI_DROP_BCNT_REG ", portnum, i, regAddr);} } void cpsw_ng_statsprint_nonzero(uint32_t numMacPorts){ uint32_t i, regAddr, portnum;uint32_t baseAddr; printf(" STATS \n"); portnum = 0;printf("--------------------------------\n");printf(" PORT%d STATS \n",portnum);printf("--------------------------------\n");cpsw_print_stat_nonzero("RXGOODFRAMES ", portnum, (0x0C03A000U)); cpsw_print_stat_nonzero("RXBROADCASTFRAMES ", portnum, (0x0C03A004U)); cpsw_print_stat_nonzero("RXMULTICASTFRAMES ", portnum, (0x0C03A008U)); cpsw_print_stat_nonzero("RXCRCERRORS ", portnum, (0x0C03A010U)); cpsw_print_stat_nonzero("RXOVERSIZEDFRAMES ", portnum, (0x0C03A018U)); cpsw_print_stat_nonzero("RXUNDERSIZEDFRAMES ", portnum, (0x0C03A020U)); cpsw_print_stat_nonzero("RXFRAGMENTS ", portnum, (0x0C03A024U)); cpsw_print_stat_nonzero("ALE_DROP ", portnum, (0x0C03A028U)); cpsw_print_stat_nonzero("ALE_OVERRUN_DROP ", portnum, (0x0C03A02CU)); cpsw_print_stat_nonzero("RXOCTETS ", portnum, (0x0C03A030U)); cpsw_print_stat_nonzero("TXGOODFRAMES ", portnum, (0x0C03A034U)); cpsw_print_stat_nonzero("TXBROADCASTFRAMES ", portnum, (0x0C03A038U)); cpsw_print_stat_nonzero("TXMULTICASTFRAMES ", portnum, (0x0C03A03CU)); cpsw_print_stat_nonzero("TXOCTETS ", portnum, (0x0C03A064U)); cpsw_print_stat_nonzero("OCTETFRAMES64 ", portnum, (0x0C03A068U)); cpsw_print_stat_nonzero("OCTETFRAMES65T127 ", portnum, (0x0C03A06CU)); cpsw_print_stat_nonzero("OCTETFRAMES128T255 ", portnum, (0x0C03A070U)); cpsw_print_stat_nonzero("OCTETFRAMES256T511 ", portnum, (0x0C03A074U)); cpsw_print_stat_nonzero("OCTETFRAMES512T1023 ", portnum, (0x0C03A078U)); cpsw_print_stat_nonzero("OCTETFRAMES1024TUP ", portnum, (0x0C03A07CU)); cpsw_print_stat_nonzero("NETOCTETS ", portnum, (0x0C03A080U)); cpsw_print_stat_nonzero("RX_BOTTOM_OF_FIFO_DROP ", portnum, (0x0C03A084U)); cpsw_print_stat_nonzero("PORTMASK_DROP ", portnum, (0x0C03A088U)); cpsw_print_stat_nonzero("RX_TOP_OF_FIFO_DROP ", portnum, (0x0C03A08CU)); cpsw_print_stat_nonzero("ALE_RATE_LIMIT_DROP ", portnum, (0x0C03A090U)); cpsw_print_stat_nonzero("ALE_VID_INGRESS_DROP ", portnum, (0x0C03A094U)); cpsw_print_stat_nonzero("ALE_DA_EQ_SA_DROP ", portnum, (0x0C03A098U)); cpsw_print_stat_nonzero("ALE_BLOCK_DROP ", portnum, (0x0C03A09CU)); cpsw_print_stat_nonzero("ALE_SECURE_DROP ", portnum, (0x0C03A0A0U)); cpsw_print_stat_nonzero("ALE_AUTH_DROP ", portnum, (0x0C03A0A4U)); cpsw_print_stat_nonzero("ALE_UNKN_UNI ", portnum, (0x0C03A0A8U)); I print_ale.c [Modified] 347/347 100%I print_ale.c [Modified] 348/348 100%I print_ale.c [Modified] 349/349 100%I print_ale.c [Modified] 350/350 100%I print_ale.c [Modified] 351/351 100%I print_ale.c [Modified] 352/352 100%I print_ale.c [Modified] 353/353 100%I print_ale.c [Modified] 354/354 100%I print_ale.c [Modified] 355/355 100%I print_ale.c [Modified] 356/356 100%I print_ale.c [Modified] 357/357 100%I print_ale.c [Modified] 358/358 100%I print_ale.c [Modified] 359/359 100%I print_ale.c [Modified] 360/360 100%I print_ale.c [Modified] 361/361 100%I print_ale.c [Modified] 362/362 100%I print_ale.c [Modified] 363/363 100%I print_ale.c [Modified] 364/364 100%I print_ale.c [Modified] 365/365 100%I print_ale.c [Modified] 366/366 100%I print_ale.c [Modified] 367/367 100%I print_ale.c [Modified] 368/368 100%I print_ale.c [Modified] 369/369 100%uint32_t i, regAddr, portnum;uint32_t baseAddr;printf(" STATS \n"); portnum = 0; printf("--------------------------------\n"); printf(" PORT%d STATS \n",portnum);printf("--------------------------------\n");cpsw_print_stat_nonzero("RXGOODFRAMES ", portnum, (0x0C03A000U));cpsw_print_stat_nonzero("RXBROADCASTFRAMES ", portnum, (0x0C03A004U));cpsw_print_stat_nonzero("RXMULTICASTFRAMES ", portnum, (0x0C03A008U));cpsw_print_stat_nonzero("RXCRCERRORS ", portnum, (0x0C03A010U)); cpsw_print_stat_nonzero("RXOVERSIZEDFRAMES ", portnum, (0x0C03A018U));cpsw_print_stat_nonzero("RXUNDERSIZEDFRAMES ", portnum, (0x0C03A020U));cpsw_print_stat_nonzero("RXFRAGMENTS ", portnum, (0x0C03A024U));cpsw_print_stat_nonzero("ALE_DROP ", portnum, (0x0C03A028U));cpsw_print_stat_nonzero("ALE_OVERRUN_DROP ", portnum, (0x0C03A02CU));cpsw_print_stat_nonzero("RXOCTETS ", portnum, (0x0C03A030U)); cpsw_print_stat_nonzero("TXGOODFRAMES ", portnum, (0x0C03A034U)); cpsw_print_stat_nonzero("TXBROADCASTFRAMES ", portnum, (0x0C03A038U));cpsw_print_stat_nonzero("TXMULTICASTFRAMES ", portnum, (0x0C03A03CU)); cpsw_print_stat_nonzero("TXOCTETS ", portnum, (0x0C03A064U)); cpsw_print_stat_nonzero("OCTETFRAMES64 ", portnum, (0x0C03A068U));cpsw_print_stat_nonzero("OCTETFRAMES65T127 ", portnum, (0x0C03A06CU));cpsw_print_stat_nonzero("OCTETFRAMES128T255 ", portnum, (0x0C03A070U));cpsw_print_stat_nonzero("OCTETFRAMES256T511 ", portnum, (0x0C03A074U));cpsw_print_stat_nonzero("OCTETFRAMES512T1023 ", portnum, (0x0C03A078U));cpsw_print_stat_nonzero("OCTETFRAMES1024TUP ", portnum, (0x0C03A07CU));cpsw_print_stat_nonzero("NETOCTETS ", portnum, (0x0C03A080U));cpsw_print_stat_nonzero("RX_BOTTOM_OF_FIFO_DROP ", portnum, (0x0C03A084U));cpsw_print_stat_nonzero("PORTMASK_DROP ", portnum, (0x0C03A088U));_TOP_OF_FIFO_DROP ", portnum, (0x0C03A08CALE_RATE_LIMIT_DROP ", portnum, (0x0C03A090ALE_VID_INGRESS_DROP ", portnum, (0x0C03A094ALE_DA_EQ_SA_DROP ", portnum, (0x0C03A098ALE_BLOCK_DROP ", portnum, (0x0C03A09CALE_SECURE_DROP ", portnum, (0x0C03A0AALE_AUTH_DROP ", portnum, (0x0C03A0AUNKN_UNI ", portnum, (0x0C03A0AUNKN_UNI_BCNT ", portnum, (0x0C03A0AALE_UNKN_MLT ", portnum, (0x0C03A0BALE_UNKN_MLT_BCNT ", portnum, (0x0C03A0BALE_UNKN_BRD ", portnum, (0x0C03A0BALE_UNKN_BRD_BCNT ", portnum, (0x0C03A0BALE_POL_MATCH ", portnum, (0x0C03A0C0ALE_POL_MATCH_RED ", portnum, (0x0C03A0C4ALE_POL_MATCH_YELLOW ", portnum, (0x0C03A0C8TX_MEMORY_PROTECT_ERROR ", portnum, (0x0C03A17C for (i = 0; i < 8; i++) { regAddr = 0x0C03A180U + (i * 0x4U); cpsw_print_stat_with_index_nonzero("TX_PRI_REG ", portnum, i, regAddr);} for (i = 0; i < 8; i++) { regAddr = 0x0C03A1A0U + (i * 0x4U); cpsw_print_stat_with_index_nonzero("TX_PRI_BCNT_REG ", portnum, i, regAddr);} for (i = 0; i < 8; i++) I print_ale.c [Modified] 370/370 100%I print_ale.c [Modified] 371/371 100%I print_ale.c [Modified] 372/372 100%I print_ale.c [Modified] 373/373 100%I print_ale.c [Modified] 374/374 100%I print_ale.c [Modified] 375/375 100%I print_ale.c [Modified] 376/376 100%I print_ale.c [Modified] 377/377 100%I print_ale.c [Modified] 378/378 100%I print_ale.c [Modified] 379/379 100%I print_ale.c [Modified] 380/380 100%I print_ale.c [Modified] 381/381 100%I print_ale.c [Modified] 382/382 100%I print_ale.c [Modified] 383/383 100%I print_ale.c [Modified] 384/384 100%I print_ale.c [Modified] 385/385 100%I print_ale.c [Modified] 386/386 100%I print_ale.c [Modified] 387/387 100%I print_ale.c [Modified] 388/388 100%I print_ale.c [Modified] 389/389 100%I print_ale.c [Modified] 390/390 100%I print_ale.c [Modified] 391/391 100%I print_ale.c [Modified] 392/392 100%I print_ale.c [Modified] 393/393 100%I print_ale.c [Modified] 394/394 100%I print_ale.c [Modified] 395/395 100%I print_ale.c [Modified] 396/396 100%I print_ale.c [Modified] 397/397 100%I print_ale.c [Modified] 398/398 100%I print_ale.c [Modified] 399/399 100%I print_ale.c [Modified] 400/400 100%I print_ale.c [Modified] 401/401 100%I print_ale.c [Modified] 402/402 100%I print_ale.c [Modified] 403/403 100%I print_ale.c [Modified] 404/404 100%I print_ale.c [Modified] 405/405 100%I print_ale.c [Modified] 406/406 100%I print_ale.c [Modified] 407/407 100%I print_ale.c [Modified] 408/408 100%I print_ale.c [Modified] 409/409 100%I print_ale.c [Modified] 410/410 100%I print_ale.c [Modified] 411/411 100%I print_ale.c [Modified] 412/412 100%I print_ale.c [Modified] 413/413 100% printf("--------------------------------\n"); printf(" PORT%d STATS \n",portnum); printf("--------------------------------\n");baseAddr = 0x0C03A200U + ((portnum-1) * 0x200); cpsw_print_stat_nonzero("RXGOODFRAMES ", portnum, (baseAddr)); cpsw_print_stat_nonzero("RXBROADCASTFRAMES ", portnum, (baseAddr + 0x4U)); cpsw_print_stat_nonzero("RXMULTICASTFRAMES ", portnum, (baseAddr + 0x8U)); cpsw_print_stat_nonzero("RXPAUSEFRAMES ", portnum, (baseAddr + 0xCU)); cpsw_print_stat_nonzero("RXCRCERRORS ", portnum, (baseAddr + 0x10U)); cpsw_print_stat_nonzero("RXALIGNCODEERRORS ", portnum, (baseAddr + 0x14U)); cpsw_print_stat_nonzero("RXOVERSIZEDFRAMES ", portnum, (baseAddr + 0x18U)); cpsw_print_stat_nonzero("RXJABBERFRAMES ", portnum, (baseAddr + 0x1CU)); cpsw_print_stat_nonzero("RXUNDERSIZEDFRAMES ", portnum, (baseAddr + 0x20U)); cpsw_print_stat_nonzero("RXFRAGMENTS ", portnum, (baseAddr + 0x24U)); cpsw_print_stat_nonzero("ALE_DROP ", portnum, (baseAddr + 0x28U)); cpsw_print_stat_nonzero("ALE_OVERRUN_DROP ", portnum, (baseAddr + 0x2CU)); cpsw_print_stat_nonzero("RXOCTETS ", portnum, (baseAddr + 0x30U)); cpsw_print_stat_nonzero("TXGOODFRAMES ", portnum, (baseAddr + 0x34U)); cpsw_print_stat_nonzero("TXBROADCASTFRAMES ", portnum, (baseAddr + 0x38U)); cpsw_print_stat_nonzero("TXMULTICASTFRAMES ", portnum, (baseAddr + 0x3CU)); cpsw_print_stat_nonzero("TXPAUSEFRAMES ", portnum, (baseAddr + 0x40U)); cpsw_print_stat_nonzero("TXDEFERREDFRAMES ", portnum, (baseAddr + 0x44U)); cpsw_print_stat_nonzero("TXCOLLISIONFRAMES ", portnum, (baseAddr + 0x48U)); cpsw_print_stat_nonzero("TXSINGLECOLLFRAMES ", portnum, (baseAddr + 0x4CU)); cpsw_print_stat_nonzero("TXMULTCOLLFRAMES ", portnum, (baseAddr + 0x50U)); cpsw_print_stat_nonzero("TXEXCESSIVECOLLISIONS ", portnum, (baseAddr + 0x54U)); cpsw_print_stat_nonzero("TXLATECOLLISIONS ", portnum, (baseAddr + 0x58U)); cpsw_print_stat_nonzero("RXIPGERROR ", portnum, (baseAddr + 0x5CU)); cpsw_print_stat_nonzero("TXCARRIERSENSEERRORS ", portnum, (baseAddr + 0x60U)); cpsw_print_stat_nonzero("TXOCTETS ", portnum, (baseAddr + 0x64U)); ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~~ ~ ~ ~ ~ ~~ ~ ~ ~ ~ ~~ ~I print_ale.c [Modified] 414/414 100%I print_ale.c [Modified] 415/415 100%I print_ale.c [Modified] 416/416 100%I print_ale.c [Modified] 417/417 100%I print_ale.c [Modified] 418/418 100%I print_ale.c [Modified] 419/419 100%I print_ale.c [Modified] 420/420 100%I print_ale.c [Modified] 421/421 100%I print_ale.c [Modified] 422/422 100%I print_ale.c [Modified] 423/423 100%I print_ale.c [Modified] 424/424 100%I print_ale.c [Modified] 425/425 100%I print_ale.c [Modified] 426/426 100%I print_ale.c [Modified] 427/427 100%I print_ale.c [Modified] 428/428 100%I print_ale.c [Modified] 429/429 100%I print_ale.c [Modified] 430/430 100%I print_ale.c [Modified] 431/431 100%I print_ale.c [Modified] 432/432 100%I print_ale.c [Modified] 433/433 100%I print_ale.c [Modified] 434/434 100%I print_ale.c [Modified] 435/435 100%I print_ale.c [Modified] 436/436 100%I print_ale.c [Modified] 437/437 100%cpsw_print_stat_nonzero("OCTETFRAMES64 ", portnum, (baseAddr + 0x68U)); cpsw_print_stat_nonzero("OCTETFRAMES65T127 ", portnum, (baseAddr + 0x6CU)); cpsw_print_stat_nonzero("OCTETFRAMES128T255 ", portnum, (baseAddr + 0x70U)); cpsw_print_stat_nonzero("OCTETFRAMES256T511 ", portnum, (baseAddr + 0x74U)); cpsw_print_stat_nonzero("OCTETFRAMES512T1023 ", portnum, (baseAddr + 0x78U)); cpsw_print_stat_nonzero("OCTETFRAMES1024TUP ", portnum, (baseAddr + 0x7CU)); cpsw_print_stat_nonzero("NETOCTETS ", portnum, (baseAddr + 0x80U)); cpsw_print_stat_nonzero("RX_BOTTOM_OF_FIFO_DROP ", portnum, (baseAddr + 0x84U)); cpsw_print_stat_nonzero("PORTMASK_DROP ", portnum, (baseAddr + 0x88U)); cpsw_print_stat_nonzero("RX_TOP_OF_FIFO_DROP ", portnum, (baseAddr + 0x8CU)); cpsw_print_stat_nonzero("ALE_RATE_LIMIT_DROP ", portnum, (baseAddr + 0x90U)); cpsw_print_stat_nonzero("ALE_VID_INGRESS_DROP ", portnum, (baseAddr + 0x94U)); cpsw_print_stat_nonzero("ALE_DA_EQ_SA_DROP ", portnum, (baseAddr + 0x98U)); cpsw_print_stat_nonzero("ALE_BLOCK_DROP ", portnum, (baseAddr + 0x9CU)); cpsw_print_stat_nonzero("ALE_SECURE_DROP ", portnum, (baseAddr + 0xA0U)); cpsw_print_stat_nonzero("ALE_AUTH_DROP ", portnum, (baseAddr + 0xA4U)); cpsw_print_stat_nonzero("ALE_UNKN_UNI ", portnum, (baseAddr + 0xA8U)); cpsw_print_stat_nonzero("ALE_UNKN_UNI_BCNT ", portnum, (baseAddr + 0xACU)); cpsw_print_stat_nonzero("ALE_UNKN_MLT ", portnum, (baseAddr + 0xB0U)); cpsw_print_stat_nonzero("ALE_UNKN_MLT_BCNT ", portnum, (baseAddr + 0xB4U)); cpsw_print_stat_nonzero("ALE_UNKN_BRD ", portnum, (baseAddr + 0xB8U)); cpsw_print_stat_nonzero("ALE_UNKN_BRD_BCNT ", portnum, (baseAddr + 0xBCU)); cpsw_print_stat_nonzero("ALE_POL_MATCH ", portnum, (baseAddr + 0xC0U)); cpsw_print_stat_nonzero("ALE_POL_MATCH_RED ", portnum, (baseAddr + 0xC4U)); I print_ale.c [Modified] 438/438 100%I print_ale.c [Modified] 439/439 100%I print_ale.c [Modified] 440/440 100%I print_ale.c [Modified] 441/441 100%I print_ale.c [Modified] 442/442 100%I print_ale.c [Modified] 443/443 100%I print_ale.c [Modified] 444/444 100%I print_ale.c [Modified] 445/445 100%I print_ale.c [Modified] 446/446 100%I print_ale.c [Modified] 447/447 100%I print_ale.c [Modified] 448/448 100%I print_ale.c [Modified] 449/449 100%I print_ale.c [Modified] 450/450 100%I print_ale.c [Modified] 451/451 100%I print_ale.c [Modified] 452/452 100%I print_ale.c [Modified] 453/453 100%I print_ale.c [Modified] 454/454 100%I print_ale.c [Modified] 455/455 100%I print_ale.c [Modified] 456/456 100%I print_ale.c [Modified] 457/457 100%I print_ale.c [Modified] 458/458 100%I print_ale.c [Modified] 459/459 100%I print_ale.c [Modified] 460/460 100%cpsw_print_stat_nonzero("ALE_OVERRUN_DROP ", portnum, (baseAddr + 0x2CU));cpsw_print_stat_nonzero("RXOCTETS ", portnum, (baseAddr + 0x30U));cpsw_print_stat_nonzero("TXGOODFRAMES ", portnum, (baseAddr + 0x34U));cpsw_print_stat_nonzero("TXBROADCASTFRAMES ", portnum, (baseAddr + 0x38U));cpsw_print_stat_nonzero("TXMULTICASTFRAMES ", portnum, (baseAddr + 0x3CU));TXPAUSEFRAMES ", portnum, (baseAddr + 0x40U));TXDEFERREDFRAMES ", portnum, (baseAddr + 0x44U));TXCOLLISIONFRAMES ", portnum, (baseAddr + 0x48U));TXSINGLECOLLFRAMES ", portnum, (baseAddr + 0x4CU));TXMULTCOLLFRAMES ", portnum, (baseAddr + 0x5TXEXCESSIVECOLLISIONS ", portnum, (baseAddr + 0x5TXLATECOLLISIONS ", portnum, (baseAddr + 0x5IPGERROR ", portnum, (baseAddr + 0x5TXCARRIERSENSEERRORS ", portnum, (baseAddr + 0x6TXOCTETS ", portnum, (baseAddr + 0x6OCTETFRAMES64 ", portnum, (baseAddr + 0x6OCTETFRAMES65T127 ", portnum, (baseAddr + 0x6OCTETFRAMES128T255 ", portnum, (baseAddr + 0x7OCTETFRAMES256T511 ", portnum, (baseAddr + 0x7OCTETFRAMES512T1023 ", portnum, (baseAddr + 0x7OCTETFRAMES1024TUP ", portnum, (baseAddr + 0x7NETOCTETS ", portnum, (baseAddr + 0x8RX_BOTTOM_OF_FIFO_DROP ", portnum, (baseAddr + 0x8PORTMASK_DROP ", portnum, (baseAddr + 0x8RX_TOP_OF_FIFO_DROP ", portnum, (baseAddr + 0x8ALE_RATE_LIMIT_DROP ", portnum, (baseAddr + 0x9ALE_VID_INGRESS_DROP ", portnum, (baseAddr + 0x9ALE_DA_EQ_SA_DROP ", portnum, (baseAddr + 0x9ALE_BLOCK_DROP ", portnum, (baseAddr + 0x9ALE_SECURE_DROP ", portnum, (baseAddr + 0xAALE_AUTH_DROP ", portnum, (baseAddr + 0xAALE_UNKN_UNI ", portnum, (baseAddr + 0xAALE_UNKN_UNI_BCNT ", portnum, (baseAddr + 0xAALE_UNKN_MLT ", portnum, (baseAddr + 0xBALE_UNKN_MLT_BCNT ", portnum, (baseAddr + 0xBALE_UNKN_BRD ", portnum, (baseAddr + 0xBALE_UNKN_BRD_BCNT ", portnum, (baseAddr + 0xBALE_POL_MATCH ", portnum, (baseAddr + 0xCALE_POL_MATCH_RED ", portnum, (baseAddr + 0xCALE_POL_MATCH_YELLOW ", portnum, (baseAddr + 0xCTX_MEMORY_PROTECT_ERROR ", portnum, (baseAddr + 0x17CU)); for (i = 0; i < 8; i++) { regAddr = (baseAddr + 0x180U) + (i * 0x4U); cpsw_print_stat_with_index_nonzero("TX_PRI_REG ", portnum, i, regAddr);} for (i = 0; i < 8; i++) { regAddr = (baseAddr + 0x1A0U) + (i * 0x4U); cpsw_print_stat_with_index_nonzero("TX_PRI_BCNT_REG ", portnum, i, regAddr);} for (i = 0; i < 8; i++) { regAddr = (baseAddr + 0x1C0U) + (i * 0x4U); cpsw_print_stat_with_index_nonzero("TX_PRI_DROP_REG ", portnum, i, regAddr); } for (i = 0; i < 8; i++) { I print_ale.c [Modified] 461/461 100%I print_ale.c [Modified] 462/462 100%I print_ale.c [Modified] 463/463 100%I print_ale.c [Modified] 464/464 100%I print_ale.c [Modified] 465/465 100%I print_ale.c [Modified] 466/466 100%I print_ale.c [Modified] 467/467 100%I print_ale.c [Modified] 468/468 100%I print_ale.c [Modified] 469/469 100%I print_ale.c [Modified] 470/470 100%I print_ale.c [Modified] 471/471 100%I print_ale.c [Modified] 472/472 100%I print_ale.c [Modified] 473/473 100%I print_ale.c [Modified] 474/474 100%I print_ale.c [Modified] 475/475 100%I print_ale.c [Modified] 476/476 100%I print_ale.c [Modified] 477/477 100%I print_ale.c [Modified] 478/478 100%I print_ale.c [Modified] 479/479 100%I print_ale.c [Modified] 480/480 100%I print_ale.c [Modified] 481/481 100%I print_ale.c [Modified] 482/482 100%I print_ale.c [Modified] 483/483 100%I print_ale.c [Modified] 484/484 100%I print_ale.c [Modified] 485/485 100%I print_ale.c [Modified] 486/486 100%I print_ale.c [Modified] 487/487 100%I print_ale.c [Modified] 488/488 100%I print_ale.c [Modified] 489/489 100%I print_ale.c [Modified] 490/490 100%I print_ale.c [Modified] 491/491 100%I print_ale.c [Modified] 492/492 100%I print_ale.c [Modified] 493/493 100%I print_ale.c [Modified] 494/494 100%I print_ale.c [Modified] 495/495 100%I print_ale.c [Modified] 496/496 100%I print_ale.c [Modified] 497/497 100%I print_ale.c [Modified] 498/498 100%I print_ale.c [Modified] 499/499 100%I print_ale.c [Modified] 500/500 100%I print_ale.c [Modified] 501/501 100%I print_ale.c [Modified] 502/502 100%void cpsw_9g_statsprint_nonzero() { cpsw_ng_statsprint_nonzero(CPSW_9G_PORT_NUM); } void cpsw_clear_stat(uint32_t regAddr) { uint32_t regVal = mmio_read_32(regAddr); mmio_write_32(regAddr, regVal); } void cpsw_2g_clear_stats() { uint32_t portnum, baseAddr, numStats; for (portnum = 0; portnum <= CPSW_2G_PORT_NUM; portnum++) { baseAddr = 0x4603A000U + (portnum * 0x200); printf("Clearing stats for port[%d]\n", portnum); for (numStats = 0; numStats < 128U; numStats++) { cpsw_clear_stat(baseAddr + (numStats*0x4)); } } printf("--------CLEARED ALL STATS-------\n"); } void show_ale_entry_multicast_2g(uint32_t index, uint32_t word0, uint32_t word1, uint32_t word2){ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~~ ~ ~ ~ 17:56:07.818578 IP 0.0.0.0.bootpc > 255.255.255.255.bootps: BOOTP/DHCP, Request from 70:ff:76:1e:b8:14 (oui Unknown), length 291
    ~ ~~ ~ ~ ~ ~ ~~ ~ ~ ~ ~ ~~ ~ ~I print_ale.c [Modified] 503/503 100%I print_ale.c [Modified] 504/504 100%I print_ale.c [Modified] 505/505 100%I print_ale.c [Modified] 506/506 100%I print_ale.c [Modified] 507/507 100%I print_ale.c [Modified] 508/508 100%I print_ale.c [Modified] 509/509 100%I print_ale.c [Modified] 510/510 100%I print_ale.c [Modified] 511/511 100%I print_ale.c [Modified] 512/512 100%I print_ale.c [Modified] 513/513 100%I print_ale.c [Modified] 514/514 100%I print_ale.c [Modified] 515/515 100%I print_ale.c [Modified] 516/516 100%I print_ale.c [Modified] 517/517 100%I print_ale.c [Modified] 518/518 100%I print_ale.c [Modified] 519/519 100%I print_ale.c [Modified] 520/520 100%I print_ale.c [Modified] 521/521 100%I print_ale.c [Modified] 522/522 100%I print_ale.c [Modified] 523/523 100%I print_ale.c [Modified] 524/524 100%I print_ale.c [Modified] 525/525 100%printf("---------------------------------------------\n"); printf(" Entry %u - Multicast\n", index); printf("---------------------------------------------\n"); printf("PORT_MASK = %x\n", (word2 >> 2) & 0x1FF); printf("SUPER = %u\n", (word2 >> 1) & 0x1); printf("MCAST_FWD_STATE = %u\n", (word1 >> 30) & 0x3); printf("ENTRY_TYPE = %u\n", (word1 >> 28) & 0x3); printf("MULTICAST_ADDR = %x %x\n", (word1 >> 0) & 0xFFFF, word0);} void show_ale_entry_multicast_9g(uint32_t index, uint32_t word0, uint32_t word1, uint32_t word2){ printf("---------------------------------------------\n"); printf(" Entry %u - Multicast\n", index); printf("---------------------------------------------\n"); printf("PORT_MASK = %x\n", (word2 >> 2) & 0x1FF); printf("SUPER = %u\n", (word2 >> 1) & 0x1); printf("MCAST IGNORE BITS= %u\n", (word2 >> 0) & 0x1); printf("MCAST_FWD_STATE = %u\n", (word1 >> 30) & 0x3); printf("ENTRY_TYPE = %u\n", (word1 >> 28) & 0x3); printf("MULTICAST_ADDR = %x %x\n", (word1 >> 0) & 0xFFFF, word0);} I print_ale.c [Modified] 526/526 100%I print_ale.c [Modified] 527/527 100%I print_ale.c [Modified] 528/528 100%I print_ale.c [Modified] 529/529 100%I print_ale.c [Modified] 530/530 100%I print_ale.c [Modified] 531/531 100%I print_ale.c [Modified] 532/532 100%I print_ale.c [Modified] 533/533 100%I print_ale.c [Modified] 534/534 100%I print_ale.c [Modified] 535/535 100%I print_ale.c [Modified] 536/536 100%I print_ale.c [Modified] 537/537 100%I print_ale.c [Modified] 538/538 100%I print_ale.c [Modified] 539/539 100%I print_ale.c [Modified] 540/540 100%I print_ale.c [Modified] 541/541 100%I print_ale.c [Modified] 542/542 100%I print_ale.c [Modified] 543/543 100%I print_ale.c [Modified] 544/544 100%I print_ale.c [Modified] 545/545 100%I print_ale.c [Modified] 546/546 100%I print_ale.c [Modified] 547/547 100%I print_ale.c [Modified] 548/548 100% for (portnum = 0; portnum <= CPSW_2G_PORT_NUM; portnum++) { baseAddr = 0x4603A000U + (portnum * 0x200); printf("Clearing stats for port[%d]\n", portnum); for (numStats = 0; numStats < 128U; numStats++) { cpsw_clear_stat(baseAddr + (numStats*0x4)); } } printf("--------CLEARED ALL STATS-------\n");} void show_ale_entry_multicast_2g(uint32_t index, uint32_t word0, uint32_t word1, uint32_t word2){ printf("---------------------------------------------\n");printf(" Entry %u - Multicast\n", index); printf("---------------------------------------------\n");printf("PORT_MASK = %x\n", (word2 >> 2) & 0x1FF);printf("SUPER = %u\n", (word2 >> 1) & 0x1);printf("MCAST_FWD_STATE = %u\n", (word1 >> 30) & 0x3);printf("ENTRY_TYPE = %u\n", (word1 >> 28) & 0x3);printf("MULTICAST_ADDR = %x %x\n", (word1 >> 0) & 0xFFFF, word0);} void show_ale_entry_multicast_9g(uint32_t index, uint32_t word0, uint32_t word1, uint32_t word2){printf("---------------------------------------------\n"); printf(" Entry %u - Multicast\n", index); printf("---------------------------------------------\n");PORT_MASK = %x\n", (word2 >> 2) & 0x1FF); SUPER = %u\n", (word2 >> 1) & 0x1);MCAST IGNORE BITS= %u\n", (word2 >> 0) & 0x1); MCAST_FWD_STATE = %u\n", (word1 >> 30) & 0x3); ENTRY_TYPE = %u\n", (word1 >> 28) & 0x3ULTICAST_ADDR = %x %x\n", (word1 >> 0) & 0xFFFF, word0);} void show_ale_entry_vlan_multicast_2g(uint32_t index, uint32_t word0, uint32_t word1, uint32_t word2){ printf("---------------------------------------------\n"); printf(" Entry %u - VLAN/Multicast\n", index);PORT_MASK = %x\n", (word2 >> 2) & 0x1FF);SUPER = %u\n", (word2 >> 1) & 0x1); MCAST_FWD_STATE = %u\n", (word1 >> 30) & 0x3); ENTRY_TYPE = %u\n", (word1 >> 28) & 0x3VLAN_ID = %u\n", (word1 >> 16) & 0xFFF);ULTICAST_ADDR = %x %x\n", (word1 >> 0) & 0xFFFF, word0);} void show_ale_entry_vlan_multicast_9g(uint32_t index, uint32_t word0, uint32_t word1, uint32_t word2){printf("---------------------------------------------\n"); printf(" Entry %u - VLAN/Multicast\n", index); printf("---------------------------------------------\n"); printf("PORT_MASK = %x\n", (word2 >> 2) & 0x1FF); printf("SUPER = %u\n", (word2 >> 1) & 0x1); printf("MCAST_FWD_STATE = %u\n", (word1 >> 30) & 0x3); printf("ENTRY_TYPE = %u\n", (word1 >> 28) & 0x3); printf("VLAN_ID = %u\n", (word1 >> 16) & 0xFFF); I print_ale.c [Modified] 549/549 100%17:56:08.574759 IP 0.0.0.0.bootpc > 255.255.255.255.bootps: BOOTP/DHCP, Request from 70:ff:76:1e:b8:17 (oui Unknown), length 291
    I print_ale.c [Modified] 550/550 100%I print_ale.c [Modified] 551/551 100%I print_ale.c [Modified] 552/552 100%I print_ale.c [Modified] 553/553 100%I print_ale.c [Modified] 554/554 100%I print_ale.c [Modified] 555/555 100%I print_ale.c [Modified] 556/556 100%I print_ale.c [Modified] 557/557 100%I print_ale.c [Modified] 558/558 100%I print_ale.c [Modified] 559/559 100%I print_ale.c [Modified] 560/560 100%I print_ale.c [Modified] 561/561 100%I print_ale.c [Modified] 562/562 100%I print_ale.c [Modified] 563/563 100%I print_ale.c [Modified] 564/564 100%I print_ale.c [Modified] 565/565 100%I print_ale.c [Modified] 566/566 100%I print_ale.c [Modified] 567/567 100%I print_ale.c [Modified] 568/568 100%I print_ale.c [Modified] 569/569 100%printf("MCAST_FWD_STATE = %u\n", (word1 >> 30) & 0x3); printf("ENTRY_TYPE = %u\n", (word1 >> 28) & 0x3);printf("MULTICAST_ADDR = %x %x\n", (word1 >> 0) & 0xFFFF, word0);} void show_ale_entry_multicast_9g(uint32_t index, uint32_t word0, uint32_t word1, uint32_t word2){ printf("---------------------------------------------\n");printf(" Entry %u - Multicast\n", index);printf("---------------------------------------------\n");printf("PORT_MASK = %x\n", (word2 >> 2) & 0x1FF);SUPER = %u\n", (word2 >> 1) & 0x1); printf("MCAST IGNORE BITS= %u\n", (word2 >> 0) & 0x1);printf("MCAST_FWD_STATE = %u\n", (word1 >> 30) & 0x3); printf("ENTRY_TYPE = %u\n", (word1 >> 28) & 0x3); printf("MULTICAST_ADDR = %x %x\n", (word1 >> 0) & 0xFFFF, word0);} void show_ale_entry_vlan_multicast_2g(uint32_t index, uint32_t word0, uint32_t word1, uint32_t word2){ ---------------------------------------------\n"); Entry %u - VLAN/Multicast\n", index); ---------------------------------------------\n");PORT_MASK = %x\n", (word2 >> 2) & 0x1FF); printf("SUPER = %u\n", (word2 >> 1) & 0x1);printf("MCAST_FWD_STATE = %u\n", (word1 >> 30) & 0x3); printf("ENTRY_TYPE = %u\n", (word1 >> 28) & 0x3); printf("VLAN_ID = %u\n", (word1 >> 16) & 0xFFF);MULTICAST_ADDR = %x %x\n", (word1 >> 0) & 0xFFFF, word0);} void show_ale_entry_vlan_multicast_9g(uint32_t index, uint32_t word0, uint32_t word1, uint32_t word2){ ---------------------------------------------\n"); Entry %u - VLAN/Multicast\n", index); ---------------------------------------------\n");PORT_MASK = %x\n", (word2 >> 2) & 0x1FF); printf("SUPER = %u\n", (word2 >> 1) & 0x1);printf("MCAST_FWD_STATE = %u\n", (word1 >> 30) & 0x3); printf("ENTRY_TYPE = %u\n", (word1 >> 28) & 0x3); printf("VLAN_ID = %u\n", (word1 >> 16) & 0xFFF);MULTICAST_ADDR = %x %x\n", (word1 >> 0) & 0xFFFF, word0);} void show_ale_entry_unicast_2g(uint32_t index, uint32_t word0, uint32_t word1, uint32_t word2){ ---------------------------------------------\n"); Entry %u - Unicast\n", index); ---------------------------------------------\n");PORT_NUMBER = %u\n", (word2 >> 2) & 0x1FF); printf("BLOCK = %u\n", (word2 >> 1) & 0x1);printf("SECURE = %u\n", (word2 >> 0) & 0x1); printf("UNICAST_TYPE = %u\n", (word1 >> 30) & 0x3); printf("ENTRY_TYPE = %u\n", (word1 >> 28) & 0x3);UNICAST_ADDR = %x %x\n", (word1 >> 0) & 0xFFFF, word0);} void show_ale_entry_unicast_9g(uint32_t index, uint32_t word0, uint32_t word1, uint32_t word2){ ---------------------------------------------\n"); Entry %u - Unicast\n", index); ---------------------------------------------\n");I print_ale.c [Modified] 570/570 100%I print_ale.c [Modified] 571/571 100%I print_ale.c [Modified] 572/572 100%I print_ale.c [Modified] 573/573 100%I print_ale.c [Modified] 574/574 100%I print_ale.c [Modified] 575/575 100%I print_ale.c [Modified] 576/576 100%I print_ale.c [Modified] 577/577 100%I print_ale.c [Modified] 578/578 100%I print_ale.c [Modified] 579/579 100%I print_ale.c [Modified] 580/580 100%I print_ale.c [Modified] 581/581 100%I print_ale.c [Modified] 582/582 100%I print_ale.c [Modified] 583/583 100%I print_ale.c [Modified] 584/584 100%I print_ale.c [Modified] 585/585 100%I print_ale.c [Modified] 586/586 100%I print_ale.c [Modified] 587/587 100%I print_ale.c [Modified] 588/588 100%I print_ale.c [Modified] 589/589 100%I print_ale.c [Modified] 590/590 100%I print_ale.c [Modified] 591/591 100%---------------------------------------------\n");PORT_MASK = %x\n", (word2 >> 2) & 0x1FF);SUPER = %u\n", (word2 >> 1) & 0x1); printf("MCAST_FWD_STATE = %u\n", (word1 >> 30) & 0x3);printf("ENTRY_TYPE = %u\n", (word1 >> 28) & 0x3); printf("VLAN_ID = %u\n", (word1 >> 16) & 0xFFF); printf("MULTICAST_ADDR = %x %x\n", (word1 >> 0) & 0xFFFF, word0);} void show_ale_entry_vlan_multicast_9g(uint32_t index, uint32_t word0, uint32_t word1, uint32_t word2){ ---------------------------------------------\n"); Entry %u - VLAN/Multicast\n", index); ---------------------------------------------\n");PORT_MASK = %x\n", (word2 >> 2) & 0x1FF);SUPER = %u\n", (word2 >> 1) & 0x1); printf("MCAST_FWD_STATE = %u\n", (word1 >> 30) & 0x3);printf("ENTRY_TYPE = %u\n", (word1 >> 28) & 0x3); printf("VLAN_ID = %u\n", (word1 >> 16) & 0xFFF); printf("MULTICAST_ADDR = %x %x\n", (word1 >> 0) & 0xFFFF, word0);} void show_ale_entry_unicast_2g(uint32_t index, uint32_t word0, uint32_t word1, uint32_t word2){ ---------------------------------------------\n"); Entry %u - Unicast\n", index); ---------------------------------------------\n");PORT_NUMBER = %u\n", (word2 >> 2) & 0x1BLOCK = %u\n", (word2 >> 1) & 0x1); printf("SECURE = %u\n", (word2 >> 0) & 0x1);printf("UNICAST_TYPE = %u\n", (word1 >> 30) & 0x3); printf("ENTRY_TYPE = %u\n", (word1 >> 28) & 0x3); printf("UNICAST_ADDR = %x %x\n", (word1 >> 0) & 0xFFFF, word0);} void show_ale_entry_unicast_9g(uint32_t index, uint32_t word0, uint32_t word1, uint32_t word2){ ---------------------------------------------\n"); Entry %u - Unicast\n", index); ---------------------------------------------\n");TRUNK = %u\n", (word2 >> 10) & 0x1); PORT_NUMBER = %u\n", (word2 >> 2) & 0xF); printf("BLOCK = %u\n", (word2 >> 1) & 0x1);printf("SECURE = %u\n", (word2 >> 0) & 0x1); printf("TOUCH = %u\n", (word1 >> 31) & 0x1); printf("AGEABLE = %u\n", (word1 >> 30) & 0x1);ENTRY_TYPE = %u\n", (word1 >> 28) & 0x3); UNICAST_ADDR = %x %x\n", (word1 >> 0) & 0xFFFF, word0);} void show_ale_entry_oui_unicast_2g(uint32_t index, uint32_t word0, uint32_t word1, uint32_t word2){ ---------------------------------------------\n"); Entry %u - OUI Unicast\n", index); ---------------------------------------------\n"); printf("UNICAST_TYPE = %u\n", (word1 >> 30) & 0x3);printf("ENTRY_TYPE = %u\n", (word1 >> 28) & 0x3); printf("UNICAST_OUI = %x %x\n", (word1 >> 0) & 0xFFFF, (word0 >> 24) & 0xFF); } void show_ale_entry_oui_unicast_9g(uint32_t index, uint32_t word0, uint32_t word1, uint32_t word2){ I print_ale.c [Modified] 592/592 100%I print_ale.c [Modified] 593/593 100%I print_ale.c [Modified] 594/594 100%I print_ale.c [Modified] 595/595 100%I print_ale.c [Modified] 596/596 100%I print_ale.c [Modified] 597/597 100%I print_ale.c [Modified] 598/598 100%I print_ale.c [Modified] 599/599 100%I print_ale.c [Modified] 600/600 100%I print_ale.c [Modified] 601/601 100%I print_ale.c [Modified] 602/602 100%I print_ale.c [Modified] 603/603 100%I print_ale.c [Modified] 604/604 100%I print_ale.c [Modified] 605/605 100%I print_ale.c [Modified] 606/606 100%I print_ale.c [Modified] 607/607 100%I print_ale.c [Modified] 608/608 100%I print_ale.c [Modified] 609/609 100%I print_ale.c [Modified] 610/610 100%I print_ale.c [Modified] 611/611 100%I print_ale.c [Modified] 612/612 100%I print_ale.c [Modified] 613/613 100%I print_ale.c [Modified] 614/614 100%I print_ale.c [Modified] 615/615 100%I print_ale.c [Modified] 616/616 100%I print_ale.c [Modified] 617/617 100%I print_ale.c [Modified] 618/618 100%I print_ale.c [Modified] 619/619 100%I print_ale.c [Modified] 620/620 100%I print_ale.c [Modified] 621/621 100%I print_ale.c [Modified] 622/622 100%I print_ale.c [Modified] 623/623 100%I print_ale.c [Modified] 624/624 100%I print_ale.c [Modified] 625/625 100%I print_ale.c [Modified] 626/626 100%I print_ale.c [Modified] 627/627 100%I print_ale.c [Modified] 628/628 100%I print_ale.c [Modified] 629/629 100%I print_ale.c [Modified] 630/630 100%I print_ale.c [Modified] 631/631 100%I print_ale.c [Modified] 632/632 100%I print_ale.c [Modified] 633/633 100%I print_ale.c [Modified] 634/634 100%I print_ale.c [Modified] 635/635 100%I print_ale.c [Modified] 636/636 100%I print_ale.c [Modified] 637/637 100%UNICAST_TYPE = %u\n", (word1 >> 30) & 0x3); ENTRY_TYPE = %u\n", (word1 >> 28) & 0x3); VLAN_ID = %u\n", (word1 >> 16) & 0xFFF);UNICAST_ADDR = %x %x\n", (word1 >> 0) & 0xFFFF, word0);} void show_ale_entry_vlan_unicast_9g(uint32_t index, uint32_t word0, uint32_t word1, uint32_t word2){printf("---------------------------------------------\n"); printf(" Entry %u - VLAN/Unicast\n", index); printf("---------------------------------------------\n");TRUNK = %u\n", (word2 >> 10) & 0x1); PORT_NUMBER = %u\n", (word2 >> 2) & 0x1FF);BLOCK = %u\n", (word2 >> 1) & 0x1); TOUCH = %u\n", (word1 >> 31) & 0x1); AGEABLE = %u\n", (word1 >> 30) & 0x1);SECURE = %u\n", (word2 >> 0) & 0x1 = %u\n", (word1 >> 28) & 0x3); = %u\n", (word1 >> 16) & 0xFFF);UNICAST_ADDR = %x %x\n", (word1 >>vlan_2g(uint32_t index, uint32_t word0, uint32_t word1, uint32_t word2) VLAN\n", index); ENTRY_TYPE = %u\n", (word1 >> 28) & 0x3); VLAN_ID = %u\n", (word1 >> 16) & 0xFFF);FORCE_UNTAG_EG = %u\n", (word0 >> 24) & 0x1FF);REG_MCAST_FLOOD = %u\n", (word0 >> 16) & 0x1FF); ~ ~~~ ~~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~~~ ~~ ~ ~ ~ ~ ~ ~~~ ~~I print_ale.c [Modified] 638/638 100%I print_ale.c [Modified] 639/639 100%I print_ale.c [Modified] 640/640 100%I print_ale.c [Modified] 641/641 100%I print_ale.c [Modified] 642/642 100%I print_ale.c [Modified] 643/643 100%I print_ale.c [Modified] 644/644 100%I print_ale.c [Modified] 645/645 100%I print_ale.c [Modified] 646/646 100%I print_ale.c [Modified] 647/647 100%I print_ale.c [Modified] 648/648 100%I print_ale.c [Modified] 649/649 100%I print_ale.c [Modified] 650/650 100%I print_ale.c [Modified] 651/651 100%I print_ale.c [Modified] 652/652 100%I print_ale.c [Modified] 653/653 100%I print_ale.c [Modified] 654/654 100%I print_ale.c [Modified] 655/655 100%I print_ale.c [Modified] 656/656 100%I print_ale.c [Modified] 657/657 100%I print_ale.c [Modified] 658/658 100%printf("UNREG_MCAST_FLOOD = %u\n", (word0 >> 8) & 0x1FF); printf("VLAN_MEMBER_LIST = %u\n", (word0 >> 0) & 0x1FF);} void show_ale_entry_vlan_inner_9g(uint32_t index, uint32_t word0, uint32_t word1, uint32_t word2){ printf("---------------------------------------------\n"); printf(" Entry %u - VLAN INNER \n", index); printf("---------------------------------------------\n"); printf("ENTRY_TYPE = %u\n", (word1 >> 28) & 0x3); printf("IVLAN_ID = %u\n", (word1 >> 16) & 0xFFF); printf("NO FRAG = %u\n", (word1 >> 15) & 0x1); printf("REG_MCAST_FLOOD = %u\n", (word1 >> 4) & 0x1FF); printf("VLAN FWD Untagged Egress = %u\n", ((word1 & 0x1) << 8) + (word0 >> 24) & 0x1FF); printf("LMT NEXT HDR = %u\n", (word0 >> 23) & 0x1); printf("UNREG_MCAST_FLOOD = %u\n", (word0 >> 12) & 0x1FF); printf("VLAN_MEMBER_LIST = %u\n", (word0 >> 0) & 0x1FF);} void show_ale_entry_vlan_outer_9g(uint32_t index, uint32_t word0, uint32_t word1, uint32_t word2) I print_ale.c [Modified] 659/659 100%{ I print_ale.c [Modified] 660/660 100%printf("---------------------------------------------\n"); I print_ale.c [Modified] 661/661 100%printf(" Entry %u - VLAN OUTER\n", index); I print_ale.c [Modified] 662/662 100%printf("---------------------------------------------\n"); I print_ale.c [Modified] 663/663 100%printf("ENTRY_TYPE = %u\n", (word1 >> 28) & 0x3); I print_ale.c [Modified] 664/664 100%printf("OVLAN_ID = %u\n", (word1 >> 16) & 0xFFF); I print_ale.c [Modified] 665/665 100%printf("NO FRAG =%u\n", (word1 >> 15) & 0x1); I print_ale.c [Modified] 666/666 100%printf("REG_MCAST_FLOOD = %u\n", (word1>> 4) & 0x1FF); I print_ale.c [Modified] 667/667 100%printf("VLAN FWD Untagged Egress = %u\n", I print_ale.c [Modified] 668/668 100%((word1 & 0x1)<< 8) + (word0 >> 24) & 0x1FF); I print_ale.c [Modified] 669/669 100%printf("LMT NEXT HDR = %u\n", (word0 >> 23ENTRY_TYPE = %u\n", (word1 >> 28VLAN_ID = %u\n", (word1 >> 16) & 0xFFF);UNICAST_ADDR = %x %x\n", (word1 >> 0) & 0xFFFF, word0);} void show_ale_entry_vlan_unicast_9g(uint32_t index, uint32_t word0, uint32_t word1, uint32_t word2){ printf("---------------------------------------------\n"); Entry %u - VLAN/Unicast\n", index); ---------------------------------------------\n");TRUNK = %u\n", (word2 >> 10) & 0x1); PORT_NUMBER = %u\n", (word2 >> 2) & 0x1FF);BLOCK = %u\n", (word2 >> 1) & 0x1); TOUCH = %u\n", (word1 >> 31) & 0x1);AGEABLE = %u\n", (word1 >> 30SECURE = %u\n", (word2 >> 0) & 0x1); ENTRY_TYPE = %u\n", (word1 >> 28) & 0x3);VLAN_ID = %u\n", (word1 >> 16) & 0xFFF);UNICAST_ADDR = %x %x\n", (word1 >> 0) & 0xFFFF, word0);} void show_ale_entry_vlan_2g(uint32_t index, uint32_t word0, uint32_t word1, uint32_t word2){ printf("---------------------------------------------\n"); Entry %u - VLAN\n", index); ---------------------------------------------\n");ENTRY_TYPE = %u\n", (word1 >> 28) & 0x3); VLAN_ID = %u\n", (word1 >> 16) & 0xFFF);FORCE_UNTAG_EG = %u\n", (word0 >> 24) & 0x1REG_MCAST_FLOOD = %u\n", (word0 >> 16UNREG_MCAST_FLOOD = %u\n", (word0 >> 8VLAN_MEMBER_LIST = %u\n", (word0 >> 0} void show_ale_entry_vlan_inner_9g(uint32_t index, uint32_t word0, uint32_t word1, uint32_t word2){ printf("---------------------------------------------\n"); Entry %u - VLAN INNER \n", index); ---------------------------------------------\n");ENTRY_TYPE = %u\n", (word1 >> 28) & 0x3); IVLAN_ID = %u\n", (word1 >> 16) & 0xFFF);NO FRAG = %u\n", (word1 >> 15) & 0x1); REG_MCAST_FLOOD = %u\n", (word1 >> 4) & 0x1FF);VLAN FWD Untagged Egress = %u\n", ((word1 & 0x1) << 8) + (word0 >> 24) & 0x1FF);printf("LMT NEXT HDR = %u\n", (word0 >> 23) & 0x1); UNREG_MCAST_FLOOD = %u\n", (word0 >> 12) & 0x1FF);VLAN_MEMBER_LIST = %u\n", (word0 >> 0} void show_ale_entry_vlan_outer_9g(uint32_t index, uint32_t word0, uint32_t word1, uint32_t word2){ printf("---------------------------------------------\n"); Entry %u - VLAN OUTER\n", index); ---------------------------------------------\n");ENTRY_TYPE = %u\n", (word1 >> 28) & 0x3); OVLAN_ID = %u\n", (word1 >> 16) & 0xFFF);NO FRAG = %u\n", (word1 >> 15) & 0x1); REG_MCAST_FLOOD = %u\n", (word1 >> 4) & 0x1FF);VLAN FWD Untagged Egress = %u\n", ((word1 & 0x1) << 8) + (word0 >> 24) & 0x1FF);printf("LMT NEXT HDR = %u\n", (word0 >> 23) & 0x1); I print_ale.c [Modified] 670/670 100%I print_ale.c [Modified] 671/671 100%I print_ale.c [Modified] 672/672 100%I print_ale.c [Modified] 673/673 100%I print_ale.c [Modified] 674/674 100%I print_ale.c [Modified] 675/675 100%I print_ale.c [Modified] 676/676 100%I print_ale.c [Modified] 677/677 100%I print_ale.c [Modified] 678/678 100%I print_ale.c [Modified] 679/679 100%I print_ale.c [Modified] 680/680 100%I print_ale.c [Modified] 681/681 100%I print_ale.c [Modified] 682/682 100%I print_ale.c [Modified] 683/683 100%I print_ale.c [Modified] 684/684 100%I print_ale.c [Modified] 685/685 100%I print_ale.c [Modified] 686/686 100%I print_ale.c [Modified] 687/687 100%I print_ale.c [Modified] 688/688 100%I print_ale.c [Modified] 689/689 100%I print_ale.c [Modified] 690/690 100%I print_ale.c [Modified] 691/691 100%I print_ale.c [Modified] 692/692 100%I print_ale.c [Modified] 693/693 100%I print_ale.c [Modified] 694/694 100%I print_ale.c [Modified] 695/695 100%I print_ale.c [Modified] 696/696 100%I print_ale.c [Modified] 697/697 100%I print_ale.c [Modified] 698/698 100%I print_ale.c [Modified] 699/699 100%I print_ale.c [Modified] 700/700 100%I print_ale.c [Modified] 701/701 100%I print_ale.c [Modified] 702/702 100%I print_ale.c [Modified] 703/703 100%I print_ale.c [Modified] 704/704 100%I print_ale.c [Modified] 705/705 100%I print_ale.c [Modified] 706/706 100%I print_ale.c [Modified] 707/707 100%I print_ale.c [Modified] 708/708 100%I print_ale.c [Modified] 709/709 100%I print_ale.c [Modified] 710/710 100%I print_ale.c [Modified] 711/711 100%I print_ale.c [Modified] 712/712 100%I print_ale.c [Modified] 713/713 100%void show_ale_entry_vlan_ip4_9g(uint32_t index, uint32_t word0, uint32_t word1, uint32_t word2){ ---------------------------------------------\n"); printf(" Entry %u - VLAN IPV4 \n", index);printf("---------------------------------------------\n"); printf("IGNORE BITS = %u\n", (word2 >> 1) & 0x1F); printf("ENTRY_TYPE = %u\n", (word1 >> 28) & 0x3);IPV4 ADDR = %u\n", word0); } void show_ale_entry_vlan_ip6_9g(uint32_t index, uint32_t word0, uint32_t word1, uint32_t word2){ ---------------------------------------------\n"); Entry %u - VLAN IPV6 \n", index); ---------------------------------------------\n");Understanding Gap hence not printing :("); } void cpsw_print_ale_table_2g() {uint32_t word0, word1, word2; uint32_t type; int i; ---------------------------------------------\n");CPSW2G ALE TABLE---------------------------------------------\n"); for (i = 0; i < ALE_TABLE_DEPTH_2G; i++) { mmio_write_32(ALE_TBLCTL_2G, i); ~~~ ~~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~~~ ~~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~I print_ale.c [Modified] 714/714 100%I print_ale.c [Modified] 715/715 100%I print_ale.c [Modified] 716/716 100%I print_ale.c [Modified] 717/717 100%I print_ale.c [Modified] 718/718 100%I print_ale.c [Modified] 719/719 100%I print_ale.c [Modified] 720/720 100%I print_ale.c [Modified] 721/721 100%I print_ale.c [Modified] 722/722 100%I print_ale.c [Modified] 723/723 100%I print_ale.c [Modified] 724/724 100%I print_ale.c [Modified] 725/725 100%I print_ale.c [Modified] 726/726 100%I print_ale.c [Modified] 727/727 100%I print_ale.c [Modified] 728/728 100%I print_ale.c [Modified] 729/729 100%I print_ale.c [Modified] 730/730 100%I print_ale.c [Modified] 731/731 100%I print_ale.c [Modified] 732/732 100%I print_ale.c [Modified] 733/733 100%I print_ale.c [Modified] 734/734 100%I print_ale.c [Modified] 735/735 100% word0 = mmio_read_32(ALE_TBLW0_2G); word1 = mmio_read_32(ALE_TBLW1_2G); word2 = mmio_read_32(ALE_TBLW2_2G); if (0) { printf("WORD1 = %u\n", word0); printf("WORD1 = %u\n", word1); printf("WORD1 = %u\n", word2); } /* ENTRY_TYPE (bits 61:60) */ type = (word1 >> 28) & 0x3; if (type == ALE_ENTRY_EMTPY) { //printf(" Entry %u - Empty\n", i); } else if (type == ALE_ENTRY_ADDR) { if ((word1 >> 8) & 0x1) { show_ale_entry_multicast_2g(i, word0, word1, word2);// } else if ((word1 >> 30) & 0x3) { I print_ale.c [Modified] 736/736 100%// show_ale_entry_oui_unicast(i,word0, word1, word2); I print_ale.c [Modified] 737/737 100%} else { I print_ale.c [Modified] 738/738 100%show_ale_entry_unicast_2g(i, word0, word1, word2); I print_ale.c [Modified] 739/739 100%} I print_ale.c [Modified] 740/740 100%} else if (type == ALE_ENTRY_VLAN) { I print_ale.c [Modified] 741/741 100%show_ale_entry_vlan_2g(i, word0, word1, word2); I print_ale.c [Modified] 742/742 100%} else if (type ==ALE_ENTRY_VLAN_ADDR) { I print_ale.c [Modified] 743/743 100%if ((word1 >> 8) & 0x1) { I print_ale.c [Modified] 744/744 100%show_ale_entry_vlan_multicast_2g(i, word0, word1, word2); I print_ale.c [Modified] 745/745 100%{ printf("---------------------------------------------\n"); Entry %u - VLAN IPV4 \n", index); ---------------------------------------------\n");IGNORE BITS = %u\n", (word2 >> 1) & 0x1F); ENTRY_TYPE = %u\n", (word1 >> 28) & 0x3IPV4 ADDR = %u\n", word0); } void show_ale_entry_vlan_ip6_9g(uint32_t index, uint32_t word0, uint32_t word1, uint32_t word2){ printf("---------------------------------------------\n"); Entry %u - VLAN IPV6 \n", index); ---------------------------------------------\n");Understanding Gap hence not printing :("); } void cpsw_print_ale_table_2g(){ uint32_t word0, word1, word2;type; int i; printf("---------------------------------------------\n");CPSW2G ALE TABLE---------------- for (i = 0; i < ALE_TABLE_DEPTH_2G; i++){ mmio_write_32(ALE_TBLCTL_2G, i); word0 = mmio_read_32(ALE_TBLW0_2G);1 = mmio_read_32(ALE_TBLW12 = mmio_read_32(ALE_TBLW2 if (0){ printf("WORD1 = %u\n", word0);12} /* ENTRY_TYPE (bits 61:60) */type = (word1 >> 28) & 0x3; if (type == ALE_ENTRY_EMTPY) { //printf(" Entry %u - Empty\n", i);} else if (type == ALE_ENTRY_ADDR) { if ((word1 >> 8) & 0x1) { show_ale_entry_multicast_2g(i, word0, word1, word2);// } else if ((word1 >> 30) & 0x3) { show_ale_entry_oui_unicast(i, word0, word1, word2); } else { show_ale_entry_unicast_2g(i, word0, word1, word2);} } else if (type == ALE_ENTRY_VLAN) { show_ale_entry_vlan_2g(i, word0, word1, word2);} else if (type == ALE_ENTRY_VLAN_ADDR) { if ((word1 >> 8) & 0x1) { show_ale_entry_vlan_multicast_2g(i, word0, word1, word2);} else { I print_ale.c [Modified] 746/746 100%I print_ale.c [Modified] 747/747 100%I print_ale.c [Modified] 748/748 100%I print_ale.c [Modified] 749/749 100%I print_ale.c [Modified] 750/750 100%I print_ale.c [Modified] 751/751 100%I print_ale.c [Modified] 752/752 100%I print_ale.c [Modified] 753/753 100%I print_ale.c [Modified] 754/754 100%I print_ale.c [Modified] 755/755 100%I print_ale.c [Modified] 756/756 100%I print_ale.c [Modified] 757/757 100%I print_ale.c [Modified] 758/758 100%I print_ale.c [Modified] 759/759 100%I print_ale.c [Modified] 760/760 100%I print_ale.c [Modified] 761/761 100%I print_ale.c [Modified] 762/762 100%I print_ale.c [Modified] 763/763 100%I print_ale.c [Modified] 764/764 100%I print_ale.c [Modified] 765/765 100%I print_ale.c [Modified] 766/766 100%I print_ale.c [Modified] 767/767 100% -------CPSW2G ALE TABLE----------------------\n"); for (i = 0; i < ALE_TABLE_DEPTH_2G; i++) { mmio_write_32(ALE_TBLCTL_2G, i); word0 = mmio_read_32(ALE_TBLW0_2G); word1 = mmio_read_32(ALE_TBLW1_2G); word2 = mmio_read_32(ALE_TBLW2_2G); if (0) { printf("WORD1 = %u\n", word0); printf("WORD1 = %u\n", word1); printf("WORD1 = %u\n", word2); } /* ENTRY_TYPE (bits 61:60) */type = (word1 >> 28) & 0x3; if (type == ALE_ENTRY_EMTPY) { //printf(" Entry %u - Empty\n", i); } else if (type == ALE_ENTRY_ADDR) { if ((word1 >> 8) & 0x1) { show_ale_entry_multicast_2g(i, word0, word1, word2);// } else if ((word1 >> 30) & 0x3) {// show_ale_entry_oui_unicast(i, word0, word1, word2); } else { show_ale_entry_unicast_2g(i, word0, word1, word2); } } else if (type == ALE_ENTRY_VLAN) { show_ale_entry_vlan_2g(i, word0, word1, word2);} else if (type == ALE_ENTRY_VLAN_ADDR) {if ((word1 >> 8) & 0x1) { show_ale_entry_vlan_multicast_2g(i, word0, word1, word2);} else { show_ale_entry_vlan_unicast_2g(i, word0, word1, word2); }}} printf("Completed analysis of %u ALE entries\n", i);} void cpsw_print_ale_table_ng(numAleEntries) { uint32_t word0, word1, word2; uint32_t type; uint32_t vlanEntryType; int i; printf("---------------------------------------------\n");printf("-------CPSWnG ALE TABLE----------------------\n");printf("---------------------------------------------\n");for (i = 0; i < numAleEntries; i++) { mmio_write_32(ALE_TBLCTL_9G, i); I print_ale.c [Modified] 768/768 100%I print_ale.c [Modified] 769/769 100%I print_ale.c [Modified] 770/770 100%I print_ale.c [Modified] 771/771 100%I print_ale.c [Modified] 772/772 100%I print_ale.c [Modified] 773/773 100%I print_ale.c [Modified] 774/774 100%I print_ale.c [Modified] 775/775 100%I print_ale.c [Modified] 776/776 100%I print_ale.c [Modified] 777/777 100%I print_ale.c [Modified] 778/778 100%I print_ale.c [Modified] 779/779 100%I print_ale.c [Modified] 780/780 100%I print_ale.c [Modified] 781/781 100%I print_ale.c [Modified] 782/782 100%I print_ale.c [Modified] 783/783 100%I print_ale.c [Modified] 784/784 100%I print_ale.c [Modified] 785/785 100%I print_ale.c [Modified] 786/786 100%I print_ale.c [Modified] 787/787 100%I print_ale.c [Modified] 788/788 100%I print_ale.c [Modified] 789/789 100%type = (word1 >> 28) & 0x3; if (type == ALE_ENTRY_EMTPY) { //printf(" Entry %u - Empty\n", i); } else if (type == ALE_ENTRY_ADDR) { if ((word1 >> 8) & 0x1) { show_ale_entry_multicast_2g(i, word0, word1, word2);// } else if ((word1 >> 30) & 0x3) {// show_ale_entry_oui_unicast(i, word0, word1, word2); } else { show_ale_entry_unicast_2g(i, word0, word1, word2); } } else if (type == ALE_ENTRY_VLAN) { show_ale_entry_vlan_2g(i, word0, word1, word2);} else if (type == ALE_ENTRY_VLAN_ADDR) {if ((word1 >> 8) & 0x1) { show_ale_entry_vlan_multicast_2g(i, word0, word1, word2);} else { show_ale_entry_vlan_unicast_2g(i, word0, word1, word2); }}} printf("Completed analysis of %u ALE entries\n", i);} void cpsw_print_ale_table_ng(numAleEntries) { uint32_t word0, word1, word2; uint32_t type; uint32_t vlanEntryType; int i; printf("---------------------------------------------\n");printf("-------CPSWnG ALE TABLE----------------------\n");printf("---------------------------------------------\n");for (i = 0; i < numAleEntries; i++) { mmio_write_32(ALE_TBLCTL_9G, i); word0 = mmio_read_32(ALE_TBLW0_9G); word1 = mmio_read_32(ALE_TBLW1_9G);word2 = mmio_read_32(ALE_TBLW2_9G); if (0) { printf("WORD0 = %x\n", word0);printf("WORD1 = %x\n", word1); printf("WORD2 = %x\n", word2); } /* ENTRY_TYPE (bits 61:60) */ type = (word1 >> 28) & 0x3; if (type == ALE_ENTRY_EMTPY) { //printf(" Entry %u - Empty\n", i); } else if (type == ALE_ENTRY_ADDR) { if ((word1 >> 8) & 0x1) {I print_ale.c [Modified] 790/790 100%I print_ale.c [Modified] 791/791 100%I print_ale.c [Modified] 792/792 100%I print_ale.c [Modified] 793/793 100%I print_ale.c [Modified] 794/794 100%I print_ale.c [Modified] 795/795 100%I print_ale.c [Modified] 796/796 100%I print_ale.c [Modified] 797/797 100%I print_ale.c [Modified] 798/798 100%I print_ale.c [Modified] 799/799 100%I print_ale.c [Modified] 800/800 100%I print_ale.c [Modified] 801/801 100%I print_ale.c [Modified] 802/802 100%I print_ale.c [Modified] 803/803 100%I print_ale.c [Modified] 804/804 100%I print_ale.c [Modified] 805/805 100%I print_ale.c [Modified] 806/806 100%I print_ale.c [Modified] 807/807 100%I print_ale.c [Modified] 808/808 100%I print_ale.c [Modified] 809/809 100%I print_ale.c [Modified] 810/810 100%I print_ale.c [Modified] 811/811 100% printf("Completed analysis of %u ALE entries\n", i);} void cpsw_print_ale_table_ng(numAleEntries) { uint32_t word0, word1, word2; uint32_t type; uint32_t vlanEntryType; int i; printf("---------------------------------------------\n");printf("-------CPSWnG ALE TABLE----------------------\n");printf("---------------------------------------------\n");for (i = 0; i < numAleEntries; i++) { mmio_write_32(ALE_TBLCTL_9G, i); word0 = mmio_read_32(ALE_TBLW0_9G); word1 = mmio_read_32(ALE_TBLW1_9G);word2 = mmio_read_32(ALE_TBLW2_9G); if (0) { printf("WORD0 = %x\n", word0);printf("WORD1 = %x\n", word1); printf("WORD2 = %x\n", word2); } /* ENTRY_TYPE (bits 61:60) */ type = (word1 >> 28) & 0x3; if (type == ALE_ENTRY_EMTPY) { //printf(" Entry %u - Empty\n", i); } else if (type == ALE_ENTRY_ADDR) { if ((word1 >> 8) & 0x1) { show_ale_entry_multicast_9g(i, word0, word1, word2); } else if ( ((word1 >> 30) & 0x3) == 0x2 ){ show_ale_entry_oui_unicast_9g(i, word0, word1, word2); }else { show_ale_entry_unicast_9g(i, word0, word1, word2); }}else if (type == ALE_ENTRY_VLAN){ vlanEntryType = ((word1 >> 30) & 0x3); vlanEntryType |= ((word2 >> 0) & 0x1); if ( 0x0 == vlanEntryType) { show_ale_entry_vlan_inner_9g(i, word0, word1, word2); }else if ( 0x2 == vlanEntryType)I print_ale.c [Modified] 812/812 100%I print_ale.c [Modified] 813/813 100%I print_ale.c [Modified] 814/814 100%I print_ale.c [Modified] 815/815 100%I print_ale.c [Modified] 816/816 100%I print_ale.c [Modified] 817/817 100%I print_ale.c [Modified] 818/818 100%I print_ale.c [Modified] 819/819 100%I print_ale.c [Modified] 820/820 100%I print_ale.c [Modified] 821/821 100%I print_ale.c [Modified] 822/822 100%I print_ale.c [Modified] 823/823 100%I print_ale.c [Modified] 824/824 100%I print_ale.c [Modified] 825/825 100%I print_ale.c [Modified] 826/826 100%I print_ale.c [Modified] 827/827 100%I print_ale.c [Modified] 828/828 100%I print_ale.c [Modified] 829/829 100%I print_ale.c [Modified] 830/830 100%I print_ale.c [Modified] 831/831 100%I print_ale.c [Modified] 832/832 100%I print_ale.c [Modified] 833/833 100%I print_ale.c [Modified] 834/834 100%{ printf("WORD0 = %x\n", word0); printf("WORD1 = %x\n", word1);printf("WORD2 = %x\n", word2); } /* ENTRY_TYPE (bits 61:60) */ type = (word1 >> 28) & 0x3; if (type == ALE_ENTRY_EMTPY){ //printf(" Entry %u - Empty\n", i); } else if (type == ALE_ENTRY_ADDR) { if ((word1 >> 8) & 0x1) { show_ale_entry_multicast_9g(i, word0, word1, word2); } else if ( ((word1 >> 30) & 0x3) == 0x2 ) { show_ale_entry_oui_unicast_9g(i, word0, word1, word2); } else{ show_ale_entry_unicast_9g(i, word0, word1, word2);} else if (type == ALE_ENTRY_VLAN){ vlanEntryType = ((word1 >> 30) & 0x3);vlanEntryType |= ((word2 >> 0) & 0x1); if ( 0x0 == vlanEntryType){ show_ale_entry_vlan_inner_9g(i, word0, word1, word2); } else if ( 0x2 == vlanEntryType){ show_ale_entry_vlan_outer_9g(i, word0, word1, word2);} else if ( 0x4 == vlanEntryType){ show_ale_entry_vlan_ethertype_9g(i, word0, word1, word2);} else if ( 0x6 == vlanEntryType ){ show_ale_entry_vlan_ip4_9g(i, word0, word1, word2);} else if ((word1 >> 30) & 0x1) { show_ale_entry_vlan_ip6_9g(i, word0, word1, word2); } } else if (type == ALE_ENTRY_VLAN_ADDR){ if ((word1 >> 8) & 0x1){ show_ale_entry_vlan_multicast_9g(i, word0, word1, word2);} else {I print_ale.c [Modified] 835/835 100%I print_ale.c [Modified] 836/836 100%I print_ale.c [Modified] 837/837 100%I print_ale.c [Modified] 838/838 100%I print_ale.c [Modified] 839/839 100%I print_ale.c [Modified] 840/840 100%I print_ale.c [Modified] 841/841 100%I print_ale.c [Modified] 842/842 100%I print_ale.c [Modified] 843/843 100%I print_ale.c [Modified] 844/844 100%I print_ale.c [Modified] 845/845 100%I print_ale.c [Modified] 846/846 100%I print_ale.c [Modified] 847/847 100%I print_ale.c [Modified] 848/848 100%I print_ale.c [Modified] 849/849 100%I print_ale.c [Modified] 850/850 100%I print_ale.c [Modified] 851/851 100%I print_ale.c [Modified] 852/852 100%I print_ale.c [Modified] 853/853 100%I print_ale.c [Modified] 854/854 100%I print_ale.c [Modified] 855/855 100%I print_ale.c [Modified] 856/856 100%I print_ale.c [Modified] 857/857 100% }else { show_ale_entry_unicast_9g(i, word0, word1, word2); }}else if (type == ALE_ENTRY_VLAN){ vlanEntryType = ((word1 >> 30) & 0x3); vlanEntryType |= ((word2 >> 0) & 0x1); if ( 0x0 == vlanEntryType) { show_ale_entry_vlan_inner_9g(i, word0, word1, word2); }else if ( 0x2 == vlanEntryType)vlan_outer_9g(i, word0, word1, word2);0x4 == vlanEntryType) show_ale_entry_vlan_ethertype_9g(i, word0, word1, word2);if ( 0x6 == vlanEntryType )vlan_ip4_9g(i, word0, word1, word2); else if ((word1 >> 30) & 0x1) { show_ale_entry_vlan_ip6_9g(i, word0, word1, word2);} }else if (type == ALE_ENTRY_VLAN_ADDR){ if ((word1 >> 8) & 0x1) { show_ale_entry_vlan_multicast_9g(i, word0, word1, word2);}else { show_ale_entry_vlan_unicast_9g(i, word0, word1, word2);} } } printf("Completed analysis of %u ALE entries\n", i);} void cpsw_print_ale_table_5g(){ cpsw_print_ale_table_ng(ALE_TABLE_DEPTH_5G);} void cpsw_print_ale_table_9g(){ cpsw_print_ale_table_ng(ALE_TABLE_DEPTH_9G);} void cpsw_ng_clear_stats(uint32_t numMacPorts){ uint32_t portnum, baseAddr, numStats; forI print_ale.c [Modified] 858/858 100%I print_ale.c [Modified] 859/859 100%I print_ale.c [Modified] 860/860 100%I print_ale.c [Modified] 861/861 100%I print_ale.c [Modified] 862/862 100%I print_ale.c [Modified] 863/863 100%I print_ale.c [Modified] 864/864 100%I print_ale.c [Modified] 865/865 100%I print_ale.c [Modified] 866/866 100%I print_ale.c [Modified] 867/867 100%I print_ale.c [Modified] 868/868 100%I print_ale.c [Modified] 869/869 100%I print_ale.c [Modified] 870/870 100%I print_ale.c [Modified] 871/871 100%I print_ale.c [Modified] 872/872 100%I print_ale.c [Modified] 873/873 100%I print_ale.c [Modified] 874/874 100%I print_ale.c [Modified] 875/875 100%I print_ale.c [Modified] 876/876 100%I print_ale.c [Modified] 877/877 100%I print_ale.c [Modified] 878/878 100%I print_ale.c [Modified] 879/879 100%else if ( 0x6 == vlanEntryType ){ show_ale_entry_vlan_ip4_9g(i, word0, word1, word2);} else if ((word1 >> 30) & 0x1) { show_ale_entry_vlan_ip6_9g(i, word0, word1, word2); } } else if (type == ALE_ENTRY_VLAN_ADDR){ if ((word1 >> 8) & 0x1){ show_ale_entry_vlan_multicast_9g(i, word0, word1, word2);} else {unicast_9g(i, word0, word1, word2);} } printf("Completed analysis of %u ALE entries\n", i);} void cpsw_print_ale_table_5g() { cpsw_print_ale_table_ng(ALE_TABLE_DEPTH_5G);} void cpsw_print_ale_table_9g(){cpsw_print_ale_table_ng(ALE_TABLE_DEPTH_9G);} void cpsw_ng_clear_stats(uint32_t numMacPorts){ uint32_t portnum, baseAddr, numStats; for (portnum = 0; portnum <= numMacPorts; portnum++){ baseAddr = 0x0C03A000U + (portnum * 0x200); printf("Clearing stats for port[%d]\n",portnum);for (numStats = 0; numStats < 128U; numStats++) { cpsw_clear_stat(baseAddr + (numStats*0x4));} } printf("--------CLEARED ALL STATS-------\n");5g_clear_stats() ng_clear_stats(CPSW_5G_PORT_NUM); 9g_clear_stats() cpsw_ng_clear_stats(CPSW_9G_PORT_NUM);} I print_ale.c [Modified] 880/880 100%I print_ale.c [Modified] 881/881 100%I print_ale.c [Modified] 882/882 100%I print_ale.c [Modified] 883/883 100%I print_ale.c [Modified] 884/884 100%I print_ale.c [Modified] 885/885 100%{ show_ale_entry_vlan_ip6_9g(i, word0, word1, word2);} } else if (type == ALE_ENTRY_VLAN_ADDR){ if ((word1 >> 8) & 0x1){ show_ale_entry_vlan_multicast_9g(i, word0, word1, word2); } else { show_ale_entry_vlan_unicast_9g(i, word0, word1, word2);}} } printf("Completed analysis of %u ALE entries\n", i); } void cpsw_print_ale_table_5g(){cpsw_print_ale_table_ng(ALE_TABLE_DEPTH_5G); 99ng_clear_stats(uint32_t numMacPorts)uint32_t portnum, baseAddr, numStats; for (portnum = 0; portnum <= numMacPorts; portnum++) { baseAddr = 0x0C03A000U + (portnum * 0x200); printf("Clearing stats for port[%d]\n",portnum); for (numStats = 0; numStats < 128U; numStats++) { cpsw_clear_stat(baseAddr + (numStats*0x4));}} printf("--------CLEARED ALL STATS-------\n");} void cpsw_5g_clear_stats(){cpsw_ng_clear_stats(CPSW_5G_PORT_NUM); 99int main() print_ale_table_9g(); }- print_ale.c [Modified] 885/885 100%:wqroot@j721e-evm:~#
    root@j721e-evm:~#
    root@j721e-evm:~# vi print_ale.c
    #include <ctype.h>#include <error.h>#include <fcntl.h>#include <stdarg.h>#include <stdint.h>#include <stdio.h>#include <stdlib.h>#include <sys/mman.h>#include <unistd.h>#define MEMORY "/dev/mem"#define CPSW_9G_PORT_NUM 8#define CPSW_5G_PORT_NUM 4#define CPSW_2G_PORT_NUM 1#define ALE_TBLCTL_2G 0x4603E020#define ALE_TBLW2_2G 0x4603E034#define ALE_TBLW1_2G 0x4603E038#define ALE_TBLW0_2G 0x4603E03C#define ALE_TBLCTL_9G 0x0C03E020#define ALE_TBLW2_9G 0x0C03E034#define ALE_TBLW1_9G 0x0C03E038#define ALE_TBLW0_9G 0x0C03E03C#define ALE_TABLE_DEPTH_2G 64#define ALE_TABLE_DEPTH_5G 512#define ALE_TABLE_DEPTH_9G 1024#define ALE_ENTRY_EMTPY 0x0#define ALE_ENTRY_ADDR 0x1#define ALE_ENTRY_VLAN 0x2#define ALE_ENTRY_VLAN_ADDR 0x3int fd;unsigned page_size, mapped_size, offset_in_page;void * map_base, *virt_addr;int fd;uint32_t mmio_read_32(unsigned long int addr);void mmio_write_32(unsigned long int addr, uint32_t value);static void unmap_address(void){if (munmap(map_base, mapped_size) == -1)fprintf(stderr, "munmap");close(fd);}static int map_address(off_t target){unsigned int width = 8 * sizeof(uint64_t);fd = open(MEMORY, (O_RDWR | O_SYNC));if (fd < 0){fprintf(stderr, "Could not open %s!\n", MEMORY);return -5;}- print_ale.c 1/885 0%:Set nu'Set' is not implemented- print_ale.c 1/885 0%:set nu:s expression missing delimiters- print_ale.c 1/885 0%Already at oldest change- print_ale.c 1/885 0%:${ uint32_t portnum, baseAddr, numStats; for (portnum = 0; portnum <= numMacPorts; portnum++) { baseAddr = 0x0C03A000U + (portnum * 0x200); printf("Clearing stats for port[%d]\n",portnum); for (numStats = 0; numStats < 128U; numStats++){ cpsw_clear_stat(baseAddr + (numStats*0x4));} } printf("--------CLEARED ALL STATS-------\n");} void cpsw_5g_clear_stats() { cpsw_ng_clear_stats(CPSW_5G_PORT_NUM); } void cpsw_9g_clear_stats() { cpsw_ng_clear_stats(CPSW_9G_PORT_NUM); } int main() { cpsw_print_ale_table_9g();} ~ ~ ~ ~~ ~~ ~ ~ ~~ ~ ~~ ~~ ~ ~ ~~~ ~~ ~~ ~ ~ ~ ~ ~ ~- print_ale.c 885/885 100%- print_ale.c 885/885 100%:wqroot@j721e-evm:~#
    root@j721e-evm:~#
    root@j721e-evm:~# "gcc print_ale.c -o print_ale"
    print_ale.c: In function 'cpsw_print_ale_table_ng':
    print_ale.c:754:6: warning: type of 'numAleEntries' defaults to 'int' [-Wimplicit-int]
    754 | void cpsw_print_ale_table_ng(numAleEntries)
    | ^~~~~~~~~~~~~~~~~~~~~~~
    root@j721e-evm:~#
    root@j721e-evm:~#
    root@j721e-evm:~#
    root@j721e-evm:~#
    root@j721e-evm:~# ls
    print_ale print_ale.c
    root@j721e-evm:~# ./print_ale
    ---------------------------------------------
    -------CPSWnG ALE TABLE----------------------
    ---------------------------------------------
    ---------------------------------------------
    Entry 0 - VLAN INNER
    ---------------------------------------------
    ENTRY_TYPE = 2
    IVLAN_ID = 0
    NO FRAG = 0
    REG_MCAST_FLOOD = 31
    VLAN FWD Untagged Egress = 31
    LMT NEXT HDR = 0
    UNREG_MCAST_FLOOD = 31
    VLAN_MEMBER_LIST = 31
    ---------------------------------------------
    Entry 1 - Multicast
    ---------------------------------------------
    PORT_MASK = 1
    SUPER = 0
    MCAST IGNORE BITS= 0
    MCAST_FWD_STATE = 0
    ENTRY_TYPE = 1
    MULTICAST_ADDR = 100 5e000001
    ---------------------------------------------
    Entry 2 - VLAN/Unicast
    ---------------------------------------------
    TRUNK = 0
    PORT_NUMBER = 0
    BLOCK = 1
    TOUCH = 0
    AGEABLE = 0
    SECURE = 1
    ENTRY_TYPE = 3
    VLAN_ID = 1
    UNICAST_ADDR = 70ff 761eb814
    ---------------------------------------------
    Entry 3 - VLAN/Multicast
    ---------------------------------------------
    PORT_MASK = 1f
    SUPER = 0
    MCAST_FWD_STATE = 3
    ENTRY_TYPE = 3
    VLAN_ID = 1
    MULTICAST_ADDR = ffff ffffffff
    ---------------------------------------------
    Entry 4 - Multicast
    ---------------------------------------------
    PORT_MASK = 1
    SUPER = 0
    MCAST IGNORE BITS= 0
    MCAST_FWD_STATE = 0
    ENTRY_TYPE = 1
    MULTICAST_ADDR = 3333 1
    ---------------------------------------------
    Entry 5 - VLAN/Unicast
    ---------------------------------------------
    TRUNK = 0
    PORT_NUMBER = 0
    BLOCK = 0
    TOUCH = 0
    AGEABLE = 0
    SECURE = 1
    ENTRY_TYPE = 3
    VLAN_ID = 1
    UNICAST_ADDR = 70ff 761eb815
    ---------------------------------------------
    Entry 6 - Multicast
    ---------------------------------------------
    PORT_MASK = 1
    SUPER = 0
    MCAST IGNORE BITS= 0
    MCAST_FWD_STATE = 0
    ENTRY_TYPE = 1
    MULTICAST_ADDR = 3333 ff1eb817
    ---------------------------------------------
    Entry 7 - VLAN/Unicast
    ---------------------------------------------
    TRUNK = 0
    PORT_NUMBER = 0
    BLOCK = 0
    TOUCH = 0
    AGEABLE = 0
    SECURE = 1
    ENTRY_TYPE = 3
    VLAN_ID = 1
    UNICAST_ADDR = 70ff 761eb816
    ---------------------------------------------
    Entry 8 - Multicast
    ---------------------------------------------
    PORT_MASK = 1
    SUPER = 0
    MCAST IGNORE BITS= 0
    MCAST_FWD_STATE = 0
    ENTRY_TYPE = 1
    MULTICAST_ADDR = 180 c2000000
    ---------------------------------------------
    Entry 9 - Multicast
    ---------------------------------------------
    PORT_MASK = 1
    SUPER = 0
    MCAST IGNORE BITS= 0
    MCAST_FWD_STATE = 0
    ENTRY_TYPE = 1
    MULTICAST_ADDR = 180 c2000003
    ---------------------------------------------
    Entry 10 - Multicast
    ---------------------------------------------
    PORT_MASK = 1
    SUPER = 0
    MCAST IGNORE BITS= 0
    MCAST_FWD_STATE = 0
    ENTRY_TYPE = 1
    MULTICAST_ADDR = 180 c200000e
    ---------------------------------------------
    Entry 11 - Multicast
    ---------------------------------------------
    PORT_MASK = 1
    SUPER = 0
    MCAST IGNORE BITS= 0
    MCAST_FWD_STATE = 0
    ENTRY_TYPE = 1
    MULTICAST_ADDR = 3333 fb
    ---------------------------------------------
    Entry 12 - Multicast
    ---------------------------------------------
    PORT_MASK = 1
    SUPER = 0
    MCAST IGNORE BITS= 0
    MCAST_FWD_STATE = 0
    ENTRY_TYPE = 1
    MULTICAST_ADDR = 3333 10003
    ---------------------------------------------
    Entry 13 - VLAN/Unicast
    ---------------------------------------------
    TRUNK = 0
    PORT_NUMBER = 0
    BLOCK = 1
    TOUCH = 0
    AGEABLE = 0
    SECURE = 1
    ENTRY_TYPE = 3
    VLAN_ID = 1
    UNICAST_ADDR = 70ff 761eb817
    ---------------------------------------------
    Entry 14 - VLAN INNER
    ---------------------------------------------
    ENTRY_TYPE = 2
    IVLAN_ID = 1
    NO FRAG = 0
    REG_MCAST_FLOOD = 31
    VLAN FWD Untagged Egress = 30
    LMT NEXT HDR = 0
    UNREG_MCAST_FLOOD = 1
    VLAN_MEMBER_LIST = 31
    ---------------------------------------------
    Entry 16 - Unicast
    ---------------------------------------------
    TRUNK = 0
    PORT_NUMBER = 4
    BLOCK = 0
    SECURE = 0
    TOUCH = 0
    AGEABLE = 1
    ENTRY_TYPE = 1
    UNICAST_ADDR = 309c 23775a1b
    ---------------------------------------------
    Entry 49 - Unicast
    ---------------------------------------------
    TRUNK = 0
    PORT_NUMBER = 1
    BLOCK = 0
    SECURE = 0
    TOUCH = 0
    AGEABLE = 1
    ENTRY_TYPE = 1
    UNICAST_ADDR = 309c 23753fa2
    Completed analysis of 1024 ALE entries
    root@j721e-evm:~# 17:57:01.306145 IP6 j721e-evm > ip6-allrouters: ICMP6, router solicitation, length 16

    root@j721e-evm:~#
    root@j721e-evm:~# 17:57:11.976623 IP 0.0.0.0.bootpc > 255.255.255.255.bootps: BOOTP/DHCP, Request from 70:ff:76:1e:b8:14 (oui Unknown), length 291

    root@j721e-evm:~# 17:57:12.196556 IP 0.0.0.0.bootpc > 255.255.255.255.bootps: BOOTP/DHCP, Request from 70:ff:76:1e:b8:17 (oui Unknown), length 291

    root@j721e-evm:~#
    root@j721e-evm:~#
    root@j721e-evm:~#
    root@j721e-evm:~#
    root@j721e-evm:~#
    root@j721e-evm:~#
    root@j721e-evm:~#
    root@j721e-evm:~#
    root@j721e-evm:~# ./print_ale 17:58:15.340423 IP 0.0.0.0.bootpc > 255.255.255.255.bootps: BOOTP/DHCP, Request from 70:ff:76:1e:b8:14 (oui Unknown), length 291
    17:58:16.128754 IP 0.0.0.0.bootpc > 255.255.255.255.bootps: BOOTP/DHCP, Request from 70:ff:76:1e:b8:17 (oui Unknown), length 291
    17:59:20.074892 IP 0.0.0.0.bootpc > 255.255.255.255.bootps: BOOTP/DHCP, Request from 70:ff:76:1e:b8:17 (oui Unknown), length 291
    17:59:20.274226 IP 0.0.0.0.bootpc > 255.255.255.255.bootps: BOOTP/DHCP, Request from 70:ff:76:1e:b8:14 (oui Unknown), length 291

    ---------------------------------------------
    -------CPSWnG ALE TABLE----------------------
    ---------------------------------------------
    ---------------------------------------------
    Entry 0 - VLAN INNER
    ---------------------------------------------
    ENTRY_TYPE = 2
    IVLAN_ID = 0
    NO FRAG = 0
    REG_MCAST_FLOOD = 31
    VLAN FWD Untagged Egress = 31
    LMT NEXT HDR = 0
    UNREG_MCAST_FLOOD = 31
    VLAN_MEMBER_LIST = 31
    ---------------------------------------------
    Entry 1 - Multicast
    ---------------------------------------------
    PORT_MASK = 1
    SUPER = 0
    MCAST IGNORE BITS= 0
    MCAST_FWD_STATE = 0
    ENTRY_TYPE = 1
    MULTICAST_ADDR = 100 5e000001
    ---------------------------------------------
    Entry 2 - VLAN/Unicast
    ---------------------------------------------
    TRUNK = 0
    PORT_NUMBER = 0
    BLOCK = 1
    TOUCH = 0
    AGEABLE = 0
    SECURE = 1
    ENTRY_TYPE = 3
    VLAN_ID = 1
    UNICAST_ADDR = 70ff 761eb814
    ---------------------------------------------
    Entry 3 - VLAN/Multicast
    ---------------------------------------------
    PORT_MASK = 1f
    SUPER = 0
    MCAST_FWD_STATE = 3
    ENTRY_TYPE = 3
    VLAN_ID = 1
    MULTICAST_ADDR = ffff ffffffff
    ---------------------------------------------
    Entry 4 - Multicast
    ---------------------------------------------
    PORT_MASK = 1
    SUPER = 0
    MCAST IGNORE BITS= 0
    MCAST_FWD_STATE = 0
    ENTRY_TYPE = 1
    MULTICAST_ADDR = 3333 1
    ---------------------------------------------
    Entry 5 - VLAN/Unicast
    ---------------------------------------------
    TRUNK = 0
    PORT_NUMBER = 0
    BLOCK = 0
    TOUCH = 0
    AGEABLE = 0
    SECURE = 1
    ENTRY_TYPE = 3
    VLAN_ID = 1
    UNICAST_ADDR = 70ff 761eb815
    ---------------------------------------------
    Entry 6 - Multicast
    ---------------------------------------------
    PORT_MASK = 1
    SUPER = 0
    MCAST IGNORE BITS= 0
    MCAST_FWD_STATE = 0
    ENTRY_TYPE = 1
    MULTICAST_ADDR = 3333 ff1eb817
    ---------------------------------------------
    Entry 7 - VLAN/Unicast
    ---------------------------------------------
    TRUNK = 0
    PORT_NUMBER = 0
    BLOCK = 0
    TOUCH = 0
    AGEABLE = 0
    SECURE = 1
    ENTRY_TYPE = 3
    VLAN_ID = 1
    UNICAST_ADDR = 70ff 761eb816
    ---------------------------------------------
    Entry 8 - Multicast
    ---------------------------------------------
    PORT_MASK = 1
    SUPER = 0
    MCAST IGNORE BITS= 0
    MCAST_FWD_STATE = 0
    ENTRY_TYPE = 1
    MULTICAST_ADDR = 180 c2000000
    ---------------------------------------------
    Entry 9 - Multicast
    ---------------------------------------------
    PORT_MASK = 1
    SUPER = 0
    MCAST IGNORE BITS= 0
    MCAST_FWD_STATE = 0
    ENTRY_TYPE = 1
    MULTICAST_ADDR = 180 c2000003
    ---------------------------------------------
    Entry 10 - Multicast
    ---------------------------------------------
    PORT_MASK = 1
    SUPER = 0
    MCAST IGNORE BITS= 0
    MCAST_FWD_STATE = 0
    ENTRY_TYPE = 1
    MULTICAST_ADDR = 180 c200000e
    ---------------------------------------------
    Entry 11 - Multicast
    ---------------------------------------------
    PORT_MASK = 1
    SUPER = 0
    MCAST IGNORE BITS= 0
    MCAST_FWD_STATE = 0
    ENTRY_TYPE = 1
    MULTICAST_ADDR = 3333 fb
    ---------------------------------------------
    Entry 12 - Multicast
    ---------------------------------------------
    PORT_MASK = 1
    SUPER = 0
    MCAST IGNORE BITS= 0
    MCAST_FWD_STATE = 0
    ENTRY_TYPE = 1
    MULTICAST_ADDR = 3333 10003
    ---------------------------------------------
    Entry 13 - VLAN/Unicast
    ---------------------------------------------
    TRUNK = 0
    PORT_NUMBER = 0
    BLOCK = 1
    TOUCH = 0
    AGEABLE = 0
    SECURE = 1
    ENTRY_TYPE = 3
    VLAN_ID = 1
    UNICAST_ADDR = 70ff 761eb817
    ---
    ------------------------------------------
    Entry 14 - VLAN INNER
    ---------------------------------------------
    ENTRY_TYPE = 2
    IVLAN_ID = 1
    NO FRAG = 0
    REG_MCAST_FLOOD = 31
    VLAN FWD Untagged Egress = 30
    LMT NEXT HDR = 0
    UNREG_MCAST_FLOOD = 1
    VLAN_MEMBER_LIST = 31
    ---------------------------------------------
    Entry 16 - Unicast
    ---------------------------------------------
    TRUNK = 0
    PORT_NUMBER = 4
    BLOCK = 0
    SECURE = 0
    TOUCH = 1
    AGEABLE = 1
    ENTRY_TYPE = 1
    UNICAST_ADDR = 309c 23775a1b
    ---------------------------------------------
    Entry 49 - Unicast
    ---------------------------------------------
    TRUNK = 0
    PORT_NUMBER = 1
    BLOCK = 0
    SECURE = 0
    TOUCH = 1
    AGEABLE = 1
    ENTRY_TYPE = 1
    UNICAST_ADDR = 309c 23753fa2
    Completed analysis of 1024 ALE entries
    root@j721e-evm:~#
    root@j721e-evm:~#
    root@j721e-evm:~#

  • Hi Tanmay,

    configuration updated one more time here and above mixed with print_ale logs.

    configuration:


    # Set device parameter
    devlink dev param set platform/c000000.ethernet name switch_mode value true cmode runtime

    # Add a new bridge and set its ageing time
    ip link add name br0 type bridge
    ip link set dev br0 type bridge ageing_time 1000

    # Bring down ethernet interfaces
    ip link set dev eth1 down
    ip link set dev eth2 down
    ip link set dev eth3 down
    ip link set dev eth4 down

    # Bring up ethernet interfaces
    ip link set dev eth1 up
    ip link set dev eth2 up
    ip link set dev eth3 up
    ip link set dev eth4 up

    # Add ethernet interfaces to the bridge
    ip link set dev eth1 master br0
    ip link set dev eth2 master br0
    ip link set dev eth3 master br0
    ip link set dev eth4 master br0

    # Enable VLAN filtering on the bridge
    ip link set dev br0 type bridge vlan_filtering 1

    # Add a VLAN to the bridge
    bridge vlan add dev br0 vid 1 pvid untagged self

    bridge link set dev eth1 mcast_flood on

    bridge link set dev eth4 mcast_flood on

    bridge vlan add dev br0 vid 1 self

  • Hi Tanmay,

    I have tried with one of dlink router and connected PC1 and PC2.

    Nothing is configured on cyclonedds application side and it is working as expected.

    Network Topology is  

       PC1 <=====>(eth2) Dlink router connected via ethernet (eth3) <=======> PC2

    Like above i have connected and ping between PC1 and PC2 working same as TI switch. In TI switch also ping is working between PC1 and PC2.

    And started application, it is working as expected. i hope some configurations missing in TI switch side please check and let me know. 

  • Hi Pawan,

    From the logs the ALE is configured correctly and the multicast on which you are transmitting should be received on host port.

    Can you capture the CPSW statistic (using "ethtool -S eth1/eth4", on which you are receiving the multicast traffic.) twice around 10 second apart while the multicast traffic is being sent.

    This would help us see if there are any drops in the hardware. It would be even better if we can find out how many multicast packets were actually sent during this time.

    Regards,
    Tanmay

  • Hi Tanmay,

    Please find below and configuration followed same as above.

    Here i have attached completed logs.

    U-Boot SPL 2023.04-g756ba776d4 (Jul 13 2023 - 05:36:12 +0000)
    SYSFW ABI: 3.1 (firmware rev 0x0009 '9.0.6--v09.00.06 (Kool Koala)')
    Trying to boot from MMC2
    Warning: Detected image signing certificate on GP device. Skipping certificate to prevent boot failure. This will fail if the image was also encrypted
    Warning: Detected image signing certificate on GP device. Skipping certificate to prevent boot failure. This will fail if the image was also encrypted
    Warning: Detected image signing certificate on GP device. Skipping certificate to prevent boot failure. This will fail if the image was also encrypted
    Warning: Detected image signing certificate on GP device. Skipping certificate to prevent boot failure. This will fail if the image was also encrypted
    Warning: Detected image signing certificate on GP device. Skipping certificate to prevent boot failure. This will fail if the image was also encrypted
    Loading Environment from nowhere... OK
    Starting ATF on ARM64 core...
    
    NOTICE: BL31: v2.8(release):v2.8-226-g2fcd408bb3-dirty
    NOTICE: BL31: Built : 00:42:57, Jan 13 2023
    I/TC:
    I/TC: OP-TEE version: 3.20.0 (gcc version 11.3.0 (GCC)) #1 Fri Jan 20 15:42:54 UTC 2023 aarch64
    I/TC: WARNING: This OP-TEE configuration might be insecure!
    I/TC: WARNING: Please check optee.readthedocs.io/.../porting_guidelines.html
    I/TC: Primary CPU initializing
    I/TC: SYSFW ABI: 3.1 (firmware rev 0x0009 '9.0.6--v09.00.06 (Kool Koala)')
    I/TC: HUK Initialized
    I/TC: Activated SA2UL device
    I/TC: Fixing SA2UL firewall owner for GP device
    I/TC: Enabled firewalls for SA2UL TRNG device
    I/TC: SA2UL TRNG initialized
    I/TC: SA2UL Drivers initialized
    I/TC: Primary CPU switching to normal world boot
    
    U-Boot SPL 2023.04-g756ba776d4 (Jul 13 2023 - 05:36:12 +0000)
    SYSFW ABI: 3.1 (firmware rev 0x0009 '9.0.6--v09.00.06 (Kool Koala)')
    Detected: J7X-BASE-CPB rev A
    Detected: J7X-VSC8514-ETH rev A
    Trying to boot from MMC2
    Warning: Detected image signing certificate on GP device. Skipping certificate to prevent boot failure. This will fail if the image was also encrypted
    Warning: Detected image signing certificate on GP device. Skipping certificate to prevent boot failure. This will fail if the image was also encrypted
    
    
    U-Boot 2023.04-g756ba776d4 (Jul 13 2023 - 05:36:12 +0000)
    
    SoC: J721E SR1.1 GP
    Model: Texas Instruments K3 J721E SoC
    Board: J721EX-PM2-SOM rev A
    DRAM: 4 GiB
    Core: 123 devices, 34 uclasses, devicetree: separate
    Flash: 0 Bytes
    MMC: mmc@4f80000: 0, mmc@4fb0000: 1
    Loading Environment from nowhere... OK
    In: serial@2800000
    Out: serial@2800000
    Err: serial@2800000
    am65_cpsw_nuss ethernet@46000000: K3 CPSW: nuss_ver: 0x6BA00101 cpsw_ver: 0x6BA80100 ale_ver: 0x00293904 Ports:1 mdio_freq:1000000
    Detected: J7X-BASE-CPB rev A
    Detected: J7X-VSC8514-ETH rev A
    cdns,sierra serdes@5000000: sierra probed
    Net: eth0: ethernet@46000000port@1
    Hit any key to stop autoboot: 0
    switch to partitions #0, OK
    mmc1 is current device
    SD/MMC found on device 1
    Failed to load 'boot.scr'
    785 bytes read in 24 ms (31.3 KiB/s)
    Loaded env from uEnv.txt
    Importing environment from mmc1 ...
    Running uenvcmd ...
    gpio: pin gpio@22_17 (gpio 281) value is 1
    gpio: pin gpio@22_16 (gpio 280) value is 0
    k3_r5f_rproc r5f@41000000: Core 1 is already in use. No rproc commands work
    k3_r5f_rproc r5f@41400000: Core 2 is already in use. No rproc commands work
    691508 bytes read in 42 ms (15.7 MiB/s)
    Load Remote Processor 2 with data@addr=0x82000000 691508 bytes: Success!
    91496 bytes read in 29 ms (3 MiB/s)
    Load Remote Processor 3 with data@addr=0x82000000 91496 bytes: Success!
    91496 bytes read in 29 ms (3 MiB/s)
    Load Remote Processor 4 with data@addr=0x82000000 91496 bytes: Success!
    91496 bytes read in 29 ms (3 MiB/s)
    Load Remote Processor 5 with data@addr=0x82000000 91496 bytes: Success!
    144948 bytes read in 29 ms (4.8 MiB/s)
    Load Remote Processor 6 with data@addr=0x82000000 144948 bytes: Success!
    144948 bytes read in 30 ms (4.6 MiB/s)
    Load Remote Processor 7 with data@addr=0x82000000 144948 bytes: Success!
    10489000 bytes read in 36 ms (277.9 MiB/s)
    Load Remote Processor 8 with data@addr=0x82000000 10489000 bytes: Success!
    20593152 bytes read in 436 ms (45 MiB/s)
    113998 bytes read in 27 ms (4 MiB/s)
    Working FDT set to 88000000
    4285 bytes read in 25 ms (167 KiB/s)
    ## Flattened Device Tree blob at 88000000
    Booting using the fdt blob at 0x88000000
    Working FDT set to 88000000
    Loading Device Tree to 000000008fee1000, end 000000008fffffff ... OK
    Working FDT set to 8fee1000
    
    Starting kernel ...
    
    [ 0.000000] Booting Linux on physical CPU 0x0000000000 [0x411fd080]
    [ 0.000000] Linux version 6.1.33-g8f7f371be2 (oe-user@oe-host) (aarch64-oe-linux-gcc (GCC) 11.3.0, GNU ld (GNU Binutils) 2.38.20220708) #1 SMP PREEMPT Fri Jul 14 00:39:55 UTC 2023
    [ 0.000000] Machine model: Texas Instruments J721e EVM
    [ 0.000000] earlycon: ns16550a0 at MMIO32 0x0000000002800000 (options '')
    [ 0.000000] printk: bootconsole [ns16550a0] enabled
    [ 0.000000] efi: UEFI not found.
    [ 0.000000] Reserved memory: created CMA memory pool at 0x00000008e0000000, size 512 MiB
    [ 0.000000] OF: reserved mem: initialized node linux,cma, compatible id shared-dma-pool
    [ 0.000000] Reserved memory: created DMA memory pool at 0x00000000a0000000, size 1 MiB
    [ 0.000000] OF: reserved mem: initialized node r5f-dma-memory@a0000000, compatible id shared-dma-pool
    [ 0.000000] Reserved memory: created DMA memory pool at 0x00000000a0100000, size 15 MiB
    [ 0.000000] OF: reserved mem: initialized node r5f-memory@a0100000, compatible id shared-dma-pool
    [ 0.000000] Reserved memory: created DMA memory pool at 0x00000000a1000000, size 1 MiB
    [ 0.000000] OF: reserved mem: initialized node r5f-dma-memory@a1000000, compatible id shared-dma-pool
    [ 0.000000] Reserved memory: created DMA memory pool at 0x00000000a1100000, size 15 MiB
    [ 0.000000] OF: reserved mem: initialized node r5f-memory@a1100000, compatible id shared-dma-pool
    [ 0.000000] Reserved memory: created DMA memory pool at 0x00000000a2000000, size 1 MiB
    [ 0.000000] OF: reserved mem: initialized node r5f-dma-memory@a2000000, compatible id shared-dma-pool
    [ 0.000000] Reserved memory: created DMA memory pool at 0x00000000a2100000, size 15 MiB
    [ 0.000000] OF: reserved mem: initialized node r5f-memory@a2100000, compatible id shared-dma-pool
    [ 0.000000] Reserved memory: created DMA memory pool at 0x00000000a3000000, size 1 MiB
    [ 0.000000] OF: reserved mem: initialized node r5f-dma-memory@a3000000, compatible id shared-dma-pool
    [ 0.000000] Reserved memory: created DMA memory pool at 0x00000000a3100000, size 15 MiB
    [ 0.000000] OF: reserved mem: initialized node r5f-memory@a3100000, compatible id shared-dma-pool
    [ 0.000000] Reserved memory: created DMA memory pool at 0x00000000a4000000, size 1 MiB
    [ 0.000000] OF: reserved mem: initialized node r5f-dma-memory@a4000000, compatible id shared-dma-pool
    [ 0.000000] Reserved memory: created DMA memory pool at 0x00000000a4100000, size 15 MiB
    [ 0.000000] OF: reserved mem: initialized node r5f-memory@a4100000, compatible id shared-dma-pool
    [ 0.000000] Reserved memory: created DMA memory pool at 0x00000000a5000000, size 1 MiB
    [ 0.000000] OF: reserved mem: initialized node r5f-dma-memory@a5000000, compatible id shared-dma-pool
    [ 0.000000] Reserved memory: created DMA memory pool at 0x00000000a5100000, size 15 MiB
    [ 0.000000] OF: reserved mem: initialized node r5f-memory@a5100000, compatible id shared-dma-pool
    [ 0.000000] Reserved memory: created DMA memory pool at 0x00000000a6000000, size 1 MiB
    [ 0.000000] OF: reserved mem: initialized node c66-dma-memory@a6000000, compatible id shared-dma-pool
    [ 0.000000] Reserved memory: created DMA memory pool at 0x00000000a6100000, size 15 MiB
    [ 0.000000] OF: reserved mem: initialized node c66-memory@a6100000, compatible id shared-dma-pool
    [ 0.000000] Reserved memory: created DMA memory pool at 0x00000000a7000000, size 1 MiB
    [ 0.000000] OF: reserved mem: initialized node c66-dma-memory@a7000000, compatible id shared-dma-pool
    [ 0.000000] Reserved memory: created DMA memory pool at 0x00000000a7100000, size 15 MiB
    [ 0.000000] OF: reserved mem: initialized node c66-memory@a7100000, compatible id shared-dma-pool
    [ 0.000000] Reserved memory: created DMA memory pool at 0x00000000a8000000, size 1 MiB
    [ 0.000000] OF: reserved mem: initialized node c71-dma-memory@a8000000, compatible id shared-dma-pool
    [ 0.000000] Reserved memory: created DMA memory pool at 0x00000000a8100000, size 15 MiB
    [ 0.000000] OF: reserved mem: initialized node c71-memory@a8100000, compatible id shared-dma-pool
    [ 0.000000] Zone ranges:
    [ 0.000000] DMA [mem 0x0000000080000000-0x00000000ffffffff]
    [ 0.000000] DMA32 empty
    [ 0.000000] Normal [mem 0x0000000100000000-0x00000008ffffffff]
    [ 0.000000] Movable zone start for each node
    [ 0.000000] Early memory node ranges
    [ 0.000000] node 0: [mem 0x0000000080000000-0x000000009e7fffff]
    [ 0.000000] node 0: [mem 0x000000009e800000-0x00000000a8ffffff]
    [ 0.000000] node 0: [mem 0x00000000a9000000-0x00000000a9ffffff]
    [ 0.000000] node 0: [mem 0x00000000aa000000-0x00000000abbfffff]
    [ 0.000000] node 0: [mem 0x00000000abc00000-0x00000000ffffffff]
    [ 0.000000] node 0: [mem 0x0000000880000000-0x00000008ffffffff]
    [ 0.000000] Initmem setup node 0 [mem 0x0000000080000000-0x00000008ffffffff]
    [ 0.000000] psci: probing for conduit method from DT.
    [ 0.000000] psci: PSCIv1.1 detected in firmware.
    [ 0.000000] psci: Using standard PSCI v0.2 function IDs
    [ 0.000000] psci: Trusted OS migration not required
    [ 0.000000] psci: SMC Calling Convention v1.2
    [ 0.000000] percpu: Embedded 19 pages/cpu s38376 r8192 d31256 u77824
    [ 0.000000] Detected PIPT I-cache on CPU0
    [ 0.000000] CPU features: detected: GIC system register CPU interface
    [ 0.000000] CPU features: detected: Spectre-v3a
    [ 0.000000] CPU features: detected: Spectre-BHB
    [ 0.000000] CPU features: detected: ARM erratum 1742098
    [ 0.000000] CPU features: detected: ARM errata 1165522, 1319367, or 1530923
    [ 0.000000] alternatives: applying boot alternatives
    [ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 1032192
    [ 0.000000] Kernel command line: console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02800000 root=PARTUUID=4edaebd2-02 rw rootfstype=ext4 rootwait
    [ 0.000000] Dentry cache hash table entries: 524288 (order: 10, 4194304 bytes, linear)
    [ 0.000000] Inode-cache hash table entries: 262144 (order: 9, 2097152 bytes, linear)
    [ 0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
    [ 0.000000] software IO TLB: area num 2.
    [ 0.000000] software IO TLB: mapped [mem 0x00000000fbfff000-0x00000000fffff000] (64MB)
    [ 0.000000] Memory: 3302048K/4194304K available (12480K kernel code, 1294K rwdata, 4040K rodata, 2176K init, 498K bss, 367968K reserved, 524288K cma-reserved)
    [ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
    [ 0.000000] rcu: Preemptible hierarchical RCU implementation.
    [ 0.000000] rcu: RCU event tracing is enabled.
    [ 0.000000] rcu: RCU restricting CPUs from NR_CPUS=256 to nr_cpu_ids=2.
    [ 0.000000] Trampoline variant of Tasks RCU enabled.
    [ 0.000000] Tracing variant of Tasks RCU enabled.
    [ 0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies.
    [ 0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2
    [ 0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
    [ 0.000000] GICv3: GIC: Using split EOI/Deactivate mode
    [ 0.000000] GICv3: 960 SPIs implemented
    [ 0.000000] GICv3: 0 Extended SPIs implemented
    [ 0.000000] Root IRQ handler: gic_handle_irq
    [ 0.000000] GICv3: GICv3 features: 16 PPIs
    [ 0.000000] GICv3: CPU0: found redistributor 0 region 0:0x0000000001900000
    [ 0.000000] ITS [mem 0x01820000-0x0182ffff]
    [ 0.000000] GIC: enabling workaround for ITS: Socionext Synquacer pre-ITS
    [ 0.000000] ITS@0x0000000001820000: Devices Table too large, reduce ids 20->19
    [ 0.000000] ITS@0x0000000001820000: allocated 524288 Devices @880800000 (flat, esz 8, psz 64K, shr 0)
    [ 0.000000] ITS: using cache flushing for cmd queue
    [ 0.000000] GICv3: using LPI property table @0x0000000880030000
    [ 0.000000] GIC: using cache flushing for LPI property table
    [ 0.000000] GICv3: CPU0: using allocated LPI pending table @0x0000000880040000
    [ 0.000000] rcu: srcu_init: Setting srcu_struct sizes based on contention.
    [ 0.000000] arch_timer: cp15 timer(s) running at 200.00MHz (phys).
    [ 0.000000] clocksource: arch_sys_counter: mask: 0x3ffffffffffffff max_cycles: 0x2e2049d3e8, max_idle_ns: 440795210634 ns
    [ 0.000000] sched_clock: 58 bits at 200MHz, resolution 5ns, wraps every 4398046511102ns
    [ 0.008412] Console: colour dummy device 80x25
    [ 0.012976] Calibrating delay loop (skipped), value calculated using timer frequency.. 400.00 BogoMIPS (lpj=800000)
    [ 0.023647] pid_max: default: 32768 minimum: 301
    [ 0.028384] LSM: Security Framework initializing
    [ 0.033157] Mount-cache hash table entries: 8192 (order: 4, 65536 bytes, linear)
    [ 0.040728] Mountpoint-cache hash table entries: 8192 (order: 4, 65536 bytes, linear)
    [ 0.049493] cblist_init_generic: Setting adjustable number of callback queues.
    [ 0.056898] cblist_init_generic: Setting shift to 1 and lim to 1.
    [ 0.063157] cblist_init_generic: Setting shift to 1 and lim to 1.
    [ 0.069468] rcu: Hierarchical SRCU implementation.
    [ 0.074365] rcu: Max phase no-delay instances is 1000.
    [ 0.079876] Platform MSI: msi-controller@1820000 domain created
    [ 0.086119] PCI/MSI: /bus@100000/interrupt-controller@1800000/msi-controller@1820000 domain created
    [ 0.095917] EFI services will not be available.
    [ 0.100655] smp: Bringing up secondary CPUs ...
    I/TC: Secondary CPU 1 initializing
    I/TC: Secondary CPU 1 switching to normal world boot
    [ 0.113892] Detected PIPT I-cache on CPU1
    [ 0.113951] GICv3: CPU1: found redistributor 1 region 0:0x0000000001920000
    [ 0.113964] GICv3: CPU1: using allocated LPI pending table @0x0000000880050000
    [ 0.113993] CPU1: Booted secondary processor 0x0000000001 [0x411fd080]
    [ 0.114038] smp: Brought up 1 node, 2 CPUs
    [ 0.143382] SMP: Total of 2 processors activated.
    [ 0.148186] CPU features: detected: 32-bit EL0 Support
    [ 0.153440] CPU features: detected: CRC32 instructions
    [ 0.158720] CPU: All CPU(s) started at EL2
    [ 0.162901] alternatives: applying system-wide alternatives
    [ 0.169410] devtmpfs: initialized
    [ 0.179380] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
    [ 0.189364] futex hash table entries: 512 (order: 3, 32768 bytes, linear)
    [ 0.204839] pinctrl core: initialized pinctrl subsystem
    [ 0.210507] DMI not present or invalid.
    [ 0.214737] NET: Registered PF_NETLINK/PF_ROUTE protocol family
    [ 0.221372] DMA: preallocated 512 KiB GFP_KERNEL pool for atomic allocations
    [ 0.228674] DMA: preallocated 512 KiB GFP_KERNEL|GFP_DMA pool for atomic allocations
    [ 0.236672] DMA: preallocated 512 KiB GFP_KERNEL|GFP_DMA32 pool for atomic allocations
    [ 0.244795] audit: initializing netlink subsys (disabled)
    [ 0.250412] audit: type=2000 audit(0.164:1): state=initialized audit_enabled=0 res=1
    [ 0.250627] thermal_sys: Registered thermal governor 'step_wise'
    [ 0.258331] thermal_sys: Registered thermal governor 'power_allocator'
    [ 0.264538] cpuidle: using governor menu
    [ 0.275291] hw-breakpoint: found 6 breakpoint and 4 watchpoint registers.
    [ 0.282253] ASID allocator initialised with 65536 entries
    [ 0.297679] platform a000000.dp-bridge: Fixed dependency cycle(s) with /bus@100000/dss@4a00000
    [ 0.308905] platform a000000.dp-bridge: Fixed dependency cycle(s) with /connector
    [ 0.316769] KASLR disabled due to lack of seed
    [ 0.324294] HugeTLB: registered 1.00 GiB page size, pre-allocated 0 pages
    [ 0.331236] HugeTLB: 0 KiB vmemmap can be freed for a 1.00 GiB page
    [ 0.337639] HugeTLB: registered 32.0 MiB page size, pre-allocated 0 pages
    [ 0.344573] HugeTLB: 0 KiB vmemmap can be freed for a 32.0 MiB page
    [ 0.350974] HugeTLB: registered 2.00 MiB page size, pre-allocated 0 pages
    [ 0.357907] HugeTLB: 0 KiB vmemmap can be freed for a 2.00 MiB page
    [ 0.364308] HugeTLB: registered 64.0 KiB page size, pre-allocated 0 pages
    [ 0.371241] HugeTLB: 0 KiB vmemmap can be freed for a 64.0 KiB page
    [ 0.378541] k3-chipinfo 43000014.chipid: Family:J721E rev:SR2.0 JTAGID[0x1bb6402f] Detected
    [ 0.387760] iommu: Default domain type: Translated
    [ 0.392746] iommu: DMA domain TLB invalidation policy: strict mode
    [ 0.399264] SCSI subsystem initialized
    [ 0.403251] usbcore: registered new interface driver usbfs
    [ 0.408872] usbcore: registered new interface driver hub
    [ 0.414308] usbcore: registered new device driver usb
    [ 0.419758] pps_core: LinuxPPS API ver. 1 registered
    [ 0.424830] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
    [ 0.434170] PTP clock support registered
    [ 0.438252] EDAC MC: Ver: 3.0.0
    [ 0.442029] FPGA manager framework
    [ 0.445542] Advanced Linux Sound Architecture Driver Initialized.
    [ 0.452160] clocksource: Switched to clocksource arch_sys_counter
    [ 0.458494] VFS: Disk quotas dquot_6.6.0
    [ 0.462524] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
    [ 0.472434] NET: Registered PF_INET protocol family
    [ 0.477587] IP idents hash table entries: 65536 (order: 7, 524288 bytes, linear)
    [ 0.486599] tcp_listen_portaddr_hash hash table entries: 2048 (order: 3, 32768 bytes, linear)
    [ 0.495363] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear)
    [ 0.503285] TCP established hash table entries: 32768 (order: 6, 262144 bytes, linear)
    [ 0.511490] TCP bind hash table entries: 32768 (order: 8, 1048576 bytes, linear)
    [ 0.520000] TCP: Hash tables configured (established 32768 bind 32768)
    [ 0.526779] UDP hash table entries: 2048 (order: 4, 65536 bytes, linear)
    [ 0.533690] UDP-Lite hash table entries: 2048 (order: 4, 65536 bytes, linear)
    [ 0.541122] NET: Registered PF_UNIX/PF_LOCAL protocol family
    [ 0.547192] RPC: Registered named UNIX socket transport module.
    [ 0.553251] RPC: Registered udp transport module.
    [ 0.558054] RPC: Registered tcp transport module.
    [ 0.562857] RPC: Registered tcp NFSv4.1 backchannel transport module.
    [ 0.569449] NET: Registered PF_XDP protocol family
    [ 0.574349] PCI: CLS 0 bytes, default 64
    [ 0.578710] hw perfevents: enabled with armv8_cortex_a72 PMU driver, 7 counters available
    [ 0.587881] Initialise system trusted keyrings
    [ 0.592532] workingset: timestamp_bits=46 max_order=20 bucket_order=0
    [ 0.601578] squashfs: version 4.0 (2009/01/31) Phillip Lougher
    [ 0.607857] NFS: Registering the id_resolver key type
    [ 0.613035] Key type id_resolver registered
    [ 0.617306] Key type id_legacy registered
    [ 0.621430] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
    [ 0.628279] nfs4flexfilelayout_init: NFSv4 Flexfile Layout Driver Registering...
    [ 0.635922] 9p: Installing v9fs 9p2000 file system support
    [ 0.660949] Key type asymmetric registered
    [ 0.665132] Asymmetric key parser 'x509' registered
    [ 0.670138] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 245)
    [ 0.677783] io scheduler mq-deadline registered
    [ 0.682418] io scheduler kyber registered
    [ 0.688657] pinctrl-single 4301c000.pinctrl: 94 pins, size 376
    [ 0.694890] pinctrl-single 11c000.pinctrl: 173 pins, size 692
    [ 0.701215] pinctrl-single a40000.pinctrl: 512 pins, size 2048
    [ 0.711765] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
    [ 0.719452] arm-smmu-v3 36600000.iommu: ias 48-bit, oas 48-bit (features 0x00001faf)
    [ 0.727603] arm-smmu-v3 36600000.iommu: allocated 65536 entries for cmdq
    [ 0.734686] arm-smmu-v3 36600000.iommu: allocated 32768 entries for evtq
    [ 0.742422] arm-smmu-v3 36600000.iommu: msi_domain absent - falling back to wired irqs
    [ 0.753291] loop: module loaded
    [ 0.757222] megasas: 07.719.03.00-rc1
    [ 0.763141] tun: Universal TUN/TAP device driver, 1.6
    [ 0.768700] thunder_xcv, ver 1.0
    [ 0.772003] thunder_bgx, ver 1.0
    [ 0.775318] nicpf, ver 1.0
    [ 0.778353] hns3: Hisilicon Ethernet Network Driver for Hip08 Family - version
    [ 0.785734] hns3: Copyright (c) 2017 Huawei Corporation.
    [ 0.791184] hclge is initializing
    [ 0.794579] e1000: Intel(R) PRO/1000 Network Driver
    [ 0.799560] e1000: Copyright (c) 1999-2006 Intel Corporation.
    [ 0.805442] e1000e: Intel(R) PRO/1000 Network Driver
    [ 0.810512] e1000e: Copyright(c) 1999 - 2015 Intel Corporation.
    [ 0.816572] igb: Intel(R) Gigabit Ethernet Network Driver
    [ 0.822086] igb: Copyright (c) 2007-2014 Intel Corporation.
    [ 0.827790] igbvf: Intel(R) Gigabit Virtual Function Network Driver
    [ 0.834192] igbvf: Copyright (c) 2009 - 2012 Intel Corporation.
    [ 0.840319] sky2: driver version 1.30
    [ 0.844506] VFIO - User Level meta-driver version: 0.3
    [ 0.850182] usbcore: registered new interface driver usb-storage
    [ 0.856818] i2c_dev: i2c /dev entries driver
    [ 0.862185] sdhci: Secure Digital Host Controller Interface driver
    [ 0.868508] sdhci: Copyright(c) Pierre Ossman
    [ 0.873269] Synopsys Designware Multimedia Card Interface Driver
    [ 0.879714] sdhci-pltfm: SDHCI platform and OF driver helper
    [ 0.886065] ledtrig-cpu: registered to indicate activity on CPUs
    [ 0.892309] SMCCC: SOC_ID: ARCH_SOC_ID not implemented, skipping ....
    [ 0.899069] usbcore: registered new interface driver usbhid
    [ 0.904763] usbhid: USB HID core driver
    [ 0.909484] optee: probing for conduit method.
    I/TC: Reserved shared memory is enabled
    I/TC: Dynamic shared memory is enabled
    I/TC: Normal World virtualization support is disabled
    I/TC: Asynchronous notifications are disabled
    [ 0.914041] optee: revision 3.20 (8e74d476)
    [ 0.930454] optee: dynamic shared memory is enabled
    [ 0.939920] optee: initialized driver
    [ 0.944960] Initializing XFRM netlink socket
    [ 0.949348] NET: Registered PF_PACKET protocol family
    [ 0.954572] 9pnet: Installing 9P2000 support
    [ 0.958961] Key type dns_resolver registered
    [ 0.963493] registered taskstats version 1
    [ 0.967692] Loading compiled-in X.509 certificates
    [ 0.977811] ti-sci 44083000.system-controller: ABI: 3.1 (firmware rev 0x0009 '9.0.6--v09.00.06 (Kool Koala)')
    [ 1.037005] omap_i2c 42120000.i2c: bus 0 rev0.12 at 400 kHz
    [ 1.043313] pca953x 1-0020: supply vcc not found, using dummy regulator
    [ 1.050136] pca953x 1-0020: using no AI
    [ 1.076849] pca953x 1-0022: supply vcc not found, using dummy regulator
    [ 1.083663] pca953x 1-0022: using AI
    [ 1.087945] gpio-488 (qsgmii-pwrdn-line): hogged as output/low
    [ 1.094369] gpio-480 (CTRL_PM_I2C_OE): hogged as output/high
    [ 1.100349] gpio-481 (MCASP/TRACE_MUX_S0): hogged as output/low
    [ 1.106592] gpio-482 (MCASP/TRACE_MUX_S1): hogged as output/high
    [ 1.112956] omap_i2c 2000000.i2c: bus 1 rev0.12 at 400 kHz
    [ 1.119124] omap_i2c 2010000.i2c: bus 2 rev0.12 at 400 kHz
    [ 1.125938] omap_i2c 2020000.i2c: bus 3 rev0.12 at 400 kHz
    [ 1.132030] pca953x 4-0020: supply vcc not found, using dummy regulator
    [ 1.138849] pca953x 4-0020: using no AI
    [ 1.164621] omap_i2c 2030000.i2c: bus 4 rev0.12 at 400 kHz
    [ 1.170776] pca953x 5-0020: supply vcc not found, using dummy regulator
    [ 1.177597] pca953x 5-0020: using no AI
    [ 1.204469] omap_i2c 2060000.i2c: bus 5 rev0.12 at 400 kHz
    [ 1.210286] ti-sci-intr 42200000.interrupt-controller: Interrupt Router 137 domain created
    [ 1.218841] ti-sci-intr bus@100000:interrupt-controller@a00000: Interrupt Router 131 domain created
    [ 1.228192] ti-sci-intr 310e0000.interrupt-controller: Interrupt Router 213 domain created
    [ 1.236825] ti-sci-inta 33d00000.interrupt-controller: Interrupt Aggregator domain 209 created
    [ 1.253305] k3-ringacc 2b800000.ringacc: Ring Accelerator probed rings:286, gp-rings[96,20] sci-dev-id:235
    [ 1.263195] k3-ringacc 2b800000.ringacc: dma-ring-reset-quirk: disabled
    [ 1.269956] k3-ringacc 2b800000.ringacc: RA Proxy rev. 66346100, num_proxies:64
    [ 1.278996] k3-ringacc 3c000000.ringacc: Ring Accelerator probed rings:1024, gp-rings[440,150] sci-dev-id:211
    [ 1.289154] k3-ringacc 3c000000.ringacc: dma-ring-reset-quirk: disabled
    [ 1.295912] k3-ringacc 3c000000.ringacc: RA Proxy rev. 66346100, num_proxies:64
    [ 1.303902] 40a00000.serial: ttyS1 at MMIO 0x40a00000 (irq = 194, base_baud = 6000000) is a 8250
    [ 1.313368] 2800000.serial: ttyS2 at MMIO 0x2800000 (irq = 195, base_baud = 3000000) is a 8250
    [ 1.322217] printk: console [ttyS2] enabled
    [ 1.322217] printk: console [ttyS2] enabled
    [ 1.330664] printk: bootconsole [ns16550a0] disabled
    [ 1.330664] printk: bootconsole [ns16550a0] disabled
    [ 1.341107] 2810000.serial: ttyS3 at MMIO 0x2810000 (irq = 196, base_baud = 3000000) is a 8250
    [ 1.350113] 2820000.serial: ttyS0 at MMIO 0x2820000 (irq = 197, base_baud = 3000000) is a 8250
    [ 1.359033] omap8250 2840000.serial: unable to register 8250 port
    [ 1.365119] omap8250 2840000.serial: PM domain pd:281 will not be powered off
    [ 1.372250] omap8250: probe of 2840000.serial failed with error -28
    [ 1.380669] davinci_mdio 46000f00.mdio: Configuring MDIO in manual mode
    [ 1.424168] davinci_mdio 46000f00.mdio: davinci mdio revision 9.7, bus freq 1000000
    [ 1.432615] davinci_mdio 46000f00.mdio: phy[0]: device 46000f00.mdio:00, driver TI DP83867
    [ 1.440886] am65-cpsw-nuss 46000000.ethernet: initializing am65 cpsw nuss version 0x6BA00101, cpsw version 0x6BA80100 Ports: 2 quirks:00000000
    [ 1.453693] am65-cpsw-nuss 46000000.ethernet: initialized cpsw ale version 1.4
    [ 1.460902] am65-cpsw-nuss 46000000.ethernet: ALE Table size 64
    [ 1.467106] pps pps0: new PPS source ptp0
    [ 1.471235] am65-cpsw-nuss 46000000.ethernet: CPTS ver 0x4e8a010a, freq:500000000, add_val:1 pps:1
    [ 1.481496] davinci_mdio c000f00.mdio: Configuring MDIO in manual mode
    [ 1.656164] davinci_mdio c000f00.mdio: davinci mdio revision 9.7, bus freq 1000000
    [ 1.668691] davinci_mdio c000f00.mdio: phy[16]: device c000f00.mdio:10, driver Microsemi GE VSC8514 SyncE
    [ 1.678242] davinci_mdio c000f00.mdio: phy[17]: device c000f00.mdio:11, driver Microsemi GE VSC8514 SyncE
    [ 1.687788] davinci_mdio c000f00.mdio: phy[18]: device c000f00.mdio:12, driver Microsemi GE VSC8514 SyncE
    [ 1.697333] davinci_mdio c000f00.mdio: phy[19]: device c000f00.mdio:13, driver Microsemi GE VSC8514 SyncE
    [ 1.706899] am65-cpsw-nuss c000000.ethernet: initializing am65 cpsw nuss version 0x6BA01901, cpsw version 0x6BA80101 Ports: 9 quirks:00000000
    [ 1.719739] am65-cpsw-nuss c000000.ethernet: initialized cpsw ale version 1.4
    [ 1.726865] am65-cpsw-nuss c000000.ethernet: ALE Table size 512
    [ 1.733148] am65-cpsw-nuss c000000.ethernet: CPTS ver 0x4e8a010a, freq:200000000, add_val:4 pps:0
    [ 1.744692] am65-cpts 310d0000.cpts: CPTS ver 0x4e8a010a, freq:200000000, add_val:4 pps:0
    [ 1.753861] mmc0: CQHCI version 5.10
    [ 1.794767] mmc0: SDHCI controller on 4f80000.mmc [4f80000.mmc] using ADMA 64-bit
    [ 1.883643] mmc0: Command Queue Engine enabled
    [ 1.888097] mmc0: new HS200 MMC card at address 0001
    [ 1.893410] mmcblk0: mmc0:0001 S0J56X 14.8 GiB
    [ 1.898937] mmcblk0boot0: mmc0:0001 S0J56X 31.5 MiB
    [ 1.904550] mmcblk0boot1: mmc0:0001 S0J56X 31.5 MiB
    [ 1.910046] mmcblk0rpmb: mmc0:0001 S0J56X 4.00 MiB, chardev (240:0)
    [ 2.062154] tps6594-rtc tps6594-rtc.4.auto: registered as rtc0
    [ 2.068114] tps6594-rtc tps6594-rtc.4.auto: hctosys: unable to read the hardware clock
    [ 2.339377] pca953x 2-0020: supply vcc not found, using dummy regulator
    [ 2.346073] pca953x 2-0020: using no AI
    [ 2.373125] omap-mailbox 31f80000.mailbox: omap mailbox rev 0x66fc7100
    [ 2.379948] omap-mailbox 31f81000.mailbox: omap mailbox rev 0x66fc7100
    [ 2.386754] omap-mailbox 31f82000.mailbox: omap mailbox rev 0x66fc7100
    [ 2.393560] omap-mailbox 31f83000.mailbox: omap mailbox rev 0x66fc7100
    [ 2.400343] omap-mailbox 31f84000.mailbox: omap mailbox rev 0x66fc7100
    [ 2.414267] ti-udma 285c0000.dma-controller: Channels: 26 (tchan: 13, rchan: 13, gp-rflow: 8)
    [ 2.424918] ti-udma 31150000.dma-controller: Channels: 122 (tchan: 61, rchan: 61, gp-rflow: 16)
    [ 2.438550] spi-nor spi0.0: mt35xu512aba (65536 Kbytes)
    [ 2.443820] 8 fixed-partitions partitions found on MTD device 47040000.spi.0
    [ 2.450857] Creating 8 MTD partitions on "47040000.spi.0":
    [ 2.456330] 0x000000000000-0x000000080000 : "ospi.tiboot3"
    [ 2.462385] 0x000000080000-0x000000280000 : "ospi.tispl"
    [ 2.468124] 0x000000280000-0x000000680000 : "ospi.u-boot"
    [ 2.473959] 0x000000680000-0x0000006a0000 : "ospi.env"
    [ 2.479510] 0x0000006a0000-0x0000006c0000 : "ospi.env.backup"
    [ 2.485687] 0x0000006c0000-0x0000007c0000 : "ospi.sysfw"
    [ 2.491424] 0x000000800000-0x000003fc0000 : "ospi.rootfs"
    [ 2.497255] 0x000003fe0000-0x000004000000 : "ospi.phypattern"
    [ 2.506166] spi-nor spi1.0: mt25qu512a (65536 Kbytes)
    [ 2.511255] 8 fixed-partitions partitions found on MTD device 47050000.spi.0
    [ 2.518291] Creating 8 MTD partitions on "47050000.spi.0":
    [ 2.523762] 0x000000000000-0x000000080000 : "qspi.tiboot3"
    [ 2.529714] 0x000000080000-0x000000280000 : "qspi.tispl"
    [ 2.535450] 0x000000280000-0x000000680000 : "qspi.u-boot"
    [ 2.541263] 0x000000680000-0x0000006a0000 : "qspi.env"
    [ 2.546843] 0x0000006a0000-0x0000006c0000 : "qspi.env.backup"
    [ 2.553032] 0x0000006c0000-0x0000007c0000 : "qspi.sysfw"
    [ 2.558798] 0x000000800000-0x000003fc0000 : "qspi.rootfs"
    [ 2.564635] 0x000003fe0000-0x000004000000 : "qspi.phypattern"
    [ 2.571461] davinci_mdio 46000f00.mdio: Configuring MDIO in manual mode
    [ 2.616170] davinci_mdio 46000f00.mdio: davinci mdio revision 9.7, bus freq 1000000
    [ 2.624622] davinci_mdio 46000f00.mdio: phy[0]: device 46000f00.mdio:00, driver TI DP83867
    [ 2.632894] am65-cpsw-nuss 46000000.ethernet: initializing am65 cpsw nuss version 0x6BA00101, cpsw version 0x6BA80100 Ports: 2 quirks:00000000
    [ 2.645705] am65-cpsw-nuss 46000000.ethernet: initialized cpsw ale version 1.4
    [ 2.652912] am65-cpsw-nuss 46000000.ethernet: ALE Table size 64
    [ 2.659122] pps pps0: new PPS source ptp1
    [ 2.663244] am65-cpsw-nuss 46000000.ethernet: CPTS ver 0x4e8a010a, freq:500000000, add_val:1 pps:1
    [ 2.673646] am65-cpsw-nuss 46000000.ethernet: set new flow-id-base 48
    [ 2.681876] davinci_mdio c000f00.mdio: Configuring MDIO in manual mode
    [ 2.856163] davinci_mdio c000f00.mdio: davinci mdio revision 9.7, bus freq 1000000
    [ 2.868718] davinci_mdio c000f00.mdio: phy[16]: device c000f00.mdio:10, driver Microsemi GE VSC8514 SyncE
    [ 2.878269] davinci_mdio c000f00.mdio: phy[17]: device c000f00.mdio:11, driver Microsemi GE VSC8514 SyncE
    [ 2.887815] davinci_mdio c000f00.mdio: phy[18]: device c000f00.mdio:12, driver Microsemi GE VSC8514 SyncE
    [ 2.897361] davinci_mdio c000f00.mdio: phy[19]: device c000f00.mdio:13, driver Microsemi GE VSC8514 SyncE
    [ 2.906925] am65-cpsw-nuss c000000.ethernet: initializing am65 cpsw nuss version 0x6BA01901, cpsw version 0x6BA80101 Ports: 9 quirks:00000000
    [ 2.919766] am65-cpsw-nuss c000000.ethernet: initialized cpsw ale version 1.4
    [ 2.926886] am65-cpsw-nuss c000000.ethernet: ALE Table size 512
    [ 2.933172] am65-cpsw-nuss c000000.ethernet: CPTS ver 0x4e8a010a, freq:200000000, add_val:4 pps:0
    [ 2.944373] am65-cpsw-nuss c000000.ethernet: set new flow-id-base 140
    [ 2.953839] mmc1: CQHCI version 5.10
    [ 2.957214] input: gpio-keys as /devices/platform/gpio-keys/input/input0
    [ 2.978815] ALSA device list:
    [ 2.981784] No soundcards found.
    [ 2.992701] mmc1: SDHCI controller on 4fb0000.mmc [4fb0000.mmc] using ADMA 64-bit
    [ 3.000262] Waiting for root device PARTUUID=4edaebd2-02...
    [ 3.051936] mmc1: new ultra high speed DDR50 SDHC card at address 0001
    [ 3.058813] mmcblk1: mmc1:0001 EB1QT 29.8 GiB
    [ 3.064510] mmcblk1: p1 p2
    [ 3.109886] EXT4-fs (mmcblk1p2): recovery complete
    [ 3.116740] EXT4-fs (mmcblk1p2): mounted filesystem with ordered data mode. Quota mode: none.
    [ 3.125283] VFS: Mounted root (ext4 filesystem) on device 179:98.
    [ 3.132091] devtmpfs: mounted
    [ 3.135990] Freeing unused kernel memory: 2176K
    [ 3.140603] Run /sbin/init as init process
    [ 3.356541] systemd[1]: System time before build time, advancing clock.
    [ 3.401281] NET: Registered PF_INET6 protocol family
    [ 3.406889] Segment Routing with IPv6
    [ 3.410564] In-situ OAM (IOAM) with IPv6
    [ 3.439143] systemd[1]: systemd 250.5+ running in system mode (+PAM -AUDIT -SELINUX -APPARMOR +IMA -SMACK +SECCOMP -GCRYPT -GNUTLS -OPENSSL +ACL +BLKID -CURL -ELFUTILS -FIDO2 -IDN2 -IDN -IPTC +KMOD -LIBCRYPTSETUP +LIBFDISK -PCRE2 -PWQUALITY -P11KIT -QRENCODE -BZIP2 -LZ4 -XZ -ZLIB +ZSTD -BPF_FRAMEWORK +XKBCOMMON +UTMP +SYSVINIT default-hierarchy=hybrid)
    [ 3.470529] systemd[1]: Detected architecture arm64.
    
    Welcome to Arago 2023.04!
    
    [ 3.544954] systemd[1]: Hostname set to <j721e-evm>.
    [ 3.609406] systemd-sysv-generator[157]: SysV service '/etc/init.d/docker.init' lacks a native systemd unit file. Automatically generating a unit file for compatibility. Please update package to include a native systemd unit file, in order to make it more safe and robust.
    [ 3.636173] systemd-sysv-generator[157]: SysV service '/etc/init.d/telnetd' lacks a native systemd unit file. Automatically generating a unit file for compatibility. Please update package to include a native systemd unit file, in order to make it more safe and robust.
    [ 3.661442] systemd-sysv-generator[157]: SysV service '/etc/init.d/inetd.busybox' lacks a native systemd unit file. Automatically generating a unit file for compatibility. Please update package to include a native systemd unit file, in order to make it more safe and robust.
    [ 3.685913] systemd-sysv-generator[157]: SysV service '/etc/init.d/sendsigs' lacks a native systemd unit file. Automatically generating a unit file for compatibility. Please update package to include a native systemd unit file, in order to make it more safe and robust.
    [ 3.709949] systemd-sysv-generator[157]: SysV service '/etc/init.d/reboot' lacks a native systemd unit file. Automatically generating a unit file for compatibility. Please update package to include a native systemd unit file, in order to make it more safe and robust.
    [ 3.733737] systemd-sysv-generator[157]: SysV service '/etc/init.d/dropbear' lacks a native systemd unit file. Automatically generating a unit file for compatibility. Please update package to include a native systemd unit file, in order to make it more safe and robust.
    [ 3.758387] systemd-sysv-generator[157]: SysV service '/etc/init.d/umountfs' lacks a native systemd unit file. Automatically generating a unit file for compatibility. Please update package to include a native systemd unit file, in order to make it more safe and robust.
    [ 3.783435] systemd-sysv-generator[157]: SysV service '/etc/init.d/thermal-zone-init' lacks a native systemd unit file. Automatically generating a unit file for compatibility. Please update package to include a native systemd unit file, in order to make it more safe and robust.
    [ 3.808734] systemd-sysv-generator[157]: SysV service '/etc/init.d/autolaunch-demo' lacks a native systemd unit file. Automatically generating a unit file for compatibility. Please update package to include a native systemd unit file, in order to make it more safe and robust.
    [ 3.833269] systemd-sysv-generator[157]: SysV service '/etc/init.d/single' lacks a native systemd unit file. Automatically generating a unit file for compatibility. Please update package to include a native systemd unit file, in order to make it more safe and robust.
    [ 3.857295] systemd-sysv-generator[157]: SysV service '/etc/init.d/save-rtc.sh' lacks a native systemd unit file. Automatically generating a unit file for compatibility. Please update package to include a native systemd unit file, in order to make it more safe and robust.
    [ 3.881776] systemd-sysv-generator[157]: SysV service '/etc/init.d/umountnfs.sh' lacks a native systemd unit file. Automatically generating a unit file for compatibility. Please update package to include a native systemd unit file, in order to make it more safe and robust.
    [ 3.906434] systemd-sysv-generator[157]: SysV service '/etc/init.d/netperf' lacks a native systemd unit file. Automatically generating a unit file for compatibility. Please update package to include a native systemd unit file, in order to make it more safe and robust.
    [ 3.930212] systemd-sysv-generator[157]: SysV service '/etc/init.d/halt' lacks a native systemd unit file. Automatically generating a unit file for compatibility. Please update package to include a native systemd unit file, in order to make it more safe and robust.
    [ 3.954051] systemd-sysv-generator[157]: SysV service '/etc/init.d/psplash.sh' lacks a native systemd unit file. Automatically generating a unit file for compatibility. Please update package to include a native systemd unit file, in order to make it more safe and robust.
    [ 3.978190] systemd-sysv-generator[157]: SysV service '/etc/init.d/netopeer2-server' lacks a native systemd unit file. Automatically generating a unit file for compatibility. Please update package to include a native systemd unit file, in order to make it more safe and robust.
    [ 4.002731] systemd-sysv-generator[157]: SysV service '/etc/init.d/sysrepo' lacks a native systemd unit file. Automatically generating a unit file for compatibility. Please update package to include a native systemd unit file, in order to make it more safe and robust.
    [ 4.165762] systemd[1]: /lib/systemd/system/bt-enable.service:9: Standard output type syslog is obsolete, automatically updating to journal. Please update your unit file, and consider removing the setting altogether.
    [ 4.209592] systemd[1]: /etc/systemd/system/sync-clocks.service:11: Standard output type syslog is obsolete, automatically updating to journal. Please update your unit file, and consider removing the setting altogether.
    [ 4.258778] systemd[1]: Queued start job for default target Graphical Interface.
    [ 4.302590] systemd[1]: Created slice Slice /system/getty.
    [ OK ] Created slice Slice /system/getty.
    [ 4.325509] systemd[1]: Created slice Slice /system/modprobe.
    [ OK ] Created slice Slice /system/modprobe.
    [ 4.349461] systemd[1]: Created slice Slice /system/serial-getty.
    [ OK ] Created slice Slice /system/serial-getty.
    [ 4.373162] systemd[1]: Created slice User and Session Slice.
    [ OK ] Created slice User and Session Slice.
    [ 4.396363] systemd[1]: Started Dispatch Password Requests to Console Directory Watch.
    [ OK ] Started Dispatch Password …ts to Console Directory Watch.
    [ 4.420286] systemd[1]: Started Forward Password Requests to Wall Directory Watch.
    [ OK ] Started Forward Password R…uests to Wall Directory Watch.
    [ 4.444349] systemd[1]: Reached target Path Units.
    [ OK ] Reached target Path Units.
    [ 4.464219] systemd[1]: Reached target Remote File Systems.
    [ OK ] Reached target Remote File Systems.
    [ 4.484212] systemd[1]: Reached target Slice Units.
    [ OK ] Reached target Slice Units.
    [ 4.504215] systemd[1]: Reached target Swaps.
    [ OK ] Reached target Swaps.
    [ 4.554146] systemd[1]: Listening on RPCbind Server Activation Socket.
    [ OK ] Listening on RPCbind Server Activation Socket.
    [ 4.576291] systemd[1]: Reached target RPC Port Mapper.
    [ OK ] Reached target RPC Port Mapper.
    [ 4.598975] systemd[1]: Listening on Process Core Dump Socket.
    [ OK ] Listening on Process Core Dump Socket.
    [ 4.620364] systemd[1]: Listening on initctl Compatibility Named Pipe.
    [ OK ] Listening on initctl Compatibility Named Pipe.
    [ 4.644539] systemd[1]: Listening on Journal Audit Socket.
    [ OK ] Listening on Journal Audit Socket.
    [ 4.664433] systemd[1]: Listening on Journal Socket (/dev/log).
    [ OK ] Listening on Journal Socket (/dev/log).
    [ 4.684444] systemd[1]: Listening on Journal Socket.
    [ OK ] Listening on Journal Socket.
    [ 4.704525] systemd[1]: Listening on Network Service Netlink Socket.
    [ OK ] Listening on Network Service Netlink Socket.
    [ 4.728486] systemd[1]: Listening on udev Control Socket.
    [ OK ] Listening on udev Control Socket.
    [ 4.748373] systemd[1]: Listening on udev Kernel Socket.
    [ OK ] Listening on udev Kernel Socket.
    [ 4.768416] systemd[1]: Listening on User Database Manager Socket.
    [ OK ] Listening on User Database Manager Socket.
    [ 4.808454] systemd[1]: Mounting Huge Pages File System...
    Mounting Huge Pages File System...
    [ 4.830524] systemd[1]: Mounting POSIX Message Queue File System...
    Mounting POSIX Message Queue File System...
    [ 4.872458] systemd[1]: Mounting Kernel Debug File System...
    Mounting Kernel Debug File System...
    [ 4.892420] systemd[1]: Kernel Trace File System was skipped because of a failed condition check (ConditionPathExists=/sys/kernel/tracing).
    [ 4.908137] systemd[1]: Mounting Temporary Directory /tmp...
    Mounting Temporary Directory /tmp...
    [ 4.931107] systemd[1]: Starting Create List of Static Device Nodes...
    Starting Create List of Static Device Nodes...
    [ 4.954439] systemd[1]: Starting Load Kernel Module configfs...
    Starting Load Kernel Module configfs...
    [ 4.978506] systemd[1]: Starting Load Kernel Module drm...
    Starting Load Kernel Module drm...
    [ 5.016634] systemd[1]: Starting Load Kernel Module fuse...
    Starting Load Kernel Module fuse...
    [ 5.029351] fuse: init (API version 7.37)
    [ 5.044618] systemd[1]: Starting Start psplash boot splash screen...
    Starting Start psplash boot splash screen...
    [ 5.088669] systemd[1]: Starting RPC Bind...
    Starting RPC Bind...
    [ 5.108376] systemd[1]: File System Check on Root Device was skipped because of a failed condition check (ConditionPathIsReadWrite=!/).
    [ 5.124182] systemd[1]: Starting Journal Service...
    Starting Journal Service...
    [ 5.149119] systemd[1]: Starting Load Kernel Modules...
    Starting Load Kernel Modules...
    [ 5.166925] systemd[1]: Starting Generate network units from Kernel command line...
    [ 5.174758] cryptodev: loading out-of-tree module taints kernel.
    Starting Generate network …ts from Kernel co[ 5.182457] cryptodev: driver 1.12 loaded.
    mmand line...
    [ 5.203298] systemd[1]: Starting Remount Root and Kernel File Systems...
    Starting Remount Root and Kernel File Systems...
    [ 5.219227] EXT4-fs (mmcblk1p2): re-mounted. Quota mode: none.
    [ 5.244979] systemd[1]: Starting Coldplug All udev Devices...
    Starting Coldplug All udev Devices...
    [ 5.268811] systemd[1]: Started RPC Bind.
    [ OK ] Started RPC Bind.
    [ 5.288595] systemd[1]: Started Journal Service.
    [ OK ] Started Journal Service.
    [ OK ] Mounted Huge Pages File System.
    [ OK ] Mounted POSIX Message Queue File System.
    [ OK ] Mounted Kernel Debug File System.
    [ OK ] Mounted Temporary Directory /tmp.
    [ OK ] Finished Create List of Static Device Nodes.
    [ OK ] Finished Load Kernel Module configfs.
    [ OK ] Finished Load Kernel Module drm.
    [ OK ] Finished Load Kernel Module fuse.
    [FAILED] Failed to start Start psplash boot splash screen.
    See 'systemctl status psplash-start.service' for details.
    [DEPEND] Dependency failed for Star…progress communication helper.
    [ OK ] Finished Load Kernel Modules.
    [ OK ] Finished Generate network units from Kernel command line.
    [ OK ] Finished Remount Root and Kernel File Systems.
    Mounting FUSE Control File System...
    Mounting Kernel Configuration File System...
    Starting Flush Journal to Persistent Storage...
    [ 5.622072] systemd-journald[173]: Received client request to flush runtime journal.
    Starting Apply Kernel Variables...
    Starting Create Static Device Nodes in /dev...
    [ OK ] Mounted FUSE Control File System.
    [ OK ] Mounted Kernel Configuration File System.
    [ OK ] Finished Flush Journal to Persistent Storage.
    [ OK ] Finished Apply Kernel Variables.
    [ OK ] Finished Create Static Device Nodes in /dev.
    [ OK ] Reached target Preparation for Local File Systems.
    Mounting /media/ram...
    Mounting /var/volatile...
    [ 5.814532] audit: type=1334 audit(1651167747.456:2): prog-id=5 op=LOAD
    [ 5.821991] audit: type=1334 audit(1651167747.464:3): prog-id=6 op=LOAD
    Starting Rule-based Manage…for Device Events and Files...
    [ OK ] Finished Coldplug All udev Devices.
    [ OK ] Mounted /media/ram.
    [ OK ] Mounted /var/volatile.
    Starting Load/Save Random Seed...
    [ OK ] Reached target Local File Systems.
    Starting Create Volatile Files and Directories...
    [ OK ] Started Rule-based Manager for Device Events and Files.
    [ OK ] Finished Create Volatile Files and Directories.
    Starting Network Time Synchronization...
    Starting Record System Boot/Shutdown in UTMP...
    [ OK ] Finished Record System Boot/Shutdown in UTMP.
    [ 6.245724] random: crng init done
    [ OK ] Finished Load/Save Random Seed.
    [ OK ] Started Network Time Synchronization.
    [ OK ] Reached target System Initialization.
    [ 6.312701] ina2xx 3-0040: power monitor ina226 (Rshunt = 10000 uOhm)
    [ OK ] Started Daily Cleanup of Temporary [ 6.321714] ina2xx 3-0041: power monitor ina226 (Rshunt = 10000 uOhm)
    Directories.
    [ 6.337693] CAN device driver interface
    [ OK ] Reached target System Time Set.
    [ OK ] Started Daily rotation of log files.
    [ 6.368022] ina2xx 3-0042: power monitor ina226 (Rshunt = 10000 uOhm)
    [ OK ] Reached target Timer Units.[ 6.378172] ina2xx 3-0043: power monitor ina226 (Rshunt = 10000 uOhm)
    
    [ 6.387761] ina2xx 3-0044: power monitor ina226 (Rshunt = 10000 uOhm)
    [ 6.395885] j721e-pcie-host 2900000.pcie: host bridge /bus@100000/pcie@2900000 ranges:
    [ OK ] Listening on Avahi mDNS/DNS-SD Stac[ 6.405370] j721e-pcie-host 2900000.pcie: IO 0x0010001000..0x0010010fff -> 0x0010001000
    k Activation Socket.
    [ 6.419377] ina2xx 3-0045: power monitor ina226 (Rshunt = 5000 uOhm)
    [ 6.427711] j721e-pcie-host 2900000.pcie: MEM 0x0010011000..0x0017ffffff -> 0x0010011000
    [ OK ] Listening on D-Bus System Message B[ 6.438500] ina2xx 3-0046: power monitor ina226 (Rshunt = 10000 uOhm)
    us Socket.
    [ 6.440454] j721e-pcie-host 2900000.pcie: IB MEM 0x0000000000..0xffffffffffff -> 0x0000000000
    [ 6.460993] ina2xx 3-0047: power monitor ina226 (Rshunt = 10000 uOhm)
    Starting Docker Socket for the API...
    [ 6.468306] ina2xx 3-0048: power monitor ina226 (Rshunt = 10000 uOhm)
    [ 6.483328] ina2xx 3-0049: power monitor ina226 (Rshunt = 10000 uOhm)
    [ 6.491702] ina2xx 3-004a: power monitor ina226 (Rshunt = 10000 uOhm)
    [ OK ] Listening on dropbear.socket.[ 6.501391] ina2xx 3-004b: power monitor ina226 (Rshunt = 10000 uOhm)
    
    [ 6.511124] ina2xx 3-004c: power monitor ina226 (Rshunt = 10000 uOhm)
    [ 6.518943] ina2xx 3-004d: power monitor ina226 (Rshunt = 10000 uOhm)
    [ 6.527974] ina2xx 3-004e: power monitor ina226 (Rshunt = 10000 uOhm)
    Starting Weston socket...
    [ 6.535601] mc: Linux media interface: v0.10
    [ 6.536397] ina2xx 3-004f: power monitor ina226 (Rshunt = 10000 uOhm)
    Starting Console System Startup Logging...
    [ 6.583818] videodev: Linux video capture interface: v2.00
    Starting D-Bus System Message Bus...
    Starting Reboot and dump vmcore via kexec...
    [ OK ] Listening on Docker Socket for the API.
    [ OK ] Listening on Weston socket.
    [ 6.675040] k3-dsp-rproc 4d80800000.dsp: assigned reserved memory node c66-dma-memory@a7000000
    [ OK ] Finished Console System Startup Logging.
    [ 6.695521] PVR_K: 196: Device: 4e20000000.gpu
    [ OK ] Found device /dev/ttyS2.[ 6.705217] k3-dsp-rproc 4d80800000.dsp: configured DSP for IPC-only mode
    [ 6.712416] PVR_K: 196: Read BVNC 22.104.208.318 from HW device registers
    [ 6.714569] remoteproc remoteproc0: 4d80800000.dsp is available
    
    [ 6.728379] remoteproc remoteproc0: attaching to 4d80800000.dsp
    [ 6.735591] k3-dsp-rproc 4d80800000.dsp: DSP initialized in IPC-only mode
    [ 6.743011] rproc-virtio rproc-virtio.12.auto: assigned reserved memory node c66-dma-memory@a7000000
    [ OK ] Reached target Socket Units.[ 6.753974] virtio_rpmsg_bus virtio0: rpmsg host is online
    
    [ 6.757963] virtio_rpmsg_bus virtio0: creating channel ti.ipc4.ping-pong addr 0xd
    [ 6.764949] rproc-virtio rproc-virtio.12.auto: registered virtio0 (type 7)
    [ 6.778967] remoteproc remoteproc0: remote processor 4d80800000.dsp is now attached
    [ 6.784272] virtio_rpmsg_bus virtio0: creating channel rpmsg_chrdev addr 0xe
    [ 6.795444] k3-dsp-rproc 4d81800000.dsp: assigned reserved memory node c66-dma-memory@a6000000
    [ 6.804793] PVR_K: 196: RGX Device registered with BVNC 22.104.208.318
    [ 6.816150] k3-dsp-rproc 4d81800000.dsp: configured DSP for IPC-only mode
    [ 6.816269] img_enc 4200000.video-encoder: vxe_enc_probe: using heap 1 for internal alloc
    [ 6.828834] [drm] Initialized pvr 23.1.6404501 20170530 for 4e20000000.gpu on minor 0
    [ 6.839465] remoteproc remoteproc1: 4d81800000.dsp is available
    [ 6.846799] remoteproc remoteproc1: attaching to 4d81800000.dsp
    [ 6.853848] k3-dsp-rproc 4d81800000.dsp: DSP initialized in IPC-only mode
    [ 6.862045] rproc-virtio rproc-virtio.13.auto: assigned reserved memory node c66-dma-memory@a6000000
    [ 6.872648] virtio_rpmsg_bus virtio1: rpmsg host is online
    [ 6.878851] rproc-virtio rproc-virtio.13.auto: registered virtio1 (type 7)
    [ 6.880386] virtio_rpmsg_bus virtio1: creating channel ti.ipc4.ping-pong addr 0xd
    [ 6.886595] remoteproc remoteproc1: remote processor 4d81800000.dsp is now attached
    [ 6.900277] virtio_rpmsg_bus virtio1: creating channel rpmsg_chrdev addr 0xe
    [ 6.909993] k3-dsp-rproc 64800000.dsp: assigned reserved memory node c71-dma-memory@a8000000
    [ OK ] Finished Reboot and dump vmcore via[ 6.932325] k3-dsp-rproc 64800000.dsp: configured DSP for IPC-only mode
    kexec.
    [ 6.946478] remoteproc remoteproc2: 64800000.dsp is available
    [ 6.954852] remoteproc remoteproc2: attaching to 64800000.dsp
    [ 6.961214] remoteproc remoteproc2: unsupported resource 65538
    [ 6.969593] img_enc 4200000.video-encoder: encoder registered as /dev/video0
    [ 6.969606] img_dec 4300000.video-decoder: decoder registered as /dev/video1
    [ OK ] Started D-Bus System Message Bus.
    [ 6.994223] k3-dsp-rproc 64800000.dsp: DSP initialized in IPC-only mode
    [ 7.001784] rproc-virtio rproc-virtio.14.auto: assigned reserved memory node c71-dma-memory@a8000000
    [ 7.017859] cdns-mhdp8546 a000000.dp-bridge: invalid resource
    [ OK ] Reached target Basic System.
    [ 7.030662] virtio_rpmsg_bus virtio2: rpmsg host is online
    [ 7.035753] virtio_rpmsg_bus virtio2: creating channel ti.ipc4.ping-pong addr 0xd
    [ 7.040500] rproc-virtio rproc-virtio.14.auto: registered virtio2 (type 7)
    [ 7.045705] virtio_rpmsg_bus virtio2: creating channel rpmsg_chrdev addr 0xe
    [ 7.068566] cdns-mhdp8546 a000000.dp-bridge: Failed to get SAPB memory resource, HDCP not supported
    [ OK ] Started Job spooling tools.
    [ 7.095139] remoteproc remoteproc2: remote processor 64800000.dsp is now attached
    [ 7.135343] [drm] Initialized tidss 1.0.0 20180215 for 4a00000.dss on minor 1
    [ 7.145114] tidss 4a00000.dss: [drm] Cannot find any crtc or sizes
    [ OK ] Started Periodic Command Scheduler.
    Starting Print notice about GPLv3 packages...
    Starting IPv6 Packet Filtering Framework...
    Starting IPv4 Packet Filtering Framework...
    [ OK ] Started irqbalance daemon.
    Starting Telephony service...
    Starting Update pmic regis…fety feature on power rails...
    Starting Expand the rootfs…ll size of the boot device....
    [ OK ] Started startwlanap.
    [ OK ] Started startwlansta.
    [ 7.315866] audit: type=1334 audit(1651169019.372:4): prog-id=7 op=LOAD
    [ 7.326616] audit: type=1334 audit(1651169019.384:5): prog-id=8 op=LOAD
    Starting User Login Management...
    [ OK ] Started TEE Supplicant.
    Starting telnetd.service...
    [ OK ] Finished IPv6 Packet Filtering Framework.
    [ OK ] Finished IPv4 Packet Filtering Framework.
    [ OK ] Finished Update pmic regis…safety feature on power rails.
    [ OK ] Reached target Preparation for Network.
    Starting Network Configuration...
    [ OK ] Started Telephony service.
    [ OK ] Started telnetd.service.
    [ 7.497293] j721e-pcie-host 2900000.pcie: PCI host bridge to bus 0000:00
    [ 7.532583] Bluetooth: Core ver 2.22
    [ 7.536262] NET: Registered PF_BLUETOOTH protocol family
    [ 7.541677] Bluetooth: HCI device and connection manager initialized
    [ 7.549114] Bluetooth: HCI socket layer initialized
    [ 7.554113] Bluetooth: L2CAP socket layer initialized
    [ 7.559199] Bluetooth: SCO socket layer initialized
    [ 7.587135] pci_bus 0000:00: root bus resource [bus 00-ff]
    [ 7.595279] pci_bus 0000:00: root bus resource [io 0x0000-0xffff] (bus address [0x10001000-0x10010fff])
    [ 7.606327] pci_bus 0000:00: root bus resource [mem 0x10011000-0x17ffffff]
    [ OK ] Finished Expand the rootfs…full size of the boot device..
    [ 7.652565] pci 0000:00:00.0: [104c:b00d] type 01 class 0x060400
    [ 7.671545] cfg80211: Loading compiled-in X.509 certificates for regulatory database
    [ 7.688895] pci_bus 0000:00: 2-byte config write to 0000:00:00.0 offset 0x4 may corrupt adjacent RW1C bits
    [ 7.699744] pci 0000:00:00.0: supports D1
    [ 7.703909] pci 0000:00:00.0: PME# supported from D0 D1 D3hot
    [ 7.719660] cfg80211: Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7'
    [ 7.756076] pci 0000:00:00.0: reg 0x224: [mem 0x00000000-0x003fffff 64bit]
    [ 7.778205] pci 0000:00:00.0: VF(n) BAR0 space: [mem 0x00000000-0x00ffffff 64bit] (contains BAR0 for 4 VFs)
    [ OK ] Started User Login Management.
    [ OK ] Started Network Configuration.
    Starting Wait for Network to be Configured[ 7.850378] pci 0000:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
    ...
    Starting Network Name Resolution...
    [ 7.870612] pci_bus 0000:01: busn_res: [bus 01-ff] end is updated to 01
    [ 7.876953] am65-cpsw-nuss 46000000.ethernet eth0: PHY [46000f00.mdio:00] driver [TI DP83867] (irq=POLL)
    [ 7.877284] pci 0000:00:00.0: BAR 7: assigned [mem 0x10400000-0x113fffff 64bit]
    [ 7.894740] pci 0000:00:00.0: PCI bridge to [bus 01]
    [ 7.900276] pcieport 0000:00:00.0: PME: Signaling with IRQ 889
    [ 7.913849] pcieport 0000:00:00.0: AER: enabled with IRQ 889
    [ 7.920355] am65-cpsw-nuss 46000000.ethernet eth0: configuring for phy/rgmii-rxid link mode
    [ 7.956932] j721e-pcie-host 2910000.pcie: host bridge /bus@100000/pcie@2910000 ranges:
    [ 8.017745] j721e-pcie-host 2910000.pcie: IO 0x0018001000..0x0018010fff -> 0x0018001000
    [ 8.028261] j721e-pcie-host 2910000.pcie: MEM 0x0018011000..0x001fffffff -> 0x0018011000
    [ 8.038648] platform 41000000.r5f: R5F core may have been powered on by a different host, programmed state (0) != actual state (1)
    [ 8.038665] j721e-pcie-host 2910000.pcie: IB MEM 0x0000000000..0xffffffffffff -> 0x0000000000
    [ 8.116673] platform 41000000.r5f: configured R5F for IPC-only mode
    [ 8.131246] platform 41000000.r5f: assigned reserved memory node r5f-dma-memory@a0000000
    [ 8.145944] remoteproc remoteproc3: 41000000.r5f is available
    [ 8.153162] remoteproc remoteproc3: attaching to 41000000.r5f
    [ 8.162438] platform 41000000.r5f: R5F core initialized in IPC-only mode
    [ 8.174113] rproc-virtio rproc-virtio.15.auto: assigned reserved memory node r5f-dma-memory@a0000000
    [ OK ] Started Network Name Resolution.
    [ OK ] Reached target Network.
    [ OK ] Reached target Host and Network Name Lookups.
    Starting Avahi mDNS/DNS-SD Stack...
    Starting Enable and configure wl18xx bluetooth stack...
    Starting containerd container runtime...
    [ OK ] Started Netperf Benchmark Server 8.224876] virtio_rpmsg_bus virtio3: rpmsg host is online
    m.
    [ 8.236404] virtio_rpmsg_bus virtio3: creating channel ti.ipc4.ping-pong addr 0xd
    [ 8.260877] rproc-virtio rproc-virtio.15.auto: registered virtio3 (type 7)
    [ OK ] Started NFS status monitor for NFSv2/3 locking..
    Starting Permit User Sessions...
    [ OK ] Finished Enable and configure wl18xx bluetooth stack.
    [ OK ] Started Avahi mDNS/DNS-SD Stack.
    [ 8.313547] remoteproc remoteproc3: remote processor 41000000.r5f is now attached
    
    [ OK ] Started Getty on tty1.
    [ 8.329453] platform 5c00000.r5f: configured R5F for IPC-only mode
    
    [ OK ] Reached target Login Prompts.
    [ 8.341417] platform 5c00000.r5f: assigned reserved memory node r5f-dma-memory@a2000000
    Starting Synchronize System and HW clocks...
    Starting Weston, a Wayland…ositor, as a system service...
    [ 8.378326] remoteproc remoteproc4: 5c00000.r5f is available
    [ 8.455940] remoteproc remoteproc4: attaching to 5c00000.r5f
    [ 8.488589] platform 5c00000.r5f: R5F core initialized in IPC-only mode
    [ 8.496027] rproc-virtio rproc-virtio.16.auto: assigned reserved memory node r5f-dma-memory@a2000000
    [ 8.511475] m_can_platform 40528000.can: m_can device registered (irq=892, version=32)
    [ 8.524951] m_can_platform 40568000.can: m_can device registered (irq=893, version=32)
    [ 8.563588] m_can_platform 2701000.can: m_can device registered (irq=894, version=32)
    [ 8.576931] m_can_platform 2721000.can: m_can device registered (irq=895, version=32)
    [ 8.600580] virtio_rpmsg_bus virtio4: rpmsg host is online
    [ 8.647846] audit: type=1334 audit(1651169020.704:6): prog-id=9 op=LOAD
    [ 8.658100] audit: type=1334 audit(1651169020.716:7): prog-id=10 op=LOAD
    [ 8.673686] rproc-virtio rproc-virtio.16.auto: registered virtio4 (type 7)
    Starting User Database Manager...
    [ OK ] Started User Database Manager.
    [ 8.905011] remoteproc remoteproc4: remote processor 5c00000.r5f is now attached
    [ 8.981276] platform 5d00000.r5f: configured R5F for IPC-only mode
    [ OK ] Finished Synchronize System and HW clocks.
    [ OK ] Created slice User Slice of UID 1000.
    Starting User Runtime Directory /run/user/1000...
    [ OK ] Finished User Runtime Directory /run/user/1000.
    Starting User Manager for UID 1000...
    [ 9.050873] platform 5d00000.r5f: assigned reserved memory node r5f-dma-memory@a3000000
    [ 9.065611] audit: type=1006 audit(1651169021.124:8): pid=605 uid=0 old-auid=4294967295 auid=1000 tty=(none) old-ses=4294967295 ses=1 res=1
    [ 9.086019] audit: type=1300 audit(1651169021.124:8): arch=c00000b7 syscall=64 success=yes exit=4 a0=8 a1=fffff8039768 a2=4 a3=ffffb2a4a020 items=0 ppid=1 pid=605 auid=1000 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=1 comm="(systemd)" exe="/lib/systemd/systemd" key=(null)
    [ 9.089454] j721e-pcie-host 2910000.pcie: PCI host bridge to bus 0001:00
    [ 9.119499] pci_bus 0001:00: root bus resource [bus 00-ff]
    [ 9.136520] pci_bus 0001:00: root bus resource [io 0x10000-0x1ffff] (bus address [0x18001000-0x18010fff])
    [ 9.141345] audit: type=1327 audit(1651169021.124:8): proctitle="(systemd)"
    [ 9.146284] pci_bus 0001:00: root bus resource [mem 0x18011000-0x1fffffff]
    [ 9.160403] pci 0001:00:00.0: [104c:b00d] type 01 class 0x060400
    [ 9.168183] am65-cpsw-nuss c000000.ethernet: PSI-L request err -22
    [ 9.178036] pci_bus 0001:00: 2-byte config write to 0001:00:00.0 offset 0x4 may corrupt adjacent RW1C bits
    [ 9.190697] pci 0001:00:00.0: supports D1
    [ 9.195123] pci 0001:00:00.0: PME# supported from D0 D1 D3hot
    [ 9.202120] remoteproc remoteproc5: 5d00000.r5f is available
    [ 9.206430] pci 0001:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
    [ 9.207978] remoteproc remoteproc5: attaching to 5d00000.r5f
    [ 9.222118] platform 5d00000.r5f: R5F core initialized in IPC-only mode
    [ 9.231684] rproc-virtio rproc-virtio.17.auto: assigned reserved memory node r5f-dma-memory@a3000000
    [ 9.244713] virtio_rpmsg_bus virtio5: rpmsg host is online
    [ 9.251390] rproc-virtio rproc-virtio.17.auto: registered virtio5 (type 7)
    [ 9.258346] virtio_rpmsg_bus virtio5: creating channel ti.ipc4.ping-pong addr 0xd
    [ 9.269225] remoteproc remoteproc5: remote processor 5d00000.r5f is now attached
    [ 9.281924] pci_bus 0001:01: busn_res: [bus 01-ff] end is updated to 01
    [ 9.289572] pci 0001:00:00.0: PCI bridge to [bus 01]
    [ 9.294907] platform 5e00000.r5f: configured R5F for IPC-only mode
    [ 9.302337] platform 5e00000.r5f: assigned reserved memory node r5f-dma-memory@a4000000
    [ 9.313376] remoteproc remoteproc6: 5e00000.r5f is available
    [ 9.316635] pcieport 0001:00:00.0: PME: Signaling with IRQ 897
    [ 9.320467] remoteproc remoteproc6: attaching to 5e00000.r5f
    [ 9.336309] platform 5e00000.r5f: R5F core initialized in IPC-only mode
    [ 9.354038] rproc-virtio rproc-virtio.18.auto: assigned reserved memory node r5f-dma-memory@a4000000
    [ 9.365491] virtio_rpmsg_bus virtio6: rpmsg host is online
    [ 9.367222] virtio_rpmsg_bus virtio3: creating channel rpmsg_chrdev addr 0xe
    [ 9.373089] rproc-virtio rproc-virtio.18.auto: registered virtio6 (type 7)
    [ 9.379437] pcieport 0001:00:00.0: AER: enabled with IRQ 897
    [ 9.385378] remoteproc remoteproc6: remote processor 5e00000.r5f is now attached
    [ 9.391031] virtio_rpmsg_bus virtio6: creating channel ti.ipc4.ping-pong addr 0xd
    [ 9.406420] platform 5f00000.r5f: configured R5F for IPC-only mode
    [ 9.413312] platform 5f00000.r5f: assigned reserved memory node r5f-dma-memory@a5000000
    [ 9.424295] remoteproc remoteproc7: 5f00000.r5f is available
    [ 9.496251] remoteproc remoteproc7: attaching to 5f00000.r5f
    [ 9.549077] platform 5f00000.r5f: R5F core initialized in IPC-only mode
    [ 9.594746] rproc-virtio rproc-virtio.19.auto: assigned reserved memory node r5f-dma-memory@a5000000
    [ 9.607518] virtio_rpmsg_bus virtio7: rpmsg host is online
    [ 9.613646] j721e-pcie-host 2920000.pcie: host bridge /bus@100000/pcie@2920000 ranges:
    [ 9.616855] virtio_rpmsg_bus virtio7: creating channel ti.ipc4.ping-pong addr 0xd
    [ 9.626138] rproc-virtio rproc-virtio.19.auto: registered virtio7 (type 7)
    [ 9.634324] j721e-pcie-host 2920000.pcie: IO 0x4400001000..0x4400010fff -> 0x0000001000
    [ 9.645803] j721e-pcie-host 2920000.pcie: MEM 0x4400011000..0x4407ffffff -> 0x0000011000
    [ 9.655680] j721e-pcie-host 2920000.pcie: IB MEM 0x0000000000..0xffffffffffff -> 0x0000000000
    [ 9.666818] remoteproc remoteproc7: remote processor 5f00000.r5f is now attached
    [ OK ] Started User Manager for UID 1000.
    [ OK ] Started Session c1 of User weston.
    [ 9.794359] audit: type=1006 audit(1651169021.852:9): pid=522 uid=0 old-auid=4294967295 auid=1000 tty=tty7 old-ses=4294967295 ses=2 res=1
    [ 9.842123] cdns-ufshcd 4e84000.ufs: ufshcd_populate_vreg: Unable to find vdd-hba-supply regulator, assuming enabled
    [ 9.854226] cdns-ufshcd 4e84000.ufs: ufshcd_populate_vreg: Unable to find vcc-supply regulator, assuming enabled
    [ 9.868357] cdns-ufshcd 4e84000.ufs: ufshcd_populate_vreg: Unable to find vccq-supply regulator, assuming enabled
    [ 9.886627] cdns-ufshcd 4e84000.ufs: ufshcd_populate_vreg: Unable to find vccq2-supply regulator, assuming enabled
    [ 9.890551] omap_rng 4e10000.rng: Random Number Generator ver. 241b34c
    [ 9.918193] remoteproc remoteproc8: b034000.pru is available
    [ 9.924721] remoteproc remoteproc9: b004000.rtu is available
    [ 9.931458] remoteproc remoteproc10: b00a000.txpru is available
    [ 9.940892] remoteproc remoteproc11: b038000.pru is available
    [ 9.947424] remoteproc remoteproc12: b006000.rtu is available
    [ 9.948610] scsi host0: ufshcd
    [ 9.953684] remoteproc remoteproc13: b00c000.txpru is available
    [ 9.965691] remoteproc remoteproc14: b134000.pru is available
    [ 9.971802] remoteproc remoteproc15: b104000.rtu is available
    [ 9.980611] remoteproc remoteproc16: b10a000.txpru is available
    [ 9.987012] remoteproc remoteproc17: b138000.pru is available
    [ 9.994319] remoteproc remoteproc18: b106000.rtu is available
    [ 10.000886] remoteproc remoteproc19: b10c000.txpru is available
    [ 10.050646] scsi 0:0:0:49488: Well-known LUN TOSHIBA THGAF8G8T23BAILB 0300 PQ: 0 ANSI: 6
    [ 10.064226] scsi 0:0:0:49476: Well-known LUN TOSHIBA THGAF8G8T23BAILB 0300 PQ: 0 ANSI: 6
    [ 10.081883] cdns-ufshcd 4e84000.ufs: ufshcd_scsi_add_wlus: BOOT WLUN not found
    [ OK ] Listening on Load/Save RF …itch S[ 10.146769] cdns-csi2rx: probe of 4504000.csi-bridge failed with error -22
    tatus /dev/rfkill Watch.
    [ 10.163655] cdns-csi2rx: probe of 4514000.csi-bridge failed with error -22
    [ 10.166594] am65-cpsw-nuss c000000.ethernet eth3: PHY [c000f00.mdio:12] driver [Microsemi GE VSC8514 SyncE] (irq=POLL)
    [ 10.183524] am65-cpsw-nuss c000000.ethernet eth3: configuring for phy/qsgmii link mode
    [ 10.371305] am65-cpsw-nuss c000000.ethernet eth1: PHY [c000f00.mdio:11] driver [Microsemi GE VSC8514 SyncE] (irq=POLL)
    [ 10.387326] am65-cpsw-nuss c000000.ethernet eth1: configuring for phy/qsgmii link mode
    [ 10.482839] virtio_rpmsg_bus virtio5: creating channel rpmsg_chrdev addr 0xe
    [ 10.515068] am65-cpsw-nuss c000000.ethernet eth4: PHY [c000f00.mdio:13] driver [Microsemi GE VSC8514 SyncE] (irq=POLL)
    [ 10.526129] am65-cpsw-nuss c000000.ethernet eth4: configuring for phy/qsgmii link mode
    Starting Save/Restore Sound Card State...
    [ OK ] Finished Save/Restore Sound Card State.
    [ OK ] Reached target Sound Card.
    [ 10.639566] virtio_rpmsg_bus virtio6: creating channel rpmsg_chrdev addr 0xe
    [ 10.680340] j721e-pcie-host 2920000.pcie: PCI host bridge to bus 0002:00
    [ 10.687081] pci_bus 0002:00: root bus resource [bus 00-ff]
    [ 10.693805] pci_bus 0002:00: root bus resource [io 0x20000-0x2ffff] (bus address [0x1000-0x10fff])
    [ 10.700928] am65-cpsw-nuss c000000.ethernet eth2: PHY [c000f00.mdio:10] driver [Microsemi GE VSC8514 SyncE] (irq=POLL)
    [ 10.703718] pci_bus 0002:00: root bus resource [mem 0x4400011000-0x4407ffffff] (bus address [0x00011000-0x07ffffff])
    [ 10.713647] virtio_rpmsg_bus virtio4: creating channel rpmsg-kdrv addr 0x1a
    [ 10.725163] pci 0002:00:00.0: [104c:b00d] type 01 class 0x060400
    [ 10.731479] rpmsg-kdrv-eth-switch rpmsg-kdrv-1-mpu_1_0_ethswitch-device-0: Device info: permissions: 3FFFFFFF uart_id: 2
    [ 10.739872] pci_bus 0002:00: 2-byte config write to 0002:00:00.0 offset 0x4 may corrupt adjacent RW1C bits
    [ 10.751736] am65-cpsw-nuss c000000.ethernet eth2: configuring for phy/qsgmii link mode
    [ 10.762270] pci 0002:00:00.0: supports D1
    [ 10.765572] rpmsg-kdrv-eth-switch rpmsg-kdrv-1-mpu_1_0_ethswitch-device-0: FW ver 0.2 (rev 0) 15/Apr/2023 SHA:05546b8d
    [ 10.769519] pci 0002:00:00.0: PME# supported from D0 D1 D3hot
    [ 10.784445] rpmsg-kdrv-eth-switch rpmsg-kdrv-3-mpu_1_0_ethmac-device-1: Device info: permissions: 3FFFFFFF uart_id: 2
    [ 10.800600] rpmsg-kdrv-eth-switch rpmsg-kdrv-3-mpu_1_0_ethmac-device-1: FW ver 0.2 (rev 0) 15/Apr/2023 SHA:05546b8d
    [ 10.808729] pci 0002:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
    [ 10.819514] pci_bus 0002:01: busn_res: [bus 01-ff] end is updated to 01
    [ 10.829748] pci 0002:00:00.0: PCI bridge to [bus 01]
    [ OK ] Created slice Slice /system/systemd-fsck.
    [ 10.843196] xhci-hcd xhci-hcd.20.auto: xHCI Host Controller
    [ 10.846733] pcieport 0002:00:00.0: PME: Signaling with IRQ 929
    [ 10.856370] xhci-hcd xhci-hcd.20.auto: new USB bus registered, assigned bus number 1
    [ 10.861909] pcieport 0002:00:00.0: AER: enabled with IRQ 929
    [ 10.873414] xhci-hcd xhci-hcd.20.auto: hcc params 0x200073c9 hci version 0x100 quirks 0x0000002000018010
    [ 10.883957] xhci-hcd xhci-hcd.20.auto: irq 925, io mem 0x06410000
    [ 10.893343] xhci-hcd xhci-hcd.20.auto: xHCI Host Controller
    [ 10.899620] xhci-hcd xhci-hcd.20.auto: new USB bus registered, assigned bus number 2
    [ 10.909394] xhci-hcd xhci-hcd.20.auto: Host supports USB 3.0 SuperSpeed
    [ 10.921002] hub 1-0:1.0: USB hub found
    [ 10.924872] virtio_rpmsg_bus virtio7: creating channel rpmsg_chrdev addr 0xe
    [ 10.935176] hub 1-0:1.0: 1 port detected
    [ 10.943141] usb usb2: We don't know the algorithms for LPM for this host, disabling LPM.
    [ 10.955360] hub 2-0:1.0: USB hub found
    [ 10.961118] hub 2-0:1.0: 1 port detected
    [ 10.996606] PVR_K: 522: RGX Firmware image 'rgx.fw.22.104.208.318' loaded
    [ 11.003609] virtio_rpmsg_bus virtio4: creating channel rpmsg_chrdev addr 0x15
    [ OK ] Found device /dev/mmcblk1p1.
    [ 11.040794] PVR_K: 522: Shader binary image 'rgx.sh.22.104.208.318' loaded
    Starting File System Check on /dev/mmcblk1p1...
    [ 11.200217] usb 1-1: new high-speed USB device number 2 using xhci-hcd
    [ OK ] Finished File System Check on /dev/mmcblk1p1.
    Mounting /run/media/boot-mmcblk1p1...
    [ OK ] Started containerd container runtime.
    [ OK ] Mounted /run/media/boot-mmcblk1p1.
    [ 11.353179] hub 1-1:1.0: USB hub found
    [ 11.357175] hub 1-1:1.0: 4 ports detected
    [ OK ] Started Weston, a Wayland …mpositor, as a system service.
    Starting DEMO...
    [ OK ] Started DEMO.
    ***************************************************************
    ***************************************************************
    NOTICE: This file system contains the following GPL-3.0 packages:
    adwaita-icon-theme-symbolic
    autoconf
    bash-dev
    bash
    bc
    binutils
    cifs-utils
    coreutils-stdbuf
    coreutils
    cpio
    cpp-symlinks
    cpp
    dosfstools
    elfutils
    g++-symlinks
    g++
    gawk-dev
    gawk
    gcc-symlinks
    gcc
    gdb
    gdbserver
    gettext
    glmark2
    gnu-config
    grub-common
    grub-editenv
    grub-efi
    gzip
    less
    libasm1
    libatomic-dev
    libatomic1
    libbfd
    libdebuginfod1
    libdw1
    libeigen-dev
    libelf1
    libgcc-s-dev
    libgcc1
    libgdbm-compat4
    libgdbm-dev
    libgdbm6
    libgettextlib
    libgettextsrc
    libgmp10
    libidn2-0
    libmpc3
    libmpfr6
    libopcodes
    libqt5charts-examples
    libqt5charts-plugins
    libqt5charts-qmlplugins
    libqt5charts5
    libqt5sensors-plugins
    libqt5sensors-qmlplugins
    libqt5sensors5
    libqt5serialport-examples
    libqt5serialport-plugins
    libqt5serialport-qmlplugins
    libqt5serialport5
    libqt5svg-examples
    libqt5svg-plugins
    libqt5svg-qmlplugins
    libqt5svg5
    libqt5virtualkeyboard-plugins
    libqt5virtualkeyboard-qmlplugins
    libqt5virtualkeyboard5
    libqt5webchannel-plugins
    libqt5webchannel-qmlplugins
    libqt5webchannel5
    libreadline-dev
    libreadline8
    libstdc++-dev
    libstdc++6
    libunistring2
    m4-dev
    m4
    make
    nettle
    parted
    piglit
    qt3d-plugins
    qt3d-qmlplugins
    qt3d
    qtbase-examples
    qtbase-plugins
    qtbase-qmlplugins
    qtbase
    qtconnectivity-plugins
    qtconnectivity-qmlplugins
    qtconnectivity
    qtdeclarative-plugins
    qtdeclarative-qmlplugins
    qtdeclarative-tools
    qtdeclarative
    qtgraphicaleffects-qmlplugins
    qtlocation-examples
    qtlocation-plugins
    qtlocation-qmlplugins
    qtlocation
    qtmultimedia-examples
    qtmultimedia-plugins
    qtmultimedia-qmlplugins
    qtmultimedia
    qtquics-qmlplugins.control
    qtquics2-plugins.control
    qtquics2-qmlplugins.control
    qtquics2.control
    qtscript-examples
    qtscript-plugins
    qtscript-qmlplugins
    qtscript
    qtwayland-examples
    qtwayland-plugins
    qtwayland-qmlplugins
    qtwayland
    tar
    which
    
    If you do not wish to distribute GPL-3.0 components please remove
    the above packages prior to distribution. This can be done using
    the opkg remove command. i.e.:
    opkg remove <package>
    Where <package> is the name printed in the list above
    
    NOTE: If the package is a dependency of another package you
    will be notified of the dependent packages. You should
    use the --force-removal-of-dependent-packages option to
    also remove the dependent packages as well
    ***************************************************************
    ***************************************************************
    
    _____ _____ _ _
    | _ |___ ___ ___ ___ | _ |___ ___ |_|___ ___| |_
    | | _| .'| . | . | | __| _| . | | | -_| _| _|
    |__|__|_| |__,|_ |___| |__| |_| |___|_| |___|___|_|
    |___| |___|
    
    Arago Project j721e-evm -
    
    Arago 2023.04 j721e-evm -
    
    j721e-evm login: [ 14.505100] IPv6: ADDRCONF(NETDEV_CHANGE): eth1: link becomes ready
    [ 14.515732] am65-cpsw-nuss c000000.ethernet eth1: Link is Up - 1Gbps/Full - flow control off
    [ 14.633098] am65-cpsw-nuss c000000.ethernet eth4: Link is Up - 1Gbps/Full - flow control off
    [ 14.641556] IPv6: ADDRCONF(NETDEV_CHANGE): eth4: link becomes ready
    
    j721e-evm login: root
    [ 513.457678] kauditd_printk_skb: 2 callbacks suppressed
    [ 513.457685] audit: type=1006 audit(1651169525.516:10): pid=1166 uid=0 old-auid=4294967295 auid=0 tty=(none) old-ses=4294967295 ses=3 res=1
    [ 513.475735] audit: type=1300 audit(1651169525.516:10): arch=c00000b7 syscall=64 success=yes exit=1 a0=8 a1=fffff8039768 a2=1 a3=ffffb2a4a020 items=0 ppid=1 pid=1166 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=3 comm="(systemd)" exe="/lib/systemd/systemd" key=(null)
    [ 513.502413] audit: type=1327 audit(1651169525.516:10): proctitle="(systemd)"
    [ 513.509732] audit: type=1334 audit(1651169525.524:11): prog-id=11 op=LOAD
    [ 513.516864] audit: type=1300 audit(1651169525.524:11): arch=c00000b7 syscall=280 success=yes exit=8 a0=5 a1=fffff2e3a2f0 a2=78 a3=0 items=0 ppid=1 pid=1166 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=3 comm="systemd" exe="/lib/systemd/systemd" key=(null)
    [ 513.542535] audit: type=1327 audit(1651169525.524:11): proctitle="(systemd)"
    [ 513.549786] audit: type=1334 audit(1651169525.536:12): prog-id=11 op=UNLOAD
    [ 513.556881] audit: type=1334 audit(1651169525.536:13): prog-id=12 op=LOAD
    [ 513.563860] audit: type=1300 audit(1651169525.536:13): arch=c00000b7 syscall=280 success=yes exit=8 a0=5 a1=fffff2e3a390 a2=78 a3=0 items=0 ppid=1 pid=1166 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=3 comm="systemd" exe="/lib/systemd/systemd" key=(null)
    [ 513.589403] audit: type=1327 audit(1651169525.536:13): proctitle="(systemd)"
    root@j721e-evm:~#
    root@j721e-evm:~#
    root@j721e-evm:~# ifconfig
    eth0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
    ether 34:08:e1:58:ee:76 txqueuelen 1000 (Ethernet)
    RX packets 0 bytes 0 (0.0 B)
    RX errors 0 dropped 0 overruns 0 frame 0
    TX packets 0 bytes 0 (0.0 B)
    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
    
    eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
    inet6 fe80::72ff:76ff:fe1e:b814 prefixlen 64 scopeid 0x20<link>
    ether 70:ff:76:1e:b8:14 txqueuelen 1000 (Ethernet)
    RX packets 0 bytes 0 (0.0 B)
    RX errors 0 dropped 0 overruns 0 frame 0
    TX packets 35 bytes 6713 (6.5 KiB)
    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
    
    eth2: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
    ether 70:ff:76:1e:b8:15 txqueuelen 1000 (Ethernet)
    RX packets 0 bytes 0 (0.0 B)
    RX errors 0 dropped 0 overruns 0 frame 0
    TX packets 0 bytes 0 (0.0 B)
    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
    
    eth3: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
    ether 70:ff:76:1e:b8:16 txqueuelen 1000 (Ethernet)
    RX packets 0 bytes 0 (0.0 B)
    RX errors 0 dropped 0 overruns 0 frame 0
    TX packets 0 bytes 0 (0.0 B)
    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
    
    eth4: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
    inet6 fe80::72ff:76ff:fe1e:b817 prefixlen 64 scopeid 0x20<link>
    ether 70:ff:76:1e:b8:17 txqueuelen 1000 (Ethernet)
    RX packets 0 bytes 0 (0.0 B)
    RX errors 0 dropped 0 overruns 0 frame 0
    TX packets 35 bytes 6713 (6.5 KiB)
    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
    
    lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
    inet 127.0.0.1 netmask 255.0.0.0
    inet6 ::1 prefixlen 128 scopeid 0x10<host>
    loop txqueuelen 1000 (Local Loopback)
    RX packets 92 bytes 7648 (7.4 KiB)
    RX errors 0 dropped 0 overruns 0 frame 0
    TX packets 92 bytes 7648 (7.4 KiB)
    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
    
    root@j721e-evm:~#
    root@j721e-evm:~#
    root@j721e-evm:~# devlink dev param set platform/c000000.ethernet name switch_mode value true cmode runtime
    [ 530.791007] am65-cpsw-nuss c000000.ethernet: Enable switch mode
    root@j721e-evm:~# ip link add name br0 type bridge
    [ 537.463490] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this.
    root@j721e-evm:~# ip link set dev br0 type bridge ageing_time 1000
    root@j721e-evm:~# ip link set dev eth1 down
    [ 553.977120] am65-cpsw-nuss c000000.ethernet eth1: Link is Down
    root@j721e-evm:~# ip link set dev eth2 down
    root@j721e-evm:~# ip link set dev eth3 down
    root@j721e-evm:~# ip link set dev eth4 down
    [ 563.853624] am65-cpsw-nuss c000000.ethernet eth4: Link is Down
    root@j721e-evm:~#
    root@j721e-evm:~#
    root@j721e-evm:~# ip link set dev eth1 up
    [ 577.525670] am65-cpsw-nuss c000000.ethernet: PSI-L request err -22
    [ 577.654080] am65-cpsw-nuss c000000.ethernet eth1: PHY [c000f00.mdio:11] driver [Microsemi GE VSC8514 SyncE] (irq=POLL)
    [ 577.664769] am65-cpsw-nuss c000000.ethernet eth1: configuring for phy/qsgmii link mode
    root@j721e-evm:~# ip link set dev eth2 up
    [ 580.466096] am65-cpsw-nuss c000000.ethernet eth2: PHY [c000f00.mdio:10] driver [Microsemi GE VSC8514 SyncE] (irq=POLL)
    [ 580.476789] am65-cpsw-nuss c000000.ethernet eth2: configuring for phy/qsgmii link mode
    root@j721e-evm:~# ip link set dev eth3 up
    [ 582.734079] am65-cpsw-nuss c000000.ethernet eth3: PHY [c000f00.mdio:12] driver [Microsemi GE VSC8514 SyncE] (irq=POLL)
    [ 582.744771] am65-cpsw-nuss c000000.ethernet eth3: configuring for phy/qsgmii link mode
    root@j721e-evm:~#
    root@j721e-evm:~# ip link set dev eth4 up
    [ 585.382087] am65-cpsw-nuss c000000.ethernet eth4: PHY [c000f00.mdio:13] driver [Microsemi GE VSC8514 SyncE] (irq=POLL)
    [ 585.392777] am65-cpsw-nuss c000000.ethernet eth4: configuring for phy/qsgmii link mode
    root@j721e-evm:~#
    root@j721e-evm:~#
    root@j721e-evm:~# [ 585.865107] IPv6: ADDRCONF(NETDEV_CHANGE): eth1: link becomes ready
    [ 585.871384] am65-cpsw-nuss c000000.ethernet eth1: Link is Up - 1Gbps/Full - flow control off
    
    root@j721e-evm:~# [ 591.529105] IPv6: ADDRCONF(NETDEV_CHANGE): eth4: link becomes ready
    [ 591.535382] am65-cpsw-nuss c000000.ethernet eth4: Link is Up - 1Gbps/Full - flow control off
    [ 592.553057] am65-cpsw-nuss c000000.ethernet eth4: Link is Down
    
    root@j721e-evm:~# [ 595.625179] am65-cpsw-nuss c000000.ethernet eth4: Link is Up - 1Gbps/Full - flow control off
    ip link set dev eth1 master br0
    [ 596.386869] br0: port 1(eth1) entered blocking state
    [ 596.391861] br0: port 1(eth1) entered disabled state
    [ 596.403263] device eth1 entered promiscuous mode
    [ 596.407921] kauditd_printk_skb: 1 callbacks suppressed
    [ 596.407925] audit: type=1700 audit(1651169608.444:15): dev=eth1 prom=256 old_prom=0 auid=4294967295 uid=0 gid=0 ses=4294967295
    [ 596.424474] audit: type=1300 audit(1651169608.444:15): arch=c00000b7 syscall=211 success=yes exit=40 a0=3 a1=ffffdb0a3df8 a2=0 a3=ffffad03d840 items=0 ppid=1173 pid=1206 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=ttyS2 ses=4294967295 comm="ip" exe="/sbin/ip.iproute2" key=(null)
    [ 596.451973] audit: type=1327 audit(1651169608.444:15): proctitle=6970006C696E6B00736574006465760065746831006D617374657200627230
    root@j721e-evm:~#
    root@j721e-evm:~#
    root@j721e-evm:~# ip link set dev eth2 master br0
    [ 607.766794] br0: port 2(eth2) entered blocking state
    [ 607.771795] br0: port 2(eth2) entered disabled state
    [ 607.779634] device eth2 entered promiscuous mode
    [ 607.784521] audit: type=1700 audit(1651169619.824:16): dev=eth2 prom=256 old_prom=0 auid=4294967295 uid=0 gid=0 ses=4294967295
    [ 607.795944] audit: type=1300 audit(1651169619.824:16): arch=c00000b7 syscall=211 success=yes exit=40 a0=3 a1=fffff65aef68 a2=0 a3=ffff81131840 items=0 ppid=1173 pid=1207 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=ttyS2 ses=4294967295 comm="ip" exe="/sbin/ip.iproute2" key=(null)
    [ 607.823378] audit: type=1327 audit(1651169619.824:16): proctitle=6970006C696E6B00736574006465760065746832006D617374657200627230
    root@j721e-evm:~#
    root@j721e-evm:~#
    root@j721e-evm:~# ip link set dev eth3 master br0
    [ 620.894860] br0: port 3(eth3) entered blocking state
    [ 620.899846] br0: port 3(eth3) entered disabled state
    [ 620.907464] device eth3 entered promiscuous mode
    [ 620.912115] audit: type=1700 audit(1651169632.952:17): dev=eth3 prom=256 old_prom=0 auid=4294967295 uid=0 gid=0 ses=4294967295
    [ 620.923855] audit: type=1300 audit(1651169632.952:17): arch=c00000b7 syscall=211 success=yes exit=40 a0=3 a1=ffffd7abb508 a2=0 a3=ffffa2861840 items=0 ppid=1173 pid=1208 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=ttyS2 ses=4294967295 comm="ip" exe="/sbin/ip.iproute2" key=(null)
    root@j721e-evm:~# [ 620.951620] audit: type=1327 audit(1651169632.952:17): proctitle=6970006C696E6B00736574006465760065746833006D617374657200627230
    
    root@j721e-evm:~# ip link set dev eth4 master br0
    [ 629.222750] br0: port 4(eth4) entered blocking state
    [ 629.227738] br0: port 4(eth4) entered disabled state
    [ 629.239821] device eth4 entered promiscuous mode
    [ 629.244489] audit: type=1700 audit(1651169641.280:18): dev=eth4 prom=256 old_prom=0 auid=4294967295 uid=0 gid=0 ses=4294967295
    [ 629.255970] audit: type=1300 audit(1651169641.280:18): arch=c00000b7 syscall=211 success=yes exit=40 a0=3 a1=ffffdbf08018 a2=0 a3=ffffa8148840 items=0 ppid=1173 pid=1210 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=ttyS2 ses=4294967295 comm="ip" exe="/sbin/ip.iproute2" key=(null)
    root@j721e-evm:~# [ 629.283506] audit: type=1327 audit(1651169641.280:18): proctitle=6970006C696E6B00736574006465760065746834006D617374657200627230
    
    root@j721e-evm:~#
    root@j721e-evm:~#
    root@j721e-evm:~# ip link set dev br0 type bridge vlan_filtering 1
    root@j721e-evm:~#
    root@j721e-evm:~# bridge vlan add dev br0 vid 1 pvid untagged self
    root@j721e-evm:~#
    root@j721e-evm:~# bridge link set dev eth1 mcast_flood on
    root@j721e-evm:~# bridge link set dev eth4 mcast_flood on
    root@j721e-evm:~#
    root@j721e-evm:~# bridge vlan add dev br0 vid 1 self
    root@j721e-evm:~#
    root@j721e-evm:~#
    root@j721e-evm:~#
    root@j721e-evm:~#
    root@j721e-evm:~# pwd
    /home/root
    root@j721e-evm:~# ifconfig eth1 down
    [ 747.966958] am65-cpsw-nuss c000000.ethernet eth1: Link is Down
    root@j721e-evm:~#
    root@j721e-evm:~# ifconfig eth4 down
    [ 755.366945] am65-cpsw-nuss c000000.ethernet eth4: Link is Down
    root@j721e-evm:~#
    root@j721e-evm:~#
    root@j721e-evm:~# ifconfig eth1 up
    [ 761.934092] am65-cpsw-nuss c000000.ethernet eth1: PHY [c000f00.mdio:11] driver [Microsemi GE VSC8514 SyncE] (irq=POLL)
    [ 761.944787] am65-cpsw-nuss c000000.ethernet eth1: configuring for phy/qsgmii link mode
    root@j721e-evm:~#
    root@j721e-evm:~#
    root@j721e-evm:~#
    root@j721e-evm:~# ifconfig eth4 up
    [ 766.870097] am65-cpsw-nuss c000000.ethernet eth4: PHY [c000f00.mdio:13] driver [Microsemi GE VSC8514 SyncE] (irq=POLL)
    [ 766.880790] am65-cpsw-nuss c000000.ethernet eth4: configuring for phy/qsgmii link mode
    root@j721e-evm:~# [ 767.081641] IPv6: ADDRCONF(NETDEV_CHANGE): eth1: link becomes ready
    [ 767.087921] am65-cpsw-nuss c000000.ethernet eth1: Link is Up - 1Gbps/Full - flow control off
    
    root@j721e-evm:~# [ 768.105609] am65-cpsw-nuss c000000.ethernet eth1: Link is Down
    
    root@j721e-evm:~#
    root@j721e-evm:~#
    root@j721e-evm:~#
    root@j721e-evm:~# [ 770.153722] am65-cpsw-nuss c000000.ethernet eth1: Link is Up - 1Gbps/Full - flow control off
    [ 775.081102] IPv6: ADDRCONF(NETDEV_CHANGE): eth4: link becomes ready
    [ 775.087377] am65-cpsw-nuss c000000.ethernet eth4: Link is Up - 1Gbps/Full - flow control off
    
    root@j721e-evm:~#
    root@j721e-evm:~#
    root@j721e-evm:~## After eth1 and eth4 down and up ping between pc1 and pc2 working fine.
    root@j721e-evm:~#
    root@j721e-evm:~#
    root@j721e-evm:~# ls
    print_ale print_ale.c
    root@j721e-evm:~#
    root@j721e-evm:~#
    root@j721e-evm:~#
    root@j721e-evm:~# ethtool -S eth1
    NIC statistics:
    p0_rx_good_frames: 169
    p0_rx_broadcast_frames: 54
    p0_rx_multicast_frames: 115
    p0_rx_crc_errors: 0
    p0_rx_oversized_frames: 0
    p0_rx_undersized_frames: 0
    p0_ale_drop: 12
    p0_ale_overrun_drop: 0
    p0_rx_octets: 31787
    p0_tx_good_frames: 115
    p0_tx_broadcast_frames: 59
    p0_tx_multicast_frames: 56
    p0_tx_octets: 18269
    p0_tx_64B_frames: 9
    p0_tx_65_to_127B_frames: 138
    p0_tx_128_to_255B_frames: 73
    p0_tx_256_to_511B_frames: 64
    p0_tx_512_to_1023B_frames: 0
    p0_tx_1024B_frames: 0
    p0_net_octets: 50056
    p0_rx_bottom_fifo_drop: 0
    p0_rx_port_mask_drop: 12
    p0_rx_top_fifo_drop: 0
    p0_ale_rate_limit_drop: 0
    p0_ale_vid_ingress_drop: 33
    p0_ale_da_eq_sa_drop: 0
    p0_ale_block_drop: 0
    p0_ale_secure_drop: 0
    p0_ale_auth_drop: 0
    p0_ale_unknown_ucast: 0
    p0_ale_unknown_ucast_bytes: 0
    p0_ale_unknown_mcast: 0
    p0_ale_unknown_mcast_bytes: 0
    p0_ale_unknown_bcast: 0
    p0_ale_unknown_bcast_bytes: 0
    p0_ale_pol_match: 0
    p0_ale_pol_match_red: 0
    p0_ale_pol_match_yellow: 0
    p0_ale_mcast_sa_drop: 0
    p0_ale_dual_vlan_drop: 0
    p0_ale_len_err_drop: 0
    p0_ale_ip_next_hdr_drop: 0
    p0_ale_ipv4_frag_drop: 0
    p0_tx_mem_protect_err: 0
    p0_tx_pri0: 115
    p0_tx_pri1: 0
    p0_tx_pri2: 0
    p0_tx_pri3: 0
    p0_tx_pri4: 0
    p0_tx_pri5: 0
    p0_tx_pri6: 0
    p0_tx_pri7: 0
    p0_tx_pri0_bcnt: 18105
    p0_tx_pri1_bcnt: 0
    p0_tx_pri2_bcnt: 0
    p0_tx_pri3_bcnt: 0
    p0_tx_pri4_bcnt: 0
    p0_tx_pri5_bcnt: 0
    p0_tx_pri6_bcnt: 0
    p0_tx_pri7_bcnt: 0
    p0_tx_pri0_drop: 0
    p0_tx_pri1_drop: 0
    p0_tx_pri2_drop: 0
    p0_tx_pri3_drop: 0
    p0_tx_pri4_drop: 0
    p0_tx_pri5_drop: 0
    p0_tx_pri6_drop: 0
    p0_tx_pri7_drop: 0
    p0_tx_pri0_drop_bcnt: 0
    p0_tx_pri1_drop_bcnt: 0
    p0_tx_pri2_drop_bcnt: 0
    p0_tx_pri3_drop_bcnt: 0
    p0_tx_pri4_drop_bcnt: 0
    p0_tx_pri5_drop_bcnt: 0
    p0_tx_pri6_drop_bcnt: 0
    p0_tx_pri7_drop_bcnt: 0
    rx_good_frames: 121
    rx_broadcast_frames: 20
    rx_multicast_frames: 76
    rx_pause_frames: 0
    rx_crc_errors: 0
    rx_align_code_errors: 0
    rx_oversized_frames: 0
    rx_jabber_frames: 0
    rx_undersized_frames: 0
    rx_fragments: 0
    ale_drop: 63
    ale_overrun_drop: 0
    rx_octets: 16480
    tx_good_frames: 104
    tx_broadcast_frames: 26
    tx_multicast_frames: 54
    tx_pause_frames: 0
    tx_deferred_frames: 0
    tx_collision_frames: 0
    tx_single_coll_frames: 0
    tx_mult_coll_frames: 0
    tx_excessive_collisions: 0
    tx_late_collisions: 0
    rx_ipg_error: 0
    tx_carrier_sense_errors: 0
    tx_octets: 17053
    tx_64B_frames: 28
    tx_65_to_127B_frames: 108
    tx_128_to_255B_frames: 63
    tx_256_to_511B_frames: 26
    tx_512_to_1023B_frames: 0
    tx_1024B_frames: 0
    net_octets: 33533
    rx_bottom_fifo_drop: 0
    rx_port_mask_drop: 63
    rx_top_fifo_drop: 0
    ale_rate_limit_drop: 0
    ale_vid_ingress_drop: 12
    ale_da_eq_sa_drop: 0
    ale_block_drop: 0
    ale_secure_drop: 0
    ale_auth_drop: 0
    ale_unknown_ucast: 0
    ale_unknown_ucast_bytes: 0
    ale_unknown_mcast: 62
    ale_unknown_mcast_bytes: 10418
    ale_unknown_bcast: 14
    ale_unknown_bcast_bytes: 896
    ale_pol_match: 0
    ale_pol_match_red: 0
    ale_pol_match_yellow: 0
    ale_mcast_sa_drop: 0
    ale_dual_vlan_drop: 0
    ale_len_err_drop: 0
    ale_ip_next_hdr_drop: 0
    ale_ipv4_frag_drop: 0
    iet_rx_assembly_err: 0
    iet_rx_assembly_ok: 0
    iet_rx_smd_err: 2
    iet_rx_frag: 0
    iet_tx_hold: 0
    iet_tx_frag: 0
    tx_mem_protect_err: 0
    tx_pri0: 104
    tx_pri1: 0
    tx_pri2: 0
    tx_pri3: 0
    tx_pri4: 0
    tx_pri5: 0
    tx_pri6: 0
    tx_pri7: 0
    tx_pri0_bcnt: 16965
    tx_pri1_bcnt: 0
    tx_pri2_bcnt: 0
    tx_pri3_bcnt: 0
    tx_pri4_bcnt: 0
    tx_pri5_bcnt: 0
    tx_pri6_bcnt: 0
    tx_pri7_bcnt: 0
    tx_pri0_drop: 0
    tx_pri1_drop: 0
    tx_pri2_drop: 0
    tx_pri3_drop: 0
    tx_pri4_drop: 0
    tx_pri5_drop: 0
    tx_pri6_drop: 0
    tx_pri7_drop: 0
    tx_pri0_drop_bcnt: 0
    tx_pri1_drop_bcnt: 0
    tx_pri2_drop_bcnt: 0
    tx_pri3_drop_bcnt: 0
    tx_pri4_drop_bcnt: 0
    tx_pri5_drop_bcnt: 0
    tx_pri6_drop_bcnt: 0
    tx_pri7_drop_bcnt: 0
    root@j721e-evm:~#
    root@j721e-evm:~# ethtool -S eth4
    NIC statistics:
    p0_rx_good_frames: 169
    p0_rx_broadcast_frames: 54
    p0_rx_multicast_frames: 115
    p0_rx_crc_errors: 0
    p0_rx_oversized_frames: 0
    p0_rx_undersized_frames: 0
    p0_ale_drop: 12
    p0_ale_overrun_drop: 0
    p0_rx_octets: 31787
    p0_tx_good_frames: 115
    p0_tx_broadcast_frames: 59
    p0_tx_multicast_frames: 56
    p0_tx_octets: 18269
    p0_tx_64B_frames: 9
    p0_tx_65_to_127B_frames: 138
    p0_tx_128_to_255B_frames: 73
    p0_tx_256_to_511B_frames: 64
    p0_tx_512_to_1023B_frames: 0
    p0_tx_1024B_frames: 0
    p0_net_octets: 50056
    p0_rx_bottom_fifo_drop: 0
    p0_rx_port_mask_drop: 12
    p0_rx_top_fifo_drop: 0
    p0_ale_rate_limit_drop: 0
    p0_ale_vid_ingress_drop: 33
    p0_ale_da_eq_sa_drop: 0
    p0_ale_block_drop: 0
    p0_ale_secure_drop: 0
    p0_ale_auth_drop: 0
    p0_ale_unknown_ucast: 0
    p0_ale_unknown_ucast_bytes: 0
    p0_ale_unknown_mcast: 0
    p0_ale_unknown_mcast_bytes: 0
    p0_ale_unknown_bcast: 0
    p0_ale_unknown_bcast_bytes: 0
    p0_ale_pol_match: 0
    p0_ale_pol_match_red: 0
    p0_ale_pol_match_yellow: 0
    p0_ale_mcast_sa_drop: 0
    p0_ale_dual_vlan_drop: 0
    p0_ale_len_err_drop: 0
    p0_ale_ip_next_hdr_drop: 0
    p0_ale_ipv4_frag_drop: 0
    p0_tx_mem_protect_err: 0
    p0_tx_pri0: 115
    p0_tx_pri1: 0
    p0_tx_pri2: 0
    p0_tx_pri3: 0
    p0_tx_pri4: 0
    p0_tx_pri5: 0
    p0_tx_pri6: 0
    p0_tx_pri7: 0
    p0_tx_pri0_bcnt: 18105
    p0_tx_pri1_bcnt: 0
    p0_tx_pri2_bcnt: 0
    p0_tx_pri3_bcnt: 0
    p0_tx_pri4_bcnt: 0
    p0_tx_pri5_bcnt: 0
    p0_tx_pri6_bcnt: 0
    p0_tx_pri7_bcnt: 0
    p0_tx_pri0_drop: 0
    p0_tx_pri1_drop: 0
    p0_tx_pri2_drop: 0
    p0_tx_pri3_drop: 0
    p0_tx_pri4_drop: 0
    p0_tx_pri5_drop: 0
    p0_tx_pri6_drop: 0
    p0_tx_pri7_drop: 0
    p0_tx_pri0_drop_bcnt: 0
    p0_tx_pri1_drop_bcnt: 0
    p0_tx_pri2_drop_bcnt: 0
    p0_tx_pri3_drop_bcnt: 0
    p0_tx_pri4_drop_bcnt: 0
    p0_tx_pri5_drop_bcnt: 0
    p0_tx_pri6_drop_bcnt: 0
    p0_tx_pri7_drop_bcnt: 0
    rx_good_frames: 180
    rx_broadcast_frames: 88
    rx_multicast_frames: 68
    rx_pause_frames: 0
    rx_crc_errors: 0
    rx_align_code_errors: 0
    rx_oversized_frames: 0
    rx_jabber_frames: 0
    rx_undersized_frames: 0
    rx_fragments: 0
    ale_drop: 74
    ale_overrun_drop: 0
    rx_octets: 23243
    tx_good_frames: 105
    tx_broadcast_frames: 25
    tx_multicast_frames: 55
    tx_pause_frames: 0
    tx_deferred_frames: 0
    tx_collision_frames: 0
    tx_single_coll_frames: 0
    tx_mult_coll_frames: 0
    tx_excessive_collisions: 0
    tx_late_collisions: 0
    rx_ipg_error: 0
    tx_carrier_sense_errors: 0
    tx_octets: 17512
    tx_64B_frames: 48
    tx_65_to_127B_frames: 151
    tx_128_to_255B_frames: 47
    tx_256_to_511B_frames: 39
    tx_512_to_1023B_frames: 0
    tx_1024B_frames: 0
    net_octets: 40755
    rx_bottom_fifo_drop: 0
    rx_port_mask_drop: 74
    rx_top_fifo_drop: 0
    ale_rate_limit_drop: 0
    ale_vid_ingress_drop: 1
    ale_da_eq_sa_drop: 0
    ale_block_drop: 0
    ale_secure_drop: 0
    ale_auth_drop: 0
    ale_unknown_ucast: 0
    ale_unknown_ucast_bytes: 0
    ale_unknown_mcast: 37
    ale_unknown_mcast_bytes: 5757
    ale_unknown_bcast: 85
    ale_unknown_bcast_bytes: 9498
    ale_pol_match: 0
    ale_pol_match_red: 0
    ale_pol_match_yellow: 0
    ale_mcast_sa_drop: 0
    ale_dual_vlan_drop: 0
    ale_len_err_drop: 0
    ale_ip_next_hdr_drop: 0
    ale_ipv4_frag_drop: 0
    iet_rx_assembly_err: 0
    iet_rx_assembly_ok: 0
    iet_rx_smd_err: 1
    iet_rx_frag: 0
    iet_tx_hold: 0
    iet_tx_frag: 0
    tx_mem_protect_err: 0
    tx_pri0: 105
    tx_pri1: 0
    tx_pri2: 0
    tx_pri3: 0
    tx_pri4: 0
    tx_pri5: 0
    tx_pri6: 0
    tx_pri7: 0
    tx_pri0_bcnt: 17432
    tx_pri1_bcnt: 0
    tx_pri2_bcnt: 0
    tx_pri3_bcnt: 0
    tx_pri4_bcnt: 0
    tx_pri5_bcnt: 0
    tx_pri6_bcnt: 0
    tx_pri7_bcnt: 0
    tx_pri0_drop: 0
    tx_pri1_drop: 0
    tx_pri2_drop: 0
    tx_pri3_drop: 0
    tx_pri4_drop: 0
    tx_pri5_drop: 0
    tx_pri6_drop: 0
    tx_pri7_drop: 0
    tx_pri0_drop_bcnt: 0
    tx_pri1_drop_bcnt: 0
    tx_pri2_drop_bcnt: 0
    tx_pri3_drop_bcnt: 0
    tx_pri4_drop_bcnt: 0
    tx_pri5_drop_bcnt: 0
    tx_pri6_drop_bcnt: 0
    tx_pri7_drop_bcnt: 0
    root@j721e-evm:~#
    root@j721e-evm:~#
    root@j721e-evm:~#
    root@j721e-evm:~# # after 10 sec
    root@j721e-evm:~#
    root@j721e-evm:~# ethtool -S eth1
    NIC statistics:
    p0_rx_good_frames: 175
    p0_rx_broadcast_frames: 58
    p0_rx_multicast_frames: 117
    p0_rx_crc_errors: 0
    p0_rx_oversized_frames: 0
    p0_rx_undersized_frames: 0
    p0_ale_drop: 12
    p0_ale_overrun_drop: 0
    p0_rx_octets: 33283
    p0_tx_good_frames: 139
    p0_tx_broadcast_frames: 59
    p0_tx_multicast_frames: 80
    p0_tx_octets: 26916
    p0_tx_64B_frames: 9
    p0_tx_65_to_127B_frames: 145
    p0_tx_128_to_255B_frames: 76
    p0_tx_256_to_511B_frames: 84
    p0_tx_512_to_1023B_frames: 0
    p0_tx_1024B_frames: 0
    p0_net_octets: 60199
    p0_rx_bottom_fifo_drop: 0
    p0_rx_port_mask_drop: 12
    p0_rx_top_fifo_drop: 0
    p0_ale_rate_limit_drop: 0
    p0_ale_vid_ingress_drop: 33
    p0_ale_da_eq_sa_drop: 0
    p0_ale_block_drop: 0
    p0_ale_secure_drop: 0
    p0_ale_auth_drop: 0
    p0_ale_unknown_ucast: 0
    p0_ale_unknown_ucast_bytes: 0
    p0_ale_unknown_mcast: 0
    p0_ale_unknown_mcast_bytes: 0
    p0_ale_unknown_bcast: 0
    p0_ale_unknown_bcast_bytes: 0
    p0_ale_pol_match: 0
    p0_ale_pol_match_red: 0
    p0_ale_pol_match_yellow: 0
    p0_ale_mcast_sa_drop: 0
    p0_ale_dual_vlan_drop: 0
    p0_ale_len_err_drop: 0
    p0_ale_ip_next_hdr_drop: 0
    p0_ale_ipv4_frag_drop: 0
    p0_tx_mem_protect_err: 0
    p0_tx_pri0: 139
    p0_tx_pri1: 0
    p0_tx_pri2: 0
    p0_tx_pri3: 0
    p0_tx_pri4: 0
    p0_tx_pri5: 0
    p0_tx_pri6: 0
    p0_tx_pri7: 0
    p0_tx_pri0_bcnt: 26656
    p0_tx_pri1_bcnt: 0
    p0_tx_pri2_bcnt: 0
    p0_tx_pri3_bcnt: 0
    p0_tx_pri4_bcnt: 0
    p0_tx_pri5_bcnt: 0
    p0_tx_pri6_bcnt: 0
    p0_tx_pri7_bcnt: 0
    p0_tx_pri0_drop: 0
    p0_tx_pri1_drop: 0
    p0_tx_pri2_drop: 0
    p0_tx_pri3_drop: 0
    p0_tx_pri4_drop: 0
    p0_tx_pri5_drop: 0
    p0_tx_pri6_drop: 0
    p0_tx_pri7_drop: 0
    p0_tx_pri0_drop_bcnt: 0
    p0_tx_pri1_drop_bcnt: 0
    p0_tx_pri2_drop_bcnt: 0
    p0_tx_pri3_drop_bcnt: 0
    p0_tx_pri4_drop_bcnt: 0
    p0_tx_pri5_drop_bcnt: 0
    p0_tx_pri6_drop_bcnt: 0
    p0_tx_pri7_drop_bcnt: 0
    rx_good_frames: 137
    rx_broadcast_frames: 20
    rx_multicast_frames: 88
    rx_pause_frames: 0
    rx_crc_errors: 0
    rx_align_code_errors: 0
    rx_oversized_frames: 0
    rx_jabber_frames: 0
    rx_undersized_frames: 0
    rx_fragments: 0
    ale_drop: 63
    ale_overrun_drop: 0
    rx_octets: 20754
    tx_good_frames: 111
    tx_broadcast_frames: 28
    tx_multicast_frames: 55
    tx_pause_frames: 0
    tx_deferred_frames: 0
    tx_collision_frames: 0
    tx_single_coll_frames: 0
    tx_mult_coll_frames: 0
    tx_excessive_collisions: 0
    tx_late_collisions: 0
    rx_ipg_error: 0
    tx_carrier_sense_errors: 0
    tx_octets: 18133
    tx_64B_frames: 34
    tx_65_to_127B_frames: 114
    tx_128_to_255B_frames: 65
    tx_256_to_511B_frames: 35
    tx_512_to_1023B_frames: 0
    tx_1024B_frames: 0
    net_octets: 38887
    rx_bottom_fifo_drop: 0
    rx_port_mask_drop: 63
    rx_top_fifo_drop: 0
    ale_rate_limit_drop: 0
    ale_vid_ingress_drop: 12
    ale_da_eq_sa_drop: 0
    ale_block_drop: 0
    ale_secure_drop: 0
    ale_auth_drop: 0
    ale_unknown_ucast: 0
    ale_unknown_ucast_bytes: 0
    ale_unknown_mcast: 63
    ale_unknown_mcast_bytes: 10484
    ale_unknown_bcast: 14
    ale_unknown_bcast_bytes: 896
    ale_pol_match: 0
    ale_pol_match_red: 0
    ale_pol_match_yellow: 0
    ale_mcast_sa_drop: 0
    ale_dual_vlan_drop: 0
    ale_len_err_drop: 0
    ale_ip_next_hdr_drop: 0
    ale_ipv4_frag_drop: 0
    iet_rx_assembly_err: 0
    iet_rx_assembly_ok: 0
    iet_rx_smd_err: 2
    iet_rx_frag: 0
    iet_tx_hold: 0
    iet_tx_frag: 0
    tx_mem_protect_err: 0
    tx_pri0: 111
    tx_pri1: 0
    tx_pri2: 0
    tx_pri3: 0
    tx_pri4: 0
    tx_pri5: 0
    tx_pri6: 0
    tx_pri7: 0
    tx_pri0_bcnt: 18045
    tx_pri1_bcnt: 0
    tx_pri2_bcnt: 0
    tx_pri3_bcnt: 0
    tx_pri4_bcnt: 0
    tx_pri5_bcnt: 0
    tx_pri6_bcnt: 0
    tx_pri7_bcnt: 0
    tx_pri0_drop: 0
    tx_pri1_drop: 0
    tx_pri2_drop: 0
    tx_pri3_drop: 0
    tx_pri4_drop: 0
    tx_pri5_drop: 0
    tx_pri6_drop: 0
    tx_pri7_drop: 0
    tx_pri0_drop_bcnt: 0
    tx_pri1_drop_bcnt: 0
    tx_pri2_drop_bcnt: 0
    tx_pri3_drop_bcnt: 0
    tx_pri4_drop_bcnt: 0
    tx_pri5_drop_bcnt: 0
    tx_pri6_drop_bcnt: 0
    tx_pri7_drop_bcnt: 0
    root@j721e-evm:~#
    root@j721e-evm:~#
    root@j721e-evm:~#
    root@j721e-evm:~# ethtool -S eth4
    NIC statistics:
    p0_rx_good_frames: 175
    p0_rx_broadcast_frames: 58
    p0_rx_multicast_frames: 117
    p0_rx_crc_errors: 0
    p0_rx_oversized_frames: 0
    p0_rx_undersized_frames: 0
    p0_ale_drop: 12
    p0_ale_overrun_drop: 0
    p0_rx_octets: 33283
    p0_tx_good_frames: 139
    p0_tx_broadcast_frames: 59
    p0_tx_multicast_frames: 80
    p0_tx_octets: 26916
    p0_tx_64B_frames: 9
    p0_tx_65_to_127B_frames: 145
    p0_tx_128_to_255B_frames: 76
    p0_tx_256_to_511B_frames: 84
    p0_tx_512_to_1023B_frames: 0
    p0_tx_1024B_frames: 0
    p0_net_octets: 60199
    p0_rx_bottom_fifo_drop: 0
    p0_rx_port_mask_drop: 12
    p0_rx_top_fifo_drop: 0
    p0_ale_rate_limit_drop: 0
    p0_ale_vid_ingress_drop: 33
    p0_ale_da_eq_sa_drop: 0
    p0_ale_block_drop: 0
    p0_ale_secure_drop: 0
    p0_ale_auth_drop: 0
    p0_ale_unknown_ucast: 0
    p0_ale_unknown_ucast_bytes: 0
    p0_ale_unknown_mcast: 0
    p0_ale_unknown_mcast_bytes: 0
    p0_ale_unknown_bcast: 0
    p0_ale_unknown_bcast_bytes: 0
    p0_ale_pol_match: 0
    p0_ale_pol_match_red: 0
    p0_ale_pol_match_yellow: 0
    p0_ale_mcast_sa_drop: 0
    p0_ale_dual_vlan_drop: 0
    p0_ale_len_err_drop: 0
    p0_ale_ip_next_hdr_drop: 0
    p0_ale_ipv4_frag_drop: 0
    p0_tx_mem_protect_err: 0
    p0_tx_pri0: 139
    p0_tx_pri1: 0
    p0_tx_pri2: 0
    p0_tx_pri3: 0
    p0_tx_pri4: 0
    p0_tx_pri5: 0
    p0_tx_pri6: 0
    p0_tx_pri7: 0
    p0_tx_pri0_bcnt: 26656
    p0_tx_pri1_bcnt: 0
    p0_tx_pri2_bcnt: 0
    p0_tx_pri3_bcnt: 0
    p0_tx_pri4_bcnt: 0
    p0_tx_pri5_bcnt: 0
    p0_tx_pri6_bcnt: 0
    p0_tx_pri7_bcnt: 0
    p0_tx_pri0_drop: 0
    p0_tx_pri1_drop: 0
    p0_tx_pri2_drop: 0
    p0_tx_pri3_drop: 0
    p0_tx_pri4_drop: 0
    p0_tx_pri5_drop: 0
    p0_tx_pri6_drop: 0
    p0_tx_pri7_drop: 0
    p0_tx_pri0_drop_bcnt: 0
    p0_tx_pri1_drop_bcnt: 0
    p0_tx_pri2_drop_bcnt: 0
    p0_tx_pri3_drop_bcnt: 0
    p0_tx_pri4_drop_bcnt: 0
    p0_tx_pri5_drop_bcnt: 0
    p0_tx_pri6_drop_bcnt: 0
    p0_tx_pri7_drop_bcnt: 0
    rx_good_frames: 196
    rx_broadcast_frames: 88
    rx_multicast_frames: 80
    rx_pause_frames: 0
    rx_crc_errors: 0
    rx_align_code_errors: 0
    rx_oversized_frames: 0
    rx_jabber_frames: 0
    rx_undersized_frames: 0
    rx_fragments: 0
    ale_drop: 74
    ale_overrun_drop: 0
    rx_octets: 28184
    tx_good_frames: 112
    tx_broadcast_frames: 27
    tx_multicast_frames: 56
    tx_pause_frames: 0
    tx_deferred_frames: 0
    tx_collision_frames: 0
    tx_single_coll_frames: 0
    tx_mult_coll_frames: 0
    tx_excessive_collisions: 0
    tx_late_collisions: 0
    rx_ipg_error: 0
    tx_carrier_sense_errors: 0
    tx_octets: 18592
    tx_64B_frames: 54
    tx_65_to_127B_frames: 156
    tx_128_to_255B_frames: 48
    tx_256_to_511B_frames: 50
    tx_512_to_1023B_frames: 0
    tx_1024B_frames: 0
    net_octets: 46776
    rx_bottom_fifo_drop: 0
    rx_port_mask_drop: 74
    rx_top_fifo_drop: 0
    ale_rate_limit_drop: 0
    ale_vid_ingress_drop: 1
    ale_da_eq_sa_drop: 0
    ale_block_drop: 0
    ale_secure_drop: 0
    ale_auth_drop: 0
    ale_unknown_ucast: 0
    ale_unknown_ucast_bytes: 0
    ale_unknown_mcast: 38
    ale_unknown_mcast_bytes: 6008
    ale_unknown_bcast: 85
    ale_unknown_bcast_bytes: 9498
    ale_pol_match: 0
    ale_pol_match_red: 0
    ale_pol_match_yellow: 0
    ale_mcast_sa_drop: 0
    ale_dual_vlan_drop: 0
    ale_len_err_drop: 0
    ale_ip_next_hdr_drop: 0
    ale_ipv4_frag_drop: 0
    iet_rx_assembly_err: 0
    iet_rx_assembly_ok: 0
    iet_rx_smd_err: 1
    iet_rx_frag: 0
    iet_tx_hold: 0
    iet_tx_frag: 0
    tx_mem_protect_err: 0
    tx_pri0: 112
    tx_pri1: 0
    tx_pri2: 0
    tx_pri3: 0
    tx_pri4: 0
    tx_pri5: 0
    tx_pri6: 0
    tx_pri7: 0
    tx_pri0_bcnt: 18512
    tx_pri1_bcnt: 0
    tx_pri2_bcnt: 0
    tx_pri3_bcnt: 0
    tx_pri4_bcnt: 0
    tx_pri5_bcnt: 0
    tx_pri6_bcnt: 0
    tx_pri7_bcnt: 0
    tx_pri0_drop: 0
    tx_pri1_drop: 0
    tx_pri2_drop: 0
    tx_pri3_drop: 0
    tx_pri4_drop: 0
    tx_pri5_drop: 0
    tx_pri6_drop: 0
    tx_pri7_drop: 0
    tx_pri0_drop_bcnt: 0
    tx_pri1_drop_bcnt: 0
    tx_pri2_drop_bcnt: 0
    tx_pri3_drop_bcnt: 0
    tx_pri4_drop_bcnt: 0
    tx_pri5_drop_bcnt: 0
    tx_pri6_drop_bcnt: 0
    tx_pri7_drop_bcnt: 0
    root@j721e-evm:~#
    root@j721e-evm:~#
    root@j721e-evm:~#
    root@j721e-evm:~#
    root@j721e-evm:~# ethtool -S eth1
    NIC statistics:
    p0_rx_good_frames: 176
    p0_rx_broadcast_frames: 59
    p0_rx_multicast_frames: 117
    p0_rx_crc_errors: 0
    p0_rx_oversized_frames: 0
    p0_rx_undersized_frames: 0
    p0_ale_drop: 12
    p0_ale_overrun_drop: 0
    p0_rx_octets: 33620
    p0_tx_good_frames: 167
    p0_tx_broadcast_frames: 61
    p0_tx_multicast_frames: 106
    p0_tx_octets: 35436
    p0_tx_64B_frames: 9
    p0_tx_65_to_127B_frames: 154
    p0_tx_128_to_255B_frames: 79
    p0_tx_256_to_511B_frames: 101
    p0_tx_512_to_1023B_frames: 0
    p0_tx_1024B_frames: 0
    p0_net_octets: 69056
    p0_rx_bottom_fifo_drop: 0
    p0_rx_port_mask_drop: 12
    p0_rx_top_fifo_drop: 0
    p0_ale_rate_limit_drop: 0
    p0_ale_vid_ingress_drop: 33
    p0_ale_da_eq_sa_drop: 0
    p0_ale_block_drop: 0
    p0_ale_secure_drop: 0
    p0_ale_auth_drop: 0
    p0_ale_unknown_ucast: 0
    p0_ale_unknown_ucast_bytes: 0
    p0_ale_unknown_mcast: 0
    p0_ale_unknown_mcast_bytes: 0
    p0_ale_unknown_bcast: 0
    p0_ale_unknown_bcast_bytes: 0
    p0_ale_pol_match: 0
    p0_ale_pol_match_red: 0
    p0_ale_pol_match_yellow: 0
    p0_ale_mcast_sa_drop: 0
    p0_ale_dual_vlan_drop: 0
    p0_ale_len_err_drop: 0
    p0_ale_ip_next_hdr_drop: 0
    p0_ale_ipv4_frag_drop: 0
    p0_tx_mem_protect_err: 0
    p0_tx_pri0: 167
    p0_tx_pri1: 0
    p0_tx_pri2: 0
    p0_tx_pri3: 0
    p0_tx_pri4: 0
    p0_tx_pri5: 0
    p0_tx_pri6: 0
    p0_tx_pri7: 0
    p0_tx_pri0_bcnt: 35064
    p0_tx_pri1_bcnt: 0
    p0_tx_pri2_bcnt: 0
    p0_tx_pri3_bcnt: 0
    p0_tx_pri4_bcnt: 0
    p0_tx_pri5_bcnt: 0
    p0_tx_pri6_bcnt: 0
    p0_tx_pri7_bcnt: 0
    p0_tx_pri0_drop: 0
    p0_tx_pri1_drop: 0
    p0_tx_pri2_drop: 0
    p0_tx_pri3_drop: 0
    p0_tx_pri4_drop: 0
    p0_tx_pri5_drop: 0
    p0_tx_pri6_drop: 0
    p0_tx_pri7_drop: 0
    p0_tx_pri0_drop_bcnt: 0
    p0_tx_pri1_drop_bcnt: 0
    p0_tx_pri2_drop_bcnt: 0
    p0_tx_pri3_drop_bcnt: 0
    p0_tx_pri4_drop_bcnt: 0
    p0_tx_pri5_drop_bcnt: 0
    p0_tx_pri6_drop_bcnt: 0
    p0_tx_pri7_drop_bcnt: 0
    rx_good_frames: 151
    rx_broadcast_frames: 20
    rx_multicast_frames: 102
    rx_pause_frames: 0
    rx_crc_errors: 0
    rx_align_code_errors: 0
    rx_oversized_frames: 0
    rx_jabber_frames: 0
    rx_undersized_frames: 0
    rx_fragments: 0
    ale_drop: 63
    ale_overrun_drop: 0
    rx_octets: 24824
    tx_good_frames: 114
    tx_broadcast_frames: 31
    tx_multicast_frames: 55
    tx_pause_frames: 0
    tx_deferred_frames: 0
    tx_collision_frames: 0
    tx_single_coll_frames: 0
    tx_mult_coll_frames: 0
    tx_excessive_collisions: 0
    tx_late_collisions: 0
    rx_ipg_error: 0
    tx_carrier_sense_errors: 0
    tx_octets: 19011
    tx_64B_frames: 38
    tx_65_to_127B_frames: 115
    tx_128_to_255B_frames: 67
    tx_256_to_511B_frames: 45
    tx_512_to_1023B_frames: 0
    tx_1024B_frames: 0
    net_octets: 43835
    rx_bottom_fifo_drop: 0
    rx_port_mask_drop: 63
    rx_top_fifo_drop: 0
    ale_rate_limit_drop: 0
    ale_vid_ingress_drop: 12
    ale_da_eq_sa_drop: 0
    ale_block_drop: 0
    ale_secure_drop: 0
    ale_auth_drop: 0
    ale_unknown_ucast: 0
    ale_unknown_ucast_bytes: 0
    ale_unknown_mcast: 63
    ale_unknown_mcast_bytes: 10484
    ale_unknown_bcast: 14
    ale_unknown_bcast_bytes: 896
    ale_pol_match: 0
    ale_pol_match_red: 0
    ale_pol_match_yellow: 0
    ale_mcast_sa_drop: 0
    ale_dual_vlan_drop: 0
    ale_len_err_drop: 0
    ale_ip_next_hdr_drop: 0
    ale_ipv4_frag_drop: 0
    iet_rx_assembly_err: 0
    iet_rx_assembly_ok: 0
    iet_rx_smd_err: 2
    iet_rx_frag: 0
    iet_tx_hold: 0
    iet_tx_frag: 0
    tx_mem_protect_err: 0
    tx_pri0: 114
    tx_pri1: 0
    tx_pri2: 0
    tx_pri3: 0
    tx_pri4: 0
    tx_pri5: 0
    tx_pri6: 0
    tx_pri7: 0
    tx_pri0_bcnt: 18923
    tx_pri1_bcnt: 0
    tx_pri2_bcnt: 0
    tx_pri3_bcnt: 0
    tx_pri4_bcnt: 0
    tx_pri5_bcnt: 0
    tx_pri6_bcnt: 0
    tx_pri7_bcnt: 0
    tx_pri0_drop: 0
    tx_pri1_drop: 0
    tx_pri2_drop: 0
    tx_pri3_drop: 0
    tx_pri4_drop: 0
    tx_pri5_drop: 0
    tx_pri6_drop: 0
    tx_pri7_drop: 0
    tx_pri0_drop_bcnt: 0
    tx_pri1_drop_bcnt: 0
    tx_pri2_drop_bcnt: 0
    tx_pri3_drop_bcnt: 0
    tx_pri4_drop_bcnt: 0
    tx_pri5_drop_bcnt: 0
    tx_pri6_drop_bcnt: 0
    tx_pri7_drop_bcnt: 0
    root@j721e-evm:~#
    root@j721e-evm:~#
    root@j721e-evm:~#
    root@j721e-evm:~# ethtool -S eth4
    NIC statistics:
    p0_rx_good_frames: 177
    p0_rx_broadcast_frames: 60
    p0_rx_multicast_frames: 117
    p0_rx_crc_errors: 0
    p0_rx_oversized_frames: 0
    p0_rx_undersized_frames: 0
    p0_ale_drop: 12
    p0_ale_overrun_drop: 0
    p0_rx_octets: 33957
    p0_tx_good_frames: 168
    p0_tx_broadcast_frames: 61
    p0_tx_multicast_frames: 107
    p0_tx_octets: 35914
    p0_tx_64B_frames: 9
    p0_tx_65_to_127B_frames: 154
    p0_tx_128_to_255B_frames: 79
    p0_tx_256_to_511B_frames: 103
    p0_tx_512_to_1023B_frames: 0
    p0_tx_1024B_frames: 0
    p0_net_octets: 69871
    p0_rx_bottom_fifo_drop: 0
    p0_rx_port_mask_drop: 12
    p0_rx_top_fifo_drop: 0
    p0_ale_rate_limit_drop: 0
    p0_ale_vid_ingress_drop: 33
    p0_ale_da_eq_sa_drop: 0
    p0_ale_block_drop: 0
    p0_ale_secure_drop: 0
    p0_ale_auth_drop: 0
    p0_ale_unknown_ucast: 0
    p0_ale_unknown_ucast_bytes: 0
    p0_ale_unknown_mcast: 0
    p0_ale_unknown_mcast_bytes: 0
    p0_ale_unknown_bcast: 0
    p0_ale_unknown_bcast_bytes: 0
    p0_ale_pol_match: 0
    p0_ale_pol_match_red: 0
    p0_ale_pol_match_yellow: 0
    p0_ale_mcast_sa_drop: 0
    p0_ale_dual_vlan_drop: 0
    p0_ale_len_err_drop: 0
    p0_ale_ip_next_hdr_drop: 0
    p0_ale_ipv4_frag_drop: 0
    p0_tx_mem_protect_err: 0
    p0_tx_pri0: 168
    p0_tx_pri1: 0
    p0_tx_pri2: 0
    p0_tx_pri3: 0
    p0_tx_pri4: 0
    p0_tx_pri5: 0
    p0_tx_pri6: 0
    p0_tx_pri7: 0
    p0_tx_pri0_bcnt: 35538
    p0_tx_pri1_bcnt: 0
    p0_tx_pri2_bcnt: 0
    p0_tx_pri3_bcnt: 0
    p0_tx_pri4_bcnt: 0
    p0_tx_pri5_bcnt: 0
    p0_tx_pri6_bcnt: 0
    p0_tx_pri7_bcnt: 0
    p0_tx_pri0_drop: 0
    p0_tx_pri1_drop: 0
    p0_tx_pri2_drop: 0
    p0_tx_pri3_drop: 0
    p0_tx_pri4_drop: 0
    p0_tx_pri5_drop: 0
    p0_tx_pri6_drop: 0
    p0_tx_pri7_drop: 0
    p0_tx_pri0_drop_bcnt: 0
    p0_tx_pri1_drop_bcnt: 0
    p0_tx_pri2_drop_bcnt: 0
    p0_tx_pri3_drop_bcnt: 0
    p0_tx_pri4_drop_bcnt: 0
    p0_tx_pri5_drop_bcnt: 0
    p0_tx_pri6_drop_bcnt: 0
    p0_tx_pri7_drop_bcnt: 0
    rx_good_frames: 210
    rx_broadcast_frames: 90
    rx_multicast_frames: 92
    rx_pause_frames: 0
    rx_crc_errors: 0
    rx_align_code_errors: 0
    rx_oversized_frames: 0
    rx_jabber_frames: 0
    rx_undersized_frames: 0
    rx_fragments: 0
    ale_drop: 74
    ale_overrun_drop: 0
    rx_octets: 32522
    tx_good_frames: 113
    tx_broadcast_frames: 28
    tx_multicast_frames: 56
    tx_pause_frames: 0
    tx_deferred_frames: 0
    tx_collision_frames: 0
    tx_single_coll_frames: 0
    tx_mult_coll_frames: 0
    tx_excessive_collisions: 0
    tx_late_collisions: 0
    rx_ipg_error: 0
    tx_carrier_sense_errors: 0
    tx_octets: 18929
    tx_64B_frames: 58
    tx_65_to_127B_frames: 156
    tx_128_to_255B_frames: 49
    tx_256_to_511B_frames: 60
    tx_512_to_1023B_frames: 0
    tx_1024B_frames: 0
    net_octets: 51451
    rx_bottom_fifo_drop: 0
    rx_port_mask_drop: 74
    rx_top_fifo_drop: 0
    ale_rate_limit_drop: 0
    ale_vid_ingress_drop: 1
    ale_da_eq_sa_drop: 0
    ale_block_drop: 0
    ale_secure_drop: 0
    ale_auth_drop: 0
    ale_unknown_ucast: 0
    ale_unknown_ucast_bytes: 0
    ale_unknown_mcast: 38
    ale_unknown_mcast_bytes: 6008
    ale_unknown_bcast: 85
    ale_unknown_bcast_bytes: 9498
    ale_pol_match: 0
    ale_pol_match_red: 0
    ale_pol_match_yellow: 0
    ale_mcast_sa_drop: 0
    ale_dual_vlan_drop: 0
    ale_len_err_drop: 0
    ale_ip_next_hdr_drop: 0
    ale_ipv4_frag_drop: 0
    iet_rx_assembly_err: 0
    iet_rx_assembly_ok: 0
    iet_rx_smd_err: 1
    iet_rx_frag: 0
    iet_tx_hold: 0
    iet_tx_frag: 0
    tx_mem_protect_err: 0
    tx_pri0: 113
    tx_pri1: 0
    tx_pri2: 0
    tx_pri3: 0
    tx_pri4: 0
    tx_pri5: 0
    tx_pri6: 0
    tx_pri7: 0
    tx_pri0_bcnt: 18849
    tx_pri1_bcnt: 0
    tx_pri2_bcnt: 0
    tx_pri3_bcnt: 0
    tx_pri4_bcnt: 0
    tx_pri5_bcnt: 0
    tx_pri6_bcnt: 0
    tx_pri7_bcnt: 0
    tx_pri0_drop: 0
    tx_pri1_drop: 0
    tx_pri2_drop: 0
    tx_pri3_drop: 0
    tx_pri4_drop: 0
    tx_pri5_drop: 0
    tx_pri6_drop: 0
    tx_pri7_drop: 0
    tx_pri0_drop_bcnt: 0
    tx_pri1_drop_bcnt: 0
    tx_pri2_drop_bcnt: 0
    tx_pri3_drop_bcnt: 0
    tx_pri4_drop_bcnt: 0
    tx_pri5_drop_bcnt: 0
    tx_pri6_drop_bcnt: 0
    tx_pri7_drop_bcnt: 0
    root@j721e-evm:~#
    root@j721e-evm:~#
    root@j721e-evm:~#
    root@j721e-evm:~#
    root@j721e-evm:~#
    root@j721e-evm:~# ethtool -S eth4
    NIC statistics:
    p0_rx_good_frames: 181
    p0_rx_broadcast_frames: 62
    p0_rx_multicast_frames: 119
    p0_rx_crc_errors: 0
    p0_rx_oversized_frames: 0
    p0_rx_undersized_frames: 0
    p0_ale_drop: 12
    p0_ale_overrun_drop: 0
    p0_rx_octets: 34779
    p0_tx_good_frames: 198
    p0_tx_broadcast_frames: 61
    p0_tx_multicast_frames: 137
    p0_tx_octets: 46930
    p0_tx_64B_frames: 9
    p0_tx_65_to_127B_frames: 164
    p0_tx_128_to_255B_frames: 79
    p0_tx_256_to_511B_frames: 127
    p0_tx_512_to_1023B_frames: 0
    p0_tx_1024B_frames: 0
    p0_net_octets: 81709
    p0_rx_bottom_fifo_drop: 0
    p0_rx_port_mask_drop: 12
    p0_rx_top_fifo_drop: 0
    p0_ale_rate_limit_drop: 0
    p0_ale_vid_ingress_drop: 33
    p0_ale_da_eq_sa_drop: 0
    p0_ale_block_drop: 0
    p0_ale_secure_drop: 0
    p0_ale_auth_drop: 0
    p0_ale_unknown_ucast: 0
    p0_ale_unknown_ucast_bytes: 0
    p0_ale_unknown_mcast: 0
    p0_ale_unknown_mcast_bytes: 0
    p0_ale_unknown_bcast: 0
    p0_ale_unknown_bcast_bytes: 0
    p0_ale_pol_match: 0
    p0_ale_pol_match_red: 0
    p0_ale_pol_match_yellow: 0
    p0_ale_mcast_sa_drop: 0
    p0_ale_dual_vlan_drop: 0
    p0_ale_len_err_drop: 0
    p0_ale_ip_next_hdr_drop: 0
    p0_ale_ipv4_frag_drop: 0
    p0_tx_mem_protect_err: 0
    p0_tx_pri0: 198
    p0_tx_pri1: 0
    p0_tx_pri2: 0
    p0_tx_pri3: 0
    p0_tx_pri4: 0
    p0_tx_pri5: 0
    p0_tx_pri6: 0
    p0_tx_pri7: 0
    p0_tx_pri0_bcnt: 46434
    p0_tx_pri1_bcnt: 0
    p0_tx_pri2_bcnt: 0
    p0_tx_pri3_bcnt: 0
    p0_tx_pri4_bcnt: 0
    p0_tx_pri5_bcnt: 0
    p0_tx_pri6_bcnt: 0
    p0_tx_pri7_bcnt: 0
    p0_tx_pri0_drop: 0
    p0_tx_pri1_drop: 0
    p0_tx_pri2_drop: 0
    p0_tx_pri3_drop: 0
    p0_tx_pri4_drop: 0
    p0_tx_pri5_drop: 0
    p0_tx_pri6_drop: 0
    p0_tx_pri7_drop: 0
    p0_tx_pri0_drop_bcnt: 0
    p0_tx_pri1_drop_bcnt: 0
    p0_tx_pri2_drop_bcnt: 0
    p0_tx_pri3_drop_bcnt: 0
    p0_tx_pri4_drop_bcnt: 0
    p0_tx_pri5_drop_bcnt: 0
    p0_tx_pri6_drop_bcnt: 0
    p0_tx_pri7_drop_bcnt: 0
    rx_good_frames: 225
    rx_broadcast_frames: 90
    rx_multicast_frames: 107
    rx_pause_frames: 0
    rx_crc_errors: 0
    rx_align_code_errors: 0
    rx_oversized_frames: 0
    rx_jabber_frames: 0
    rx_undersized_frames: 0
    rx_fragments: 0
    ale_drop: 74
    ale_overrun_drop: 0
    rx_octets: 37948
    tx_good_frames: 115
    tx_broadcast_frames: 29
    tx_multicast_frames: 57
    tx_pause_frames: 0
    tx_deferred_frames: 0
    tx_collision_frames: 0
    tx_single_coll_frames: 0
    tx_mult_coll_frames: 0
    tx_excessive_collisions: 0
    tx_late_collisions: 0
    rx_ipg_error: 0
    tx_carrier_sense_errors: 0
    tx_octets: 19340
    tx_64B_frames: 62
    tx_65_to_127B_frames: 157
    tx_128_to_255B_frames: 49
    tx_256_to_511B_frames: 72
    tx_512_to_1023B_frames: 0
    tx_1024B_frames: 0
    net_octets: 57288
    rx_bottom_fifo_drop: 0
    rx_port_mask_drop: 74
    rx_top_fifo_drop: 0
    ale_rate_limit_drop: 0
    ale_vid_ingress_drop: 1
    ale_da_eq_sa_drop: 0
    ale_block_drop: 0
    ale_secure_drop: 0
    ale_auth_drop: 0
    ale_unknown_ucast: 0
    ale_unknown_ucast_bytes: 0
    ale_unknown_mcast: 38
    ale_unknown_mcast_bytes: 6008
    ale_unknown_bcast: 85
    ale_unknown_bcast_bytes: 9498
    ale_pol_match: 0
    ale_pol_match_red: 0
    ale_pol_match_yellow: 0
    ale_mcast_sa_drop: 0
    ale_dual_vlan_drop: 0
    ale_len_err_drop: 0
    ale_ip_next_hdr_drop: 0
    ale_ipv4_frag_drop: 0
    iet_rx_assembly_err: 0
    iet_rx_assembly_ok: 0
    iet_rx_smd_err: 1
    iet_rx_frag: 0
    iet_tx_hold: 0
    iet_tx_frag: 0
    tx_mem_protect_err: 0
    tx_pri0: 115
    tx_pri1: 0
    tx_pri2: 0
    tx_pri3: 0
    tx_pri4: 0
    tx_pri5: 0
    tx_pri6: 0
    tx_pri7: 0
    tx_pri0_bcnt: 19260
    tx_pri1_bcnt: 0
    tx_pri2_bcnt: 0
    tx_pri3_bcnt: 0
    tx_pri4_bcnt: 0
    tx_pri5_bcnt: 0
    tx_pri6_bcnt: 0
    tx_pri7_bcnt: 0
    tx_pri0_drop: 0
    tx_pri1_drop: 0
    tx_pri2_drop: 0
    tx_pri3_drop: 0
    tx_pri4_drop: 0
    tx_pri5_drop: 0
    tx_pri6_drop: 0
    tx_pri7_drop: 0
    tx_pri0_drop_bcnt: 0
    tx_pri1_drop_bcnt: 0
    tx_pri2_drop_bcnt: 0
    tx_pri3_drop_bcnt: 0
    tx_pri4_drop_bcnt: 0
    tx_pri5_drop_bcnt: 0
    tx_pri6_drop_bcnt: 0
    tx_pri7_drop_bcnt: 0
    root@j721e-evm:~#
    root@j721e-evm:~#
    root@j721e-evm:~# ethtool -S eth1
    NIC statistics:
    p0_rx_good_frames: 181
    p0_rx_broadcast_frames: 62
    p0_rx_multicast_frames: 119
    p0_rx_crc_errors: 0
    p0_rx_oversized_frames: 0
    p0_rx_undersized_frames: 0
    p0_ale_drop: 12
    p0_ale_overrun_drop: 0
    p0_rx_octets: 34779
    p0_tx_good_frames: 198
    p0_tx_broadcast_frames: 61
    p0_tx_multicast_frames: 137
    p0_tx_octets: 46930
    p0_tx_64B_frames: 9
    p0_tx_65_to_127B_frames: 164
    p0_tx_128_to_255B_frames: 79
    p0_tx_256_to_511B_frames: 127
    p0_tx_512_to_1023B_frames: 0
    p0_tx_1024B_frames: 0
    p0_net_octets: 81709
    p0_rx_bottom_fifo_drop: 0
    p0_rx_port_mask_drop: 12
    p0_rx_top_fifo_drop: 0
    p0_ale_rate_limit_drop: 0
    p0_ale_vid_ingress_drop: 33
    p0_ale_da_eq_sa_drop: 0
    p0_ale_block_drop: 0
    p0_ale_secure_drop: 0
    p0_ale_auth_drop: 0
    p0_ale_unknown_ucast: 0
    p0_ale_unknown_ucast_bytes: 0
    p0_ale_unknown_mcast: 0
    p0_ale_unknown_mcast_bytes: 0
    p0_ale_unknown_bcast: 0
    p0_ale_unknown_bcast_bytes: 0
    p0_ale_pol_match: 0
    p0_ale_pol_match_red: 0
    p0_ale_pol_match_yellow: 0
    p0_ale_mcast_sa_drop: 0
    p0_ale_dual_vlan_drop: 0
    p0_ale_len_err_drop: 0
    p0_ale_ip_next_hdr_drop: 0
    p0_ale_ipv4_frag_drop: 0
    p0_tx_mem_protect_err: 0
    p0_tx_pri0: 198
    p0_tx_pri1: 0
    p0_tx_pri2: 0
    p0_tx_pri3: 0
    p0_tx_pri4: 0
    p0_tx_pri5: 0
    p0_tx_pri6: 0
    p0_tx_pri7: 0
    p0_tx_pri0_bcnt: 46434
    p0_tx_pri1_bcnt: 0
    p0_tx_pri2_bcnt: 0
    p0_tx_pri3_bcnt: 0
    p0_tx_pri4_bcnt: 0
    p0_tx_pri5_bcnt: 0
    p0_tx_pri6_bcnt: 0
    p0_tx_pri7_bcnt: 0
    p0_tx_pri0_drop: 0
    p0_tx_pri1_drop: 0
    p0_tx_pri2_drop: 0
    p0_tx_pri3_drop: 0
    p0_tx_pri4_drop: 0
    p0_tx_pri5_drop: 0
    p0_tx_pri6_drop: 0
    p0_tx_pri7_drop: 0
    p0_tx_pri0_drop_bcnt: 0
    p0_tx_pri1_drop_bcnt: 0
    p0_tx_pri2_drop_bcnt: 0
    p0_tx_pri3_drop_bcnt: 0
    p0_tx_pri4_drop_bcnt: 0
    p0_tx_pri5_drop_bcnt: 0
    p0_tx_pri6_drop_bcnt: 0
    p0_tx_pri7_drop_bcnt: 0
    rx_good_frames: 167
    rx_broadcast_frames: 20
    rx_multicast_frames: 118
    rx_pause_frames: 0
    rx_crc_errors: 0
    rx_align_code_errors: 0
    rx_oversized_frames: 0
    rx_jabber_frames: 0
    rx_undersized_frames: 0
    rx_fragments: 0
    ale_drop: 63
    ale_overrun_drop: 0
    rx_octets: 30768
    tx_good_frames: 116
    tx_broadcast_frames: 32
    tx_multicast_frames: 56
    tx_pause_frames: 0
    tx_deferred_frames: 0
    tx_collision_frames: 0
    tx_single_coll_frames: 0
    tx_mult_coll_frames: 0
    tx_excessive_collisions: 0
    tx_late_collisions: 0
    rx_ipg_error: 0
    tx_carrier_sense_errors: 0
    tx_octets: 19422
    tx_64B_frames: 42
    tx_65_to_127B_frames: 116
    tx_128_to_255B_frames: 67
    tx_256_to_511B_frames: 58
    tx_512_to_1023B_frames: 0
    tx_1024B_frames: 0
    net_octets: 50190
    rx_bottom_fifo_drop: 0
    rx_port_mask_drop: 63
    rx_top_fifo_drop: 0
    ale_rate_limit_drop: 0
    ale_vid_ingress_drop: 12
    ale_da_eq_sa_drop: 0
    ale_block_drop: 0
    ale_secure_drop: 0
    ale_auth_drop: 0
    ale_unknown_ucast: 0
    ale_unknown_ucast_bytes: 0
    ale_unknown_mcast: 63
    ale_unknown_mcast_bytes: 10484
    ale_unknown_bcast: 14
    ale_unknown_bcast_bytes: 896
    ale_pol_match: 0
    ale_pol_match_red: 0
    ale_pol_match_yellow: 0
    ale_mcast_sa_drop: 0
    ale_dual_vlan_drop: 0
    ale_len_err_drop: 0
    ale_ip_next_hdr_drop: 0
    ale_ipv4_frag_drop: 0
    iet_rx_assembly_err: 0
    iet_rx_assembly_ok: 0
    iet_rx_smd_err: 2
    iet_rx_frag: 0
    iet_tx_hold: 0
    iet_tx_frag: 0
    tx_mem_protect_err: 0
    tx_pri0: 116
    tx_pri1: 0
    tx_pri2: 0
    tx_pri3: 0
    tx_pri4: 0
    tx_pri5: 0
    tx_pri6: 0
    tx_pri7: 0
    tx_pri0_bcnt: 19334
    tx_pri1_bcnt: 0
    tx_pri2_bcnt: 0
    tx_pri3_bcnt: 0
    tx_pri4_bcnt: 0
    tx_pri5_bcnt: 0
    tx_pri6_bcnt: 0
    tx_pri7_bcnt: 0
    tx_pri0_drop: 0
    tx_pri1_drop: 0
    tx_pri2_drop: 0
    tx_pri3_drop: 0
    tx_pri4_drop: 0
    tx_pri5_drop: 0
    tx_pri6_drop: 0
    tx_pri7_drop: 0
    tx_pri0_drop_bcnt: 0
    tx_pri1_drop_bcnt: 0
    tx_pri2_drop_bcnt: 0
    tx_pri3_drop_bcnt: 0
    tx_pri4_drop_bcnt: 0
    tx_pri5_drop_bcnt: 0
    tx_pri6_drop_bcnt: 0
    tx_pri7_drop_bcnt: 0
    root@j721e-evm:~#
    root@j721e-evm:~#
    root@j721e-evm:~#


  • Hi,

    Please give me some time to analyse this and get back too you. You can expect my response by tomorrow.

    Regards,
    Tanmay

  • Hi Tanmay,

    Any update for above issue, if yes can you please share the details.

    Thanks,

    Pavan.

  • Hi Tanmay,

    Any update for above, can you please confirm the details and is it supporting or not for multicast traffic.

    Thanks,

    Pavan.

  • Hi Pavan,

    Sorry for the delay.

    From the stats, we can see the following :

    here p0 is the host port, p1 is the external port corresponding to eth1, p4 is the external port corresponding to eth4. You have received 12 multicast packets each on eth1 and eth4 and p0 has transmitted these 24 multicast packets to the A72. Hence, there are no drops in the hardware.

    This means that somehow linux network stack is not picking up the multicast packets. I am not sure why this could be happening.

    Just checking if you have checked the traffic on br0 interface and if you are able to see the multicast on this interface.

    If you know the  IP address for the multicast traffic, you can add the address to the mdb database as follows:

    bridge mdb add dev br0 port eth1 grp 239.1.1.1 permanent

    Do this for both eth1 and eth4.

    Regards,
    Tanmay

  • Hi Tanmay,

    I will try to configure this multicast IP in IT switch. But one thing i am sure about here is, even i have tried with normal switch, router and other SOC switch device across this all device i didn't configure anything in switch side and it is working as expected. But in IT switch side only facing the issue. Something here missing on TI switch and i didn't get more time to investigate on this. But as per your suggestion i will try this configuration and let you know on this.

    Thanks,

    Pavan.