Hello,
I am using Xavier AGX on a custom carrier board.
Jetson Linux release: R35.4.1
JetPack release: 5.1.2
I’m unable to correctly receive packets from the switch connected via RGMII (BCM53125S), they are being truncated by the AGX module somewhere in HW.
Here is what it looks like on tcpdump (command used: tcpdump -e -XX -i end0 -Q in):
11:37:11.270243 [|brcm-tag]
0x0000: ffff ffff ffff f0a7 313f af4c 0000 ........1?.L..
Here is what data looks like on RGMII lines:
55 55 55 55 55 55 55 D5 FF FF FF FF FF FF F0 A7
31 3F AF 4C 00 00 20 00 81 00 00 00 88 99 25 00
00 00 F0 A7 31 3F AF 4C 00 00 00 00 00 F0 A7 31
3F AF 4C FF 07 A3 D9 28 42 D4 D4 B2 42 4B 74 7E
77 45 3C 9B AE 65 BA C3 A9 EC 8A E3 3C 88 8D E7
(attached picture that shows captured signals:
Switch is configured to include Broadcom tag 4octetes which are inserted before ethertype L2 field (here on packet dump val 0x00002000).
I was trying to investigate where this truncation happened, and my conclusion is that it is very early, probably in hardware. First software place that mentions rx packet size I’ve found is in nvidia/drivers/net/ethernet/nvidia/nvethernet/nvethernetrm/osi/dma/osi_dma_txrx.c, function osi_process_rx_completions, I’ve added a print after line rx_pkt_cx->pkt_len = rx_desc->rdes3 & RDES3_PKT_LEN;
and it outputs 14 for every received packet.
I think the problem is with this broadcom tag added, eqos is performing some automatic filtering based on ethertype tag, and this frame has 0x0000 there and it fails to handle it correctly, maybe it is expecting a VLAN tag there or something else.
How can I force ethernet (eqos) to pass the entire packet to the kernel?