mirror of
https://github.com/torvalds/linux.git
synced 2024-12-26 21:02:19 +00:00
bonding: make ad_port_selection_logic() use bond_for_each_slave()
Currently, ad_port_selection_logic() uses for (aggregator = __get_first_agg(port); aggregator; aggregator = __get_next_agg(aggregator)) { construct, however it's suboptimal, difficult to read and understand. Change it to a standard bond_for_each_slave(), so that we won't need __get_first/next_agg() and have it more readable. 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
fe9323dae5
commit
3e36bb75ce
@ -1239,12 +1239,17 @@ static void ad_port_selection_logic(struct port *port)
|
||||
{
|
||||
struct aggregator *aggregator, *free_aggregator = NULL, *temp_aggregator;
|
||||
struct port *last_port = NULL, *curr_port;
|
||||
struct list_head *iter;
|
||||
struct bonding *bond;
|
||||
struct slave *slave;
|
||||
int found = 0;
|
||||
|
||||
// if the port is already Selected, do nothing
|
||||
if (port->sm_vars & AD_PORT_SELECTED)
|
||||
return;
|
||||
|
||||
bond = __get_bond_by_port(port);
|
||||
|
||||
// if the port is connected to other aggregator, detach it
|
||||
if (port->aggregator) {
|
||||
// detach the port from its former aggregator
|
||||
@ -1285,8 +1290,8 @@ static void ad_port_selection_logic(struct port *port)
|
||||
}
|
||||
}
|
||||
// search on all aggregators for a suitable aggregator for this port
|
||||
for (aggregator = __get_first_agg(port); aggregator;
|
||||
aggregator = __get_next_agg(aggregator)) {
|
||||
bond_for_each_slave(bond, slave, iter) {
|
||||
aggregator = &(SLAVE_AD_INFO(slave).aggregator);
|
||||
|
||||
// keep a free aggregator for later use(if needed)
|
||||
if (!aggregator->lag_ports) {
|
||||
|
Loading…
Reference in New Issue
Block a user