Skip to main content
Visitor II
September 18, 2025
Question

STM32H7 ETH MAC broadcast filter conflicts with ARP broadcast request?

  • September 18, 2025
  • 2 replies
  • 306 views

Hello everyone!
  Recently, I have been developing a firmware product based on STM32H750, using FreeRTOS and LwIP. Because the application scenarios for this product frequently involve large volumes of broadcase messages, while the product's own communication does not use broadcast at all. So I enable the ETH MAC filter to detect and drop the broadcast frame by hardware itself, which means reducing the processing load on LwIP. 
  However, after that I discovery a problem, which is that the hardware also drop ARP broadcast request too! Just because the destination mac address filed in ARP broadcast request is FF:FF:FF:FF:FF:FF. The result is that many functions relying ARP have been affected, such as ICMP, UDP unicast, TCP client etc. In these functions, if the remote host's ARP cache does not contain the hardware's IP and MAC addresses, ARP broadcast requests and responses must be used. 
  In the datasheet RM0433, I found a bit called ARPEN(bit 31) in the ETH_MACCR register. Its description seems to match the solution I am looking for, but after testing, I found it ineffective. Perhaps because this feature has a lower execution priority than MAC filter? Does the MAC filter first detect and drop broadcast frame, preventing this feature from taking effect? Is there any other method to receive only ARP broadcast requests while discarding other broadcast packets? 

dango_0-1758175690607.png

 

    This topic has been closed for replies.

    2 replies

    Technical Moderator
    September 18, 2025

    Hello @dango, and welcome to ST community!

    I assume you enabled Disable Broadcast Packets in ETH_MACPFR in your filter configuration?. Have you tried using a combination of two-layer filters instead—one that accepts ARP frames from the gateway but blocks them from other addresses?

    Best regards,

    Super User
    September 19, 2025

    IIRC some H7's have erratum for ARP offload that renders it unusable - please check if it applies to yours.

    Indeed, a lot of broadcasts is not good. If you want to optimize performance (assuming the ARP offload is not enabled): in the low-level input function you can check the incoming packet and discard unwanted packets early without passing them to the IP layer.