Rx Hardware Time-Stamping
RoCE v2 is currently supported in FreeBSD 12.0 and above.
Time-stamping is the process of keeping track of the creation of a packet. A time-stamping service supports assertions of proof that a datum existed before a particular time. Incoming packets are time-stamped before they are distributed on the PCI, depending on the congestion in the PCI buffers. Outgoing packets are time-stamped very close to placing them on the wire.
ConnectX-4 and above adapter cards support high quality internal timer that can provide timestamps on each received packet. Resulting quality of time-stamp is much higher than software can provide, and can be transparently utilized by applications that use standard BSD socket features such as SO_TIMESTAMP.
To verify that your HCA and operating system support time-stamping, check the presence of HWRXTSTMP option in the ifconfig(8) output of the interface:
# ifconfig mce4
mce4: flags=8802
<BROADCAST,SIMPLEX,MULTICAST> metric 0
mtu 1500
options=2ed07bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,TSO6,LRO,VLAN_HWFILTER,VLAN_HWTSO,LINKSTATE,RXCSUM_IPV6,TXCSUM_IPV6,HWRXTSTMP>
To disable the feature, run:
# ifconfig mce<N> -hwrxtsmp
To re-enable the feature, run:
# ifconfig mce<N> hwrxtsmp
This feature is only supported using the firmware version compatible with your FreeBSD driver version.