diff --git a/src/lwip/efr32/lwipopts-rs911x.h b/src/lwip/efr32/lwipopts-rs911x.h index 4ea7d001a78c3d..b4a0dd76643615 100644 --- a/src/lwip/efr32/lwipopts-rs911x.h +++ b/src/lwip/efr32/lwipopts-rs911x.h @@ -102,7 +102,7 @@ #define LWIP_IPV6_FRAG (LWIP_IPV6) #define LWIP_IPV6_DHCP6 0 #define LWIP_IPV6_AUTOCONFIG (LWIP_IPV6) -#define LWIP_IPV6_DUP_DETECT_ATTEMPTS 0 // TODO: Enable this after a fix for NS loopback +#define LWIP_IPV6_DUP_DETECT_ATTEMPTS 1 #define LWIP_IPV6_ROUTER_SUPPORT (LWIP_IPV6) #define LWIP_ND6_LISTEN_RA (LWIP_IPV6_ND) #define LWIP_ND6_NUM_NEIGHBORS (2) diff --git a/src/lwip/efr32/lwipopts-wf200.h b/src/lwip/efr32/lwipopts-wf200.h index 9034eede6c52fa..e6c42ad0e8774e 100644 --- a/src/lwip/efr32/lwipopts-wf200.h +++ b/src/lwip/efr32/lwipopts-wf200.h @@ -102,7 +102,7 @@ #define LWIP_IPV6_FRAG (LWIP_IPV6) #define LWIP_IPV6_DHCP6 0 #define LWIP_IPV6_AUTOCONFIG (LWIP_IPV6) -#define LWIP_IPV6_DUP_DETECT_ATTEMPTS 0 // TODO: Enable this after a fix for NS loopback +#define LWIP_IPV6_DUP_DETECT_ATTEMPTS 1 #define LWIP_IPV6_ROUTER_SUPPORT (LWIP_IPV6) #define LWIP_ND6_LISTEN_RA (LWIP_IPV6_ND) #define LWIP_ND6_NUM_NEIGHBORS (2) diff --git a/src/platform/EFR32/wifi/ethernetif.cpp b/src/platform/EFR32/wifi/ethernetif.cpp index 8f811d5abea150..7e7bf8c6cfc818 100644 --- a/src/platform/EFR32/wifi/ethernetif.cpp +++ b/src/platform/EFR32/wifi/ethernetif.cpp @@ -125,6 +125,16 @@ static void low_level_input(struct netif * netif, uint8_t * b, uint16_t len) { /* 60 : LWIP frame alignment */ len = LWIP_FRAME_ALIGNMENT; } + + /* Drop packets originated from the same interface and is a multicast destination */ + if ((netif->hwaddr[0] == b[6] && netif->hwaddr[1] == b[7] && netif->hwaddr[2] == b[8] && netif->hwaddr[3] == b[9] && + netif->hwaddr[4] == b[10] && netif->hwaddr[5] == b[11]) && + !(netif->hwaddr[0] == b[0] && netif->hwaddr[1] == b[1] && netif->hwaddr[2] == b[2] && netif->hwaddr[3] == b[3] && + netif->hwaddr[4] == b[4] && netif->hwaddr[5] == b[5])) + { + return; + } + /* We allocate a pbuf chain of pbufs from the Lwip buffer pool * and copy the data to the pbuf chain */