> From: Patel, Vedang
> Sent: Tuesday, June 25, 2019 3:07 PM
> To: [email protected]
> Cc: Kirsher, Jeffrey T <[email protected]>; [email protected];
> [email protected]; [email protected]; [email protected]; intel-wired-
> [email protected]; Gomes, Vinicius <[email protected]>;
> [email protected]; [email protected]; [email protected];
> [email protected]; [email protected]; Brown,
> Aaron F <[email protected]>; Patel, Vedang <[email protected]>
> Subject: [PATCH net-next v6 1/8] igb: clear out skb->tstamp after reading the
> txtime
>
> If a packet which is utilizing the launchtime feature (via SO_TXTIME socket
> option) also requests the hardware transmit timestamp, the hardware
> timestamp is not delivered to the userspace. This is because the value in
> skb->tstamp is mistaken as the software timestamp.
>
> Applications, like ptp4l, request a hardware timestamp by setting the
> SOF_TIMESTAMPING_TX_HARDWARE socket option. Whenever a new
> timestamp is
> detected by the driver (this work is done in igb_ptp_tx_work() which calls
> igb_ptp_tx_hwtstamps() in igb_ptp.c[1]), it will queue the timestamp in the
> ERR_QUEUE for the userspace to read. When the userspace is ready, it will
> issue a recvmsg() call to collect this timestamp. The problem is in this
> recvmsg() call. If the skb->tstamp is not cleared out, it will be
> interpreted as a software timestamp and the hardware tx timestamp will not
> be successfully sent to the userspace. Look at skb_is_swtx_tstamp() and the
> callee function __sock_recv_timestamp() in net/socket.c for more details.
>
> Signed-off-by: Vedang Patel <[email protected]>
> ---
> drivers/net/ethernet/intel/igb/igb_main.c | 1 +
> 1 file changed, 1 insertion(+)
>
Tested-by: Aaron Brown <[email protected]>