瀏覽代碼

rtl83xx: dsa: reset PVID to 1 instead of 0

Before, PVID is reset for all ports and goes out of bounds. Also, PVID
is later changed by dsa configuration by `ip link` and `bridge vlan`
commands, this does not change the CPU port PVID and CPU PVID stays 0.
It does not allow sending packets from OpenWrt to any connected devices
unless default configuration is changed

This change iterates up to and including cpu_port and sets default PVID
to 1. For lan* ports PVID can be configured with `ip link` and `bridge
vlan` commands

Acked-by: Simon Wunderlich <[email protected]>
Signed-off-by: Harshal Gohel <[email protected]>
Harshal Gohel 1 年之前
父節點
當前提交
e691e2b302
共有 1 個文件被更改,包括 3 次插入3 次删除
  1. 3 3
      target/linux/realtek/files-5.15/drivers/net/dsa/rtl83xx/dsa.c

+ 3 - 3
target/linux/realtek/files-5.15/drivers/net/dsa/rtl83xx/dsa.c

@@ -137,9 +137,9 @@ static void rtl83xx_vlan_setup(struct rtl838x_switch_priv *priv)
 		priv->r->vlan_set_tagged(i, &info);
 		priv->r->vlan_set_tagged(i, &info);
 
 
 	/* reset PVIDs; defaults to 1 on reset */
 	/* reset PVIDs; defaults to 1 on reset */
-	for (int i = 0; i <= priv->ds->num_ports; i++) {
-		priv->r->vlan_port_pvid_set(i, PBVLAN_TYPE_INNER, 0);
-		priv->r->vlan_port_pvid_set(i, PBVLAN_TYPE_OUTER, 0);
+	for (int i = 0; i <= priv->cpu_port; i++) {
+		priv->r->vlan_port_pvid_set(i, PBVLAN_TYPE_INNER, 1);
+		priv->r->vlan_port_pvid_set(i, PBVLAN_TYPE_OUTER, 1);
 		priv->r->vlan_port_pvidmode_set(i, PBVLAN_TYPE_INNER, PBVLAN_MODE_UNTAG_AND_PRITAG);
 		priv->r->vlan_port_pvidmode_set(i, PBVLAN_TYPE_INNER, PBVLAN_MODE_UNTAG_AND_PRITAG);
 		priv->r->vlan_port_pvidmode_set(i, PBVLAN_TYPE_OUTER, PBVLAN_MODE_UNTAG_AND_PRITAG);
 		priv->r->vlan_port_pvidmode_set(i, PBVLAN_TYPE_OUTER, PBVLAN_MODE_UNTAG_AND_PRITAG);
 	}
 	}