Limit popcorn limit to something sane (either 2ns or 2 ticks if that's

longer).

PR:		156481
Submitted by:	Ian Lepore
This commit is contained in:
Warner Losh 2012-08-16 02:35:44 +00:00
parent b6afbb7943
commit 79f1fdb83b

View File

@ -832,8 +832,15 @@ hardpps(tsp, nsec)
* discarded. otherwise, if so enabled, the time offset is
* updated. We can tolerate a modest loss of data here without
* much degrading time accuracy.
*
* The measurements being checked here were made with the system
* timecounter, so the popcorn threshold is not allowed to fall below
* the number of nanoseconds in two ticks of the timecounter. For a
* timecounter running faster than 1 GHz the lower bound is 2ns, just
* to avoid a nonsensical threshold of zero.
*/
if (u_nsec > (pps_jitter << PPS_POPCORN)) {
if (u_nsec > lmax(pps_jitter << PPS_POPCORN,
2 * (NANOSECOND / (long)qmin(NANOSECOND, tc_getfrequency())))) {
time_status |= STA_PPSJITTER;
pps_jitcnt++;
} else if (time_status & STA_PPSTIME) {