|
@@ -2268,15 +2268,21 @@ void bond_3ad_handle_link_change(struct slave *slave, char link)
|
|
|
|
|
|
port = &(SLAVE_AD_INFO(slave).port);
|
|
|
|
|
|
- // if slave is null, the whole port is not initialized
|
|
|
+ /* if slave is null, the whole port is not initialized */
|
|
|
if (!port->slave) {
|
|
|
pr_warning("Warning: %s: link status changed for uninitialized port on %s\n",
|
|
|
slave->bond->dev->name, slave->dev->name);
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- // on link down we are zeroing duplex and speed since some of the adaptors(ce1000.lan) report full duplex/speed instead of N/A(duplex) / 0(speed)
|
|
|
- // on link up we are forcing recheck on the duplex and speed since some of he adaptors(ce1000.lan) report
|
|
|
+ __get_state_machine_lock(port);
|
|
|
+ /* on link down we are zeroing duplex and speed since
|
|
|
+ * some of the adaptors(ce1000.lan) report full duplex/speed
|
|
|
+ * instead of N/A(duplex) / 0(speed).
|
|
|
+ *
|
|
|
+ * on link up we are forcing recheck on the duplex and speed since
|
|
|
+ * some of he adaptors(ce1000.lan) report.
|
|
|
+ */
|
|
|
if (link == BOND_LINK_UP) {
|
|
|
port->is_enabled = true;
|
|
|
port->actor_admin_port_key &= ~AD_DUPLEX_KEY_BITS;
|
|
@@ -2292,10 +2298,15 @@ void bond_3ad_handle_link_change(struct slave *slave, char link)
|
|
|
port->actor_oper_port_key = (port->actor_admin_port_key &=
|
|
|
~AD_SPEED_KEY_BITS);
|
|
|
}
|
|
|
- //BOND_PRINT_DBG(("Port %d changed link status to %s", port->actor_port_number, ((link == BOND_LINK_UP)?"UP":"DOWN")));
|
|
|
- // there is no need to reselect a new aggregator, just signal the
|
|
|
- // state machines to reinitialize
|
|
|
+ pr_debug("Port %d changed link status to %s",
|
|
|
+ port->actor_port_number,
|
|
|
+ (link == BOND_LINK_UP) ? "UP" : "DOWN");
|
|
|
+ /* there is no need to reselect a new aggregator, just signal the
|
|
|
+ * state machines to reinitialize
|
|
|
+ */
|
|
|
port->sm_vars |= AD_PORT_BEGIN;
|
|
|
+
|
|
|
+ __release_state_machine_lock(port);
|
|
|
}
|
|
|
|
|
|
/*
|