54 lines
1.6 KiB
Diff
54 lines
1.6 KiB
Diff
From: Jiri Pirko <jpirko@redhat.com>
|
|
Date: Thu, 8 Dec 2011 04:11:20 +0000
|
|
Subject: [11/23] team: use vlan_vids_[addr/del]_by_dev
|
|
|
|
commit 57459185a19b0246866479522b77cbb9732201d1 upstream.
|
|
|
|
So far when vlan id was added to team device befor port was added, this
|
|
vid was not added to port's vlan filter. Also after removal, vid stayed
|
|
in port device's vlan filter. Benefit of new vlan functions to handle
|
|
this work.
|
|
|
|
Signed-off-by: Jiri Pirko <jpirko@redhat.com>
|
|
Signed-off-by: David S. Miller <davem@davemloft.net>
|
|
---
|
|
drivers/net/team/team.c | 11 +++++++++++
|
|
1 file changed, 11 insertions(+)
|
|
|
|
diff --git a/drivers/net/team/team.c b/drivers/net/team/team.c
|
|
index 79c2d1b..ed2a862 100644
|
|
--- a/drivers/net/team/team.c
|
|
+++ b/drivers/net/team/team.c
|
|
@@ -588,6 +588,13 @@ static int team_port_add(struct team *team, struct net_device *port_dev)
|
|
goto err_dev_open;
|
|
}
|
|
|
|
+ err = vlan_vids_add_by_dev(port_dev, dev);
|
|
+ if (err) {
|
|
+ netdev_err(dev, "Failed to add vlan ids to device %s\n",
|
|
+ portname);
|
|
+ goto err_vids_add;
|
|
+ }
|
|
+
|
|
err = netdev_set_master(port_dev, dev);
|
|
if (err) {
|
|
netdev_err(dev, "Device %s failed to set master\n", portname);
|
|
@@ -615,6 +622,9 @@ err_handler_register:
|
|
netdev_set_master(port_dev, NULL);
|
|
|
|
err_set_master:
|
|
+ vlan_vids_del_by_dev(port_dev, dev);
|
|
+
|
|
+err_vids_add:
|
|
dev_close(port_dev);
|
|
|
|
err_dev_open:
|
|
@@ -648,6 +658,7 @@ static int team_port_del(struct team *team, struct net_device *port_dev)
|
|
team_adjust_ops(team);
|
|
netdev_rx_handler_unregister(port_dev);
|
|
netdev_set_master(port_dev, NULL);
|
|
+ vlan_vids_del_by_dev(port_dev, dev);
|
|
dev_close(port_dev);
|
|
team_port_leave(team, port);
|
|
team_port_set_orig_mac(port);
|