bridge: add vlan filtering change notification
Notifying hardware about bridge vlan-aware changes. Signed-off-by: Elad Raz <eladr@mellanox.com> Signed-off-by: Jiri Pirko <jiri@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
81435c33e0
commit
6b72a77020
|
@ -626,9 +626,21 @@ void br_recalculate_fwd_mask(struct net_bridge *br)
|
||||||
|
|
||||||
int __br_vlan_filter_toggle(struct net_bridge *br, unsigned long val)
|
int __br_vlan_filter_toggle(struct net_bridge *br, unsigned long val)
|
||||||
{
|
{
|
||||||
|
struct switchdev_attr attr = {
|
||||||
|
.orig_dev = br->dev,
|
||||||
|
.id = SWITCHDEV_ATTR_ID_BRIDGE_VLAN_FILTERING,
|
||||||
|
.flags = SWITCHDEV_F_SKIP_EOPNOTSUPP,
|
||||||
|
.u.vlan_filtering = val,
|
||||||
|
};
|
||||||
|
int err;
|
||||||
|
|
||||||
if (br->vlan_enabled == val)
|
if (br->vlan_enabled == val)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
err = switchdev_port_attr_set(br->dev, &attr);
|
||||||
|
if (err && err != -EOPNOTSUPP)
|
||||||
|
return err;
|
||||||
|
|
||||||
br->vlan_enabled = val;
|
br->vlan_enabled = val;
|
||||||
br_manage_promisc(br);
|
br_manage_promisc(br);
|
||||||
recalculate_group_addr(br);
|
recalculate_group_addr(br);
|
||||||
|
@ -639,13 +651,15 @@ int __br_vlan_filter_toggle(struct net_bridge *br, unsigned long val)
|
||||||
|
|
||||||
int br_vlan_filter_toggle(struct net_bridge *br, unsigned long val)
|
int br_vlan_filter_toggle(struct net_bridge *br, unsigned long val)
|
||||||
{
|
{
|
||||||
|
int err;
|
||||||
|
|
||||||
if (!rtnl_trylock())
|
if (!rtnl_trylock())
|
||||||
return restart_syscall();
|
return restart_syscall();
|
||||||
|
|
||||||
__br_vlan_filter_toggle(br, val);
|
err = __br_vlan_filter_toggle(br, val);
|
||||||
rtnl_unlock();
|
rtnl_unlock();
|
||||||
|
|
||||||
return 0;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
int __br_vlan_set_proto(struct net_bridge *br, __be16 proto)
|
int __br_vlan_set_proto(struct net_bridge *br, __be16 proto)
|
||||||
|
|
Loading…
Reference in a new issue