From 2c110abc46168c3a8cc9f855c986a55650c777dd Mon Sep 17 00:00:00 2001 From: Vladimir Oltean Date: Thu, 5 May 2022 19:22:10 +0300 Subject: net: dsa: felix: use PGID_CPU for FDB entry migration on NPI port ocelot_fdb_add() redirects FDB entries installed on the NPI port towards the special reserved PGID_CPU used for host-filtered addresses. PGID_CPU contains BIT(ocelot->num_phys_ports) in the destination port mask, which is code name for the CPU port module. Whereas felix_migrate_fdbs_to_*_port() uses the ocelot->num_phys_ports PGID directly, and it appears that this works too. Even if this PGID is set to zero, apparently its number is special and packets still reach the CPU port module. Nonetheless, in the end, these addresses end up in the same place regardless of whether they go through an extra indirection layer or not. Use PGID_CPU across to have more uniformity. Signed-off-by: Vladimir Oltean Signed-off-by: Jakub Kicinski --- drivers/net/dsa/ocelot/felix.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) (limited to 'drivers/net/dsa') diff --git a/drivers/net/dsa/ocelot/felix.c b/drivers/net/dsa/ocelot/felix.c index 33cb124ca912..8abe48ae8c3a 100644 --- a/drivers/net/dsa/ocelot/felix.c +++ b/drivers/net/dsa/ocelot/felix.c @@ -49,14 +49,13 @@ static int felix_migrate_fdbs_to_npi_port(struct dsa_switch *ds, int port, { struct net_device *bridge_dev = felix_classify_db(db); struct ocelot *ocelot = ds->priv; - int cpu = ocelot->num_phys_ports; int err; err = ocelot_fdb_del(ocelot, port, addr, vid, bridge_dev); if (err) return err; - return ocelot_fdb_add(ocelot, cpu, addr, vid, bridge_dev); + return ocelot_fdb_add(ocelot, PGID_CPU, addr, vid, bridge_dev); } static int felix_migrate_mdbs_to_npi_port(struct dsa_switch *ds, int port, @@ -128,10 +127,9 @@ felix_migrate_fdbs_to_tag_8021q_port(struct dsa_switch *ds, int port, { struct net_device *bridge_dev = felix_classify_db(db); struct ocelot *ocelot = ds->priv; - int cpu = ocelot->num_phys_ports; int err; - err = ocelot_fdb_del(ocelot, cpu, addr, vid, bridge_dev); + err = ocelot_fdb_del(ocelot, PGID_CPU, addr, vid, bridge_dev); if (err) return err; -- cgit v1.2.3