Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 404cdbf0 authored by Elad Raz's avatar Elad Raz Committed by David S. Miller
Browse files

bridge: add vlan filtering change for new bridged device



Notifying hardware about newly bridged port vlan-aware changes.

Signed-off-by: default avatarElad Raz <eladr@mellanox.com>
Signed-off-by: default avatarJiri Pirko <jiri@mellanox.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 6b72a770
Loading
Loading
Loading
Loading
+11 −0
Original line number Original line Diff line number Diff line
@@ -907,6 +907,12 @@ int br_vlan_init(struct net_bridge *br)


int nbp_vlan_init(struct net_bridge_port *p)
int nbp_vlan_init(struct net_bridge_port *p)
{
{
	struct switchdev_attr attr = {
		.orig_dev = p->br->dev,
		.id = SWITCHDEV_ATTR_ID_BRIDGE_VLAN_FILTERING,
		.flags = SWITCHDEV_F_SKIP_EOPNOTSUPP,
		.u.vlan_filtering = p->br->vlan_enabled,
	};
	struct net_bridge_vlan_group *vg;
	struct net_bridge_vlan_group *vg;
	int ret = -ENOMEM;
	int ret = -ENOMEM;


@@ -914,6 +920,10 @@ int nbp_vlan_init(struct net_bridge_port *p)
	if (!vg)
	if (!vg)
		goto out;
		goto out;


	ret = switchdev_port_attr_set(p->dev, &attr);
	if (ret && ret != -EOPNOTSUPP)
		goto err_vlan_enabled;

	ret = rhashtable_init(&vg->vlan_hash, &br_vlan_rht_params);
	ret = rhashtable_init(&vg->vlan_hash, &br_vlan_rht_params);
	if (ret)
	if (ret)
		goto err_rhtbl;
		goto err_rhtbl;
@@ -933,6 +943,7 @@ int nbp_vlan_init(struct net_bridge_port *p)
	RCU_INIT_POINTER(p->vlgrp, NULL);
	RCU_INIT_POINTER(p->vlgrp, NULL);
	synchronize_rcu();
	synchronize_rcu();
	rhashtable_destroy(&vg->vlan_hash);
	rhashtable_destroy(&vg->vlan_hash);
err_vlan_enabled:
err_rhtbl:
err_rhtbl:
	kfree(vg);
	kfree(vg);