Merge remote-tracking branches 'spi/fix/omap2' and 'spi/fix/rockchip' into spi-linus
[cascardo/linux.git] / net / bridge / br_vlan.c
index 85e43af..9309bb4 100644 (file)
@@ -955,6 +955,13 @@ err_rhtbl:
  */
 int nbp_vlan_add(struct net_bridge_port *port, u16 vid, u16 flags)
 {
+       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;
 
@@ -962,6 +969,10 @@ 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);
+               if (ret && ret != -EOPNOTSUPP)
+                       return ret;
                __vlan_add_flags(vlan, flags);
                return 0;
        }