Skip to main content
Visitor II
March 16, 2022
Question

Does HAL_ETH_IsRxDataAvailable (in stm32h7xx_hal_eth.c) drop packets?

  • March 16, 2022
  • 2 replies
  • 936 views

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?

    This topic has been closed for replies.

    2 replies

    Super User
    March 16, 2022

    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.

    MBuck.4Author
    Visitor II
    March 16, 2022

    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.