Ping/ICMP checksum bug in Nucleo-F767ZI ? Firmware? Hardware?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
2020-09-24 5:10 AM
I assume a bug in the Nucleo firmware (MAC driver? PHY driver?) or even the hardware.
I have implemented ping.c (from Lwip) on top of the board's Webserver example (from the recent Firmware package), so that it can ping a computer.
When the board issues a ping (echo request, ICMP type 8) request to the computer, the ICMP checksum is 0x0000, although is was correctly calculated in the message buffer before, and put to DMA as such. I have tracked down the value until HAL_ETH.*** passes it to DMA.
I cannot track down further, so I assume that some lower instances do some calculations on their own. E.g., the IP packet checksum is calculated here as well - correctly.
Vice versa, when the board answers a ping request from the computer, the checksum is correct.
See a complete report attached.
Is there a quick solution?
Edits:
- I am using IPv4
- Just had a look in the Errata Sheet ES0334 Rev 6. This case is not covered, only a similar case concerning IPv6.
- Labels:
-
STM32F7 Series
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
2022-04-14 7:03 PM
I've tested on STM32F469I-EVAL & NUCLEO-F429ZI and the result was the same as above.
ICMP checksum was in the packet buffer before HAL_ETH_Transmit function. But after DMA transmit,
Wireshark shows a loss of ICMP checksum.
