Re: [PATCH v4 net-next 6/7] net: allow simultaneous SW and HW transmit timestamping
From: Miroslav Lichvar <hidden>
Date: 2017-05-19 10:00:43
On Thu, May 18, 2017 at 04:16:26PM -0400, Willem de Bruijn wrote:
On Thu, May 18, 2017 at 9:06 AM, Miroslav Lichvar [off-list ref] wrote:quoted
+/* On transmit, software and hardware timestamps are returned independently. + * As the two skb clones share the hardware timestamp, which may be updated + * before the software timestamp is received, a hardware TX timestamp may be + * returned only if there is no software TX timestamp. A false software + * timestamp made for SOCK_RCVTSTAMP when a real timestamp is missing must + * be ignored.Please expand on why this case can be ignored. It is quite subtle. How about something like * * A false software timestamp is one made inside the __sock_recv_timestamp * call itself. These are generated whenever SO_TIMESTAMP(NS) is enabled * on the socket, even when the timestamp reported is for another option, such * as hardware tx timestamp. * * Ignore these when deciding whether a timestamp source is hw or sw. */
That seems a bit too verbose to me. :) Would the following work? /* On transmit, software and hardware timestamps are returned independently. * As the two skb clones share the hardware timestamp, which may be updated * before the software timestamp is received, a hardware TX timestamp may be * returned only if there is no software TX timestamp. Ignore false software * timestamps, which may be made in the __sock_recv_timestamp() call when the * option SO_TIMESTAMP(NS) is enabled on the socket, even when the skb has a * hardware timestamp. */
quoted
+static bool skb_is_swtx_tstamp(const struct sk_buff *skb, + const struct sock *sk, int false_tstamp) +{ + if (false_tstamp && sk->sk_tsflags & SOF_TIMESTAMPING_OPT_TX_SWHW)Also, why is it ignored only for the new mode?
Good point. That should not be there. The function can be now reduced to a single line again. I originally tried a different approach, disabling false timestamps in the new mode, but then I thought it's better to not complicate it unnecessarily and keep it consistent. -- Miroslav Lichvar