cancel
Showing results for 
Search instead for 
Did you mean: 

Ping/ICMP checksum bug in Nucleo-F767ZI ? Firmware? Hardware?

Ingmar
Associate II

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 😎 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.

1 REPLY 1
eziya76
Associate II

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.