> 1st and 4th byte(character) is getting swapped.
You can't count!
The "swapped bytes" in the example you give are from "receive, it has" to "receivt, ie has".
That's the First and FIFTH byte. That makes a big difference.
The checksum used by TCP will give the same result for the original and corrupted strings. It ignores any exchange of bits that are an even number of bytes apart - that give the same sum when summed 16 bits at a time.
You're probably getting a lot more corrupted packets that the checksum is detecting and dropping.
Have you done any of the things I suggested in my email, like looking at the TCP statistics in your stack?
Have you read the Errata item and then looked to see if you can follow any of the Workarounds?
You could also run Wireshark and capture all the Ethernet packets, to make sure they're good or bad on the wire.
> I couldn't understand what you mean by flow control points
TCP performs flow control. This means that if the sender is supplying data faster than the receiver can get rid of it, the buffers in the sender and receiver will fill up, but they won't overflow. The data rate is limited by the protocol - you don't have to do anything else. If you were using a more primitive protocol then you'd have to do the "flow control" yourself.
That said, there are a lot of simple and badly written versions of TCP that don't work properly when their buffers are full as it exposes a whole lot of bugs that only trigger under these circumstances. I'm not saying the problem is with your stack, only that it might be. You've bought a commercial one. That's good. The "small and free" ones are the ones I've had trouble with.
It is also possible that TCP is advertising more buffer space than your Ethernet controller can handle, and your code isn't working properly to unload the Ethernet chip in time. This could explain your "10 kbytes/second" problem if the packets aren't all getting corrupted. Try dropping the "Advertised Window" and see if it gets better (read your TCP stack documentation).
Can you run your software and TCP stack of different hardware - with a different model of CPU?
> Exress logics NetX
"Express" I assume. Ask them if there are known problems on your CPU. What OS are you running on? It may be an interrupt or scheduling hazard that is causing the problem.
> I tried capturing data while it is passing to DMA descriptors.
How did you manage to do that?
Tom