bonding: make ad_agg_selection_logic() use bond_for_each_slave()
Convert all instances of for (agg = __get_first_agg(); agg; agg = __get_next_port) to the standard bond_for_each_slave(). Also, remove the useless checks before calling bond_3ad_set_carrier() - if we have something NULL - it would fire long ago, in __get_first/next_port(), per example. 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>
This commit is contained in:
parent
19177e7d55
commit
bef1fcce41
|
@ -1484,19 +1484,23 @@ static int agg_device_up(const struct aggregator *agg)
|
||||||
static void ad_agg_selection_logic(struct aggregator *agg)
|
static void ad_agg_selection_logic(struct aggregator *agg)
|
||||||
{
|
{
|
||||||
struct aggregator *best, *active, *origin;
|
struct aggregator *best, *active, *origin;
|
||||||
|
struct bonding *bond = agg->slave->bond;
|
||||||
|
struct list_head *iter;
|
||||||
|
struct slave *slave;
|
||||||
struct port *port;
|
struct port *port;
|
||||||
|
|
||||||
origin = agg;
|
origin = agg;
|
||||||
active = __get_active_agg(agg);
|
active = __get_active_agg(agg);
|
||||||
best = (active && agg_device_up(active)) ? active : NULL;
|
best = (active && agg_device_up(active)) ? active : NULL;
|
||||||
|
|
||||||
do {
|
bond_for_each_slave(bond, slave, iter) {
|
||||||
|
agg = &(SLAVE_AD_INFO(slave).aggregator);
|
||||||
|
|
||||||
agg->is_active = 0;
|
agg->is_active = 0;
|
||||||
|
|
||||||
if (agg->num_of_ports && agg_device_up(agg))
|
if (agg->num_of_ports && agg_device_up(agg))
|
||||||
best = ad_agg_selection_test(best, agg);
|
best = ad_agg_selection_test(best, agg);
|
||||||
|
}
|
||||||
} while ((agg = __get_next_agg(agg)));
|
|
||||||
|
|
||||||
if (best &&
|
if (best &&
|
||||||
__get_agg_selection_mode(best->lag_ports) == BOND_AD_STABLE) {
|
__get_agg_selection_mode(best->lag_ports) == BOND_AD_STABLE) {
|
||||||
|
@ -1534,8 +1538,8 @@ static void ad_agg_selection_logic(struct aggregator *agg)
|
||||||
best->lag_ports, best->slave,
|
best->lag_ports, best->slave,
|
||||||
best->slave ? best->slave->dev->name : "NULL");
|
best->slave ? best->slave->dev->name : "NULL");
|
||||||
|
|
||||||
for (agg = __get_first_agg(best->lag_ports); agg;
|
bond_for_each_slave(bond, slave, iter) {
|
||||||
agg = __get_next_agg(agg)) {
|
agg = &(SLAVE_AD_INFO(slave).aggregator);
|
||||||
|
|
||||||
pr_debug("Agg=%d; P=%d; a k=%d; p k=%d; Ind=%d; Act=%d\n",
|
pr_debug("Agg=%d; P=%d; a k=%d; p k=%d; Ind=%d; Act=%d\n",
|
||||||
agg->aggregator_identifier, agg->num_of_ports,
|
agg->aggregator_identifier, agg->num_of_ports,
|
||||||
|
@ -1583,13 +1587,7 @@ static void ad_agg_selection_logic(struct aggregator *agg)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (origin->slave) {
|
bond_3ad_set_carrier(bond);
|
||||||
struct bonding *bond;
|
|
||||||
|
|
||||||
bond = bond_get_bond_by_slave(origin->slave);
|
|
||||||
if (bond)
|
|
||||||
bond_3ad_set_carrier(bond);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue