From 70886f3565cf0d97398a54bb25f9e01567ad78ab Mon Sep 17 00:00:00 2001 From: Moni Shoua Date: Wed, 15 Jul 2009 04:56:31 +0000 Subject: [PATCH] --- yaml --- r: 155646 b: refs/heads/master c: e36b9d16c6a6d0f59803b3ef04ff3c22c3844c10 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/net/bonding/bond_main.c | 12 ++++++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 1cdb2ea100cd..7951851695fb 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 37b76c697f4ac082e9923dfa8e8aecc8bc54a8e1 +refs/heads/master: e36b9d16c6a6d0f59803b3ef04ff3c22c3844c10 diff --git a/trunk/drivers/net/bonding/bond_main.c b/trunk/drivers/net/bonding/bond_main.c index d927f71af8a3..aa1be1feceed 100644 --- a/trunk/drivers/net/bonding/bond_main.c +++ b/trunk/drivers/net/bonding/bond_main.c @@ -1459,8 +1459,16 @@ int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev) * ether type (eg ARPHRD_ETHER and ARPHRD_INFINIBAND) share the same bond */ if (bond->slave_cnt == 0) { - if (slave_dev->type != ARPHRD_ETHER) - bond_setup_by_slave(bond_dev, slave_dev); + if (bond_dev->type != slave_dev->type) { + dev_close(bond_dev); + pr_debug("%s: change device type from %d to %d\n", + bond_dev->name, bond_dev->type, slave_dev->type); + if (slave_dev->type != ARPHRD_ETHER) + bond_setup_by_slave(bond_dev, slave_dev); + else + ether_setup(bond_dev); + dev_open(bond_dev); + } } else if (bond_dev->type != slave_dev->type) { pr_err(DRV_NAME ": %s ether type (%d) is different " "from other slaves (%d), can not enslave it.\n",