fjpanag opened a new pull request, #8566: URL: https://github.com/apache/nuttx/pull/8566
## Summary The DMA of the Ethernet peripheral of the STM32F4's support store-and-forward. This functionality is disabled though. However, I noticed in the device Errata that it **must** be enabled, due to a device limitation. [Errata sheet - 2.17.4](https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&cad=rja&uact=8&ved=2ahUKEwj0kc2isJ39AhWccfEDHeGWCjwQFnoECB4QAQ&url=https%3A%2F%2Fwww.st.com%2Fresource%2Fen%2Ferrata_sheet%2Fes0206-stm32f427437-and-stm32f429439-line-limitations-stmicroelectronics.pdf&usg=AOvVaw3cIFVVJpRRy-Tg9RM2bV7X) > **2.17.4 - Transmit frame data corruption** > Frame data corrupted when the TxFIFO is repeatedly transitioning from non-empty to empty > and then back to non-empty. > > **Description** > Frame data may get corrupted when the TxFIFO is repeatedly transitioning from non-empty > to empty for a very short period, and then from empty to non-empty, without causing an > underflow. > This transitioning from non-empty to empty and back to non-empty happens when the rate > at which the data is being written to the TxFIFO is almost equal to or a little less than the > rate at which the data is being read. > This corruption cannot be detected by the receiver when the CRC is inserted by the MAC, > as the corrupted data is used for the CRC computation. > > **Workaround** > Use the Store-and-Forward mode: TSF=1 (bit 21 in ETH_DMAOMR). In this mode, the data > is transmitted only when the whole packet is available in the TxFIFO. I think that the original author of the driver though that the store-and-forward functionality depends on MAC generated checksums (`CONFIG_STM32_ETH_HWCHECKSUM`). But in fact the opposite is true. The checksums require store-and-forward, not the other way around. As it seems, the peripheral works perfectly with store-and-forward functionality enabled alone (and no HW checksums, or enhanced descriptors). ## Impact More correct operation of the Ethernet peripheral of the STM32's, without hitting the erratum, or chance of data corruption. ## Testing Tested on a custom target, based on the STM32F427. I tried various networking protocols, and the peripheral performs as it should. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: commits-unsubscr...@nuttx.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org