diff options
author | Jo-Philipp Wich <jo@mein.io> | 2018-02-13 15:58:48 +0100 |
---|---|---|
committer | Jo-Philipp Wich <jo@mein.io> | 2018-02-14 16:43:30 +0100 |
commit | dc7a1e855513d415ac0837b34400b98052c2090c (patch) | |
tree | c3bcd407f434afd7241a76481d73b5bc8948a4f9 /target/linux/ramips/files-4.9/drivers/net/ethernet/mtk/mt7530.c | |
parent | 341b1427fc247fd4c53f390f2f17258dcf052a50 (diff) | |
download | upstream-dc7a1e855513d415ac0837b34400b98052c2090c.tar.gz upstream-dc7a1e855513d415ac0837b34400b98052c2090c.tar.bz2 upstream-dc7a1e855513d415ac0837b34400b98052c2090c.zip |
ramips: fix reporting effective VLAN ID on MT7621 switches
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>
Diffstat (limited to 'target/linux/ramips/files-4.9/drivers/net/ethernet/mtk/mt7530.c')
-rw-r--r-- | target/linux/ramips/files-4.9/drivers/net/ethernet/mtk/mt7530.c | 23 |
1 files changed, 21 insertions, 2 deletions
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 21f892655a..5216cb5c66 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 @@ -479,6 +479,14 @@ mt7530_set_vid(struct switch_dev *dev, const struct switch_attr *attr, } 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) { @@ -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, @@ -866,8 +885,8 @@ static const struct switch_dev_ops mt7621_ops = { .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, |