Thank you for your reply.
I checked the errata & unsuccessfully searched the forums. Freescale has sent me some example code, which I copied (without looking at my old code to make sure they are completely different) - the result was the same!!!
I have narrowed down the problem a little further though, in case it jogs anones memories.
It would appear that it isnt dropping every other packet after all, just putting them in the wrong place.
- The first packet does get dropped. It exists nowhere in memory (only the first packet, I could live with it).
- The second packet matches up with the second desciptor - works.
- The third packet alters the third buffer descriptor flags & length, however updates the FIRST descriptors data buffer.
- The fourth packet matches the fourth buffer descriptor ok.
- The fifth packet updates the fifth buffer descriptor, but updates the THIRD buffer descriptor data pointer.
- The trend continues
It appears that the EVEN buffer descriptors work, whilst the odd buffer descriptor data pointers are offset by one descriptor.
Does that give any clues?
Kind regards