summaryrefslogtreecommitdiffstats
path: root/drivers/net/bonding/bond_main.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@woody.linux-foundation.org>2007-10-16 19:06:48 -0700
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-10-16 19:06:48 -0700
commitebb3e820b83e426ee331bae6d8fb0e54f472a25d (patch)
tree937725ea5c2af7982d2ee362dee8c78ece37ba9d /drivers/net/bonding/bond_main.c
parente5712a6a98862c2bd58a3c1ffc88062da9e2f02c (diff)
parent1a1769f32349a188db48cf81fe306b6f841fc246 (diff)
Merge branch 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6
* 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6: WOL bugfix for 3c59x.c skge 1.12 skge: add a debug interface skge: eeprom support skge: internal stats skge: XM PHY handling fixes skge: changing MTU while running causes problems skge: fix ram buffer size calculation gianfar: Fix compile regression caused by 09f75cd7 net: Fix new EMAC driver for NAPI changes bonding: two small fixes for IPoIB support e1000e: don't poke PHY registers to retreive link status e1000e: fix error checks e1000e: Fix debug printk macro tokenring/3c359.c: fixed array index problem [netdrvr] forcedeth: remove in-driver copy of net_device_stats [netdrvr] forcedeth: improved probe info; dev_printk() cleanups forcedeth: fix NAPI rx poll function
Diffstat (limited to 'drivers/net/bonding/bond_main.c')
-rw-r--r--drivers/net/bonding/bond_main.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
index db80f243dd3..6f85cc31f8a 100644
--- a/drivers/net/bonding/bond_main.c
+++ b/drivers/net/bonding/bond_main.c
@@ -1263,6 +1263,7 @@ static void bond_setup_by_slave(struct net_device *bond_dev,
struct bonding *bond = bond_dev->priv;
bond_dev->neigh_setup = slave_dev->neigh_setup;
+ bond_dev->header_ops = slave_dev->header_ops;
bond_dev->type = slave_dev->type;
bond_dev->hard_header_len = slave_dev->hard_header_len;
@@ -3351,7 +3352,10 @@ static int bond_slave_netdev_event(unsigned long event, struct net_device *slave
switch (event) {
case NETDEV_UNREGISTER:
if (bond_dev) {
- bond_release(bond_dev, slave_dev);
+ if (bond->setup_by_slave)
+ bond_release_and_destroy(bond_dev, slave_dev);
+ else
+ bond_release(bond_dev, slave_dev);
}
break;
case NETDEV_CHANGE:
@@ -3366,11 +3370,6 @@ static int bond_slave_netdev_event(unsigned long event, struct net_device *slave
* ... Or is it this?
*/
break;
- case NETDEV_GOING_DOWN:
- dprintk("slave %s is going down\n", slave_dev->name);
- if (bond->setup_by_slave)
- bond_release_and_destroy(bond_dev, slave_dev);
- break;
case NETDEV_CHANGEMTU:
/*
* TODO: Should slaves be allowed to