Hi Mark,
Thank you for your great help. Of course i initially falsely interpreted
your good answer. I am pretty convinced now there is something in my code
that makes the offloading fail. Maybe it was unfortunate i initially tested
with a router that did not look at the checksum, and did not see the
problem earlier. Anyway i have to find out what that is so i will do more
experiments.
I use both IP checksum and UDP/ICMP offloading. I do set the initial values
to 0x0000. If the IP checksum fails, UDP checksum also fails. They both
fail or both are both OK. I will test ICMP also by putting more data in the
ping. I run RMII on a K66, so the FRDM board seems a good reference. CPU
speed 180 MHz. Running at 10MB/s everything works fine. Only running
100MB/s i see the problem.
Maybe it has something to do with my 'efficient' handling of the frame
data. I dynamically assign frame buffer space to the TX descriptor just
before i set the R and BDU bits to avoid i have to copy the frame from ram
to ram. I tried a small wait but that did not help.
I assume the set of the R bit triggers the start of the calculation. (if it
was the BDU bit, i should see a change when i introduce wait between the
set of first R and the BDU, or the other way around.).
I like to assume the transmit starts when the offloading calculation is
ready. But that seems not to be the case.
Assuming the ENET needs more time to calculate the checksums, it may make
sense to think about what actually triggers the ENET to transmit the frame.
Do you have a clue?
I have boards with K60-MII and K60-RMII as well. If you appreciate, i will
share my findings with you.
I do not have an FRDM board unfortunately.
Your portfolio and credentials are impressive. I guess that is a good plan
B.
Thanks again. Kind Regards,
Simon Busman.
--
Simon Busman
DTPA/SMS/ENTEG
Faculty of Science and Engineering
Nijenborgh 4
9747 AG Groningen
The Netherlands
Room: 5117.0201
Tel.: + 31 (0)50 363 3932
E-mail: s.busman@rug.nl
On Wed, Jul 24, 2019 at 1:15 AM mjbcswitzerland <