integ/base/linuxptp/centos/patches/0002-clock-Reset-clock-check-on-best-clock-port-change.patch
Jim Somerville 8445cd91a1 Uprev linuxptp to version 3.1.1-1
We use the CentOS 8 version of the source package
and apply the same six patches that we applied to
the previous version, with one caveat.  Patch 3
had an additional test in it of the uncalibrated
state, and this test does not exist in the upstream
version of the patch.  Now patch 3 is identical
to the upstream version.

All five upstream patches have been refreshed to
what was actually accepted upstream and thus now
contain proper git headers.  The logic of those
five patches remain as they were, with the one
exception noted in the previous paragraph.

Patch 6 has also now been given a proper git header.

Change-Id: Ifd44680d2f190dc0c5662bd05bd214fccf50a2fd
Story: 2009130
Task: 43199
Signed-off-by: Jim Somerville <Jim.Somerville@windriver.com>
2021-09-03 17:24:27 -04:00

79 lines
2.5 KiB
Diff

From 1779482f39e6513995b13fdbd350f7aee8495b7e Mon Sep 17 00:00:00 2001
Message-Id: <1779482f39e6513995b13fdbd350f7aee8495b7e.1630418391.git.Jim.Somerville@windriver.com>
In-Reply-To: <0389752e3aecf8d2b2743f16ce1408a58088bea9.1630418391.git.Jim.Somerville@windriver.com>
References: <0389752e3aecf8d2b2743f16ce1408a58088bea9.1630418391.git.Jim.Somerville@windriver.com>
From: Miroslav Lichvar <mlichvar@redhat.com>
Date: Mon, 31 May 2021 11:07:53 +0200
Subject: [PATCH 2/6] clock: Reset clock check on best clock/port change.
Reset the clock check when the best clock or port changes, together with
the other state like current estimated delay and frequency. This avoids
false positives if the clock is controlled by an external process when
not synchronized by PTP (e.g. phc2sys -rr).
Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
Signed-off-by: Miroslav Lichvar <mlichvar@redhat.com>
[commit 262a49b07eaccc0f0237e3cd4df01b185b8f664f upstream]
Signed-off-by: Jim Somerville <Jim.Somerville@windriver.com>
---
clock.c | 2 ++
clockcheck.c | 9 ++++++++-
clockcheck.h | 6 ++++++
3 files changed, 16 insertions(+), 1 deletion(-)
diff --git a/clock.c b/clock.c
index d955710..49bd4a9 100644
--- a/clock.c
+++ b/clock.c
@@ -1911,6 +1911,8 @@ static void handle_state_decision_event(struct clock *c)
if (!cid_eq(&best_id, &c->best_id) || best != c->best) {
clock_freq_est_reset(c);
+ if (c->sanity_check)
+ clockcheck_reset(c->sanity_check);
tsproc_reset(c->tsproc, 1);
if (!tmv_is_zero(c->initial_delay))
tsproc_set_delay(c->tsproc, c->initial_delay);
diff --git a/clockcheck.c b/clockcheck.c
index d48a578..d0b4714 100644
--- a/clockcheck.c
+++ b/clockcheck.c
@@ -47,9 +47,16 @@ struct clockcheck *clockcheck_create(int freq_limit)
if (!cc)
return NULL;
cc->freq_limit = freq_limit;
+ clockcheck_reset(cc);
+ return cc;
+}
+
+void clockcheck_reset(struct clockcheck *cc)
+{
+ cc->freq_known = 0;
cc->max_freq = -CHECK_MAX_FREQ;
cc->min_freq = CHECK_MAX_FREQ;
- return cc;
+ cc->last_ts = 0;
}
int clockcheck_sample(struct clockcheck *cc, uint64_t ts)
diff --git a/clockcheck.h b/clockcheck.h
index 78aca48..1ff86eb 100644
--- a/clockcheck.h
+++ b/clockcheck.h
@@ -33,6 +33,12 @@ struct clockcheck;
*/
struct clockcheck *clockcheck_create(int freq_limit);
+/**
+ * Reset a clock check.
+ * @param cc Pointer to a clock check obtained via @ref clockcheck_create().
+ */
+void clockcheck_reset(struct clockcheck *cc);
+
/**
* Perform the sanity check on a time stamp.
* @param cc Pointer to a clock check obtained via @ref clockcheck_create().
--
2.29.2