Onload and ef_vi now internally process hardware timestamps with sub-nanosecond resolution.
Timestamps retrieved via the Onload Extensions API now have the fractional nanosecond part populated for hardware timestamps and an additional field providing the associated timestamping flags. See extensions_timestamping.h for details.
For ef_vi applications using timestamps:
-
ef_vi_receive_get_precise_timestamp()is the new preferred interface to obtain receive timestamps for all NICs. This populates anef_precisetimeobject that includes a fractional nanosecond part and sync flags. - The sync flags associated with a transmit timestamp should continue to be accessed
with the
EF_EVENT_TX_TIMESTAMP_SYNC_FLAGSmacro but it will no longer be possible to read the low order nanosecond bits to obtain the same flags as they now contain the full integral nanoseconds part. - The
EF_EVENT_TX_WITH_TIMESTAMP_NSEC_FRAC16macro provides access to the fractional nanosecond part of an event as a 16-bit quantity. For example,(uint16_t) 0x8000represents half a nanosecond.
For X2 and X3 the resolution of the timestamp value is 1/4 ns, but note that the granularity of the timestamping clock is hardware-dependent, and is coarser than the timestamp resolution now available through the API.