diff --git a/target/linux/lantiq/patches-4.1/0025-NET-MIPS-lantiq-adds-xrx200-net.patch b/target/linux/lantiq/patches-4.1/0025-NET-MIPS-lantiq-adds-xrx200-net.patch
index 48c7395..c76c165 100644
--- a/target/linux/lantiq/patches-4.1/0025-NET-MIPS-lantiq-adds-xrx200-net.patch
+++ b/target/linux/lantiq/patches-4.1/0025-NET-MIPS-lantiq-adds-xrx200-net.patch
@@ -209,7 +209,7 @@ Subject: [PATCH 25/36] NET: MIPS: lantiq: adds xrx200-net
 +};
 --- /dev/null
 +++ b/drivers/net/ethernet/lantiq_xrx200.c
-@@ -0,0 +1,1798 @@
+@@ -0,0 +1,1818 @@
 +/*
 + *   This program is free software; you can redistribute it and/or modify it
 + *   under the terms of the GNU General Public License version 2 as published
@@ -404,6 +404,7 @@ Subject: [PATCH 25/36] NET: MIPS: lantiq: adds xrx200-net
 +
 +struct xrx200_port {
 +	u8 num;
++	u8 id;
 +	u8 phy_addr;
 +	u16 flags;
 +	phy_interface_t phy_if;
@@ -461,6 +462,9 @@ Subject: [PATCH 25/36] NET: MIPS: lantiq: adds xrx200-net
 +	struct xrx200_hw *hw;
 +};
 +
++static int id_to_mac[XRX200_MAX_PORT] = {-1,-1,-1,-1,-1,-1,6};
++static int mac_to_id[XRX200_MAX_PORT] = {-1,-1,-1,-1,-1,-1,6};
++
 +static __iomem void *xrx200_switch_membase;
 +static __iomem void *xrx200_mii_membase;
 +static __iomem void *xrx200_mdio_membase;
@@ -789,9 +793,13 @@ Subject: [PATCH 25/36] NET: MIPS: lantiq: adds xrx200-net
 +	{
 +		struct switch_port *p = &val->value.ports[i];
 +
-+		portmap |= (1 << p->id);
++		if (id_to_mac[p->id] < 0) {
++			continue;
++		}
++
++		portmap |= (1 << id_to_mac[p->id]);
 +		if (p->flags & (1 << SWITCH_PORT_FLAG_TAGGED))
-+			tagmap |= (1 << p->id);
++			tagmap |= (1 << id_to_mac[p->id]);
 +	}
 +
 +	tem.table = XRX200_PCE_VLANMAP_IDX;
@@ -855,7 +863,7 @@ Subject: [PATCH 25/36] NET: MIPS: lantiq: adds xrx200-net
 +			continue;
 +
 +		p = &val->value.ports[val->len++];
-+		p->id = i;
++		p->id = mac_to_id[i];
 +		if (tags & (1 << i))
 +			p->flags = (1 << SWITCH_PORT_FLAG_TAGGED);
 +		else
@@ -898,11 +906,12 @@ Subject: [PATCH 25/36] NET: MIPS: lantiq: adds xrx200-net
 +}
 +
 +// port
-+static int xrx200sw_get_port_pvid(struct switch_dev *dev, int port, int *val)
++static int xrx200sw_get_port_pvid(struct switch_dev *dev, int port_id, int *val)
 +{
++	int port = id_to_mac[port_id];
 +	struct xrx200_pce_table_entry tev;
 +
-+	if (port >= XRX200_MAX_PORT)
++	if (port < 0 || port >= XRX200_MAX_PORT)
 +		return -EINVAL;
 +
 +	tev.table = XRX200_PCE_ACTVLAN_IDX;
@@ -914,10 +923,12 @@ Subject: [PATCH 25/36] NET: MIPS: lantiq: adds xrx200-net
 +}
 +
 +static int xrx200sw_get_port_link(struct switch_dev *dev,
-+				  int port,
++				  int port_id,
 +				  struct switch_port_link *link)
 +{
-+	if (port >= XRX200_MAX_PORT)
++	int port = id_to_mac[port_id];
++
++	if (port < 0 || port >= XRX200_MAX_PORT)
 +		return -EINVAL;
 +
 +	link->link = xrx200sw_read_x(XRX200_MAC_PSTAT_LSTAT, port);
@@ -1432,7 +1443,7 @@ Subject: [PATCH 25/36] NET: MIPS: lantiq: adds xrx200-net
 +			xrx200_gmac_update(&priv->port[i]);
 +			priv->port[i].link = priv->port[i].phydev->link;
 +			netdev_info(dev, "port %d %s link\n",
-+				priv->port[i].num,
++				priv->port[i].id,
 +				(priv->port[i].link)?("got"):("lost"));
 +		}
 +	}
@@ -1633,7 +1644,7 @@ Subject: [PATCH 25/36] NET: MIPS: lantiq: adds xrx200-net
 +	for (i = 0; i < priv->num_port; i++)
 +		if (xrx200_mdio_probe(dev, &priv->port[i]))
 +			pr_warn("xrx200-mdio: probing phy of port %d failed\n",
-+					 priv->port[i].num);
++					 priv->port[i].id);
 +
 +	return 0;
 +
@@ -1787,19 +1798,24 @@ Subject: [PATCH 25/36] NET: MIPS: lantiq: adds xrx200-net
 +
 +static void xrx200_of_port(struct xrx200_priv *priv, struct device_node *port)
 +{
-+	const __be32 *addr, *id = of_get_property(port, "reg", NULL);
++	const __be32 *addr, *mac = of_get_property(port, "reg", NULL);
 +	struct xrx200_port *p = &priv->port[priv->num_port];
++	int id = of_alias_get_id(port, "ethernet");
 +
-+	if (!id)
++	if (!mac)
 +		return;
 +
++	if (id < 0)
++		id = *mac;
++
 +	memset(p, 0, sizeof(struct xrx200_port));
 +	p->phy_node = of_parse_phandle(port, "phy-handle", 0);
 +	addr = of_get_property(p->phy_node, "reg", NULL);
 +	if (!addr)
 +		return;
 +
-+	p->num = *id;
++	p->num = *mac;
++	p->id = id;
 +	p->phy_addr = *addr;
 +	p->phy_if = of_get_phy_mode(port);
 +	if (p->phy_addr > 0x10)
@@ -1824,6 +1840,10 @@ Subject: [PATCH 25/36] NET: MIPS: lantiq: adds xrx200-net
 +
 +	/* store the port id in the hw struct so we can map ports -> devices */
 +	priv->hw->port_map[p->num] = priv->hw->num_devs;
++
++	/* store the id <-> mac (port) mapping */
++	id_to_mac[p->id] = p->num;
++	mac_to_id[p->num] = p->id;
 +}
 +
 +static const struct net_device_ops xrx200_netdev_ops = {
