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.

AM6421: ALE drops all MC/BC packets

Part Number: AM6421

Hello,

I have a question about ALE drops all MC/BC packets.

CPSW_STAT0:

00:0803_a000 00000015 00000001 00000014 00000000 // P0: RXGOODFRAMES=0x15,RXBROADCASTFRAMES=0x1,RXMULTICASTFRAMES=0x14
00:0803_a020 00000000 00000000 00000001 00000000 // P0: ALE_DROP=1 (=RXBROADCASTFRAMES, all Rx BC frames are dropped) <-- This is an issue
00:0803_a030 00000540 00000000 00000000 00000000 // P0: TXGOODFRAMES=0,TXBROADCASTFRAMES=0,TXMULTICASTFRAMES=0

CPSW_STAT1:

00:0803_a200 000005f6 000004b4 00000142 00000000 // P1: RXGOODFRAMES=0x5f6,RXBROADCASTFRAMES=0x4b4,RXMULTICASTFRAMES=0x142
00:0803_a220 00000000 00000000 000005f6 00000000 // P1: ALE_DROP=0x5f6 (=RXGOODFRAMES, all Rx frames are dropped) <-- This is an issue
00:0803_a230 0002a4bd 00000014 00000000 00000014 // P1: TXGOODFRAMES=14,TXBROADCASTFRAMES=0,TXMULTICASTFRAMES=14

Here issue is,
- all Rx good frames are dropped in port 1, and (no Rx packets are delivered to the driver)
- all Rx BC frames are dropped in port 0 (all ARP Tx packets are dropped)

These are ALE table entries:

ALE0]: W2=0x0, W1=0x20000000, W0=0x03100003  // VLAN: ENTRY_TYPE=2, REG_MCAST=0, VLAN_ID=0, VLAN_FORCE_UNTAG_EGRESS=3, VLAN_UNREG_MCAST=1, VLAN_MEMBER_LIST=3
ALE[1]: W2=0x1, W1=0x1000f484, W0=0x4cf97ce3   // UC: BLOCK=0, SECURE=1, TUNICAST_TYPE=0, ENTRY_TYPE=1, ADDR=f4:84:4c:f9:7c:e3
ALE[2]: W2=0xc, W1=0xd000ffff, W0=0xffffffff            // BC: SUPER=0, PORT_MASK=3, MCAST_FWD_STATE=3, ENTRY_TYPE=1, ADDR=ff:ff:ff:ff:ff:ff

Per TRM section 12.2.1.4.6.18.1.12 ALE Drop, these are the cases when the incoming packet is dropped:
1. Any data or MAC control frame which matched a unicast, broadcast or multicast address, or matched due to promiscuous mode
2. Any length (including less than 64 bytes and greater than RX_MAXLEN bytes)
3. had no CRC error, alignment error, or code error
4. the destination address was not equal to the source address
5. the packet was not destined for the port it was receive on
6. had a zero PORT_MASK

Among these, I cannot understand about 4 and 5. How the BC frame's dest add and src add could be equal? (in this case, all the dropped BC frames are ARP frames) And how to know if the packet is destined to the port it was received on? I checked the PORT_MASK is not 0 for the BC entry.

Is there anything else I need to check except for the ALE table entries?

Just for experimental, when I bypass the ALE through the CPSW_ALE_CONTROL register, all the Rx packets are passed through without drops, however, host still doesn't receive the packets. Is there any drawback when bypassing the ALE?

ALE version is 8104 (RTL version 8), is there any difference with TDA4, which version is 7104 (RTL version 7)?

Thanks,