mirror of
git://git.openwrt.org/openwrt/openwrt.git
synced 2024-12-30 18:52:14 +00:00
f2f42a54e8
The qca8k patch series brings the numbering to 799. This patch renames 7xx patches to create space for more backports to be added. Signed-off-by: Matthew Hagan <mnhagan88@gmail.com> [rename 729->719] Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
72 lines
2.5 KiB
Diff
72 lines
2.5 KiB
Diff
From 64a81b24487f0d2fba0f033029eec2abc7d82cee Mon Sep 17 00:00:00 2001
|
|
From: Florian Fainelli <f.fainelli@gmail.com>
|
|
Date: Mon, 21 Jun 2021 15:10:55 -0700
|
|
Subject: [PATCH] net: dsa: b53: Create default VLAN entry explicitly
|
|
|
|
In case CONFIG_VLAN_8021Q is not set, there will be no call down to the
|
|
b53 driver to ensure that the default PVID VLAN entry will be configured
|
|
with the appropriate untagged attribute towards the CPU port. We were
|
|
implicitly relying on dsa_slave_vlan_rx_add_vid() to do that for us,
|
|
instead make it explicit.
|
|
|
|
Reported-by: Vladimir Oltean <olteanv@gmail.com>
|
|
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
|
|
Reviewed-by: Vladimir Oltean <olteanv@gmail.com>
|
|
Signed-off-by: David S. Miller <davem@davemloft.net>
|
|
---
|
|
drivers/net/dsa/b53/b53_common.c | 27 +++++++++++++++++++--------
|
|
1 file changed, 19 insertions(+), 8 deletions(-)
|
|
|
|
--- a/drivers/net/dsa/b53/b53_common.c
|
|
+++ b/drivers/net/dsa/b53/b53_common.c
|
|
@@ -693,6 +693,13 @@ static u16 b53_default_pvid(struct b53_d
|
|
return 0;
|
|
}
|
|
|
|
+static bool b53_vlan_port_needs_forced_tagged(struct dsa_switch *ds, int port)
|
|
+{
|
|
+ struct b53_device *dev = ds->priv;
|
|
+
|
|
+ return dev->tag_protocol == DSA_TAG_PROTO_NONE && dsa_is_cpu_port(ds, port);
|
|
+}
|
|
+
|
|
int b53_configure_vlan(struct dsa_switch *ds)
|
|
{
|
|
struct b53_device *dev = ds->priv;
|
|
@@ -713,9 +720,20 @@ int b53_configure_vlan(struct dsa_switch
|
|
|
|
b53_enable_vlan(dev, -1, dev->vlan_enabled, ds->vlan_filtering);
|
|
|
|
- b53_for_each_port(dev, i)
|
|
+ /* Create an untagged VLAN entry for the default PVID in case
|
|
+ * CONFIG_VLAN_8021Q is disabled and there are no calls to
|
|
+ * dsa_slave_vlan_rx_add_vid() to create the default VLAN
|
|
+ * entry. Do this only when the tagging protocol is not
|
|
+ * DSA_TAG_PROTO_NONE
|
|
+ */
|
|
+ b53_for_each_port(dev, i) {
|
|
+ v = &dev->vlans[def_vid];
|
|
+ v->members |= BIT(i);
|
|
+ if (!b53_vlan_port_needs_forced_tagged(ds, i))
|
|
+ v->untag = v->members;
|
|
b53_write16(dev, B53_VLAN_PAGE,
|
|
B53_VLAN_PORT_DEF_TAG(i), def_vid);
|
|
+ }
|
|
|
|
/* Upon initial call we have not set-up any VLANs, but upon
|
|
* system resume, we need to restore all VLAN entries.
|
|
@@ -1429,13 +1447,6 @@ int b53_vlan_prepare(struct dsa_switch *
|
|
}
|
|
EXPORT_SYMBOL(b53_vlan_prepare);
|
|
|
|
-static bool b53_vlan_port_needs_forced_tagged(struct dsa_switch *ds, int port)
|
|
-{
|
|
- struct b53_device *dev = ds->priv;
|
|
-
|
|
- return dev->tag_protocol == DSA_TAG_PROTO_NONE && dsa_is_cpu_port(ds, port);
|
|
-}
|
|
-
|
|
void b53_vlan_add(struct dsa_switch *ds, int port,
|
|
const struct switchdev_obj_port_vlan *vlan)
|
|
{
|