diff options
author | Andrew Lunn <andrew@lunn.ch> | 2017-11-09 22:29:53 +0100 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2017-11-11 19:33:11 +0900 |
commit | cd88646994bc0b537e0e7c89c53e674b58ba22b0 (patch) | |
tree | a01e5f51c78c3b40cad2e0f7a89182e40363b332 /drivers/net/dsa/mv88e6xxx | |
parent | 13edbdb6ed8b829ab3198a8c7b978c37184317b5 (diff) | |
download | op-kernel-dev-cd88646994bc0b537e0e7c89c53e674b58ba22b0.zip op-kernel-dev-cd88646994bc0b537e0e7c89c53e674b58ba22b0.tar.gz |
net: dsa: mv88e6xxx: Fixed port netdev check for VLANs
Having the same VLAN on multiple bridges is currently unsupported as
an offload. mv88e6xxx_port_check_hw_vlan() is used to ensure that a
VLAN is not on multiple bridges when adding a VLAN range to a port. It
loops the ports and checks to see if there are ports in a different
bridge with the same VLAN.
While walking all switch ports, the code was checking if the new port
has a netdev slave attached to it. If not, skip checking the port
being walked. This seems like a typ0. If the new port does not have a
slave, how has a VLAN been added to it in the first place, requiring
this check be performed at all? More likely, we should be checking if
the port being walked has a slave. Without the port having a slave, it
cannot have a VLAN on it, so there is no need to check further for
that particular port.
Signed-off-by: Andrew Lunn <andrew@lunn.ch>
Reviewed-by: Vivien Didelot <vivien.didelot@savoirfairelinux.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/dsa/mv88e6xxx')
-rw-r--r-- | drivers/net/dsa/mv88e6xxx/chip.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/net/dsa/mv88e6xxx/chip.c b/drivers/net/dsa/mv88e6xxx/chip.c index 09a66d4..420621c 100644 --- a/drivers/net/dsa/mv88e6xxx/chip.c +++ b/drivers/net/dsa/mv88e6xxx/chip.c @@ -1137,7 +1137,7 @@ static int mv88e6xxx_port_check_hw_vlan(struct dsa_switch *ds, int port, if (dsa_is_dsa_port(ds, i) || dsa_is_cpu_port(ds, i)) continue; - if (!ds->ports[port].slave) + if (!ds->ports[i].slave) continue; if (vlan.member[i] == |