diff options
author | Mahesh Bandewar <maheshb@google.com> | 2015-04-07 19:16:11 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2015-04-08 12:12:11 -0400 |
commit | c3cd9ee11dd72cfb8ff5d3dde47cd197e9b22cd2 (patch) | |
tree | 35d72ed31359b003b36d299aa7cf09a80e3ef484 /drivers/net/bonding | |
parent | 1b112871186e3ab8333851c0caf203b47d7561b9 (diff) |
bonding: Code re-factoring for admin, oper-key operations
This patch breaks the rich assignments into it's own statements
and removes some duplicate code where admin-key, & oper-key are
updated.
Signed-off-by: Mahesh Bandewar <maheshb@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/bonding')
-rw-r--r-- | drivers/net/bonding/bond_3ad.c | 29 |
1 files changed, 13 insertions, 16 deletions
diff --git a/drivers/net/bonding/bond_3ad.c b/drivers/net/bonding/bond_3ad.c index 374696de796c..245d0db5871d 100644 --- a/drivers/net/bonding/bond_3ad.c +++ b/drivers/net/bonding/bond_3ad.c | |||
@@ -1428,8 +1428,10 @@ static void ad_port_selection_logic(struct port *port, bool *update_slave_arr) | |||
1428 | else | 1428 | else |
1429 | port->aggregator->is_individual = true; | 1429 | port->aggregator->is_individual = true; |
1430 | 1430 | ||
1431 | port->aggregator->actor_admin_aggregator_key = port->actor_admin_port_key; | 1431 | port->aggregator->actor_admin_aggregator_key = |
1432 | port->aggregator->actor_oper_aggregator_key = port->actor_oper_port_key; | 1432 | port->actor_admin_port_key; |
1433 | port->aggregator->actor_oper_aggregator_key = | ||
1434 | port->actor_oper_port_key; | ||
1433 | port->aggregator->partner_system = | 1435 | port->aggregator->partner_system = |
1434 | port->partner_oper.system; | 1436 | port->partner_oper.system; |
1435 | port->aggregator->partner_system_priority = | 1437 | port->aggregator->partner_system_priority = |
@@ -2332,8 +2334,8 @@ void bond_3ad_adapter_speed_changed(struct slave *slave) | |||
2332 | spin_lock_bh(&slave->bond->mode_lock); | 2334 | spin_lock_bh(&slave->bond->mode_lock); |
2333 | 2335 | ||
2334 | port->actor_admin_port_key &= ~AD_SPEED_KEY_MASKS; | 2336 | port->actor_admin_port_key &= ~AD_SPEED_KEY_MASKS; |
2335 | port->actor_oper_port_key = port->actor_admin_port_key |= | 2337 | port->actor_admin_port_key |= __get_link_speed(port) << 1; |
2336 | (__get_link_speed(port) << 1); | 2338 | port->actor_oper_port_key = port->actor_admin_port_key; |
2337 | netdev_dbg(slave->bond->dev, "Port %d changed speed\n", port->actor_port_number); | 2339 | netdev_dbg(slave->bond->dev, "Port %d changed speed\n", port->actor_port_number); |
2338 | /* there is no need to reselect a new aggregator, just signal the | 2340 | /* there is no need to reselect a new aggregator, just signal the |
2339 | * state machines to reinitialize | 2341 | * state machines to reinitialize |
@@ -2365,8 +2367,8 @@ void bond_3ad_adapter_duplex_changed(struct slave *slave) | |||
2365 | spin_lock_bh(&slave->bond->mode_lock); | 2367 | spin_lock_bh(&slave->bond->mode_lock); |
2366 | 2368 | ||
2367 | port->actor_admin_port_key &= ~AD_DUPLEX_KEY_MASKS; | 2369 | port->actor_admin_port_key &= ~AD_DUPLEX_KEY_MASKS; |
2368 | port->actor_oper_port_key = port->actor_admin_port_key |= | 2370 | port->actor_admin_port_key |= __get_duplex(port); |
2369 | __get_duplex(port); | 2371 | port->actor_oper_port_key = port->actor_admin_port_key; |
2370 | netdev_dbg(slave->bond->dev, "Port %d slave %s changed duplex\n", | 2372 | netdev_dbg(slave->bond->dev, "Port %d slave %s changed duplex\n", |
2371 | port->actor_port_number, slave->dev->name); | 2373 | port->actor_port_number, slave->dev->name); |
2372 | if (port->actor_oper_port_key & AD_DUPLEX_KEY_MASKS) | 2374 | if (port->actor_oper_port_key & AD_DUPLEX_KEY_MASKS) |
@@ -2407,24 +2409,19 @@ void bond_3ad_handle_link_change(struct slave *slave, char link) | |||
2407 | * on link up we are forcing recheck on the duplex and speed since | 2409 | * on link up we are forcing recheck on the duplex and speed since |
2408 | * some of he adaptors(ce1000.lan) report. | 2410 | * some of he adaptors(ce1000.lan) report. |
2409 | */ | 2411 | */ |
2412 | port->actor_admin_port_key &= ~(AD_DUPLEX_KEY_MASKS|AD_SPEED_KEY_MASKS); | ||
2410 | if (link == BOND_LINK_UP) { | 2413 | if (link == BOND_LINK_UP) { |
2411 | port->is_enabled = true; | 2414 | port->is_enabled = true; |
2412 | port->actor_admin_port_key &= ~AD_DUPLEX_KEY_MASKS; | 2415 | port->actor_admin_port_key |= |
2413 | port->actor_oper_port_key = port->actor_admin_port_key |= | 2416 | (__get_link_speed(port) << 1) | __get_duplex(port); |
2414 | __get_duplex(port); | 2417 | if (port->actor_admin_port_key & AD_DUPLEX_KEY_MASKS) |
2415 | port->actor_admin_port_key &= ~AD_SPEED_KEY_MASKS; | ||
2416 | port->actor_oper_port_key = port->actor_admin_port_key |= | ||
2417 | (__get_link_speed(port) << 1); | ||
2418 | if (port->actor_oper_port_key & AD_DUPLEX_KEY_MASKS) | ||
2419 | port->sm_vars |= AD_PORT_LACP_ENABLED; | 2418 | port->sm_vars |= AD_PORT_LACP_ENABLED; |
2420 | } else { | 2419 | } else { |
2421 | /* link has failed */ | 2420 | /* link has failed */ |
2422 | port->is_enabled = false; | 2421 | port->is_enabled = false; |
2423 | port->actor_admin_port_key &= ~AD_DUPLEX_KEY_MASKS; | ||
2424 | port->actor_oper_port_key = (port->actor_admin_port_key &= | ||
2425 | ~AD_SPEED_KEY_MASKS); | ||
2426 | port->sm_vars &= ~AD_PORT_LACP_ENABLED; | 2422 | port->sm_vars &= ~AD_PORT_LACP_ENABLED; |
2427 | } | 2423 | } |
2424 | port->actor_oper_port_key = port->actor_admin_port_key; | ||
2428 | netdev_dbg(slave->bond->dev, "Port %d changed link status to %s\n", | 2425 | netdev_dbg(slave->bond->dev, "Port %d changed link status to %s\n", |
2429 | port->actor_port_number, | 2426 | port->actor_port_number, |
2430 | link == BOND_LINK_UP ? "UP" : "DOWN"); | 2427 | link == BOND_LINK_UP ? "UP" : "DOWN"); |