FreeRTOS-Plus-TCP Multi - Can't ping multiple interfaces

I have two custom network interface drivers that I wrote. One is for the Silicon Labs WF200 and the other is for the EFM32GG11 Ethernet MAC. If I add them individually they work fine; however, if I add them both I can only ping one of them. (Code omitted for clarity)

Is my expectation that I should be able to ping both interfaces simultaneously correct?

  // Fill the interface descriptor for ethernet
  pxEFM32GG11_FillInterfaceDescriptor(0, &(network_interfaces[0]));

  // Create ethernet endpoint from configuration files
  FreeRTOS_FillEndPoint(...);


  if (network_configuration.wifi_config.enabled)
  {
    // Fill the interface descriptor for wifi
    pxWFX_FillInterfaceDescriptor(1, &(network_interfaces[1]));

    // Create wifi endpoints from configuration files
    FreeRTOS_FillEndPoint(...);
  }

I see both interfaces come up with DHCP.

8065 INFO  [vApplicationIPNetworkEventHook_Multi@123] eth0 up: 192.168.1.240
8178 INFO  [vApplicationIPNetworkEventHook_Multi@123] wlan1 up: 192.168.1.250

but I can only ping the wifi interface.

If I remember, It’s expected behavior for only one interface to respond to pings if multiple interfaces have IPs on the same subnet. FreeRTOS-Plus-TCP’s current routing logic selects the first matching endpoint, making only one effectively reachable. To ping both, ensure they are on different subnets

Here is the documentation: FreeRTOS-Plus-TCP Multiple Interfaces - FreeRTOS

Some notes from the documentation:
Two networks, same network address

Some users on the FreeRTOS forum have asked if two networks may have the same network address. The algorithm says that the first interface with a matching network address shall be used. The same for an incoming TCP connection: the very first SYN packet will set the MAC-address and the interface used. As for UDP packets: incoming packets will be replied to through the interface that received the packet.

1 Like