On Mon, Dec 28, 2020 at 12:29 PM Michael S. Tsirkin <mst@xxxxxxxxxx> wrote: > > On Mon, Dec 28, 2020 at 11:22:32AM -0500, Willem de Bruijn wrote: > > From: Willem de Bruijn <willemb@xxxxxxxxxx> > > > > Add optional PTP hardware timestamp offload for virtio-net. > > > > Accurate RTT measurement requires timestamps close to the wire. > > Introduce virtio feature VIRTIO_NET_F_RX_TSTAMP. If negotiated, the > > virtio-net header is expanded with room for a timestamp. A host may > > pass receive timestamps for all or some packets. A timestamp is valid > > if non-zero. > > > > The timestamp straddles (virtual) hardware domains. Like PTP, use > > international atomic time (CLOCK_TAI) as global clock base. It is > > guest responsibility to sync with host, e.g., through kvm-clock. > > > > Signed-off-by: Willem de Bruijn <willemb@xxxxxxxxxx> > > diff --git a/include/uapi/linux/virtio_net.h b/include/uapi/linux/virtio_net.h > > index f6881b5b77ee..0ffe2eeebd4a 100644 > > --- a/include/uapi/linux/virtio_net.h > > +++ b/include/uapi/linux/virtio_net.h > > @@ -57,6 +57,7 @@ > > * Steering */ > > #define VIRTIO_NET_F_CTRL_MAC_ADDR 23 /* Set MAC address */ > > > > +#define VIRTIO_NET_F_RX_TSTAMP 55 /* Host sends TAI receive time */ > > #define VIRTIO_NET_F_TX_HASH 56 /* Guest sends hash report */ > > #define VIRTIO_NET_F_HASH_REPORT 57 /* Supports hash report */ > > #define VIRTIO_NET_F_RSS 60 /* Supports RSS RX steering */ > > @@ -182,6 +183,17 @@ struct virtio_net_hdr_v1_hash { > > }; > > }; > > > > +struct virtio_net_hdr_v12 { > > + struct virtio_net_hdr_v1 hdr; > > + struct { > > + __le32 value; > > + __le16 report; > > + __le16 flow_state; > > + } hash; > > + __virtio32 reserved; > > + __virtio64 tstamp; > > +}; > > + > > #ifndef VIRTIO_NET_NO_LEGACY > > /* This header comes first in the scatter-gather list. > > * For legacy virtio, if VIRTIO_F_ANY_LAYOUT is not negotiated, it must > > > So it looks like VIRTIO_NET_F_RX_TSTAMP should depend on both > VIRTIO_NET_F_RX_TSTAMP and VIRTIO_NET_F_HASH_REPORT then? Do you mean VIRTIO_NET_F_TX_TSTAMP depends on VIRTIO_NET_F_RX_TSTAMP? I think if either is enabled we need to enable the extended layout. Regardless of whether TX_HASH or HASH_REPORT are enabled. If they are not, then those fields are ignored. > I am not sure what does v12 mean here. > > virtio_net_hdr_v1 is just with VIRTIO_F_VERSION_1, > virtio_net_hdr_v1_hash is with VIRTIO_F_VERSION_1 and > VIRTIO_NET_F_HASH_REPORT. > > So this one is virtio_net_hdr_hash_tstamp I guess? Sounds better, yes, will change that. This was an attempt at identifying the layout with the likely next generation of the spec, 1.2. Similar to virtio_net_hdr_v1. But that is both premature and not very helpful. _______________________________________________ Virtualization mailing list Virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linuxfoundation.org/mailman/listinfo/virtualization