diff options
author | Eric Dumazet <eric.dumazet@gmail.com> | 2009-10-27 03:06:36 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-10-28 05:22:07 -0400 |
commit | 23289a37e2b127dfc4de1313fba15bb4c9f0cd5b (patch) | |
tree | 209edb2cb43dedb97477e1297873ada4759a1066 /drivers | |
parent | 9b5e383c11b08784eb0087617f880077982ef769 (diff) |
net: add a list_head parameter to dellink() method
Adding a list_head parameter to rtnl_link_ops->dellink() methods
allow us to queue devices on a list, in order to dismantle
them all at once.
Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/macvlan.c | 6 | ||||
-rw-r--r-- | drivers/net/veth.c | 2 |
2 files changed, 4 insertions, 4 deletions
diff --git a/drivers/net/macvlan.c b/drivers/net/macvlan.c index 3aabfd9dd212..20b7707f38ef 100644 --- a/drivers/net/macvlan.c +++ b/drivers/net/macvlan.c | |||
@@ -555,13 +555,13 @@ static int macvlan_newlink(struct net_device *dev, | |||
555 | return 0; | 555 | return 0; |
556 | } | 556 | } |
557 | 557 | ||
558 | static void macvlan_dellink(struct net_device *dev) | 558 | static void macvlan_dellink(struct net_device *dev, struct list_head *head) |
559 | { | 559 | { |
560 | struct macvlan_dev *vlan = netdev_priv(dev); | 560 | struct macvlan_dev *vlan = netdev_priv(dev); |
561 | struct macvlan_port *port = vlan->port; | 561 | struct macvlan_port *port = vlan->port; |
562 | 562 | ||
563 | list_del(&vlan->list); | 563 | list_del(&vlan->list); |
564 | unregister_netdevice(dev); | 564 | unregister_netdevice_queue(dev, head); |
565 | 565 | ||
566 | if (list_empty(&port->vlans)) | 566 | if (list_empty(&port->vlans)) |
567 | macvlan_port_destroy(port->dev); | 567 | macvlan_port_destroy(port->dev); |
@@ -601,7 +601,7 @@ static int macvlan_device_event(struct notifier_block *unused, | |||
601 | break; | 601 | break; |
602 | case NETDEV_UNREGISTER: | 602 | case NETDEV_UNREGISTER: |
603 | list_for_each_entry_safe(vlan, next, &port->vlans, list) | 603 | list_for_each_entry_safe(vlan, next, &port->vlans, list) |
604 | macvlan_dellink(vlan->dev); | 604 | macvlan_dellink(vlan->dev, NULL); |
605 | break; | 605 | break; |
606 | } | 606 | } |
607 | return NOTIFY_DONE; | 607 | return NOTIFY_DONE; |
diff --git a/drivers/net/veth.c b/drivers/net/veth.c index ade5b344f75d..ffb502daa916 100644 --- a/drivers/net/veth.c +++ b/drivers/net/veth.c | |||
@@ -442,7 +442,7 @@ err_register_peer: | |||
442 | return err; | 442 | return err; |
443 | } | 443 | } |
444 | 444 | ||
445 | static void veth_dellink(struct net_device *dev) | 445 | static void veth_dellink(struct net_device *dev, struct list_head *head) |
446 | { | 446 | { |
447 | struct veth_priv *priv; | 447 | struct veth_priv *priv; |
448 | struct net_device *peer; | 448 | struct net_device *peer; |