aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/bonding/bond_main.c
diff options
context:
space:
mode:
authorJay Vosburgh <fubar@us.ibm.com>2007-10-15 19:44:27 -0400
committerJeff Garzik <jeff@garzik.org>2007-10-16 21:10:27 -0400
commit1284cd3a2b740d0118458d2ea470a1e5bc19b187 (patch)
tree07a5259f3ddb531173771b40b46c1bb6580683bc /drivers/net/bonding/bond_main.c
parent369d742defed73fc6b38bf0929fb198d072102ab (diff)
bonding: two small fixes for IPoIB support
Two small fixes to IPoIB support for bonding: 1- copy header_ops from slave to bonding for IPoIB slaves 2- move release and destroy logic to UNREGISTER from GOING_DOWN notifier to avoid double release Set bonding to version 3.2.1. Signed-off-by: Moni Shoua <monis at voltaire.com> Signed-off-by: Jay Vosburgh <fubar@us.ibm.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
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 db80f243dd37..6f85cc31f8a2 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,
1263 struct bonding *bond = bond_dev->priv; 1263 struct bonding *bond = bond_dev->priv;
1264 1264
1265 bond_dev->neigh_setup = slave_dev->neigh_setup; 1265 bond_dev->neigh_setup = slave_dev->neigh_setup;
1266 bond_dev->header_ops = slave_dev->header_ops;
1266 1267
1267 bond_dev->type = slave_dev->type; 1268 bond_dev->type = slave_dev->type;
1268 bond_dev->hard_header_len = slave_dev->hard_header_len; 1269 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
3351 switch (event) { 3352 switch (event) {
3352 case NETDEV_UNREGISTER: 3353 case NETDEV_UNREGISTER:
3353 if (bond_dev) { 3354 if (bond_dev) {
3354 bond_release(bond_dev, slave_dev); 3355 if (bond->setup_by_slave)
3356 bond_release_and_destroy(bond_dev, slave_dev);
3357 else
3358 bond_release(bond_dev, slave_dev);
3355 } 3359 }
3356 break; 3360 break;
3357 case NETDEV_CHANGE: 3361 case NETDEV_CHANGE:
@@ -3366,11 +3370,6 @@ static int bond_slave_netdev_event(unsigned long event, struct net_device *slave
3366 * ... Or is it this? 3370 * ... Or is it this?
3367 */ 3371 */
3368 break; 3372 break;
3369 case NETDEV_GOING_DOWN:
3370 dprintk("slave %s is going down\n", slave_dev->name);
3371 if (bond->setup_by_slave)
3372 bond_release_and_destroy(bond_dev, slave_dev);
3373 break;
3374 case NETDEV_CHANGEMTU: 3373 case NETDEV_CHANGEMTU:
3375 /* 3374 /*
3376 * TODO: Should slaves be allowed to 3375 * TODO: Should slaves be allowed to