rtl83xx: dsa: disable VLAN filtering on CPU port
authorHarshal Gohel <hg@simonwunderlich.de>
Mon, 27 Nov 2023 16:09:27 +0000 (17:09 +0100)
committerSander Vanheule <sander@svanheule.net>
Tue, 9 Jan 2024 20:15:37 +0000 (21:15 +0100)
Before driver code
 - enabled egress filter for cpu and non-cpu ports
 - enabled ingress filter for non-cpu ports

This patch explicitly enables ingress and egress filtering for non-cpu
ports and disables ingress and egress filtering for cpu port.

Acked-by: Simon Wunderlich <sw@simonwunderlich.de>
Signed-off-by: Harshal Gohel <hg@simonwunderlich.de>
target/linux/realtek/files-5.15/drivers/net/dsa/rtl83xx/dsa.c

index 9f608950c06f0ec715b5e817e05b968dbcf1f5f6..75f9ceb557ab899b0fd12c7d37be682d0e84ac09 100644 (file)
@@ -1357,10 +1357,15 @@ static int rtl83xx_vlan_filtering(struct dsa_switch *ds, int port,
                 * 2: Trap packet to CPU port
                 * The Egress filter used 1 bit per state (0: DISABLED, 1: ENABLED)
                 */
-               if (port != priv->cpu_port)
+               if (port != priv->cpu_port) {
                        priv->r->set_vlan_igr_filter(port, IGR_DROP);
+                       priv->r->set_vlan_egr_filter(port, EGR_ENABLE);
+               }
+               else {
+                       priv->r->set_vlan_igr_filter(port, IGR_TRAP);
+                       priv->r->set_vlan_egr_filter(port, EGR_DISABLE);
+               }
 
-               priv->r->set_vlan_egr_filter(port, EGR_ENABLE);
        } else {
                /* Disable ingress and egress filtering */
                if (port != priv->cpu_port)