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.

66AK2L06 dropping Ethernet packets when EtherType < 0x05dc

Other Parts Discussed in Thread: 66AK2L06

For our current project running on the 66AK2L06, we need to implement a custom layer-2 Ethernet protocol that uses the EtherType field in the header as the length field.  But in our testing we are finding that whenever the EtherType is set to a value < 0x05dc,  packets sent in to the K2L seem to get dropped and never reach either the ARM cores or the DSP cores.  Sending the exact same packet, but with an EtherType value > 0x05dc, the packet will go through.

We have tested this on the K2L EVM running with the latest Processor SDK (03.00.00.04).  We have tested with only the ARM cores (running Linux) and only the DSP cores (running TI-BIOS)  and see the same behavior.  We have also confirmed that these packets are getting received by other devices (such as a Linux PC), so we know that there isn't an issue with the sending side or the LAN setup.  So we are suspecting that these packets are somehow getting dropped in the GbE switch or the PA?

Is there some configuration in the K2L's NetCP (GbE, PA, etc.) that we might be missing that is preventing these packets from getting through?

I also found a similar issue was reported a couple of years ago on the forum (for a different keystone part) but there was no resolution posted:
e2e.ti.com/.../320520

  • Hi Alan,

    I have notified our experts to comment here. Thank you for your patience.
  • Hi Alan,

    Apologies for the delay.

    I've sent a reminder to the Ethernet experts.

    Best Regards,
    Yordan
  • Hello Yordan,

    Any updates on this?

  • Hi Alan,

    I will take a look at your issue early next week. In the meantime, may you take a snapshot of the CPSW statistics? Let us figure out where the packet is being dropped.

    Regards,
    Javier
  • Hello Javier,

    Here is the stats from the ARM (Linux "ethtool -S eth0") after sending multiple packets with an EtherType < 0x05dc:

    NIC statistics:
    GBE_HOST:rx_good_frames: 46
    GBE_HOST:rx_broadcast_frames: 0
    GBE_HOST:rx_multicast_frames: 0
    GBE_HOST:rx_crc_errors: 0
    GBE_HOST:rx_oversized_frames: 0
    GBE_HOST:rx_undersized_frames: 0
    GBE_HOST:ale_drop: 0
    GBE_HOST:ale_overrun_drop: 0
    GBE_HOST:rx_bytes: 16746
    GBE_HOST:tx_good_frames: 175
    GBE_HOST:tx_broadcast_frames: 48
    GBE_HOST:tx_multicast_frames: 98
    GBE_HOST:tx_bytes: 26132
    GBE_HOST:tx_64B_frames: 24
    GBE_HOST:tx_65_to_127B_frames: 76
    GBE_HOST:tx_128_to_255B_frames: 103
    GBE_HOST:tx_256_to_511B_frames: 10
    GBE_HOST:tx_512_to_1023B_frames: 1
    GBE_HOST:tx_1024B_frames: 7
    GBE_HOST:net_bytes: 42878
    GBE_HOST:rx_bottom_fifo_drop: 0
    GBE_HOST:rx_port_mask_drop: 0
    GBE_HOST:rx_top_fifo_drop: 0
    GBE_HOST:ale_rate_limit_drop: 0
    GBE_HOST:ale_vid_ingress_drop: 0
    GBE_HOST:ale_da_eq_sa_drop: 0
    GBE_HOST:ale_unknown_ucast: 0
    GBE_HOST:ale_unknown_ucast_bytes: 0
    GBE_HOST:ale_unknown_mcast: 0
    GBE_HOST:ale_unknown_mcast_bytes: 0
    GBE_HOST:ale_unknown_bcast: 0
    GBE_HOST:ale_unknown_bcast_bytes: 0
    GBE_HOST:ale_pol_match: 0
    GBE_HOST:ale_pol_match_red: 0
    GBE_HOST:ale_pol_match_yellow: 0
    GBE_HOST:tx_mem_protect_err: 0
    GBE_HOST:tx_pri0_drop: 0
    GBE_HOST:tx_pri1_drop: 0
    GBE_HOST:tx_pri2_drop: 0
    GBE_HOST:tx_pri3_drop: 0
    GBE_HOST:tx_pri4_drop: 0
    GBE_HOST:tx_pri5_drop: 0
    GBE_HOST:tx_pri6_drop: 0
    GBE_HOST:tx_pri7_drop: 0
    GBE_HOST:tx_pri0_drop_bcnt: 0
    GBE_HOST:tx_pri1_drop_bcnt: 0
    GBE_HOST:tx_pri2_drop_bcnt: 0
    GBE_HOST:tx_pri3_drop_bcnt: 0
    GBE_HOST:tx_pri4_drop_bcnt: 0
    GBE_HOST:tx_pri5_drop_bcnt: 0
    GBE_HOST:tx_pri6_drop_bcnt: 0
    GBE_HOST:tx_pri7_drop_bcnt: 0
    GBE_P1:rx_good_frames: 175
    GBE_P1:rx_broadcast_frames: 48
    GBE_P1:rx_multicast_frames: 98
    GBE_P1:rx_pause_frames: 0
    GBE_P1:rx_crc_errors: 0
    GBE_P1:rx_align_code_errors: 0
    GBE_P1:rx_oversized_frames: 0
    GBE_P1:rx_jabber_frames: 0
    GBE_P1:rx_undersized_frames: 0
    GBE_P1:rx_fragments: 0
    GBE_P1:ale_drop: 0
    GBE_P1:ale_overrun_drop: 0
    GBE_P1:rx_bytes: 26132
    GBE_P1:tx_good_frames: 46
    GBE_P1:tx_broadcast_frames: 0
    GBE_P1:tx_multicast_frames: 0
    GBE_P1:tx_pause_frames: 0
    GBE_P1:tx_deferred_frames: 0
    GBE_P1:tx_collision_frames: 0
    GBE_P1:tx_single_coll_frames: 0
    GBE_P1:tx_mult_coll_frames: 0
    GBE_P1:tx_excessive_collisions: 0
    GBE_P1:tx_late_collisions: 0
    GBE_P1:rx_ipg_error: 0
    GBE_P1:tx_carrier_sense_errors: 0
    GBE_P1:tx_bytes: 16746
    GBE_P1:tx_64B_frames: 24
    GBE_P1:tx_65_to_127B_frames: 76
    GBE_P1:tx_128_to_255B_frames: 103
    GBE_P1:tx_256_to_511B_frames: 10
    GBE_P1:tx_512_to_1023B_frames: 1
    GBE_P1:tx_1024B_frames: 7
    GBE_P1:net_bytes: 42878
    GBE_P1:rx_bottom_fifo_drop: 0
    GBE_P1:rx_port_mask_drop: 0
    GBE_P1:rx_top_fifo_drop: 0
    GBE_P1:ale_rate_limit_drop: 0
    GBE_P1:ale_vid_ingress_drop: 0
    GBE_P1:ale_da_eq_sa_drop: 0
    GBE_P1:ale_unknown_ucast: 0
    GBE_P1:ale_unknown_ucast_bytes: 0
    GBE_P1:ale_unknown_mcast: 5
    GBE_P1:ale_unknown_mcast_bytes: 936
    GBE_P1:ale_unknown_bcast: 0
    GBE_P1:ale_unknown_bcast_bytes: 0
    GBE_P1:ale_pol_match: 0
    GBE_P1:ale_pol_match_red: 0
    GBE_P1:ale_pol_match_yellow: 0
    GBE_P1:tx_mem_protect_err: 0
    GBE_P1:tx_pri0_drop: 0
    GBE_P1:tx_pri1_drop: 0
    GBE_P1:tx_pri2_drop: 0
    GBE_P1:tx_pri3_drop: 0
    GBE_P1:tx_pri4_drop: 0
    GBE_P1:tx_pri5_drop: 0
    GBE_P1:tx_pri6_drop: 0
    GBE_P1:tx_pri7_drop: 0
    GBE_P1:tx_pri0_drop_bcnt: 0
    GBE_P1:tx_pri1_drop_bcnt: 0
    GBE_P1:tx_pri2_drop_bcnt: 0
    GBE_P1:tx_pri3_drop_bcnt: 0
    GBE_P1:tx_pri4_drop_bcnt: 0
    GBE_P1:tx_pri5_drop_bcnt: 0
    GBE_P1:tx_pri6_drop_bcnt: 0
    GBE_P1:tx_pri7_drop_bcnt: 0
    GBE_P2:rx_good_frames: 0
    GBE_P2:rx_broadcast_frames: 0
    GBE_P2:rx_multicast_frames: 0
    GBE_P2:rx_pause_frames: 0
    GBE_P2:rx_crc_errors: 0
    GBE_P2:rx_align_code_errors: 0
    GBE_P2:rx_oversized_frames: 0
    GBE_P2:rx_jabber_frames: 0
    GBE_P2:rx_undersized_frames: 0
    GBE_P2:rx_fragments: 0
    GBE_P2:ale_drop: 0
    GBE_P2:ale_overrun_drop: 0
    GBE_P2:rx_bytes: 0
    GBE_P2:tx_good_frames: 0
    GBE_P2:tx_broadcast_frames: 0
    GBE_P2:tx_multicast_frames: 0
    GBE_P2:tx_pause_frames: 0
    GBE_P2:tx_deferred_frames: 0
    GBE_P2:tx_collision_frames: 0
    GBE_P2:tx_single_coll_frames: 0
    GBE_P2:tx_mult_coll_frames: 0
    GBE_P2:tx_excessive_collisions: 0
    GBE_P2:tx_late_collisions: 0
    GBE_P2:rx_ipg_error: 0
    GBE_P2:tx_carrier_sense_errors: 0
    GBE_P2:tx_bytes: 0
    GBE_P2:tx_64B_frames: 0
    GBE_P2:tx_65_to_127B_frames: 0
    GBE_P2:tx_128_to_255B_frames: 0
    GBE_P2:tx_256_to_511B_frames: 0
    GBE_P2:tx_512_to_1023B_frames: 0
    GBE_P2:tx_1024B_frames: 0
    GBE_P2:net_bytes: 0
    GBE_P2:rx_bottom_fifo_drop: 0
    GBE_P2:rx_port_mask_drop: 0
    GBE_P2:rx_top_fifo_drop: 0
    GBE_P2:ale_rate_limit_drop: 0
    GBE_P2:ale_vid_ingress_drop: 0
    GBE_P2:ale_da_eq_sa_drop: 0
    GBE_P2:ale_unknown_ucast: 0
    GBE_P2:ale_unknown_ucast_bytes: 0
    GBE_P2:ale_unknown_mcast: 0
    GBE_P2:ale_unknown_mcast_bytes: 0
    GBE_P2:ale_unknown_bcast: 0
    GBE_P2:ale_unknown_bcast_bytes: 0
    GBE_P2:ale_pol_match: 0
    GBE_P2:ale_pol_match_red: 0
    GBE_P2:ale_pol_match_yellow: 0
    GBE_P2:tx_mem_protect_err: 0
    GBE_P2:tx_pri0_drop: 0
    GBE_P2:tx_pri1_drop: 0
    GBE_P2:tx_pri2_drop: 0
    GBE_P2:tx_pri3_drop: 0
    GBE_P2:tx_pri4_drop: 0
    GBE_P2:tx_pri5_drop: 0
    GBE_P2:tx_pri6_drop: 0
    GBE_P2:tx_pri7_drop: 0
    GBE_P2:tx_pri0_drop_bcnt: 0
    GBE_P2:tx_pri1_drop_bcnt: 0
    GBE_P2:tx_pri2_drop_bcnt: 0
    GBE_P2:tx_pri3_drop_bcnt: 0
    GBE_P2:tx_pri4_drop_bcnt: 0
    GBE_P2:tx_pri5_drop_bcnt: 0
    GBE_P2:tx_pri6_drop_bcnt: 0
    GBE_P2:tx_pri7_drop_bcnt: 0
    GBE_P3:rx_good_frames: 0
    GBE_P3:rx_broadcast_frames: 0
    GBE_P3:rx_multicast_frames: 0
    GBE_P3:rx_pause_frames: 0
    GBE_P3:rx_crc_errors: 0
    GBE_P3:rx_align_code_errors: 0
    GBE_P3:rx_oversized_frames: 0
    GBE_P3:rx_jabber_frames: 0
    GBE_P3:rx_undersized_frames: 0
    GBE_P3:rx_fragments: 0
    GBE_P3:ale_drop: 0
    GBE_P3:ale_overrun_drop: 0
    GBE_P3:rx_bytes: 0
    GBE_P3:tx_good_frames: 0
    GBE_P3:tx_broadcast_frames: 0
    GBE_P3:tx_multicast_frames: 0
    GBE_P3:tx_pause_frames: 0
    GBE_P3:tx_deferred_frames: 0
    GBE_P3:tx_collision_frames: 0
    GBE_P3:tx_single_coll_frames: 0
    GBE_P3:tx_mult_coll_frames: 0
    GBE_P3:tx_excessive_collisions: 0
    GBE_P3:tx_late_collisions: 0
    GBE_P3:rx_ipg_error: 0
    GBE_P3:tx_carrier_sense_errors: 0
    GBE_P3:tx_bytes: 0
    GBE_P3:tx_64B_frames: 0
    GBE_P3:tx_65_to_127B_frames: 0
    GBE_P3:tx_128_to_255B_frames: 0
    GBE_P3:tx_256_to_511B_frames: 0
    GBE_P3:tx_512_to_1023B_frames: 0
    GBE_P3:tx_1024B_frames: 0
    GBE_P3:net_bytes: 0
    GBE_P3:rx_bottom_fifo_drop: 0
    GBE_P3:rx_port_mask_drop: 0
    GBE_P3:rx_top_fifo_drop: 0
    GBE_P3:ale_rate_limit_drop: 0
    GBE_P3:ale_vid_ingress_drop: 0
    GBE_P3:ale_da_eq_sa_drop: 0
    GBE_P3:ale_unknown_ucast: 0
    GBE_P3:ale_unknown_ucast_bytes: 0
    GBE_P3:ale_unknown_mcast: 0
    GBE_P3:ale_unknown_mcast_bytes: 0
    GBE_P3:ale_unknown_bcast: 0
    GBE_P3:ale_unknown_bcast_bytes: 0
    GBE_P3:ale_pol_match: 0
    GBE_P3:ale_pol_match_red: 0
    GBE_P3:ale_pol_match_yellow: 0
    GBE_P3:tx_mem_protect_err: 0
    GBE_P3:tx_pri0_drop: 0
    GBE_P3:tx_pri1_drop: 0
    GBE_P3:tx_pri2_drop: 0
    GBE_P3:tx_pri3_drop: 0
    GBE_P3:tx_pri4_drop: 0
    GBE_P3:tx_pri5_drop: 0
    GBE_P3:tx_pri6_drop: 0
    GBE_P3:tx_pri7_drop: 0
    GBE_P3:tx_pri0_drop_bcnt: 0
    GBE_P3:tx_pri1_drop_bcnt: 0
    GBE_P3:tx_pri2_drop_bcnt: 0
    GBE_P3:tx_pri3_drop_bcnt: 0
    GBE_P3:tx_pri4_drop_bcnt: 0
    GBE_P3:tx_pri5_drop_bcnt: 0
    GBE_P3:tx_pri6_drop_bcnt: 0
    GBE_P3:tx_pri7_drop_bcnt: 0
    GBE_P4:rx_good_frames: 0
    GBE_P4:rx_broadcast_frames: 0
    GBE_P4:rx_multicast_frames: 0
    GBE_P4:rx_pause_frames: 0
    GBE_P4:rx_crc_errors: 0
    GBE_P4:rx_align_code_errors: 0
    GBE_P4:rx_oversized_frames: 0
    GBE_P4:rx_jabber_frames: 0
    GBE_P4:rx_undersized_frames: 0
    GBE_P4:rx_fragments: 0
    GBE_P4:ale_drop: 0
    GBE_P4:ale_overrun_drop: 0
    GBE_P4:rx_bytes: 0
    GBE_P4:tx_good_frames: 0
    GBE_P4:tx_broadcast_frames: 0
    GBE_P4:tx_multicast_frames: 0
    GBE_P4:tx_pause_frames: 0
    GBE_P4:tx_deferred_frames: 0
    GBE_P4:tx_collision_frames: 0
    GBE_P4:tx_single_coll_frames: 0
    GBE_P4:tx_mult_coll_frames: 0
    GBE_P4:tx_excessive_collisions: 0
    GBE_P4:tx_late_collisions: 0
    GBE_P4:rx_ipg_error: 0
    GBE_P4:tx_carrier_sense_errors: 0
    GBE_P4:tx_bytes: 0
    GBE_P4:tx_64B_frames: 0
    GBE_P4:tx_65_to_127B_frames: 0
    GBE_P4:tx_128_to_255B_frames: 0
    GBE_P4:tx_256_to_511B_frames: 0
    GBE_P4:tx_512_to_1023B_frames: 0
    GBE_P4:tx_1024B_frames: 0
    GBE_P4:net_bytes: 0
    GBE_P4:rx_bottom_fifo_drop: 0
    GBE_P4:rx_port_mask_drop: 0
    GBE_P4:rx_top_fifo_drop: 0
    GBE_P4:ale_rate_limit_drop: 0
    GBE_P4:ale_vid_ingress_drop: 0
    GBE_P4:ale_da_eq_sa_drop: 0
    GBE_P4:ale_unknown_ucast: 0
    GBE_P4:ale_unknown_ucast_bytes: 0
    GBE_P4:ale_unknown_mcast: 0
    GBE_P4:ale_unknown_mcast_bytes: 0
    GBE_P4:ale_unknown_bcast: 0
    GBE_P4:ale_unknown_bcast_bytes: 0
    GBE_P4:ale_pol_match: 0
    GBE_P4:ale_pol_match_red: 0
    GBE_P4:ale_pol_match_yellow: 0
    GBE_P4:tx_mem_protect_err: 0
    GBE_P4:tx_pri0_drop: 0
    GBE_P4:tx_pri1_drop: 0
    GBE_P4:tx_pri2_drop: 0
    GBE_P4:tx_pri3_drop: 0
    GBE_P4:tx_pri4_drop: 0
    GBE_P4:tx_pri5_drop: 0
    GBE_P4:tx_pri6_drop: 0
    GBE_P4:tx_pri7_drop: 0
    GBE_P4:tx_pri0_drop_bcnt: 0
    GBE_P4:tx_pri1_drop_bcnt: 0
    GBE_P4:tx_pri2_drop_bcnt: 0
    GBE_P4:tx_pri3_drop_bcnt: 0
    GBE_P4:tx_pri4_drop_bcnt: 0
    GBE_P4:tx_pri5_drop_bcnt: 0
    GBE_P4:tx_pri6_drop_bcnt: 0
    GBE_P4:tx_pri7_drop_bcnt: 0

    There doesn't seem to be anything obvious we could see here.  Nothing under the "drop" stats.  

    We will try to capture these stats from the DSP side as well.

  • Hello Javier,

    Any updates from you on this issue?

    We were able to capture the switch statistics from the DSP side (no ARM running) and we see similar stats. No dropped packets being reported but the packets with EtherType < 0x05dc are not getting through.

    Here are the switch stats from the DSP side when reproducing this issue:
    Good Frames Received 16
    Good Broadcast Frames Received 0
    Good Multicast Frames Received 16
    PauseRx Frames Received 0
    Frames Received with CRC Errors 0
    Frames Received with Alignment/Code Errors0
    Oversized Frames Received 0
    Jabber Frames Received 0
    Undersized Frames Received 0
    Rx Frame Fragments Received 0
    Total Received Bytes in Good Frames 1120
    Good Frames Sent 29
    Good Broadcast Frames Sent 0
    Good Multicast Frames Sent 29
    PauseTx Frames Sent 0
    Frames Where Transmission was Deferred 0
    Total Frames Sent With Collision 0
    Frames Sent with Exactly One Collision 0
    Frames Sent with Multiple Colisions 0
    Tx Frames Lost Due to Excessive Collisions0
    Tx Frames Lost Due to a Late Collision 0
    Tx Frames Lost Due to Carrier Sense Loss 0
    Total Transmitted Bytes in Good Frames 3263
    Total Tx&Rx with Octet Size of 64 16
    Total Tx&Rx with Octet Size of 65 to 127 20
    Total Tx&Rx with Octet Size of 128 to 255 9
    Total Tx&Rx with Octet Size of 256 to 511 0
    Total Tx&Rx with Octet Size of 512 to 1023 0
    Total Tx&Rx with Octet Size of >=1024 0
    Sum of all Octets Tx or Rx on the Network 4383
    Sum of all Octets Tx or Rx on the Network 4383
    Sum of all Octets Tx or Rx on the Network 4383
    RxDrop 0
    PortmaskFrop 0
    TxDrop 0
    RxDrop 0
    AleRateLimitDrop 0
    AleVidDrop 0
    AleAddrEqDrop 0
    AleSecDrop 0
    AleAuthDrop 0
  • Just to close the loop.  What we found out is the 66AK2L06 (and presumably other Keystone2 SoCs) does NOT support raw 802.3 Ethernet packets.  The firmware in the  Packet Accelerator in the K2L treats all Ethernet frames with an EtherType less that 0x05dc as an 802.2 LLC/SNAP packet.  The PA firmware then verifies that the first two bytes of payload are set to 0xAA (for DSAP and SSAP in the 802.2 LLC/SNAP header).  If these two bytes are not 0xAA, the PA drops the packet.

    Unfortunately, TI is unclear whether or not the PA firmware can be updated to support 802.3 raw Ethernet packets.