149f89
From 13e8c7b8c8537488bc7612c11c429cec274db1f9 Mon Sep 17 00:00:00 2001
149f89
From: Miroslav Lichvar <mlichvar@redhat.com>
149f89
Date: Tue, 23 May 2017 16:29:29 +0200
149f89
Subject: [PATCH 6/7] net_tstamp.h: sync with net-next
149f89
149f89
This covers kernel changes up to:
149f89
149f89
commit b50a5c70ffa4fd6b6da324ab54c84adf48fb17d9
149f89
Author: Miroslav Lichvar <mlichvar@redhat.com>
149f89
Date:   Fri May 19 17:52:40 2017 +0200
149f89
149f89
    net: allow simultaneous SW and HW transmit timestamping
149f89
149f89
    Add SOF_TIMESTAMPING_OPT_TX_SWHW option to allow an outgoing packet to
149f89
    be looped to the socket's error queue with a software timestamp even
149f89
    when a hardware transmit timestamp is expected to be provided by the
149f89
    driver.
149f89
149f89
    Applications using this option will receive two separate messages from
149f89
    the error queue, one with a software timestamp and the other with a
149f89
    hardware timestamp. As the hardware timestamp is saved to the shared skb
149f89
    info, which may happen before the first message with software timestamp
149f89
    is received by the application, the hardware timestamp is copied to the
149f89
    SCM_TIMESTAMPING control message only when the skb has no software
149f89
    timestamp or it is an incoming packet.
149f89
149f89
    While changing sw_tx_timestamp(), inline it in skb_tx_timestamp() as
149f89
    there are no other users.
149f89
149f89
    CC: Richard Cochran <richardcochran@gmail.com>
149f89
    CC: Willem de Bruijn <willemb@google.com>
149f89
    Signed-off-by: Miroslav Lichvar <mlichvar@redhat.com>
149f89
    Acked-by: Willem de Bruijn <willemb@google.com>
149f89
    Signed-off-by: David S. Miller <davem@davemloft.net>
149f89
149f89
CC: Richard Cochran <richardcochran@gmail.com>
149f89
Signed-off-by: Miroslav Lichvar <mlichvar@redhat.com>
149f89
Signed-off-by: John W. Linville <linville@tuxdriver.com>
149f89
(cherry picked from commit ba800e3b4acd0692fc16013acbab2c3ac1ecfe66)
149f89
---
149f89
 net_tstamp-copy.h | 52 +++++++++++++++++++++++++++++++++++++++++-----------
149f89
 1 file changed, 41 insertions(+), 11 deletions(-)
149f89
149f89
diff --git a/net_tstamp-copy.h b/net_tstamp-copy.h
149f89
index ae5df12..3d421d9 100644
149f89
--- a/net_tstamp-copy.h
149f89
+++ b/net_tstamp-copy.h
149f89
@@ -9,6 +9,7 @@
149f89
 #ifndef _NET_TIMESTAMPING_H
149f89
 #define _NET_TIMESTAMPING_H
149f89
 
149f89
+#include <linux/types.h>
149f89
 #include <linux/socket.h>   /* for SO_TIMESTAMPING */
149f89
 
149f89
 /* SO_TIMESTAMPING gets an integer bit field comprised of these values */
