753c2fe35c
Porting all patches from CentOS. Using the version 3.1.1-2 to align with CentOS version rather than the default version 3.1-2.1 of Debian Bullseye. Test Plan: building, install and booting Pass: build test Pass: install image Pass: boot up on qemu Story: 2009221 Task: 44053 Signed-off-by: Yue Tao <yue.tao@windriver.com> Change-Id: I599f9244efe405a8b477d266696f4ac734aef6b5
79 lines
2.5 KiB
Diff
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
|
|
|