Commit ca893194 authored by Florian Fainelli's avatar Florian Fainelli Committed by David S. Miller

net: dsa: b53: Keep CPU port as tagged in all VLANs

Commit c499696e ("net: dsa: b53: Stop using dev->cpu_port
incorrectly") was a bit too trigger happy in removing the CPU port from
the VLAN membership because we rely on DSA to program the CPU port VLAN,
which it does, except it does not bother itself with tagged/untagged and
just usese untagged.

Having the CPU port "follow" the user ports tagged/untagged is not great
and does not allow for properly differentiating, so keep the CPU port
tagged in all VLANs.
Reported-by: default avatarGerhard Wiesinger <lists@wiesinger.com>
Fixes: c499696e ("net: dsa: b53: Stop using dev->cpu_port incorrectly")
Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 17c357ef
...@@ -1107,7 +1107,7 @@ void b53_vlan_add(struct dsa_switch *ds, int port, ...@@ -1107,7 +1107,7 @@ void b53_vlan_add(struct dsa_switch *ds, int port,
b53_get_vlan_entry(dev, vid, vl); b53_get_vlan_entry(dev, vid, vl);
vl->members |= BIT(port); vl->members |= BIT(port);
if (untagged) if (untagged && !dsa_is_cpu_port(ds, port))
vl->untag |= BIT(port); vl->untag |= BIT(port);
else else
vl->untag &= ~BIT(port); vl->untag &= ~BIT(port);
...@@ -1149,7 +1149,7 @@ int b53_vlan_del(struct dsa_switch *ds, int port, ...@@ -1149,7 +1149,7 @@ int b53_vlan_del(struct dsa_switch *ds, int port,
pvid = 0; pvid = 0;
} }
if (untagged) if (untagged && !dsa_is_cpu_port(ds, port))
vl->untag &= ~(BIT(port)); vl->untag &= ~(BIT(port));
b53_set_vlan_entry(dev, vid, vl); b53_set_vlan_entry(dev, vid, vl);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment