integ/base/linuxptp/debian/patches/0031-pmc_agent-Let-the-update-method-poll-for-push-events.patch
Andre Mauricio Zelak 06c396fbe3 Fix HA clock selection algorithm
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>
2024-10-16 18:19:55 -03:00

54 lines
1.5 KiB
Diff

From: Andre Mauricio Zelak <andre.zelak@windriver.com>
Date: Mon, 12 Jun 2023 17:32:27 -0300
Subject: [PATCH 31/61] pmc_agent: Let the update method poll for push events.
Signed-off-by: Richard Cochran <richardcochran@gmail.com>
[commit c4a5eef1f4763805e6e2a2d25eb1d436018d4745 upstream]
Signed-off-by: Andre Mauricio Zelak <andre.zelak@windriver.com>
---
pmc_agent.c | 3 +++
pmc_agent.h | 5 +++--
2 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/pmc_agent.c b/pmc_agent.c
index aa2347d..6e6627d 100644
--- a/pmc_agent.c
+++ b/pmc_agent.c
@@ -390,6 +390,7 @@ int pmc_agent_subscribe(struct pmc_agent *node, int timeout)
int pmc_agent_update(struct pmc_agent *node)
{
+ struct ptp_message *msg;
struct timespec tp;
uint64_t ts;
@@ -411,6 +412,8 @@ int pmc_agent_update(struct pmc_agent *node)
}
}
+ run_pmc(node, 0, -1, &msg);
+
return 0;
}
diff --git a/pmc_agent.h b/pmc_agent.h
index f0e2c7a..dd34d30 100644
--- a/pmc_agent.h
+++ b/pmc_agent.h
@@ -141,11 +141,12 @@ void pmc_agent_set_sync_offset(struct pmc_agent *agent, int offset);
int pmc_agent_subscribe(struct pmc_agent *agent, int timeout);
/**
- * Queries the local ptp4l instance to update the TAI-UTC offset and
- * the current leap second flags.
+ * Polls for push notifications from the local ptp4l service.
*
* In addition:
*
+ * - Queries the local ptp4l instance to update the TAI-UTC offset and
+ * the current leap second flags.
* - Any active port state subscription will be renewed.
* - The port state notification callback might be invoked.
*