aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/bonding
diff options
context:
space:
mode:
authorMahesh Bandewar <maheshb@google.com>2015-04-07 19:16:11 -0400
committerDavid S. Miller <davem@davemloft.net>2015-04-08 12:12:11 -0400
commitc3cd9ee11dd72cfb8ff5d3dde47cd197e9b22cd2 (patch)
tree35d72ed31359b003b36d299aa7cf09a80e3ef484 /drivers/net/bonding
parent1b112871186e3ab8333851c0caf203b47d7561b9 (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.c29
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");