diff --git a/src/core/ipv6/nd6.c b/src/core/ipv6/nd6.c index 1e7c94ce..d65ed4e1 100644 --- a/src/core/ipv6/nd6.c +++ b/src/core/ipv6/nd6.c @@ -697,7 +697,7 @@ nd6_input(struct pbuf *p, struct netif *inp) #if LWIP_ND6_ALLOW_RA_UPDATES if (inp->mtu) { /* don't set the mtu for IPv6 higher than the netif driver supports */ - inp->mtu6 = LWIP_MIN(inp->mtu, (u16_t)mtu32); + inp->mtu6 = LWIP_MIN(LWIP_MIN(inp->mtu, inp->mtu6), (u16_t)mtu32); } else { inp->mtu6 = (u16_t)mtu32; } diff --git a/src/core/netif.c b/src/core/netif.c index 15200a27..e95cb672 100644 --- a/src/core/netif.c +++ b/src/core/netif.c @@ -1031,6 +1031,10 @@ netif_set_link_down(struct netif *netif) if (netif->flags & NETIF_FLAG_LINK_UP) { netif_clear_flags(netif, NETIF_FLAG_LINK_UP); +#if LWIP_IPV6 && LWIP_ND6_ALLOW_RA_UPDATES + netif->mtu6 = netif->mtu; +#endif + NETIF_LINK_CALLBACK(netif); #if LWIP_NETIF_EXT_STATUS_CALLBACK {