Skip to content

Commit

Permalink
net: dsa: felix: update bridge fwd mask from ocelot lib when changing…
Browse files Browse the repository at this point in the history
… 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>
  • Loading branch information
Vladimir Oltean authored and David S. Miller committed May 23, 2022
1 parent 61be79b commit a72e23d
Showing 3 changed files with 5 additions and 7 deletions.
4 changes: 0 additions & 4 deletions drivers/net/dsa/ocelot/felix.c
Original file line number Diff line number Diff line change
@@ -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);
}

7 changes: 5 additions & 2 deletions drivers/net/ethernet/mscc/ocelot.c
Original file line number Diff line number Diff line change
@@ -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);

1 change: 0 additions & 1 deletion include/soc/mscc/ocelot.h
Original file line number Diff line number Diff line change
@@ -880,7 +880,6 @@ int ocelot_port_vlan_filtering(struct ocelot *ocelot, int port, bool enabled,
void ocelot_bridge_stp_state_set(struct ocelot *ocelot, int port, u8 state);
u32 ocelot_get_dsa_8021q_cpu_mask(struct ocelot *ocelot);
u32 ocelot_get_bridge_fwd_mask(struct ocelot *ocelot, int src_port);
void ocelot_apply_bridge_fwd_mask(struct ocelot *ocelot, bool joining);
int ocelot_port_pre_bridge_flags(struct ocelot *ocelot, int port,
struct switchdev_brport_flags val);
void ocelot_port_bridge_flags(struct ocelot *ocelot, int port,

0 comments on commit a72e23d

Please sign in to comment.