Skip to main content
Visitor II
March 29, 2023
Question

I have an STM32H743. I am trying to configure a Layer 4 inverse filter on destination port . My intention is to allow all broadcast traffic except for one that has a particular destination port.

  • March 29, 2023
  • 1 reply
  • 658 views

I am configuring the following control registers.

 heth->Instance->MACCR |= ETH_MACCR_IPC;

 // INVERSE MATCHING

 heth->Instance->MACPFR |= ETH_MACPFR_IPFE;

 heth->Instance->MACL3L4C0R |= 1<<21;//ETH_MACL3L4C0R_L4DPIM0;

 heth->Instance->MACL3L4C0R |= 1<<20;//ETH_MACL3L4C0R_L4DPM0;

 heth->Instance->MACL3L4C0R |= 1<<16;//ETH_MACL3L4C0R_L4PEN0;

This does not seem to be doing anything at all, since I am still getting packets from this source into application space.

Does anyone have any ideas as to how to configure a filter to do this task?

Thanks in advance.

    This topic has been closed for replies.

    1 reply

    ABuce.1Author
    Visitor II
    March 30, 2023

    I want to amend my question further.

    I am trying to block out a broadcast on port 5077. I tried both inverse filter using the above register values.

    I specified the port as

    heth->Instance->MACL4A0R |= (0xD5130000);

    From what I understand from the documentation, the port number has to be given in big-endian. (5077 = 0x13D5).

    I further tried the perfect filter (as opposed to the inverse filter). None of these appear to be doing anything to the broadcast stream.

    I have also tried doing the source port filtering on Layer 4.

    None of these filters appear to be doing anything to the communication. Is there an enable bit or something like that I am missing?