diff options
Diffstat (limited to 'drivers/net/bonding/bonding.h')
-rw-r--r-- | drivers/net/bonding/bonding.h | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/net/bonding/bonding.h b/drivers/net/bonding/bonding.h index da809645c483..cecdea2a629f 100644 --- a/drivers/net/bonding/bonding.h +++ b/drivers/net/bonding/bonding.h | |||
@@ -131,6 +131,7 @@ struct bond_params { | |||
131 | char primary[IFNAMSIZ]; | 131 | char primary[IFNAMSIZ]; |
132 | int primary_reselect; | 132 | int primary_reselect; |
133 | __be32 arp_targets[BOND_MAX_ARP_TARGETS]; | 133 | __be32 arp_targets[BOND_MAX_ARP_TARGETS]; |
134 | int all_slaves_active; | ||
134 | }; | 135 | }; |
135 | 136 | ||
136 | struct bond_parm_tbl { | 137 | struct bond_parm_tbl { |
@@ -290,7 +291,8 @@ static inline void bond_set_slave_inactive_flags(struct slave *slave) | |||
290 | struct bonding *bond = netdev_priv(slave->dev->master); | 291 | struct bonding *bond = netdev_priv(slave->dev->master); |
291 | if (!bond_is_lb(bond)) | 292 | if (!bond_is_lb(bond)) |
292 | slave->state = BOND_STATE_BACKUP; | 293 | slave->state = BOND_STATE_BACKUP; |
293 | slave->dev->priv_flags |= IFF_SLAVE_INACTIVE; | 294 | if (!bond->params.all_slaves_active) |
295 | slave->dev->priv_flags |= IFF_SLAVE_INACTIVE; | ||
294 | if (slave_do_arp_validate(bond, slave)) | 296 | if (slave_do_arp_validate(bond, slave)) |
295 | slave->dev->priv_flags |= IFF_SLAVE_NEEDARP; | 297 | slave->dev->priv_flags |= IFF_SLAVE_NEEDARP; |
296 | } | 298 | } |