mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-07 03:15:31 +09:00
net: sparx5: Fix add vlan when invalid operation
[ Upstream commitb3a34dc362] Check if operation is valid before changing any settings in hardware. Otherwise it results in changes being made despite it not being a valid operation. Fixes:78eab33bb6("net: sparx5: add vlan support") Signed-off-by: Casper Andersson <casper.casan@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
50948cea50
commit
f8ce435f2c
@@ -58,16 +58,6 @@ int sparx5_vlan_vid_add(struct sparx5_port *port, u16 vid, bool pvid,
|
||||
struct sparx5 *sparx5 = port->sparx5;
|
||||
int ret;
|
||||
|
||||
/* Make the port a member of the VLAN */
|
||||
set_bit(port->portno, sparx5->vlan_mask[vid]);
|
||||
ret = sparx5_vlant_set_mask(sparx5, vid);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
/* Default ingress vlan classification */
|
||||
if (pvid)
|
||||
port->pvid = vid;
|
||||
|
||||
/* Untagged egress vlan classification */
|
||||
if (untagged && port->vid != vid) {
|
||||
if (port->vid) {
|
||||
@@ -79,6 +69,16 @@ int sparx5_vlan_vid_add(struct sparx5_port *port, u16 vid, bool pvid,
|
||||
port->vid = vid;
|
||||
}
|
||||
|
||||
/* Make the port a member of the VLAN */
|
||||
set_bit(port->portno, sparx5->vlan_mask[vid]);
|
||||
ret = sparx5_vlant_set_mask(sparx5, vid);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
/* Default ingress vlan classification */
|
||||
if (pvid)
|
||||
port->pvid = vid;
|
||||
|
||||
sparx5_vlan_port_apply(sparx5, port);
|
||||
|
||||
return 0;
|
||||
|
||||
Reference in New Issue
Block a user