Sub-Nanosecond Timestamp Resolution - UG1586

Onload User Guide (UG1586)

Document ID
UG1586
Release Date
2025-11-03
Revision
1.31 English

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 an ef_precisetime object 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_FLAGS macro 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_FRAC16 macro provides access to the fractional nanosecond part of an event as a 16-bit quantity. For example, (uint16_t) 0x8000 represents 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.