mirror of
https://github.com/torvalds/linux.git
synced 2024-12-21 02:21:36 +00:00
net: dsa: add CPU and DSA ports as VLAN members
In a multi-chip switch fabric, it is currently the responsibility of the driver to add the CPU or DSA (interconnecting chips together) ports as members of a new VLAN entry. This makes the drivers more complicated. We want the DSA drivers to be stupid and the DSA core being the one responsible for caring about the abstracted switch logic and topology. Make the DSA core program the CPU and DSA ports as part of the VLAN. This makes all chips of the data path to be aware of VIDs spanning the the whole fabric and thus, seamlessly add support for cross-chip VLAN. Reviewed-by: Florian Fainelli <f.fainelli@gmail.com> Signed-off-by: Vivien Didelot <vivien.didelot@savoirfairelinux.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
1ca4aa9cd4
commit
b2f81d304c
@ -166,6 +166,9 @@ static int dsa_switch_vlan_add(struct dsa_switch *ds,
|
|||||||
bitmap_zero(members, ds->num_ports);
|
bitmap_zero(members, ds->num_ports);
|
||||||
if (ds->index == info->sw_index)
|
if (ds->index == info->sw_index)
|
||||||
set_bit(info->port, members);
|
set_bit(info->port, members);
|
||||||
|
for (port = 0; port < ds->num_ports; port++)
|
||||||
|
if (dsa_is_cpu_port(ds, port) || dsa_is_dsa_port(ds, port))
|
||||||
|
set_bit(port, members);
|
||||||
|
|
||||||
if (switchdev_trans_ph_prepare(trans)) {
|
if (switchdev_trans_ph_prepare(trans)) {
|
||||||
if (!ds->ops->port_vlan_prepare || !ds->ops->port_vlan_add)
|
if (!ds->ops->port_vlan_prepare || !ds->ops->port_vlan_add)
|
||||||
|
Loading…
Reference in New Issue
Block a user