Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 66472fc0 authored by Andrew Lunn's avatar Andrew Lunn Committed by David S. Miller
Browse files

net: dsa: Copy the routing table into the switch structure



The new binding will not have a chip data structure, it will place the
routing directly into the switch structure. To enable backwards
compatibility, copy the routing from the chip data into the switch
structure.

Signed-off-by: default avatarAndrew Lunn <andrew@lunn.ch>
Reviewed-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
Reviewed-by: default avatarVivien Didelot <vivien.didelot@savoirfairelinux.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 4a7704ff
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -3024,8 +3024,8 @@ static int mv88e6xxx_setup_global(struct mv88e6xxx_priv_state *ps)
	for (i = 0; i < 32; i++) {
		int nexthop = 0x1f;

		if (i != ps->ds->index && i < ps->ds->dst->pd->nr_chips)
			nexthop = ps->ds->cd->rtable[i] & 0x1f;
		if (i != ds->index && i < DSA_MAX_SWITCHES)
			nexthop = ds->rtable[i] & 0x1f;

		err = _mv88e6xxx_reg_write(
			ps, REG_GLOBAL2,
+8 −1
Original line number Diff line number Diff line
@@ -148,6 +148,13 @@ struct dsa_switch {
	 */
	struct dsa_switch_driver	*drv;

	/*
	 * An array of which element [a] indicates which port on this
	 * switch should be used to send packets to that are destined
	 * for switch a. Can be NULL if there is only one switch chip.
	 */
	s8		rtable[DSA_MAX_SWITCHES];

#ifdef CONFIG_NET_DSA_HWMON
	/*
	 * Hardware monitoring information
@@ -194,7 +201,7 @@ static inline u8 dsa_upstream_port(struct dsa_switch *ds)
	if (dst->cpu_switch == ds->index)
		return dst->cpu_port;
	else
		return ds->cd->rtable[dst->cpu_switch];
		return ds->rtable[dst->cpu_switch];
}

struct switchdev_trans;
+2 −0
Original line number Diff line number Diff line
@@ -297,6 +297,8 @@ static int dsa_switch_setup_one(struct dsa_switch *ds, struct device *parent)
		dst->tag_protocol = drv->tag_protocol;
	}

	memcpy(ds->rtable, cd->rtable, sizeof(ds->rtable));

	/*
	 * Do basic register setup.
	 */