net: dsa: felix: drop "bool change" from felix_set_tag_protocol
authorVladimir Oltean <vladimir.oltean@nxp.com>
Tue, 8 Mar 2022 09:15:12 +0000 (11:15 +0200)
committerDavid S. Miller <davem@davemloft.net>
Wed, 9 Mar 2022 11:12:09 +0000 (11:12 +0000)
We no longer need the workaround in the felix driver to avoid calling
dsa_port_walk_fdbs() when &dp->fdbs is an uninitialized list, because
that list is now initialized from all call paths of felix_set_tag_protocol().

Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/dsa/ocelot/felix.c

index 7cc6709..2c58031 100644 (file)
@@ -460,7 +460,7 @@ static int felix_update_trapping_destinations(struct dsa_switch *ds,
        return 0;
 }
 
-static int felix_setup_tag_8021q(struct dsa_switch *ds, int cpu, bool change)
+static int felix_setup_tag_8021q(struct dsa_switch *ds, int cpu)
 {
        struct ocelot *ocelot = ds->priv;
        struct dsa_port *dp;
@@ -488,19 +488,15 @@ static int felix_setup_tag_8021q(struct dsa_switch *ds, int cpu, bool change)
        if (err)
                return err;
 
-       if (change) {
-               err = dsa_port_walk_fdbs(ds, cpu,
-                                        felix_migrate_fdbs_to_tag_8021q_port);
-               if (err)
-                       goto out_tag_8021q_unregister;
+       err = dsa_port_walk_fdbs(ds, cpu, felix_migrate_fdbs_to_tag_8021q_port);
+       if (err)
+               goto out_tag_8021q_unregister;
 
-               err = dsa_port_walk_mdbs(ds, cpu,
-                                        felix_migrate_mdbs_to_tag_8021q_port);
-               if (err)
-                       goto out_migrate_fdbs;
+       err = dsa_port_walk_mdbs(ds, cpu, felix_migrate_mdbs_to_tag_8021q_port);
+       if (err)
+               goto out_migrate_fdbs;
 
-               felix_migrate_flood_to_tag_8021q_port(ds, cpu);
-       }
+       felix_migrate_flood_to_tag_8021q_port(ds, cpu);
 
        err = felix_update_trapping_destinations(ds, true);
        if (err)
@@ -518,13 +514,10 @@ static int felix_setup_tag_8021q(struct dsa_switch *ds, int cpu, bool change)
        return 0;
 
 out_migrate_flood:
-       if (change)
-               felix_migrate_flood_to_npi_port(ds, cpu);
-       if (change)
-               dsa_port_walk_mdbs(ds, cpu, felix_migrate_mdbs_to_npi_port);
+       felix_migrate_flood_to_npi_port(ds, cpu);
+       dsa_port_walk_mdbs(ds, cpu, felix_migrate_mdbs_to_npi_port);
 out_migrate_fdbs:
-       if (change)
-               dsa_port_walk_fdbs(ds, cpu, felix_migrate_fdbs_to_npi_port);
+       dsa_port_walk_fdbs(ds, cpu, felix_migrate_fdbs_to_npi_port);
 out_tag_8021q_unregister:
        dsa_tag_8021q_unregister(ds);
        return err;
@@ -599,33 +592,27 @@ static void felix_npi_port_deinit(struct ocelot *ocelot, int port)
        ocelot_fields_write(ocelot, port, SYS_PAUSE_CFG_PAUSE_ENA, 1);
 }
 
-static int felix_setup_tag_npi(struct dsa_switch *ds, int cpu, bool change)
+static int felix_setup_tag_npi(struct dsa_switch *ds, int cpu)
 {
        struct ocelot *ocelot = ds->priv;
        int err;
 
-       if (change) {
-               err = dsa_port_walk_fdbs(ds, cpu,
-                                        felix_migrate_fdbs_to_npi_port);
-               if (err)
-                       return err;
+       err = dsa_port_walk_fdbs(ds, cpu, felix_migrate_fdbs_to_npi_port);
+       if (err)
+               return err;
 
-               err = dsa_port_walk_mdbs(ds, cpu,
-                                        felix_migrate_mdbs_to_npi_port);
-               if (err)
-                       goto out_migrate_fdbs;
+       err = dsa_port_walk_mdbs(ds, cpu, felix_migrate_mdbs_to_npi_port);
+       if (err)
+               goto out_migrate_fdbs;
 
-               felix_migrate_flood_to_npi_port(ds, cpu);
-       }
+       felix_migrate_flood_to_npi_port(ds, cpu);
 
        felix_npi_port_init(ocelot, cpu);
 
        return 0;
 
 out_migrate_fdbs:
-       if (change)
-               dsa_port_walk_fdbs(ds, cpu,
-                                  felix_migrate_fdbs_to_tag_8021q_port);
+       dsa_port_walk_fdbs(ds, cpu, felix_migrate_fdbs_to_tag_8021q_port);
 
        return err;
 }
@@ -638,17 +625,17 @@ static void felix_teardown_tag_npi(struct dsa_switch *ds, int cpu)
 }
 
 static int felix_set_tag_protocol(struct dsa_switch *ds, int cpu,
-                                 enum dsa_tag_protocol proto, bool change)
+                                 enum dsa_tag_protocol proto)
 {
        int err;
 
        switch (proto) {
        case DSA_TAG_PROTO_SEVILLE:
        case DSA_TAG_PROTO_OCELOT:
-               err = felix_setup_tag_npi(ds, cpu, change);
+               err = felix_setup_tag_npi(ds, cpu);
                break;
        case DSA_TAG_PROTO_OCELOT_8021Q:
-               err = felix_setup_tag_8021q(ds, cpu, change);
+               err = felix_setup_tag_8021q(ds, cpu);
                break;
        default:
                err = -EPROTONOSUPPORT;
@@ -692,9 +679,9 @@ static int felix_change_tag_protocol(struct dsa_switch *ds, int cpu,
 
        felix_del_tag_protocol(ds, cpu, old_proto);
 
-       err = felix_set_tag_protocol(ds, cpu, proto, true);
+       err = felix_set_tag_protocol(ds, cpu, proto);
        if (err) {
-               felix_set_tag_protocol(ds, cpu, old_proto, true);
+               felix_set_tag_protocol(ds, cpu, old_proto);
                return err;
        }
 
@@ -1393,7 +1380,7 @@ static int felix_setup(struct dsa_switch *ds)
                /* The initial tag protocol is NPI which always returns 0, so
                 * there's no real point in checking for errors.
                 */
-               felix_set_tag_protocol(ds, dp->index, felix->tag_proto, false);
+               felix_set_tag_protocol(ds, dp->index, felix->tag_proto);
                break;
        }