149f89
@@ -20,23 +21,42 @@ enum {
149f89
 	SOF_TIMESTAMPING_SOFTWARE = (1<<4),
149f89
 	SOF_TIMESTAMPING_SYS_HARDWARE = (1<<5),
149f89
 	SOF_TIMESTAMPING_RAW_HARDWARE = (1<<6),
149f89
-	SOF_TIMESTAMPING_MASK =
149f89
-	(SOF_TIMESTAMPING_RAW_HARDWARE - 1) |
149f89
-	SOF_TIMESTAMPING_RAW_HARDWARE
149f89
+	SOF_TIMESTAMPING_OPT_ID = (1<<7),
149f89
+	SOF_TIMESTAMPING_TX_SCHED = (1<<8),
149f89
+	SOF_TIMESTAMPING_TX_ACK = (1<<9),
149f89
+	SOF_TIMESTAMPING_OPT_CMSG = (1<<10),
149f89
+	SOF_TIMESTAMPING_OPT_TSONLY = (1<<11),
149f89
+	SOF_TIMESTAMPING_OPT_STATS = (1<<12),
149f89
+	SOF_TIMESTAMPING_OPT_PKTINFO = (1<<13),
149f89
+	SOF_TIMESTAMPING_OPT_TX_SWHW = (1<<14),
149f89
+
149f89
+	SOF_TIMESTAMPING_LAST = SOF_TIMESTAMPING_OPT_TX_SWHW,
149f89
+	SOF_TIMESTAMPING_MASK = (SOF_TIMESTAMPING_LAST - 1) |
149f89
+				 SOF_TIMESTAMPING_LAST
149f89
 };
149f89
 
149f89
+/*
149f89
+ * SO_TIMESTAMPING flags are either for recording a packet timestamp or for
149f89
+ * reporting the timestamp to user space.
149f89
+ * Recording flags can be set both via socket options and control messages.
149f89
+ */
149f89
+#define SOF_TIMESTAMPING_TX_RECORD_MASK	(SOF_TIMESTAMPING_TX_HARDWARE | \
149f89
+					 SOF_TIMESTAMPING_TX_SOFTWARE | \
149f89
+					 SOF_TIMESTAMPING_TX_SCHED | \
149f89
+					 SOF_TIMESTAMPING_TX_ACK)
149f89
+
149f89
 /**
149f89
- * struct hwtstamp_config - %SIOCSHWTSTAMP parameter
149f89
+ * struct hwtstamp_config - %SIOCGHWTSTAMP and %SIOCSHWTSTAMP parameter
149f89
  *
149f89
- * @flags:	no flags defined right now, must be zero
149f89
+ * @flags:	no flags defined right now, must be zero for %SIOCSHWTSTAMP
149f89
  * @tx_type:	one of HWTSTAMP_TX_*
149f89
- * @rx_type:	one of one of HWTSTAMP_FILTER_*
149f89
+ * @rx_filter:	one of HWTSTAMP_FILTER_*
149f89
  *
149f89
- * %SIOCSHWTSTAMP expects a &struct ifreq with a ifr_data pointer to
149f89
- * this structure. dev_ifsioc() in the kernel takes care of the
149f89
- * translation between 32 bit userspace and 64 bit kernel. The
149f89
- * structure is intentionally chosen so that it has the same layout on
149f89
- * 32 and 64 bit systems, don't break this!
149f89
+ * %SIOCGHWTSTAMP and %SIOCSHWTSTAMP expect a &struct ifreq with a
149f89
+ * ifr_data pointer to this structure.  For %SIOCSHWTSTAMP, if the
149f89
+ * driver or hardware does not support the requested @rx_filter value,
149f89
+ * the driver may use a more general filter mode.  In this case
149f89
+ * @rx_filter will indicate the actual mode on return.
149f89
  */
149f89
 struct hwtstamp_config {
149f89
 	int flags;
149f89
@@ -108,6 +128,16 @@ enum hwtstamp_rx_filters {
149f89
 	HWTSTAMP_FILTER_PTP_V2_SYNC,
149f89
 	/* PTP v2/802.AS1, any layer, Delay_req packet */
149f89
 	HWTSTAMP_FILTER_PTP_V2_DELAY_REQ,
149f89
+
149f89
+	/* NTP, UDP, all versions and packet modes */
149f89
+	HWTSTAMP_FILTER_NTP_ALL,
149f89
+};
149f89
+
149f89
+/* SCM_TIMESTAMPING_PKTINFO control message */
149f89
+struct scm_ts_pktinfo {
149f89
+	__u32 if_index;
149f89
+	__u32 pkt_length;
149f89
+	__u32 reserved[2];
149f89
 };
149f89
 
149f89
 #endif /* _NET_TIMESTAMPING_H */
149f89
-- 
149f89
1.8.3.1
149f89