none fix
This commit is contained in:
@@ -438,12 +438,7 @@ class BridgeLinkStateWatcher:
|
|||||||
if state.mtu is not None:
|
if state.mtu is not None:
|
||||||
return True
|
return True
|
||||||
|
|
||||||
profile = state.ethernet_profile
|
return self._partial_profile_is_usable(state.ethernet_profile)
|
||||||
if profile is None:
|
|
||||||
return False
|
|
||||||
if profile.autoneg is True:
|
|
||||||
return True
|
|
||||||
return profile.autoneg is False and profile.speed_mbps is not None and profile.duplex is not None
|
|
||||||
|
|
||||||
def _has_config_mismatch(self, source_ifname: str, states: dict[str, MemberLinkState]) -> bool:
|
def _has_config_mismatch(self, source_ifname: str, states: dict[str, MemberLinkState]) -> bool:
|
||||||
"""Return whether any sibling differs from the chosen source configuration."""
|
"""Return whether any sibling differs from the chosen source configuration."""
|
||||||
@@ -625,9 +620,9 @@ class BridgeLinkStateWatcher:
|
|||||||
"""Return whether a profile contains enough data to drive synchronization."""
|
"""Return whether a profile contains enough data to drive synchronization."""
|
||||||
if profile is None:
|
if profile is None:
|
||||||
return False
|
return False
|
||||||
if profile.autoneg is True:
|
if profile.autoneg is None:
|
||||||
return True
|
return False
|
||||||
return profile.autoneg is False and profile.speed_mbps is not None and profile.duplex is not None
|
return profile.speed_mbps is not None and profile.duplex is not None
|
||||||
|
|
||||||
def _materialize_profile(
|
def _materialize_profile(
|
||||||
self,
|
self,
|
||||||
@@ -708,13 +703,14 @@ class BridgeLinkStateWatcher:
|
|||||||
target_profile = target.ethernet_profile
|
target_profile = target.ethernet_profile
|
||||||
if source_profile is None or target_profile is None or source_profile == target_profile:
|
if source_profile is None or target_profile is None or source_profile == target_profile:
|
||||||
return None
|
return None
|
||||||
|
if not self._partial_profile_is_usable(source_profile):
|
||||||
|
return None
|
||||||
if not self._should_attempt_sync(source_ifname, target_ifname, source_profile):
|
if not self._should_attempt_sync(source_ifname, target_ifname, source_profile):
|
||||||
return None
|
return None
|
||||||
|
|
||||||
change_summary: Optional[str] = None
|
change_summary: Optional[str] = None
|
||||||
commands: list[tuple[list[str], str]] = []
|
commands: list[tuple[list[str], str]] = []
|
||||||
if source_profile.autoneg is True:
|
if source_profile.autoneg is True:
|
||||||
if source_profile.speed_mbps is not None and source_profile.duplex is not None:
|
|
||||||
# A remote peer can pull this port down to a lower negotiated speed while autoneg
|
# A remote peer can pull this port down to a lower negotiated speed while autoneg
|
||||||
# stays enabled locally. Mirror that effective mode while keeping autoneg enabled
|
# stays enabled locally. Mirror that effective mode while keeping autoneg enabled
|
||||||
# on the sibling so its far-end peer can still negotiate successfully.
|
# on the sibling so its far-end peer can still negotiate successfully.
|
||||||
@@ -737,8 +733,6 @@ class BridgeLinkStateWatcher:
|
|||||||
),
|
),
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
else:
|
|
||||||
commands.append(([_ETHTOOL_BIN, "-s", target_ifname, "autoneg", "on"], f"{target_ifname} link=autoneg-on"))
|
|
||||||
elif source_profile.autoneg is False and source_profile.speed_mbps is not None and source_profile.duplex is not None:
|
elif source_profile.autoneg is False and source_profile.speed_mbps is not None and source_profile.duplex is not None:
|
||||||
# Do not force autoneg off on sibling ports. The far-end peer on that segment may
|
# Do not force autoneg off on sibling ports. The far-end peer on that segment may
|
||||||
# still rely on autoneg, and forcing a fixed mode here can leave the link down.
|
# still rely on autoneg, and forcing a fixed mode here can leave the link down.
|
||||||
|
|||||||
Reference in New Issue
Block a user