@@ -41,6 +41,7 @@
#include <linux/in6.h>
#include <linux/notifier.h>
#include <linux/inetdevice.h>
+#include <linux/netdevice.h>
#include <net/netevent.h>
#include <net/neighbour.h>
#include <net/arp.h>
@@ -2658,7 +2659,7 @@ static bool mlxsw_sp_rif_should_config(struct mlxsw_sp_rif *r,
return true;
return false;
case NETDEV_DOWN:
- if (r && !in_dev->ifa_list)
+ if (r && !in_dev->ifa_list && !netif_is_l3_slave(r->dev))
return true;
/* It is possible we already removed the RIF ourselves
* if it was assigned to a netdev that is now a bridge