I'm trying to create an Ethernet device driver for the CF54455. Unfortunately I cant get it to work.
Every incomming Ethernet packet generates an interrupt, and the MIB counters show that the packet has arrived without errors. No interrupt errors occur, and no errors are present in the buffer descriptors (I have tested that they work separately).
When I check the buffer descriptors (breakpoint in the ISR), the FLAG and LENGTH fields are correctly updated by DMA, and the data pointer is correctly initialised (on boundary etc) and adequate memory is allocated.
The problem is that the packet is only DMA'd into the allocated memory 50% of the time (every other packet). The buffer descriptor information claims that something should be there, but it isn't! I've tested this by pre-setting the allocated receive buffer with a data patern, but nothing changes after the DMA.
The FEC was initialised in the same order described in the datasheet.
I'm at a complete loss as to where to look next.
Can anyone help?!