chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
3dbc762
)
timedated: update spike handling
author
Kay Sievers
<kay@vrfy.org>
Sun, 16 Mar 2014 22:51:50 +0000
(23:51 +0100)
committer
Kay Sievers
<kay@vrfy.org>
Sun, 16 Mar 2014 22:51:50 +0000
(23:51 +0100)
src/timedate/timedate-sntp.c
patch
|
blob
|
history
diff --git
a/src/timedate/timedate-sntp.c
b/src/timedate/timedate-sntp.c
index fff02c79e5b3f241c050b04d19e9251585756cf9..7e34e93ca62ab8503d9ee5d595090afe5f81f765 100644
(file)
--- a/
src/timedate/timedate-sntp.c
+++ b/
src/timedate/timedate-sntp.c
@@
-404,18
+404,6
@@
static bool sntp_sample_spike_detection(SNTPContext *sntp, double offset, double
sntp->packet_count++;
jitter = sntp->samples_jitter;
sntp->packet_count++;
jitter = sntp->samples_jitter;
- /* ignore samples when resyncing */
- if (sntp->poll_resync)
- return false;
-
- /* we need a few samples before we calculate anything */
- if (sntp->packet_count < 3)
- return false;
-
- /* always accept sample if we are farther off than the round trip delay */
- if (fabs(offset) > delay)
- return false;
-
/* calculate new jitter value from the RMS differences relative to the lowest delay sample */
for (idx_min = idx_cur, i = 0; i < ELEMENTSOF(sntp->samples); i++)
if (sntp->samples[i].delay > 0 && sntp->samples[i].delay < sntp->samples[idx_min].delay)
/* calculate new jitter value from the RMS differences relative to the lowest delay sample */
for (idx_min = idx_cur, i = 0; i < ELEMENTSOF(sntp->samples); i++)
if (sntp->samples[i].delay > 0 && sntp->samples[i].delay < sntp->samples[idx_min].delay)
@@
-426,8
+414,20
@@
static bool sntp_sample_spike_detection(SNTPContext *sntp, double offset, double
j += square(sntp->samples[i].offset - sntp->samples[idx_min].offset);
sntp->samples_jitter = sqrt(j / (ELEMENTSOF(sntp->samples) - 1));
j += square(sntp->samples[i].offset - sntp->samples[idx_min].offset);
sntp->samples_jitter = sqrt(j / (ELEMENTSOF(sntp->samples) - 1));
+ /* ignore samples when resyncing */
+ if (sntp->poll_resync)
+ return false;
+
+ /* always accept offset if we are farther off than the round-trip delay */
+ if (fabs(offset) > delay)
+ return false;
+
+ /* we need a few samples before looking at them */
+ if (sntp->packet_count < 4)
+ return false;
+
/* do not accept anything worse than the maximum possible error of the best sample */
/* do not accept anything worse than the maximum possible error of the best sample */
- if (abs(offset) > sntp->samples[idx_min].delay)
+ if (
f
abs(offset) > sntp->samples[idx_min].delay)
return true;
/* compare the difference between the current offset to the previous offset and jitter */
return true;
/* compare the difference between the current offset to the previous offset and jitter */