OSDN Git Service

net: dsa: b53: Configure VLANs while not filtering
authorFlorian Fainelli <f.fainelli@gmail.com>
Wed, 23 Sep 2020 21:40:38 +0000 (14:40 -0700)
committerDavid S. Miller <davem@davemloft.net>
Thu, 24 Sep 2020 01:13:45 +0000 (18:13 -0700)
commited409f3bbaa5632b8316f7596dec227814811620
tree74bceb42b315affb090e4c53e27a5ea9a171bd32
parent412a1526d067e355b101e84344d998c3753fe258
net: dsa: b53: Configure VLANs while not filtering

Update the B53 driver to support VLANs while not filtering. This
requires us to enable VLAN globally within the switch upon driver
initial configuration (dev->vlan_enabled).

We also need to remove the code that dealt with PVID re-configuration in
b53_vlan_filtering() since that function worked under the assumption
that it would only be called to make a bridge VLAN filtering, or not
filtering, and we would attempt to move the port's PVID accordingly.

Now that VLANs are programmed all the time, even in the case of a
non-VLAN filtering bridge, we would be programming a default_pvid for
the bridged switch ports.

We need the DSA receive path to pop the VLAN tag if it is the bridge's
default_pvid because the CPU port is always programmed tagged in the
programmed VLANs. In order to do so we utilize the
dsa_untag_bridge_pvid() helper introduced in the commit before within
net/dsa/tag_brcm.c.

Acked-by: Vladimir Oltean <vladimir.oltean@nxp.com>
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
drivers/net/dsa/b53/b53_priv.h
net/dsa/tag_brcm.c