From 25505373cea4922842b70f20914c3d0ae1901976 Mon Sep 17 00:00:00 2001 From: Rohan Sahay <103027015+rosahay-silabs@users.noreply.github.com> Date: Tue, 11 Oct 2022 19:51:03 +0530 Subject: [PATCH] [EFR32] Adds lwip ipv6 MLD support for neighborhood discovery protocol (#23105) * Adds LWIP_IPV6_MLD support for Neighborhood discovery * Adds temporary fix for NS loopback issue --- src/lwip/efr32/lwipopts-rs911x.h | 1 + src/lwip/efr32/lwipopts-wf200.h | 1 + src/platform/EFR32/wifi/ethernetif.cpp | 4 ++++ src/platform/EFR32/wifi/lwip_netif.cpp | 4 ++++ 4 files changed, 10 insertions(+) diff --git a/src/lwip/efr32/lwipopts-rs911x.h b/src/lwip/efr32/lwipopts-rs911x.h index 355ab90dd1e462..2a6de667ba75c2 100644 --- a/src/lwip/efr32/lwipopts-rs911x.h +++ b/src/lwip/efr32/lwipopts-rs911x.h @@ -99,6 +99,7 @@ #define LWIP_IPV6_REASS (0) #define LWIP_IPV6_DHCP6 0 #define LWIP_IPV6_AUTOCONFIG (1) +#define LWIP_IPV6_DUP_DETECT_ATTEMPTS 0 // TODO: Enable this after a fix for NS loopback #define LWIP_IPV6_ROUTER_SUPPORT 1 #define LWIP_ND6_LISTEN_RA 1 diff --git a/src/lwip/efr32/lwipopts-wf200.h b/src/lwip/efr32/lwipopts-wf200.h index 60844a749f3e99..5825a5af87b53f 100644 --- a/src/lwip/efr32/lwipopts-wf200.h +++ b/src/lwip/efr32/lwipopts-wf200.h @@ -99,6 +99,7 @@ #define LWIP_IPV6_REASS (0) #define LWIP_IPV6_DHCP6 0 #define LWIP_IPV6_AUTOCONFIG (1) +#define LWIP_IPV6_DUP_DETECT_ATTEMPTS 0 // TODO: Enable this after a fix for NS loopback #define LWIP_IPV6_ROUTER_SUPPORT 1 #define LWIP_ND6_LISTEN_RA 1 diff --git a/src/platform/EFR32/wifi/ethernetif.cpp b/src/platform/EFR32/wifi/ethernetif.cpp index 318f8a272ece1b..36221fbfd29de4 100644 --- a/src/platform/EFR32/wifi/ethernetif.cpp +++ b/src/platform/EFR32/wifi/ethernetif.cpp @@ -97,6 +97,10 @@ static void low_level_init(struct netif * netif) /* Accept broadcast address and ARP traffic */ netif->flags |= NETIF_FLAG_BROADCAST | NETIF_FLAG_ETHARP | NETIF_FLAG_IGMP; + +#if LWIP_IPV6_MLD + netif->flags |= NETIF_FLAG_MLD6; +#endif /* LWIP_IPV6_MLD */ } /******************************************************************************** diff --git a/src/platform/EFR32/wifi/lwip_netif.cpp b/src/platform/EFR32/wifi/lwip_netif.cpp index a13a9c35abcc25..cd3a34292cf85a 100644 --- a/src/platform/EFR32/wifi/lwip_netif.cpp +++ b/src/platform/EFR32/wifi/lwip_netif.cpp @@ -91,6 +91,10 @@ void wfx_lwip_set_sta_link_up(void) /* * Enable IPV6 */ + +#if LWIP_IPV6_AUTOCONFIG + sta_netif.ip6_autoconfig_enabled = 1; +#endif /* LWIP_IPV6_AUTOCONFIG */ netif_create_ip6_linklocal_address(&sta_netif, MAC_48_BIT_SET); }