Skip to content

Commit

Permalink
team: use vlan_vids_[addr/del]_by_dev
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Jiri Pirko authored and David S. Miller committed Dec 9, 2011
1 parent 348a144 commit 5745918
Showing 1 changed file with 11 additions and 0 deletions.
11 changes: 11 additions & 0 deletions drivers/net/team/team.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -615,6 +622,9 @@ static int team_port_add(struct team *team, struct net_device *port_dev)
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:
Expand Down Expand Up @@ -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);
Expand Down

0 comments on commit 5745918

Please sign in to comment.