diff options
author | Veaceslav Falico <vfalico@redhat.com> | 2013-09-27 14:12:00 (GMT) |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2013-09-28 22:28:02 (GMT) |
commit | 19177e7d554eba7e73d5eadc2c742d602bbec5ae (patch) | |
tree | c32c824189cc1efa4a90ee771d65f0043f05b303 /drivers/net/bonding/bond_3ad.c | |
parent | 3e36bb75ce32d0c14a736ca48480fe964491c7fc (diff) | |
download | linux-19177e7d554eba7e73d5eadc2c742d602bbec5ae.tar.xz |
bonding: make __get_active_agg() use bond_for_each_slave()
Currently we're relying on suboptimal construct
for (; aggregator; aggregator = __get_next_agg(aggregator)) {
where aggregator is an argument of __get_active_agg() which is _always_ the
first slave's aggregator - judging by all the callers, comments in the
ad_agg_selection_logic() and by logic.
Convert it to use the standard bond_for_each_slave().
CC: Jay Vosburgh <fubar@us.ibm.com>
CC: Andy Gospodarek <andy@greyhouse.net>
Signed-off-by: Veaceslav Falico <vfalico@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/bonding/bond_3ad.c')
-rw-r--r-- | drivers/net/bonding/bond_3ad.c | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/drivers/net/bonding/bond_3ad.c b/drivers/net/bonding/bond_3ad.c index 8b64ed47..1109d82 100644 --- a/drivers/net/bonding/bond_3ad.c +++ b/drivers/net/bonding/bond_3ad.c @@ -720,16 +720,15 @@ static u32 __get_agg_bandwidth(struct aggregator *aggregator) */ static struct aggregator *__get_active_agg(struct aggregator *aggregator) { - struct aggregator *retval = NULL; + struct bonding *bond = aggregator->slave->bond; + struct list_head *iter; + struct slave *slave; - for (; aggregator; aggregator = __get_next_agg(aggregator)) { - if (aggregator->is_active) { - retval = aggregator; - break; - } - } + bond_for_each_slave(bond, slave, iter) + if (SLAVE_AD_INFO(slave).aggregator.is_active) + return &(SLAVE_AD_INFO(slave).aggregator); - return retval; + return NULL; } /** |