I have had issues with the PRU ethernet driver at gigabit speeds since SDK8.0. Luckily I haven't really needed to use it until now. I updated to SDK8.6 and it looks like there has been a lot of changes to the pru eth driver as well as presumably the PRU ethernet firmware. I am attempting to use the autoforwarding feature here as described in the TRM section 6.5.11.2.1.1. As far as I can tell, the new PRU firmware + driver seems to be working pretty well for network captures using TCPdump or my own custom capture program I have been using. For the sake of simplicity here though, I am just using TCPdump since it ships with the SDK image.
My setup here is as follows:
ICSSG2 I enable auto packet forwarding with the following register settings:
0x0B232000: 0x259
0x0B232010: 0x000B1201
0x0B232004: 0x251
0x0B232014: 0x000B1301
0x0B233000: 0x1042D
ICSSG0 I leave in the default configuration.
I then start two TCPdump instances in my am65x board, one sniffing ICSSG0_PRU0, and one sniffing one of the autoforwarded connections, ICSSG2_PRU0. I get identical results between the two; EXCEPT the second byte of the destination IP address when capturing on the autoforward side occasionally gets screwed up! It seems pretty random as to when it happens, and it also seems random as to what gets written to that byte. It’s as if there’s a pointer that isn’t treated properly, and it occasionally overwrites that byte. I’m unsure why that would happen only with the autoforwarding enabled though. The rest of the packet data looks to be identical between them, though I’ve only done random spot checks at this point. I can provide the two capture files if it would be helpful.
Any ideas of where I could look to solve this issue? Or any ideas what may be causing this?