mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2024-12-28 16:52:18 +00:00
net: dsa: prepare 'dsa_tag_8021q_bridge_join' for standalone use
The 'dsa_tag_8021q_bridge_join' could be used as a generic implementation of the 'ds->ops->port_bridge_join()' function. However, it is necessary to synchronize their arguments. This patch also moves the 'tx_fwd_offload' flag configuration line into 'dsa_tag_8021q_bridge_join' body. Currently, every (sja1105) driver sets it, and the future vsc73xx implementation will also need it for simplification. Suggested-by: Vladimir Oltean <olteanv@gmail.com> Signed-off-by: Pawel Dembicki <paweldembicki@gmail.com> Reviewed-by: Vladimir Oltean <olteanv@gmail.com> Link: https://patch.msgid.link/20240713211620.1125910-11-paweldembicki@gmail.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
ce20fdd670
commit
85aabd1fe9
@ -2133,14 +2133,13 @@ static int sja1105_bridge_join(struct dsa_switch *ds, int port,
|
||||
if (rc)
|
||||
return rc;
|
||||
|
||||
rc = dsa_tag_8021q_bridge_join(ds, port, bridge);
|
||||
rc = dsa_tag_8021q_bridge_join(ds, port, bridge, tx_fwd_offload,
|
||||
extack);
|
||||
if (rc) {
|
||||
sja1105_bridge_member(ds, port, bridge, false);
|
||||
return rc;
|
||||
}
|
||||
|
||||
*tx_fwd_offload = true;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -18,7 +18,8 @@ int dsa_tag_8021q_register(struct dsa_switch *ds, __be16 proto);
|
||||
void dsa_tag_8021q_unregister(struct dsa_switch *ds);
|
||||
|
||||
int dsa_tag_8021q_bridge_join(struct dsa_switch *ds, int port,
|
||||
struct dsa_bridge bridge);
|
||||
struct dsa_bridge bridge, bool *tx_fwd_offload,
|
||||
struct netlink_ext_ack *extack);
|
||||
|
||||
void dsa_tag_8021q_bridge_leave(struct dsa_switch *ds, int port,
|
||||
struct dsa_bridge bridge);
|
||||
|
@ -286,7 +286,8 @@ int dsa_switch_tag_8021q_vlan_del(struct dsa_switch *ds,
|
||||
* be used for VLAN-unaware bridging.
|
||||
*/
|
||||
int dsa_tag_8021q_bridge_join(struct dsa_switch *ds, int port,
|
||||
struct dsa_bridge bridge)
|
||||
struct dsa_bridge bridge, bool *tx_fwd_offload,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct dsa_port *dp = dsa_to_port(ds, port);
|
||||
u16 standalone_vid, bridge_vid;
|
||||
@ -304,6 +305,8 @@ int dsa_tag_8021q_bridge_join(struct dsa_switch *ds, int port,
|
||||
|
||||
dsa_port_tag_8021q_vlan_del(dp, standalone_vid, false);
|
||||
|
||||
*tx_fwd_offload = true;
|
||||
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(dsa_tag_8021q_bridge_join);
|
||||
|
Loading…
Reference in New Issue
Block a user