In order to best accomodate both congested, non-congested, and changing networks, the aoe driver started using high-resolution timing information for tracking round trip times in version 65.
A survey of the facilities in the Linux kernel was performed to identify a suitable method for obtaining high-resolution time, where suitability was determined by efficiency, portability across different kernel versions, and ease of use. The do_gettimeofday function was the best choice.
Naively using gettimeofday for tracking the times when packets were sent, though, exposes the aoe driver to anomalies when the system time is set, since the time might suddenly shift by some arbitrary amount.
This patch detects and accommodates such time shifts, updating the information about when packets were sent whenever a time jump is detected.
It includes some extra debugging diagnostics and is a bit eager, detecting time jumps of only a fraction of a second.