2022-03-16 07:48 AM
I'm trying to understand how HAL_ETH_IsRxDataAvailable (STM32CubeH7 1.9.1) works. Most of it makes sense, but the bottom half of the function (from line 1149) appears to destroy packet data and return the descriptors back to DMA ownership if an incomplete packet is encountered.
I'm guessing this is done to stop reception from stalling if a malformed packet is received, but if HAL_ETH_IsRxDataAvailable is polled often, doesn't this mean there is a good chance that large packets (bigger than a single buffer), in the process of being received, could end up being needlessly dropped on a frequent basis? What am I missing?
2022-03-16 09:08 AM
Just to make it clear, are you referring to the new ("reworked") version?
In the new version, there is no function named HAL_ETH_IsRxDataAvailable.
The old version has too many known issues.
The old version is preserved in the library under Src/Legacy and Inc/Legacy.
2022-03-16 09:34 AM
I was using the version from the STM32CubeH7 repository (master) which I cloned about two weeks ago. It seems the reworked driver made it over to that repository 8 days ago. Thanks for pointing the reworked version out.