linux/drivers/net
Vladimir Oltean b38e659de9 net: dsa: sja1105: update existing VLANs from the bridge VLAN list
When running this sequence of operations:

ip link add br0 type bridge vlan_filtering 1
ip link set swp4 master br0
bridge vlan add dev swp4 vid 1

We observe the traffic sent on swp4 is still untagged, even though the
bridge has overwritten the existing VLAN entry:

port    vlan ids
swp4     1 PVID

br0      1 PVID Egress Untagged

This happens because we didn't consider that the 'bridge vlan add'
command just overwrites VLANs like it's nothing. We treat the 'vid 1
pvid untagged' and the 'vid 1' as two separate VLANs, and the first
still has precedence when calling sja1105_build_vlan_table. Obviously
there is a disagreement regarding semantics, and we end up doing
something unexpected from the PoV of the bridge.

Let's actually consider an "existing VLAN" to be one which is on the
same port, and has the same VLAN ID, as one we already have, and update
it if it has different flags than we do.

The first blamed commit is the one introducing the bug, the second one
is the latest on top of which the bugfix still applies.

Fixes: ec5ae61076 ("net: dsa: sja1105: save/restore VLANs using a delta commit method")
Fixes: 5899ee367a ("net: dsa: tag_8021q: add a context structure")
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2021-05-24 13:20:24 -07:00
..
appletalk
arcnet
bonding bonding: init notify_work earlier to avoid uninitialized use 2021-05-17 15:24:20 -07:00
caif
can can: m_can: m_can_tx_work_queue(): fix tx_skb race condition 2021-05-06 09:24:07 +02:00
dsa net: dsa: sja1105: update existing VLANs from the bridge VLAN list 2021-05-24 13:20:24 -07:00
ethernet net: macb: ensure the device is available before accessing GEMGXL control registers 2021-05-23 16:15:11 -07:00
fddi fddi/skfp: fix typo 2021-04-27 14:07:27 -07:00
fjes
hamradio
hippi
hyperv hv_netvsc: Make netvsc/VF binding check both MAC and serial number 2021-04-25 18:19:23 -07:00
ieee802154
ipa net: ipa: memory region array is variable size 2021-05-11 16:22:37 -07:00
ipvlan
mdio net: mdio: octeon: Fix some double free issues 2021-05-13 15:43:52 -07:00
mhi
netdevsim netdevsim: Only use sampling truncation length when valid 2021-04-22 13:23:56 -07:00
pcs
phy net: mdiobus: get rid of a BUG_ON() 2021-05-17 15:50:58 -07:00
plip
ppp Networking changes for 5.13. 2021-04-29 11:57:23 -07:00
slip
team
usb net: hso: fix control-request directions 2021-05-24 13:16:58 -07:00
vmxnet3
wan Revert "drivers/net/wan/hdlc_fr: Fix a double free in pvc_xmit" 2021-05-03 13:37:58 -07:00
wireguard
wireless ath11k: Drop multicast fragments 2021-05-11 20:16:30 +02:00
wwan net: wwan: core: Return poll error in case of port removal 2021-04-22 13:26:02 -07:00
xen-netback
bareudp.c
dummy.c
eql.c
geneve.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2021-04-26 12:00:00 -07:00
gtp.c
ifb.c
Kconfig
LICENSE.SRC
loopback.c
macsec.c
macvlan.c macvlan: Use 'hash' iterators to simplify code 2021-04-27 14:03:11 -07:00
macvtap.c
Makefile
mdio.c
mii.c
net_failover.c
netconsole.c
nlmon.c
ntb_netdev.c
rionet.c
sb1000.c
Space.c
sungem_phy.c
tap.c
thunderbolt.c
tun.c net: tun: Remove redundant assignment to ret 2021-04-28 13:58:58 -07:00
veth.c
virtio_net.c virtio,vhost,vdpa: features, fixes 2021-05-05 13:31:39 -07:00
vrf.c
vsockmon.c
vxlan.c
xen-netfront.c