diff options
author | Jay Vosburgh <fubar@us.ibm.com> | 2007-10-15 19:44:27 -0400 |
---|---|---|
committer | Jeff Garzik <jeff@garzik.org> | 2007-10-16 21:10:27 -0400 |
commit | 1284cd3a2b740d0118458d2ea470a1e5bc19b187 (patch) | |
tree | 07a5259f3ddb531173771b40b46c1bb6580683bc /drivers/net/bonding/bond_main.c | |
parent | 369d742defed73fc6b38bf0929fb198d072102ab (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.c | 11 |
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 |