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

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.