ramips: fix reporting effective VLAN ID on MT7621 switches
authorJo-Philipp Wich <jo@mein.io>
Tue, 13 Feb 2018 14:58:48 +0000 (15:58 +0100)
committerJo-Philipp Wich <jo@mein.io>
Wed, 14 Feb 2018 15:43:30 +0000 (16:43 +0100)
On MT7621, the REG_ESW_VLAN_VTIM reads are undefined, causing swconfig
to always report `vid: 0` in swconfig show output.

Since a 4K VLAN table is used on this platform, the VLAN ID always
correponds to the actual VLAN table index so provide a specific MT7621
implementation of the get_vid callback which returns the table index
as VLAN ID.

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
target/linux/ramips/files-4.9/drivers/net/ethernet/mtk/mt7530.c

index 21f892655a5a3d8a8fbf61623657e44654b9f4b0..5216cb5c6618d018c4075791037cf91bb0398795 100644 (file)
@@ -478,6 +478,14 @@ mt7530_set_vid(struct switch_dev *dev, const struct switch_attr *attr,
        return 0;
 }
 
        return 0;
 }
 
+static int
+mt7621_get_vid(struct switch_dev *dev, const struct switch_attr *attr,
+               struct switch_val *val)
+{
+       val->value.i = val->port_vlan;
+       return 0;
+}
+
 static int
 mt7530_get_vid(struct switch_dev *dev, const struct switch_attr *attr,
                struct switch_val *val)
 static int
 mt7530_get_vid(struct switch_dev *dev, const struct switch_attr *attr,
                struct switch_val *val)
@@ -835,6 +843,17 @@ static const struct switch_attr mt7621_port[] = {
        },
 };
 
        },
 };
 
+static const struct switch_attr mt7621_vlan[] = {
+       {
+               .type = SWITCH_TYPE_INT,
+               .name = "vid",
+               .description = "VLAN ID (0-4094)",
+               .set = mt7530_set_vid,
+               .get = mt7621_get_vid,
+               .max = 4094,
+       },
+};
+
 static const struct switch_attr mt7530_port[] = {
        {
                .type = SWITCH_TYPE_STRING,
 static const struct switch_attr mt7530_port[] = {
        {
                .type = SWITCH_TYPE_STRING,
@@ -866,8 +885,8 @@ static const struct switch_dev_ops mt7621_ops = {
                .n_attr = ARRAY_SIZE(mt7621_port),
        },
        .attr_vlan = {
                .n_attr = ARRAY_SIZE(mt7621_port),
        },
        .attr_vlan = {
-               .attr = mt7530_vlan,
-               .n_attr = ARRAY_SIZE(mt7530_vlan),
+               .attr = mt7621_vlan,
+               .n_attr = ARRAY_SIZE(mt7621_vlan),
        },
        .get_vlan_ports = mt7530_get_vlan_ports,
        .set_vlan_ports = mt7530_set_vlan_ports,
        },
        .get_vlan_ports = mt7530_get_vlan_ports,
        .set_vlan_ports = mt7530_set_vlan_ports,