Commit c3cd9ee1 authored by Mahesh Bandewar's avatar Mahesh Bandewar Committed by David S. Miller

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: default avatarMahesh Bandewar <maheshb@google.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 1b112871
...@@ -1428,8 +1428,10 @@ static void ad_port_selection_logic(struct port *port, bool *update_slave_arr) ...@@ -1428,8 +1428,10 @@ static void ad_port_selection_logic(struct port *port, bool *update_slave_arr)
else else
port->aggregator->is_individual = true; port->aggregator->is_individual = true;
port->aggregator->actor_admin_aggregator_key = port->actor_admin_port_key; port->aggregator->actor_admin_aggregator_key =
port->aggregator->actor_oper_aggregator_key = port->actor_oper_port_key; port->actor_admin_port_key;
port->aggregator->actor_oper_aggregator_key =
port->actor_oper_port_key;
port->aggregator->partner_system = port->aggregator->partner_system =
port->partner_oper.system; port->partner_oper.system;
port->aggregator->partner_system_priority = port->aggregator->partner_system_priority =
...@@ -2332,8 +2334,8 @@ void bond_3ad_adapter_speed_changed(struct slave *slave) ...@@ -2332,8 +2334,8 @@ void bond_3ad_adapter_speed_changed(struct slave *slave)
spin_lock_bh(&slave->bond->mode_lock); spin_lock_bh(&slave->bond->mode_lock);
port->actor_admin_port_key &= ~AD_SPEED_KEY_MASKS; port->actor_admin_port_key &= ~AD_SPEED_KEY_MASKS;
port->actor_oper_port_key = port->actor_admin_port_key |= port->actor_admin_port_key |= __get_link_speed(port) << 1;
(__get_link_speed(port) << 1); port->actor_oper_port_key = port->actor_admin_port_key;
netdev_dbg(slave->bond->dev, "Port %d changed speed\n", port->actor_port_number); netdev_dbg(slave->bond->dev, "Port %d changed speed\n", port->actor_port_number);
/* there is no need to reselect a new aggregator, just signal the /* there is no need to reselect a new aggregator, just signal the
* state machines to reinitialize * state machines to reinitialize
...@@ -2365,8 +2367,8 @@ void bond_3ad_adapter_duplex_changed(struct slave *slave) ...@@ -2365,8 +2367,8 @@ void bond_3ad_adapter_duplex_changed(struct slave *slave)
spin_lock_bh(&slave->bond->mode_lock); spin_lock_bh(&slave->bond->mode_lock);
port->actor_admin_port_key &= ~AD_DUPLEX_KEY_MASKS; port->actor_admin_port_key &= ~AD_DUPLEX_KEY_MASKS;
port->actor_oper_port_key = port->actor_admin_port_key |= port->actor_admin_port_key |= __get_duplex(port);
__get_duplex(port); port->actor_oper_port_key = port->actor_admin_port_key;
netdev_dbg(slave->bond->dev, "Port %d slave %s changed duplex\n", netdev_dbg(slave->bond->dev, "Port %d slave %s changed duplex\n",
port->actor_port_number, slave->dev->name); port->actor_port_number, slave->dev->name);
if (port->actor_oper_port_key & AD_DUPLEX_KEY_MASKS) 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,24 +2409,19 @@ void bond_3ad_handle_link_change(struct slave *slave, char link)
* on link up we are forcing recheck on the duplex and speed since * on link up we are forcing recheck on the duplex and speed since
* some of he adaptors(ce1000.lan) report. * some of he adaptors(ce1000.lan) report.
*/ */
port->actor_admin_port_key &= ~(AD_DUPLEX_KEY_MASKS|AD_SPEED_KEY_MASKS);
if (link == BOND_LINK_UP) { if (link == BOND_LINK_UP) {
port->is_enabled = true; port->is_enabled = true;
port->actor_admin_port_key &= ~AD_DUPLEX_KEY_MASKS; port->actor_admin_port_key |=
port->actor_oper_port_key = port->actor_admin_port_key |= (__get_link_speed(port) << 1) | __get_duplex(port);
__get_duplex(port); if (port->actor_admin_port_key & AD_DUPLEX_KEY_MASKS)
port->actor_admin_port_key &= ~AD_SPEED_KEY_MASKS;
port->actor_oper_port_key = port->actor_admin_port_key |=
(__get_link_speed(port) << 1);
if (port->actor_oper_port_key & AD_DUPLEX_KEY_MASKS)
port->sm_vars |= AD_PORT_LACP_ENABLED; port->sm_vars |= AD_PORT_LACP_ENABLED;
} else { } else {
/* link has failed */ /* link has failed */
port->is_enabled = false; port->is_enabled = false;
port->actor_admin_port_key &= ~AD_DUPLEX_KEY_MASKS;
port->actor_oper_port_key = (port->actor_admin_port_key &=
~AD_SPEED_KEY_MASKS);
port->sm_vars &= ~AD_PORT_LACP_ENABLED; port->sm_vars &= ~AD_PORT_LACP_ENABLED;
} }
port->actor_oper_port_key = port->actor_admin_port_key;
netdev_dbg(slave->bond->dev, "Port %d changed link status to %s\n", netdev_dbg(slave->bond->dev, "Port %d changed link status to %s\n",
port->actor_port_number, port->actor_port_number,
link == BOND_LINK_UP ? "UP" : "DOWN"); link == BOND_LINK_UP ? "UP" : "DOWN");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment