Netdev Archive on lore.kernel.org
help / color / mirror / Atom feed
From: Ben Hutchings <ben.hutchings@mind.be>
To: Woojung Huh <woojung.huh@microchip.com>, UNGLinuxDriver@microchip.com
Cc: netdev@vger.kernel.org
Subject: [PATCH net 5/7] net: dsa: microchip: ksz8795: Use software untagging on CPU port
Date: Tue, 10 Aug 2021 00:59:57 +0200	[thread overview]
Message-ID: <20210809225956.GF17207@cephalopod> (raw)
In-Reply-To: <20210809225753.GA17207@cephalopod>

On the CPU port, we can support both tagged and untagged VLANs at the
same time by doing any necessary untagging in software rather than
hardware.  To enable that, keep the CPU port's Remove Tag flag cleared
and set the dsa_switch::untag_bridge_pvid flag.

Fixes: e66f840c08a2 ("net: dsa: ksz: Add Microchip KSZ8795 DSA driver")
Signed-off-by: Ben Hutchings <ben.hutchings@mind.be>
---
 drivers/net/dsa/microchip/ksz8795.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/drivers/net/dsa/microchip/ksz8795.c b/drivers/net/dsa/microchip/ksz8795.c
index 7a3d0d137ed1..ddfe9cd6b7bd 100644
--- a/drivers/net/dsa/microchip/ksz8795.c
+++ b/drivers/net/dsa/microchip/ksz8795.c
@@ -1150,8 +1150,10 @@ static int ksz8_port_vlan_add(struct dsa_switch *ds, int port,
 	/* If a VLAN is added with untagged flag different from the
 	 * port's Remove Tag flag, we need to change the latter.
 	 * Ignore VID 0, which is always untagged.
+	 * Ignore CPU port, which will always be tagged.
 	 */
-	if (untagged != p->remove_tag && vlan->vid != 0) {
+	if (untagged != p->remove_tag && vlan->vid != 0 &&
+	    port != dev->cpu_port) {
 		unsigned int vid;
 
 		/* Reject attempts to add a VLAN that requires the
@@ -1767,6 +1769,11 @@ static int ksz8_switch_init(struct ksz_device *dev)
 	/* set the real number of ports */
 	dev->ds->num_ports = dev->port_cnt;
 
+	/* We rely on software untagging on the CPU port, so that we
+	 * can support both tagged and untagged VLANs
+	 */
+	dev->ds->untag_bridge_pvid = true;
+
 	return 0;
 }
 
-- 
2.20.1


  parent reply	other threads:[~2021-08-09 23:00 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-08-09 22:57 [PATCH net 0/7] ksz8795 VLAN fixes Ben Hutchings
2021-08-09 22:59 ` [PATCH net 1/7] net: dsa: microchip: Fix ksz_read64() Ben Hutchings
2021-08-09 22:59 ` [PATCH net 2/7] net: dsa: microchip: ksz8795: Fix PVID tag insertion Ben Hutchings
2021-08-09 22:59 ` [PATCH net 3/7] net: dsa: microchip: ksz8795: Reject unsupported VLAN configuration Ben Hutchings
2021-08-09 22:59 ` [PATCH net 4/7] net: dsa: microchip: ksz8795: Fix VLAN untagged flag change on deletion Ben Hutchings
2021-08-09 22:59 ` Ben Hutchings [this message]
2021-08-09 23:00 ` [PATCH net 6/7] net: dsa: microchip: ksz8795: Fix VLAN filtering Ben Hutchings
2021-08-09 23:00 ` [PATCH net 7/7] net: dsa: microchip: ksz8795: Don't use phy_port_cnt in VLAN table lookup Ben Hutchings
2021-08-10  0:03 ` [PATCH net 0/7] ksz8795 VLAN fixes Jakub Kicinski
2021-08-10  9:00 ` patchwork-bot+netdevbpf

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210809225956.GF17207@cephalopod \
    --to=ben.hutchings@mind.be \
    --cc=UNGLinuxDriver@microchip.com \
    --cc=netdev@vger.kernel.org \
    --cc=woojung.huh@microchip.com \
    --subject='Re: [PATCH net 5/7] net: dsa: microchip: ksz8795: Use software untagging on CPU port' \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).