net: dsa: b53: Ensure the default VID is untagged
authorFlorian Fainelli <f.fainelli@gmail.com>
Fri, 14 Feb 2020 23:26:19 +0000 (15:26 -0800)
committerDavid S. Miller <davem@davemloft.net>
Mon, 17 Feb 2020 03:22:47 +0000 (19:22 -0800)
We need to ensure that the default VID is untagged otherwise the switch
will be sending tagged frames and the results can be problematic. This
is especially true with b53 switches that use VID 0 as their default
VLAN since VID 0 has a special meaning.

Fixes: fea83353177a ("net: dsa: b53: Fix default VLAN ID")
Fixes: 061f6a505ac3 ("net: dsa: Add ndo_vlan_rx_{add, kill}_vid implementation")
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/dsa/b53/b53_common.c

index 449a22172e079649940a1c3ba76cd30fb6e46ccb..1a69286daa8d8adcc2b2e535c1bd4a02b380a1c0 100644 (file)
@@ -1366,6 +1366,9 @@ void b53_vlan_add(struct dsa_switch *ds, int port,
 
                b53_get_vlan_entry(dev, vid, vl);
 
+               if (vid == 0 && vid == b53_default_pvid(dev))
+                       untagged = true;
+
                vl->members |= BIT(port);
                if (untagged && !dsa_is_cpu_port(ds, port))
                        vl->untag |= BIT(port);