The prerequisite DSA changes for the nice RTL8366RB improvements are already backported so bring back these changes as well. Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
		
			
				
	
	
		
			119 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			119 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
From 96cf10a8e7297065459473c081a6fb6432a22312 Mon Sep 17 00:00:00 2001
 | 
						|
From: Linus Walleij <linus.walleij@linaro.org>
 | 
						|
Date: Sun, 26 Sep 2021 00:59:25 +0200
 | 
						|
Subject: [PATCH 02/11] net: dsa: rtl8366: Drop custom VLAN set-up
 | 
						|
MIME-Version: 1.0
 | 
						|
Content-Type: text/plain; charset=UTF-8
 | 
						|
Content-Transfer-Encoding: 8bit
 | 
						|
 | 
						|
This hacky default VLAN setup was done in order to direct
 | 
						|
packets to the right ports and provide port isolation, both
 | 
						|
which we now support properly using custom tags and proper
 | 
						|
bridge port isolation.
 | 
						|
 | 
						|
We can drop the custom VLAN code and leave all VLAN handling
 | 
						|
alone, as users expect things to be. We can also drop
 | 
						|
ds->configure_vlan_while_not_filtering = false; and let
 | 
						|
the core deal with any VLANs it wants.
 | 
						|
 | 
						|
Cc: Mauri Sandberg <sandberg@mailfence.com>
 | 
						|
Cc: DENG Qingfang <dqfext@gmail.com>
 | 
						|
Reviewed-by: Vladimir Oltean <olteanv@gmail.com>
 | 
						|
Reviewed-by: Alvin Šipraga <alsi@bang-olufsen.dk>
 | 
						|
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
 | 
						|
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
 | 
						|
Signed-off-by: David S. Miller <davem@davemloft.net>
 | 
						|
---
 | 
						|
 drivers/net/dsa/realtek-smi-core.h |  1 -
 | 
						|
 drivers/net/dsa/rtl8366.c          | 48 ------------------------------
 | 
						|
 drivers/net/dsa/rtl8366rb.c        |  4 +--
 | 
						|
 3 files changed, 1 insertion(+), 52 deletions(-)
 | 
						|
 | 
						|
--- a/drivers/net/dsa/realtek-smi-core.h
 | 
						|
+++ b/drivers/net/dsa/realtek-smi-core.h
 | 
						|
@@ -129,7 +129,6 @@ int rtl8366_set_pvid(struct realtek_smi
 | 
						|
 int rtl8366_enable_vlan4k(struct realtek_smi *smi, bool enable);
 | 
						|
 int rtl8366_enable_vlan(struct realtek_smi *smi, bool enable);
 | 
						|
 int rtl8366_reset_vlan(struct realtek_smi *smi);
 | 
						|
-int rtl8366_init_vlan(struct realtek_smi *smi);
 | 
						|
 int rtl8366_vlan_filtering(struct dsa_switch *ds, int port, bool vlan_filtering,
 | 
						|
 			   struct netlink_ext_ack *extack);
 | 
						|
 int rtl8366_vlan_add(struct dsa_switch *ds, int port,
 | 
						|
--- a/drivers/net/dsa/rtl8366.c
 | 
						|
+++ b/drivers/net/dsa/rtl8366.c
 | 
						|
@@ -292,54 +292,6 @@ int rtl8366_reset_vlan(struct realtek_sm
 | 
						|
 }
 | 
						|
 EXPORT_SYMBOL_GPL(rtl8366_reset_vlan);
 | 
						|
 
 | 
						|
-int rtl8366_init_vlan(struct realtek_smi *smi)
 | 
						|
-{
 | 
						|
-	int port;
 | 
						|
-	int ret;
 | 
						|
-
 | 
						|
-	ret = rtl8366_reset_vlan(smi);
 | 
						|
-	if (ret)
 | 
						|
-		return ret;
 | 
						|
-
 | 
						|
-	/* Loop over the available ports, for each port, associate
 | 
						|
-	 * it with the VLAN (port+1)
 | 
						|
-	 */
 | 
						|
-	for (port = 0; port < smi->num_ports; port++) {
 | 
						|
-		u32 mask;
 | 
						|
-
 | 
						|
-		if (port == smi->cpu_port)
 | 
						|
-			/* For the CPU port, make all ports members of this
 | 
						|
-			 * VLAN.
 | 
						|
-			 */
 | 
						|
-			mask = GENMASK((int)smi->num_ports - 1, 0);
 | 
						|
-		else
 | 
						|
-			/* For all other ports, enable itself plus the
 | 
						|
-			 * CPU port.
 | 
						|
-			 */
 | 
						|
-			mask = BIT(port) | BIT(smi->cpu_port);
 | 
						|
-
 | 
						|
-		/* For each port, set the port as member of VLAN (port+1)
 | 
						|
-		 * and untagged, except for the CPU port: the CPU port (5) is
 | 
						|
-		 * member of VLAN 6 and so are ALL the other ports as well.
 | 
						|
-		 * Use filter 0 (no filter).
 | 
						|
-		 */
 | 
						|
-		dev_info(smi->dev, "VLAN%d port mask for port %d, %08x\n",
 | 
						|
-			 (port + 1), port, mask);
 | 
						|
-		ret = rtl8366_set_vlan(smi, (port + 1), mask, mask, 0);
 | 
						|
-		if (ret)
 | 
						|
-			return ret;
 | 
						|
-
 | 
						|
-		dev_info(smi->dev, "VLAN%d port %d, PVID set to %d\n",
 | 
						|
-			 (port + 1), port, (port + 1));
 | 
						|
-		ret = rtl8366_set_pvid(smi, port, (port + 1));
 | 
						|
-		if (ret)
 | 
						|
-			return ret;
 | 
						|
-	}
 | 
						|
-
 | 
						|
-	return rtl8366_enable_vlan(smi, true);
 | 
						|
-}
 | 
						|
-EXPORT_SYMBOL_GPL(rtl8366_init_vlan);
 | 
						|
-
 | 
						|
 int rtl8366_vlan_filtering(struct dsa_switch *ds, int port, bool vlan_filtering,
 | 
						|
 			   struct netlink_ext_ack *extack)
 | 
						|
 {
 | 
						|
--- a/drivers/net/dsa/rtl8366rb.c
 | 
						|
+++ b/drivers/net/dsa/rtl8366rb.c
 | 
						|
@@ -985,7 +985,7 @@ static int rtl8366rb_setup(struct dsa_sw
 | 
						|
 			return ret;
 | 
						|
 	}
 | 
						|
 
 | 
						|
-	ret = rtl8366_init_vlan(smi);
 | 
						|
+	ret = rtl8366_reset_vlan(smi);
 | 
						|
 	if (ret)
 | 
						|
 		return ret;
 | 
						|
 
 | 
						|
@@ -999,8 +999,6 @@ static int rtl8366rb_setup(struct dsa_sw
 | 
						|
 		return -ENODEV;
 | 
						|
 	}
 | 
						|
 
 | 
						|
-	ds->configure_vlan_while_not_filtering = false;
 | 
						|
-
 | 
						|
 	return 0;
 | 
						|
 }
 | 
						|
 
 |