On 14/12/2015 10:18, Martin Schiller wrote: > This patch adds devicetree aliases support, which makes it possible to > renumber the physical mac ports. > > This change has only cosmetical reasons (e.g. appearance in swconfig, > kernel messages on link change). > > Signed-off-by: Martin Schiller <mschil...@tdt.de>
i have a problem with this patch. port 5 is port 5 *always*. i dont see how this fixes an issue. did you HW guys build broken HW with badly ordered mac ports ? > --- > Changes in v2: > - use devicetree aliases instead of 'id' property > - only map ports, which are "configured" in the devicetree > > .../0025-NET-MIPS-lantiq-adds-xrx200-net.patch | 46 > ++++++++++++++++------ > 1 file changed, 33 insertions(+), 13 deletions(-) > > 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 = { > _______________________________________________ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel