|
@@ -2303,19 +2303,18 @@ void bond_3ad_handle_link_change(struct slave *slave, char link)
|
|
|
}
|
|
|
|
|
|
/*
|
|
|
- * set link state for bonding master: if we have an active partnered
|
|
|
+ * set link state for bonding master: if we have an active
|
|
|
* aggregator, we're up, if not, we're down. Presumes that we cannot
|
|
|
* have an active aggregator if there are no slaves with link up.
|
|
|
*
|
|
|
+ * This behavior complies with IEEE 802.3 section 43.3.9.
|
|
|
+ *
|
|
|
* Called by bond_set_carrier(). Return zero if carrier state does not
|
|
|
* change, nonzero if it does.
|
|
|
*/
|
|
|
int bond_3ad_set_carrier(struct bonding *bond)
|
|
|
{
|
|
|
- struct aggregator *agg;
|
|
|
-
|
|
|
- agg = __get_active_agg(&(SLAVE_AD_INFO(bond->first_slave).aggregator));
|
|
|
- if (agg && MAC_ADDRESS_COMPARE(&agg->partner_system, &null_mac_addr)) {
|
|
|
+ if (__get_active_agg(&(SLAVE_AD_INFO(bond->first_slave).aggregator))) {
|
|
|
if (!netif_carrier_ok(bond->dev)) {
|
|
|
netif_carrier_on(bond->dev);
|
|
|
return 1;
|