diff --git a/target/linux/layerscape/patches-5.4/701-net-0247-net-mscc-ocelot-move-port-initialization-into-separa.patch b/target/linux/layerscape/patches-5.4/701-net-0247-net-mscc-ocelot-move-port-initialization-into-separa.patch
new file mode 100644
index 0000000..a6bbdd6
--- /dev/null
+++ b/target/linux/layerscape/patches-5.4/701-net-0247-net-mscc-ocelot-move-port-initialization-into-separa.patch
@@ -0,0 +1,89 @@
+From 66f4bb358787f4f52de0614a92f9e4130d1e0e01 Mon Sep 17 00:00:00 2001
+From: Vladimir Oltean <vladimir.oltean@nxp.com>
+Date: Sat, 9 Nov 2019 15:02:56 +0200
+Subject: [PATCH] net: mscc: ocelot: move port initialization into separate
+ function
+
+We need a function for the DSA front-end that does none of the
+net_device registration, but initializes the hardware ports.
+
+Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+---
+ drivers/net/ethernet/mscc/ocelot.c | 45 ++++++++++++++++++++------------------
+ 1 file changed, 24 insertions(+), 21 deletions(-)
+
+--- a/drivers/net/ethernet/mscc/ocelot.c
++++ b/drivers/net/ethernet/mscc/ocelot.c
+@@ -2132,6 +2132,28 @@ static int ocelot_init_timestamp(struct
+ 	return 0;
+ }
+ 
++static void ocelot_init_port(struct ocelot *ocelot, int port)
++{
++	struct ocelot_port *ocelot_port = ocelot->ports[port];
++
++	INIT_LIST_HEAD(&ocelot_port->skbs);
++
++	/* Basic L2 initialization */
++
++	/* Drop frames with multicast source address */
++	ocelot_rmw_gix(ocelot, ANA_PORT_DROP_CFG_DROP_MC_SMAC_ENA,
++		       ANA_PORT_DROP_CFG_DROP_MC_SMAC_ENA,
++		       ANA_PORT_DROP_CFG, port);
++
++	/* Set default VLAN and tag type to 8021Q. */
++	ocelot_rmw_gix(ocelot, REW_PORT_VLAN_CFG_PORT_TPID(ETH_P_8021Q),
++		       REW_PORT_VLAN_CFG_PORT_TPID_M,
++		       REW_PORT_VLAN_CFG, port);
++
++	/* Enable vcap lookups */
++	ocelot_vcap_enable(ocelot, port);
++}
++
+ int ocelot_probe_port(struct ocelot *ocelot, u8 port,
+ 		      void __iomem *regs,
+ 		      struct phy_device *phy)
+@@ -2139,7 +2161,6 @@ int ocelot_probe_port(struct ocelot *oce
+ 	struct ocelot_port_private *priv;
+ 	struct ocelot_port *ocelot_port;
+ 	struct net_device *dev;
+-	u32 val;
+ 	int err;
+ 
+ 	dev = alloc_etherdev(sizeof(struct ocelot_port_private));
+@@ -2167,32 +2188,14 @@ int ocelot_probe_port(struct ocelot *oce
+ 	ocelot_mact_learn(ocelot, PGID_CPU, dev->dev_addr, ocelot_port->pvid,
+ 			  ENTRYTYPE_LOCKED);
+ 
+-	INIT_LIST_HEAD(&ocelot_port->skbs);
++	ocelot_init_port(ocelot, port);
+ 
+ 	err = register_netdev(dev);
+ 	if (err) {
+ 		dev_err(ocelot->dev, "register_netdev failed\n");
+-		goto err_register_netdev;
++		free_netdev(dev);
+ 	}
+ 
+-	/* Basic L2 initialization */
+-
+-	/* Drop frames with multicast source address */
+-	val = ANA_PORT_DROP_CFG_DROP_MC_SMAC_ENA;
+-	ocelot_rmw_gix(ocelot, val, val, ANA_PORT_DROP_CFG, port);
+-
+-	/* Set default VLAN and tag type to 8021Q. */
+-	ocelot_rmw_gix(ocelot, REW_PORT_VLAN_CFG_PORT_TPID(ETH_P_8021Q),
+-		       REW_PORT_VLAN_CFG_PORT_TPID_M,
+-		       REW_PORT_VLAN_CFG, port);
+-
+-	/* Enable vcap lookups */
+-	ocelot_vcap_enable(ocelot, port);
+-
+-	return 0;
+-
+-err_register_netdev:
+-	free_netdev(dev);
+ 	return err;
+ }
+ EXPORT_SYMBOL(ocelot_probe_port);
