2013-03-20 12:27 PM
Is there any way to override the Ethernet DMA's ability to chop off a received packet?
I have an STR9 processor connected to a Marvell switch that places DSA tags on all Ethernet traffic destined for the management processor (the STR9).The STR9 DMA seems to be hard coded to look for the Ethertype field directly after the destination and source MAC addresses. If this Ethertype field is less than 1500 it treats it as a length and will fail to receive the entire packet if the perceived Ethertype/Length is shorter than the actual packet. This is pretty much always the case when the packet has been DSA tagged.Normal Ethernet Packet1 1 1 1
0 1 2 3 4 5 6 7 8 9 0 1 2 3+-----------+-----------+---+-----------------------+-------+| Dest MAC | Src MAC | | 42-1500 byte payload | CRC |+-----------+-----------+---+-----------------------+-------+ |__ Length (or Type if > 1500)Distributed Switch Architecture (DSA) Tagged Ethernet Packet1 1 1 1 1 1 1 1
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7+-----------+-----------+-------+---+-----------------------+-------+| Dest MAC | Src MAC |DSA Tag| | 42-1500 byte payload | CRC |+-----------+-----------+-------+---+-----------------------+-------+ |__ Length (or Type if > 1500) #str9-ethernet-dma