I've been playing around with raw sockets and timestamps, but seem to
be getting strange timestamp data back on the errqueue. Specifically,
if I am creating a socket(AF_PACKET, SOCK_RAW, htons(ETH_P_IP)) and
requesting SO_TIMESTAMPING_NEW with options 0x4DF. I am not modifying
the flags with control messages.

On both send and receive, I get the expected
SOL_SOCKET/SO_TIMESTAMPING_NEW cmsg (in errqueue on send, in the
message itself on receive), and it contains what appears to be valid
timestamps in the ts[0] field. On send, however, I receive an
additional cmsg with level = SOL_PACKET/PACKET_TX_TIMESTAMP, whose
content is just the fixed value `char[16] { 42, 0, 0, 0, 4, <zeros>
}`.

Any ideas why I'd be getting the SOL_PACKET message on transmit, and
why its payload is clearly not a valid timestamp? In case it matters,
this is on an Intel I210 nic using the igb driver.

Reply via email to