06c396fbe3
The issue reported is a particular case of a BC configured with redundant PTP clocks with same priority. When a clock recovers from a failure, as both clock were configured with same priority it's expected the active clock source to remain active. But if the recovered clock presented a better local clock class than active, it was being selected active. This specific case was fixed. Closes-bug: 2084723 Test plan: BC with same priority PASS: Start the PTP service with all clocks out of requirements, one is selected, no matter which one. PASS: Then, when the backup clock recovers from failure it is selected active. PASS: Then, when the other clock recovers from failure it remains as backup, no matter the local clock class. PASS: Then, when the active goes out of requirement, the backup is set active. Test plan: GM with same priority PASS: Start the PTP service with all clocks out of requirements, one is selected, no matter which one. PASS: Then, when the backup clock recovers from failure it is selected active. PASS: Then, when the other clock recovers from failure it remains as backup, no matter the local clock class. PASS: Then, when the active goes out of requirement, the backup is set active. Change-Id: Id2568bc8bbaad4cbf15070314f7904d3c3bbd53d Signed-off-by: Andre Mauricio Zelak <andre.zelak@windriver.com>
33 lines
1.1 KiB
Diff
33 lines
1.1 KiB
Diff
From: Miroslav Lichvar <mlichvar@redhat.com>
|
|
Date: Mon, 31 May 2021 11:07:52 +0200
|
|
Subject: [PATCH 01/61] clock: Reset state when switching port with same best
|
|
clock.
|
|
|
|
When the best port is changed, but the ID of the best clock doesn't
|
|
change (e.g. a passive port is activated on link failure), reset the
|
|
current delay and other master/link-specific state to avoid the switch
|
|
throwing the clock off.
|
|
|
|
Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
|
|
Signed-off-by: Miroslav Lichvar <mlichvar@redhat.com>
|
|
[commit 7e8eba5332671abfd95d06dd191059eded1d2cca upstream]
|
|
Signed-off-by: Jim Somerville <Jim.Somerville@windriver.com>
|
|
Signed-off-by: Andre Mauricio Zelak <andre.zelak@windriver.com>
|
|
---
|
|
clock.c | 2 +-
|
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
|
|
diff --git a/clock.c b/clock.c
|
|
index a66d189..96453f4 100644
|
|
--- a/clock.c
|
|
+++ b/clock.c
|
|
@@ -1857,7 +1857,7 @@ static void handle_state_decision_event(struct clock *c)
|
|
cid2str(&best_id));
|
|
}
|
|
|
|
- if (!cid_eq(&best_id, &c->best_id)) {
|
|
+ if (!cid_eq(&best_id, &c->best_id) || best != c->best) {
|
|
clock_freq_est_reset(c);
|
|
tsproc_reset(c->tsproc, 1);
|
|
if (!tmv_is_zero(c->initial_delay))
|