summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Cochran2017-04-08 13:35:58 -0500
committerRichard Cochran2017-04-08 14:13:36 -0500
commit74ab3b3728d9d261f9e86dfdf43c5cbff0abcd58 (patch)
treefa197fcd5627fa5ea7b93db40e54cb3dc878db4d
parentd1bb9ecbd5a77cdb8d93accfa8c1bbf705002de0 (diff)
downloadlinuxptp-74ab3b3728d9d261f9e86dfdf43c5cbff0abcd58.tar.gz
linuxptp-74ab3b3728d9d261f9e86dfdf43c5cbff0abcd58.tar.xz
linuxptp-74ab3b3728d9d261f9e86dfdf43c5cbff0abcd58.zip
tsproc: Track the validity of the filtered delay explicitly.
We will want to test whether a valid filtered delay value has been calculated or not. However, we cannot simply test for zero since that is a legitimate possible delay value. This patch adds a flag that reflects the state of the filtered delay field. Signed-off-by: Richard Cochran <richardcochran@gmail.com>
-rw-r--r--tsproc.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/tsproc.c b/tsproc.c
index cf5f0dc..1eb24a1 100644
--- a/tsproc.c
+++ b/tsproc.c
@@ -42,6 +42,7 @@ struct tsproc {
42 42
43 /* Current filtered delay */ 43 /* Current filtered delay */
44 tmv_t filtered_delay; 44 tmv_t filtered_delay;
45 int filtered_delay_valid;
45 46
46 /* Delay filter */ 47 /* Delay filter */
47 struct filter *delay_filter; 48 struct filter *delay_filter;
@@ -115,6 +116,7 @@ void tsproc_set_clock_rate_ratio(struct tsproc *tsp, double clock_rate_ratio)
115void tsproc_set_delay(struct tsproc *tsp, tmv_t delay) 116void tsproc_set_delay(struct tsproc *tsp, tmv_t delay)
116{ 117{
117 tsp->filtered_delay = delay; 118 tsp->filtered_delay = delay;
119 tsp->filtered_delay_valid = 1;
118} 120}
119 121
120tmv_t get_raw_delay(struct tsproc *tsp) 122tmv_t get_raw_delay(struct tsproc *tsp)
@@ -149,6 +151,7 @@ int tsproc_update_delay(struct tsproc *tsp, tmv_t *delay)
149 151
150 raw_delay = get_raw_delay(tsp); 152 raw_delay = get_raw_delay(tsp);
151 tsp->filtered_delay = filter_sample(tsp->delay_filter, raw_delay); 153 tsp->filtered_delay = filter_sample(tsp->delay_filter, raw_delay);
154 tsp->filtered_delay_valid = 1;
152 155
153 pr_debug("delay filtered %10" PRId64 " raw %10" PRId64, 156 pr_debug("delay filtered %10" PRId64 " raw %10" PRId64,
154 tsp->filtered_delay, raw_delay); 157 tsp->filtered_delay, raw_delay);
@@ -199,5 +202,6 @@ void tsproc_reset(struct tsproc *tsp, int full)
199 if (full) { 202 if (full) {
200 tsp->clock_rate_ratio = 1.0; 203 tsp->clock_rate_ratio = 1.0;
201 filter_reset(tsp->delay_filter); 204 filter_reset(tsp->delay_filter);
205 tsp->filtered_delay_valid = 0;
202 } 206 }
203} 207}