--- /dev/null
+From 86f8b1c01a0a537a73d2996615133be63cdf75db Mon Sep 17 00:00:00 2001
+From: Florian Fainelli <f.fainelli@gmail.com>
+Date: Sun, 3 May 2020 20:50:57 -0700
+Subject: net: dsa: Do not make user port errors fatal
+
+From: Florian Fainelli <f.fainelli@gmail.com>
+
+commit 86f8b1c01a0a537a73d2996615133be63cdf75db upstream.
+
+Prior to 1d27732f411d ("net: dsa: setup and teardown ports"), we would
+not treat failures to set-up an user port as fatal, but after this
+commit we would, which is a regression for some systems where interfaces
+may be declared in the Device Tree, but the underlying hardware may not
+be present (pluggable daughter cards for instance).
+
+Fixes: 1d27732f411d ("net: dsa: setup and teardown ports")
+Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
+Reviewed-by: Andrew Lunn <andrew@lunn.ch>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+
+---
+ net/dsa/dsa2.c | 8 +-------
+ 1 file changed, 1 insertion(+), 7 deletions(-)
+
+--- a/net/dsa/dsa2.c
++++ b/net/dsa/dsa2.c
+@@ -461,18 +461,12 @@ static int dsa_tree_setup_switches(struc
+
+ err = dsa_port_setup(dp);
+ if (err)
+- goto ports_teardown;
++ continue;
+ }
+ }
+
+ return 0;
+
+-ports_teardown:
+- for (i = 0; i < port; i++)
+- dsa_port_teardown(&ds->ports[i]);
+-
+- dsa_switch_teardown(ds);
+-
+ switch_teardown:
+ for (i = 0; i < device; i++) {
+ ds = dst->ds[i];