OSDN Git Service

net: bridge: switchdev: differentiate new VLANs from changed ones
authorVladimir Oltean <vladimir.oltean@nxp.com>
Tue, 15 Feb 2022 17:02:12 +0000 (19:02 +0200)
committerDavid S. Miller <davem@davemloft.net>
Wed, 16 Feb 2022 11:21:04 +0000 (11:21 +0000)
commit8d23a54f5beea59b560855fb571e5d73d783e0b4
tree146a1590d46062778c5dd7d2d4acc78916afd2bb
parent27c5f74c7ba7b782f9694589ae733ca2ca8f76cc
net: bridge: switchdev: differentiate new VLANs from changed ones

br_switchdev_port_vlan_add() currently emits a SWITCHDEV_PORT_OBJ_ADD
event with a SWITCHDEV_OBJ_ID_PORT_VLAN for 2 distinct cases:

- a struct net_bridge_vlan got created
- an existing struct net_bridge_vlan was modified

This makes it impossible for switchdev drivers to properly balance
PORT_OBJ_ADD with PORT_OBJ_DEL events, so if we want to allow that to
happen, we must provide a way for drivers to distinguish between a
VLAN with changed flags and a new one.

Annotate struct switchdev_obj_port_vlan with a "bool changed" that
distinguishes the 2 cases above.

Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/switchdev.h
net/bridge/br_private.h
net/bridge/br_switchdev.c
net/bridge/br_vlan.c