![Andre Mauricio Zelak](/assets/img/avatar_default.png)
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>
56 lines
1.7 KiB
Diff
56 lines
1.7 KiB
Diff
From: Andre Mauricio Zelak <andre.zelak@windriver.com>
|
|
Date: Thu, 31 Aug 2023 16:05:15 -0300
|
|
Subject: [PATCH 54/61] Disable active interface failing
|
|
|
|
Fixed the behavior when none clock is matching the requirements and the
|
|
active clock source is disabled using the 'disable source <interface>'
|
|
command. The interface is must be disabled and a new clock source is
|
|
selected.
|
|
|
|
Test plan: none clock is matching the requirements
|
|
PASS: Verify that the active source can be disabled and a new one is
|
|
selected.
|
|
PASS: Verify that an attempt to disable the last active interface
|
|
fails and an appopriated message is given as response.
|
|
PASS: Verify that the interface with higher priority is selected after
|
|
re-enabling it.
|
|
PASS: Verify the active clock source doesn't change if another
|
|
interface is disabled.
|
|
PASS: Verify the active clock source doesn't change if another
|
|
interface is re-enabled.
|
|
|
|
Story: 2010723
|
|
Task: 48702
|
|
|
|
Signed-off-by: Andre Mauricio Zelak <andre.zelak@windriver.com>
|
|
---
|
|
phc2sys.c | 8 ++++++++
|
|
1 file changed, 8 insertions(+)
|
|
|
|
diff --git a/phc2sys.c b/phc2sys.c
|
|
index 9893675..4120568 100644
|
|
--- a/phc2sys.c
|
|
+++ b/phc2sys.c
|
|
@@ -1115,6 +1115,10 @@ static struct clock* ha_select_clock(struct phc2sys_private *priv, struct config
|
|
if (clock->node == NULL)
|
|
continue;
|
|
|
|
+ /* clock disabled */
|
|
+ if (!clock->enabled)
|
|
+ continue;
|
|
+
|
|
/* get clock class */
|
|
clock_class = clock->node->dds.clockQuality.clockClass;
|
|
if (clock_class <= lowest_clock_class) {
|
|
@@ -1137,6 +1141,10 @@ static struct clock* ha_select_clock(struct phc2sys_private *priv, struct config
|
|
if (clock->node == NULL)
|
|
continue;
|
|
|
|
+ /* clock disabled */
|
|
+ if (!clock->enabled)
|
|
+ continue;
|
|
+
|
|
best = clock;
|
|
}
|
|
}
|