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.

TMDX654IDKEVM: PRU does not accept all ethernet frames

Part Number: TMDX654IDKEVM

Hello,

I have some issue with receiving ethernet frames where Source MAC address is a multicast address. All these frames are not received (dropped), other frames are received and passed correctly.

Receiving is done through raw sockets and interface is in promiscuit mode.

Setup:
TMDX654IDKEVM PG2
PROCESSOR-SDK-LINUX-RT-AM65X_07.01.00.18

This problem does not exist for PG1 and other HW platforms, like a standard PC.

Thank you for your support
Lukas Libal

  • Hi,

    PG2 has a different Firmware compared to PG1. I am not aware of such a limitation. (could be the FDB)

    Where is the packet getting dropped ? In firmware or driver interface ?

    Can you just send a single packet and check ifconfig output and ethtool -S <interface> output ?

    Regards

    Vineet

  • Hi,

    sorry for delay.

    I created the outputs, logs are attached. For reference I add also correctly working version with unicast address.

    For sending I use different hardware without any additional communication (only one exact test frame). On IDK side is some egrees communication.

    root@am65xx-evm:~# ifconfig eth3
    eth3      Link encap:Ethernet  HWaddr 70:FF:76:1D:60:C8
              inet6 addr: fe80::72ff:76ff:fe1d:60c8/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:0 errors:0 dropped:0 overruns:0 frame:0
              TX packets:24 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000
              RX bytes:0 (0.0 B)  TX bytes:4116 (4.0 KiB)
    
    root@am65xx-evm:~# ethtool -S eth3
    NIC statistics:
         rx_good_frames: 0
         rx_broadcast_frames: 0
         rx_multicast_frames: 0
         rx_crc_error_frames: 0
         rx_mii_error_frames: 0
         rx_odd_nibble_frames: 0
         rx_frame_max_size: 2000
         rx_max_size_error_frames: 0
         rx_frame_min_size: 64
         rx_min_size_error_frames: 0
         rx_overrun_frames: 0
         rx_class0_hits: 0
         rx_class1_hits: 0
         rx_class2_hits: 0
         rx_class3_hits: 0
         rx_class4_hits: 0
         rx_class5_hits: 0
         rx_class6_hits: 0
         rx_class7_hits: 0
         rx_class8_hits: 0
         rx_class9_hits: 0
         rx_class10_hits: 0
         rx_class11_hits: 0
         rx_class12_hits: 0
         rx_class13_hits: 0
         rx_class14_hits: 0
         rx_class15_hits: 0
         rx_smd_frags: 0
         rx_bucket1_size: 64
         rx_bucket2_size: 128
         rx_bucket3_size: 256
         rx_bucket4_size: 512
         rx_64B_frames: 0
         rx_bucket1_frames: 0
         rx_bucket2_frames: 0
         rx_bucket3_frames: 0
         rx_bucket4_frames: 0
         rx_bucket5_frames: 0
         rx_total_bytes: 0
         rx_tx_total_bytes: 4404
         tx_good_frames: 24
         tx_broadcast_frames: 5
         tx_multicast_frames: 24
         tx_odd_nibble_frames: 0
         tx_underflow_errors: 0
         tx_frame_max_size: 2000
         tx_max_size_error_frames: 0
         tx_frame_min_size: 64
         tx_min_size_error_frames: 0
         tx_bucket1_size: 64
         tx_bucket2_size: 128
         tx_bucket3_size: 256
         tx_bucket4_size: 512
         tx_64B_frames: 0
         tx_bucket1_frames: 0
         tx_bucket2_frames: 12
         tx_bucket3_frames: 7
         tx_bucket4_frames: 5
         tx_bucket5_frames: 0
         tx_total_bytes: 4404
    root@am65xx-evm:~# tcpdump -i eth3
    [   62.660290] 002: device eth3 entered promiscuous mode
    tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
    listening on eth3, link-type EN10MB (Ethernet), capture size 262144 bytes
    04:08:49.950659 IP 0.0.0.0.bootpc > 255.255.255.255.bootps: BOOTP/DHCP, Request from 70:ff:76:1d:60:c8 (oui Unknown), length 292
    04:08:50.958292 IP6 am65xx-evm > ip6-allrouters: ICMP6, router solicitation, length 16
    ^C
    2 packets captured
    2 packets received by filter[   69.114426] 001: device eth3 left promiscuous mode
    
    0 packets dropped by kernel
    root@am65xx-evm:~# ifconfig eth3
    eth3      Link encap:Ethernet  HWaddr 70:FF:76:1D:60:C8
              inet6 addr: fe80::72ff:76ff:fe1d:60c8/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:0 errors:0 dropped:0 overruns:0 frame:0
              TX packets:26 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000
              RX bytes:0 (0.0 B)  TX bytes:4520 (4.4 KiB)
    
    root@am65xx-evm:~# ethtool -S eth3
    NIC statistics:
         rx_good_frames: 1
         rx_broadcast_frames: 0
         rx_multicast_frames: 0
         rx_crc_error_frames: 0
         rx_mii_error_frames: 0
         rx_odd_nibble_frames: 0
         rx_frame_max_size: 2000
         rx_max_size_error_frames: 0
         rx_frame_min_size: 64
         rx_min_size_error_frames: 0
         rx_overrun_frames: 0
         rx_class0_hits: 1
         rx_class1_hits: 0
         rx_class2_hits: 0
         rx_class3_hits: 0
         rx_class4_hits: 0
         rx_class5_hits: 0
         rx_class6_hits: 0
         rx_class7_hits: 0
         rx_class8_hits: 0
         rx_class9_hits: 0
         rx_class10_hits: 0
         rx_class11_hits: 0
         rx_class12_hits: 0
         rx_class13_hits: 0
         rx_class14_hits: 0
         rx_class15_hits: 0
         rx_smd_frags: 0
         rx_bucket1_size: 64
         rx_bucket2_size: 128
         rx_bucket3_size: 256
         rx_bucket4_size: 512
         rx_64B_frames: 1
         rx_bucket1_frames: 1
         rx_bucket2_frames: 0
         rx_bucket3_frames: 0
         rx_bucket4_frames: 0
         rx_bucket5_frames: 0
         rx_total_bytes: 64
         rx_tx_total_bytes: 4896
         tx_good_frames: 26
         tx_broadcast_frames: 6
         tx_multicast_frames: 26
         tx_odd_nibble_frames: 0
         tx_underflow_errors: 0
         tx_frame_max_size: 2000
         tx_max_size_error_frames: 0
         tx_frame_min_size: 64
         tx_min_size_error_frames: 0
         tx_bucket1_size: 64
         tx_bucket2_size: 128
         tx_bucket3_size: 256
         tx_bucket4_size: 512
         tx_64B_frames: 0
         tx_bucket1_frames: 0
         tx_bucket2_frames: 13
         tx_bucket3_frames: 7
         tx_bucket4_frames: 6
         tx_bucket5_frames: 0
         tx_total_bytes: 4832
    root@am65xx-evm:~#
    
    root@am65xx-evm:~# ifconfig eth3
    eth3      Link encap:Ethernet  HWaddr 70:FF:76:1D:60:C8
              inet6 addr: fe80::72ff:76ff:fe1d:60c8/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:0 errors:0 dropped:0 overruns:0 frame:0
              TX packets:23 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000
              RX bytes:0 (0.0 B)  TX bytes:3782 (3.6 KiB)
    
    root@am65xx-evm:~# ethtool -S eth3
    NIC statistics:
         rx_good_frames: 0
         rx_broadcast_frames: 0
         rx_multicast_frames: 0
         rx_crc_error_frames: 0
         rx_mii_error_frames: 0
         rx_odd_nibble_frames: 0
         rx_frame_max_size: 2000
         rx_max_size_error_frames: 0
         rx_frame_min_size: 64
         rx_min_size_error_frames: 0
         rx_overrun_frames: 0
         rx_class0_hits: 0
         rx_class1_hits: 0
         rx_class2_hits: 0
         rx_class3_hits: 0
         rx_class4_hits: 0
         rx_class5_hits: 0
         rx_class6_hits: 0
         rx_class7_hits: 0
         rx_class8_hits: 0
         rx_class9_hits: 0
         rx_class10_hits: 0
         rx_class11_hits: 0
         rx_class12_hits: 0
         rx_class13_hits: 0
         rx_class14_hits: 0
         rx_class15_hits: 0
         rx_smd_frags: 0
         rx_bucket1_size: 64
         rx_bucket2_size: 128
         rx_bucket3_size: 256
         rx_bucket4_size: 512
         rx_64B_frames: 0
         rx_bucket1_frames: 0
         rx_bucket2_frames: 0
         rx_bucket3_frames: 0
         rx_bucket4_frames: 0
         rx_bucket5_frames: 0
         rx_total_bytes: 0
         rx_tx_total_bytes: 4140
         tx_good_frames: 24
         tx_broadcast_frames: 4
         tx_multicast_frames: 24
         tx_odd_nibble_frames: 0
         tx_underflow_errors: 0
         tx_frame_max_size: 2000
         tx_max_size_error_frames: 0
         tx_frame_min_size: 64
         tx_min_size_error_frames: 0
         tx_bucket1_size: 64
         tx_bucket2_size: 128
         tx_bucket3_size: 256
         tx_bucket4_size: 512
         tx_64B_frames: 0
         tx_bucket1_frames: 0
         tx_bucket2_frames: 13
         tx_bucket3_frames: 7
         tx_bucket4_frames: 4
         tx_bucket5_frames: 0
         tx_total_bytes: 4140
    root@am65xx-evm:~# tcpdump -i eth3
    [   51.312091] 001: device eth3 entered promiscuous mode
    tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
    listening on eth3, link-type EN10MB (Ethernet), capture size 262144 bytes
    04:08:40.118027 00:00:00:00:00:00 (oui Ethernet) > 00:00:00:00:00:ff (oui Ethernet), ethertype Unknown (0xfec1), length 60:
            0x0000:  0000 0000 0000 0000 0000 0000 0000 0000  ................
            0x0010:  0000 0000 0000 0000 0000 0000 0000 0000  ................
            0x0020:  0000 0000 0000 0000 0000 0000 0000       ..............
    ^C
    1 packet captured
    1 packet received by filter
    0 packets dropped by kernel
    [   59.136486] 002: device eth3 left promiscuous mode
    root@am65xx-evm:~# ifconfig eth3
    eth3      Link encap:Ethernet  HWaddr 70:FF:76:1D:60:C8
              inet6 addr: fe80::72ff:76ff:fe1d:60c8/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:1 errors:0 dropped:0 overruns:0 frame:0
              TX packets:27 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000
              RX bytes:60 (60.0 B)  TX bytes:4590 (4.4 KiB)
    
    root@am65xx-evm:~# ethtool -S eth3
    NIC statistics:
         rx_good_frames: 1
         rx_broadcast_frames: 0
         rx_multicast_frames: 0
         rx_crc_error_frames: 0
         rx_mii_error_frames: 0
         rx_odd_nibble_frames: 0
         rx_frame_max_size: 2000
         rx_max_size_error_frames: 0
         rx_frame_min_size: 64
         rx_min_size_error_frames: 0
         rx_overrun_frames: 0
         rx_class0_hits: 1
         rx_class1_hits: 0
         rx_class2_hits: 0
         rx_class3_hits: 0
         rx_class4_hits: 0
         rx_class5_hits: 0
         rx_class6_hits: 0
         rx_class7_hits: 0
         rx_class8_hits: 0
         rx_class9_hits: 0
         rx_class10_hits: 0
         rx_class11_hits: 0
         rx_class12_hits: 0
         rx_class13_hits: 0
         rx_class14_hits: 0
         rx_class15_hits: 0
         rx_smd_frags: 0
         rx_bucket1_size: 64
         rx_bucket2_size: 128
         rx_bucket3_size: 256
         rx_bucket4_size: 512
         rx_64B_frames: 1
         rx_bucket1_frames: 1
         rx_bucket2_frames: 0
         rx_bucket3_frames: 0
         rx_bucket4_frames: 0
         rx_bucket5_frames: 0
         rx_total_bytes: 64
         rx_tx_total_bytes: 4632
         tx_good_frames: 26
         tx_broadcast_frames: 5
         tx_multicast_frames: 26
         tx_odd_nibble_frames: 0
         tx_underflow_errors: 0
         tx_frame_max_size: 2000
         tx_max_size_error_frames: 0
         tx_frame_min_size: 64
         tx_min_size_error_frames: 0
         tx_bucket1_size: 64
         tx_bucket2_size: 128
         tx_bucket3_size: 256
         tx_bucket4_size: 512
         tx_64B_frames: 0
         tx_bucket1_frames: 0
         tx_bucket2_frames: 14
         tx_bucket3_frames: 7
         tx_bucket4_frames: 5
         tx_bucket5_frames: 0
         tx_total_bytes: 4568
    
    root@am65xx-evm:~#

    Best regards,
    Lukas Libal

  • Hi Lukas,

    I can confirm the issue at my end. Looking into it.

    Regards

    Vineet

  • Hi Lukas,

    I checked and we explicitly check for this in the firmware as MC SA is not a known use-case. May I know what is your requirement for this ?

    Regards

    Vineet

  • Hi,

    Currently I do not have any usecase, where I need it. Originally I used the mentioned frame for my testing communication. And I found difference on this one platform.

    I agree the frame is little nonsensical. But, when I have way haw to get all frames from the line, this behavior is not proper fully for me. Especially, when frames are dropped in firmware not in system.

    Regards,

    Lukas

  • Hi Lukas,

    This got added as a requirement from someone (I cannot disclose) so unless there is a use-case for having such a frame it would not be feasible to remove this.

    Regards

    Vineet

  • I understand, thank you for confirming the behavior.