|
@@ -82,19 +82,12 @@ static bool __vlan_add_flags(struct net_bridge_vlan *v, u16 flags)
|
|
|
static int __vlan_vid_add(struct net_device *dev, struct net_bridge *br,
|
|
|
u16 vid, u16 flags)
|
|
|
{
|
|
|
- struct switchdev_obj_port_vlan v = {
|
|
|
- .obj.orig_dev = dev,
|
|
|
- .obj.id = SWITCHDEV_OBJ_ID_PORT_VLAN,
|
|
|
- .flags = flags,
|
|
|
- .vid_begin = vid,
|
|
|
- .vid_end = vid,
|
|
|
- };
|
|
|
int err;
|
|
|
|
|
|
/* Try switchdev op first. In case it is not supported, fallback to
|
|
|
* 8021q add.
|
|
|
*/
|
|
|
- err = switchdev_port_obj_add(dev, &v.obj);
|
|
|
+ err = br_switchdev_port_vlan_add(dev, vid, flags);
|
|
|
if (err == -EOPNOTSUPP)
|
|
|
return vlan_vid_add(dev, br->vlan_proto, vid);
|
|
|
return err;
|
|
@@ -130,18 +123,12 @@ static void __vlan_del_list(struct net_bridge_vlan *v)
|
|
|
static int __vlan_vid_del(struct net_device *dev, struct net_bridge *br,
|
|
|
u16 vid)
|
|
|
{
|
|
|
- struct switchdev_obj_port_vlan v = {
|
|
|
- .obj.orig_dev = dev,
|
|
|
- .obj.id = SWITCHDEV_OBJ_ID_PORT_VLAN,
|
|
|
- .vid_begin = vid,
|
|
|
- .vid_end = vid,
|
|
|
- };
|
|
|
int err;
|
|
|
|
|
|
/* Try switchdev op first. In case it is not supported, fallback to
|
|
|
* 8021q del.
|
|
|
*/
|
|
|
- err = switchdev_port_obj_del(dev, &v.obj);
|
|
|
+ err = br_switchdev_port_vlan_del(dev, vid);
|
|
|
if (err == -EOPNOTSUPP) {
|
|
|
vlan_vid_del(dev, br->vlan_proto, vid);
|
|
|
return 0;
|
|
@@ -1053,13 +1040,6 @@ err_vlan_enabled:
|
|
|
int nbp_vlan_add(struct net_bridge_port *port, u16 vid, u16 flags,
|
|
|
bool *changed)
|
|
|
{
|
|
|
- struct switchdev_obj_port_vlan v = {
|
|
|
- .obj.orig_dev = port->dev,
|
|
|
- .obj.id = SWITCHDEV_OBJ_ID_PORT_VLAN,
|
|
|
- .flags = flags,
|
|
|
- .vid_begin = vid,
|
|
|
- .vid_end = vid,
|
|
|
- };
|
|
|
struct net_bridge_vlan *vlan;
|
|
|
int ret;
|
|
|
|
|
@@ -1069,7 +1049,7 @@ int nbp_vlan_add(struct net_bridge_port *port, u16 vid, u16 flags,
|
|
|
vlan = br_vlan_find(nbp_vlan_group(port), vid);
|
|
|
if (vlan) {
|
|
|
/* Pass the flags to the hardware bridge */
|
|
|
- ret = switchdev_port_obj_add(port->dev, &v.obj);
|
|
|
+ ret = br_switchdev_port_vlan_add(port->dev, vid, flags);
|
|
|
if (ret && ret != -EOPNOTSUPP)
|
|
|
return ret;
|
|
|
*changed = __vlan_add_flags(vlan, flags);
|