[openwrt/openwrt] ramips: properly map pvid for vlans with remapped vid on mt7530/762x switches

LEDE Commits lede-commits at lists.infradead.org
Wed Feb 14 07:43:39 PST 2018


jow pushed a commit to openwrt/openwrt.git, branch master:
https://git.lede-project.org/341b1427fc247fd4c53f390f2f17258dcf052a50

commit 341b1427fc247fd4c53f390f2f17258dcf052a50
Author: Jo-Philipp Wich <jo at mein.io>
AuthorDate: Tue Feb 13 15:37:49 2018 +0100

    ramips: properly map pvid for vlans with remapped vid on mt7530/762x switches
    
    Currently, untagged port primary vlan IDs are set to the VLAN table index,
    and not the actual VLAN ID, breaking configurations with IDs deviating from
    the VLAN index.
    
    Fix the issue by resolving the per-port pvid property to the target VLAN ID
    value before committing to the hardware.
    
    Fixes FS#991, FS#1147, FS#1341
    
    Signed-off-by: Jo-Philipp Wich <jo at mein.io>
---
 target/linux/ramips/files-4.9/drivers/net/ethernet/mtk/mt7530.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/target/linux/ramips/files-4.9/drivers/net/ethernet/mtk/mt7530.c b/target/linux/ramips/files-4.9/drivers/net/ethernet/mtk/mt7530.c
index e61f9fd..21f8926 100644
--- a/target/linux/ramips/files-4.9/drivers/net/ethernet/mtk/mt7530.c
+++ b/target/linux/ramips/files-4.9/drivers/net/ethernet/mtk/mt7530.c
@@ -616,10 +616,16 @@ mt7530_apply_config(struct switch_dev *dev)
 
 	/* Port Default PVID */
 	for (i = 0; i < MT7530_NUM_PORTS; i++) {
+		int vlan = priv->port_entries[i].pvid;
+		u16 pvid = 0;
 		u32 val;
+
+		if (vlan < MT7530_NUM_VLANS && priv->vlan_entries[vlan].member)
+			pvid = priv->vlan_entries[vlan].vid;
+
 		val = mt7530_r32(priv, REG_ESW_PORT_PPBV1(i));
 		val &= ~0xfff;
-		val |= priv->port_entries[i].pvid;
+		val |= pvid;
 		mt7530_w32(priv, REG_ESW_PORT_PPBV1(i), val);
 	}
 



More information about the lede-commits mailing list