summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorVladimir Oltean <vladimir.oltean@nxp.com>2022-05-22 00:37:40 +0300
committerDavid S. Miller <davem@davemloft.net>2022-05-23 12:39:54 +0300
commita72e23dd679c632bcf6ab47a3a1a58c1e777713a (patch)
treead64b41ecf5cbe49c156bbc02b59a74d6468b7be /drivers
parent61be79ba2d90162b0b213384f35eb8db7eb183b8 (diff)
downloadlinux-a72e23dd679c632bcf6ab47a3a1a58c1e777713a.tar.xz
net: dsa: felix: update bridge fwd mask from ocelot lib when changing tag_8021q CPU
Add more logic to ocelot_port_{,un}set_dsa_8021q_cpu() from the ocelot switch lib by encapsulating the ocelot_apply_bridge_fwd_mask() call that felix used to have. This is necessary because the CPU port change procedure will also need to do this, and it's good to reduce code duplication by having an entry point in the ocelot switch lib that does all that is needed. Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/dsa/ocelot/felix.c4
-rw-r--r--drivers/net/ethernet/mscc/ocelot.c7
2 files changed, 5 insertions, 6 deletions
diff --git a/drivers/net/dsa/ocelot/felix.c b/drivers/net/dsa/ocelot/felix.c
index 1299f6a8ac5b..b60d6e7295e1 100644
--- a/drivers/net/dsa/ocelot/felix.c
+++ b/drivers/net/dsa/ocelot/felix.c
@@ -253,8 +253,6 @@ static void felix_8021q_cpu_port_init(struct ocelot *ocelot, int port)
ocelot_port_set_dsa_8021q_cpu(ocelot, port);
- ocelot_apply_bridge_fwd_mask(ocelot, true);
-
mutex_unlock(&ocelot->fwd_domain_lock);
}
@@ -264,8 +262,6 @@ static void felix_8021q_cpu_port_deinit(struct ocelot *ocelot, int port)
ocelot_port_unset_dsa_8021q_cpu(ocelot, port);
- ocelot_apply_bridge_fwd_mask(ocelot, true);
-
mutex_unlock(&ocelot->fwd_domain_lock);
}
diff --git a/drivers/net/ethernet/mscc/ocelot.c b/drivers/net/ethernet/mscc/ocelot.c
index ac9faf1923c5..4011a7968be5 100644
--- a/drivers/net/ethernet/mscc/ocelot.c
+++ b/drivers/net/ethernet/mscc/ocelot.c
@@ -2094,7 +2094,7 @@ u32 ocelot_get_dsa_8021q_cpu_mask(struct ocelot *ocelot)
}
EXPORT_SYMBOL_GPL(ocelot_get_dsa_8021q_cpu_mask);
-void ocelot_apply_bridge_fwd_mask(struct ocelot *ocelot, bool joining)
+static void ocelot_apply_bridge_fwd_mask(struct ocelot *ocelot, bool joining)
{
unsigned long cpu_fwd_mask;
int port;
@@ -2163,7 +2163,6 @@ void ocelot_apply_bridge_fwd_mask(struct ocelot *ocelot, bool joining)
if (!joining && ocelot->ops->cut_through_fwd)
ocelot->ops->cut_through_fwd(ocelot);
}
-EXPORT_SYMBOL(ocelot_apply_bridge_fwd_mask);
/* Update PGID_CPU which is the destination port mask used for whitelisting
* unicast addresses filtered towards the host. In the normal and NPI modes,
@@ -2202,6 +2201,8 @@ void ocelot_port_set_dsa_8021q_cpu(struct ocelot *ocelot, int port)
ocelot_vlan_member_add(ocelot, port, vid, true);
ocelot_update_pgid_cpu(ocelot);
+
+ ocelot_apply_bridge_fwd_mask(ocelot, true);
}
EXPORT_SYMBOL_GPL(ocelot_port_set_dsa_8021q_cpu);
@@ -2215,6 +2216,8 @@ void ocelot_port_unset_dsa_8021q_cpu(struct ocelot *ocelot, int port)
ocelot_vlan_member_del(ocelot, port, vid);
ocelot_update_pgid_cpu(ocelot);
+
+ ocelot_apply_bridge_fwd_mask(ocelot, true);
}
EXPORT_SYMBOL_GPL(ocelot_port_unset_dsa_8021q_cpu);