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"); |
