* [PATCH ethtool 0/2] Add support for PTP hardware source
@ 2025-06-10 12:50 Kory Maincent
2025-06-10 12:50 ` [PATCH ethtool 1/2] update UAPI header copies Kory Maincent
2025-06-10 12:50 ` [PATCH ethtool 2/2] tsinfo: Add support for PTP hardware source Kory Maincent
0 siblings, 2 replies; 3+ messages in thread
From: Kory Maincent @ 2025-06-10 12:50 UTC (permalink / raw)
To: Michal Kubecek, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Andrew Lunn, Willem de Bruijn, Jason Xing, Russell King,
Maxime Chevallier, Thomas Petazzoni, netdev, linux-kernel,
Kory Maincent
Add description of the PTP hardware source to indicate whether the
timestamp comes from a PHY or a MAC.
Signed-off-by: Kory Maincent <kory.maincent@bootlin.com>
---
Kory Maincent (2):
update UAPI header copies
tsinfo: Add support for PTP hardware source
netlink/tsinfo.c | 34 +++++++++
uapi/linux/ethtool.h | 134 +++++++++++++++++----------------
uapi/linux/ethtool_netlink_generated.h | 19 +++--
uapi/linux/if_link.h | 15 ++++
4 files changed, 132 insertions(+), 70 deletions(-)
---
base-commit: 9338aa51d4856273539a052332de3695e09620bd
change-id: 20250610-feature_phc_source-d16eeddac8f3
Best regards,
--
Köry Maincent, Bootlin
Embedded Linux and kernel engineering
https://bootlin.com
^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH ethtool 1/2] update UAPI header copies
2025-06-10 12:50 [PATCH ethtool 0/2] Add support for PTP hardware source Kory Maincent
@ 2025-06-10 12:50 ` Kory Maincent
2025-06-10 12:50 ` [PATCH ethtool 2/2] tsinfo: Add support for PTP hardware source Kory Maincent
1 sibling, 0 replies; 3+ messages in thread
From: Kory Maincent @ 2025-06-10 12:50 UTC (permalink / raw)
To: Michal Kubecek, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Andrew Lunn, Willem de Bruijn, Jason Xing, Russell King,
Maxime Chevallier, Thomas Petazzoni, netdev, linux-kernel,
Kory Maincent
Update to kernel commit 2c7e4a2663a1.
Signed-off-by: Kory Maincent <kory.maincent@bootlin.com>
---
uapi/linux/ethtool.h | 134 +++++++++++++++++----------------
uapi/linux/ethtool_netlink_generated.h | 19 +++--
uapi/linux/if_link.h | 15 ++++
3 files changed, 98 insertions(+), 70 deletions(-)
diff --git a/uapi/linux/ethtool.h b/uapi/linux/ethtool.h
index 506e086..253df22 100644
--- a/uapi/linux/ethtool.h
+++ b/uapi/linux/ethtool.h
@@ -2293,71 +2293,75 @@ static __inline__ int ethtool_validate_duplex(__u8 duplex)
#define RXH_XFRM_SYM_OR_XOR (1 << 1)
#define RXH_XFRM_NO_CHANGE 0xff
-/* L2-L4 network traffic flow types */
-#define TCP_V4_FLOW 0x01 /* hash or spec (tcp_ip4_spec) */
-#define UDP_V4_FLOW 0x02 /* hash or spec (udp_ip4_spec) */
-#define SCTP_V4_FLOW 0x03 /* hash or spec (sctp_ip4_spec) */
-#define AH_ESP_V4_FLOW 0x04 /* hash only */
-#define TCP_V6_FLOW 0x05 /* hash or spec (tcp_ip6_spec; nfc only) */
-#define UDP_V6_FLOW 0x06 /* hash or spec (udp_ip6_spec; nfc only) */
-#define SCTP_V6_FLOW 0x07 /* hash or spec (sctp_ip6_spec; nfc only) */
-#define AH_ESP_V6_FLOW 0x08 /* hash only */
-#define AH_V4_FLOW 0x09 /* hash or spec (ah_ip4_spec) */
-#define ESP_V4_FLOW 0x0a /* hash or spec (esp_ip4_spec) */
-#define AH_V6_FLOW 0x0b /* hash or spec (ah_ip6_spec; nfc only) */
-#define ESP_V6_FLOW 0x0c /* hash or spec (esp_ip6_spec; nfc only) */
-#define IPV4_USER_FLOW 0x0d /* spec only (usr_ip4_spec) */
-#define IP_USER_FLOW IPV4_USER_FLOW
-#define IPV6_USER_FLOW 0x0e /* spec only (usr_ip6_spec; nfc only) */
-#define IPV4_FLOW 0x10 /* hash only */
-#define IPV6_FLOW 0x11 /* hash only */
-#define ETHER_FLOW 0x12 /* spec only (ether_spec) */
-
-/* Used for GTP-U IPv4 and IPv6.
- * The format of GTP packets only includes
- * elements such as TEID and GTP version.
- * It is primarily intended for data communication of the UE.
- */
-#define GTPU_V4_FLOW 0x13 /* hash only */
-#define GTPU_V6_FLOW 0x14 /* hash only */
-
-/* Use for GTP-C IPv4 and v6.
- * The format of these GTP packets does not include TEID.
- * Primarily expected to be used for communication
- * to create sessions for UE data communication,
- * commonly referred to as CSR (Create Session Request).
- */
-#define GTPC_V4_FLOW 0x15 /* hash only */
-#define GTPC_V6_FLOW 0x16 /* hash only */
-
-/* Use for GTP-C IPv4 and v6.
- * Unlike GTPC_V4_FLOW, the format of these GTP packets includes TEID.
- * After session creation, it becomes this packet.
- * This is mainly used for requests to realize UE handover.
- */
-#define GTPC_TEID_V4_FLOW 0x17 /* hash only */
-#define GTPC_TEID_V6_FLOW 0x18 /* hash only */
-
-/* Use for GTP-U and extended headers for the PSC (PDU Session Container).
- * The format of these GTP packets includes TEID and QFI.
- * In 5G communication using UPF (User Plane Function),
- * data communication with this extended header is performed.
- */
-#define GTPU_EH_V4_FLOW 0x19 /* hash only */
-#define GTPU_EH_V6_FLOW 0x1a /* hash only */
-
-/* Use for GTP-U IPv4 and v6 PSC (PDU Session Container) extended headers.
- * This differs from GTPU_EH_V(4|6)_FLOW in that it is distinguished by
- * UL/DL included in the PSC.
- * There are differences in the data included based on Downlink/Uplink,
- * and can be used to distinguish packets.
- * The functions described so far are useful when you want to
- * handle communication from the mobile network in UPF, PGW, etc.
- */
-#define GTPU_UL_V4_FLOW 0x1b /* hash only */
-#define GTPU_UL_V6_FLOW 0x1c /* hash only */
-#define GTPU_DL_V4_FLOW 0x1d /* hash only */
-#define GTPU_DL_V6_FLOW 0x1e /* hash only */
+enum {
+ /* L2-L4 network traffic flow types */
+ TCP_V4_FLOW = 0x01, /* hash or spec (tcp_ip4_spec) */
+ UDP_V4_FLOW = 0x02, /* hash or spec (udp_ip4_spec) */
+ SCTP_V4_FLOW = 0x03, /* hash or spec (sctp_ip4_spec) */
+ AH_ESP_V4_FLOW = 0x04, /* hash only */
+ TCP_V6_FLOW = 0x05, /* hash or spec (tcp_ip6_spec; nfc only) */
+ UDP_V6_FLOW = 0x06, /* hash or spec (udp_ip6_spec; nfc only) */
+ SCTP_V6_FLOW = 0x07, /* hash or spec (sctp_ip6_spec; nfc only) */
+ AH_ESP_V6_FLOW = 0x08, /* hash only */
+ AH_V4_FLOW = 0x09, /* hash or spec (ah_ip4_spec) */
+ ESP_V4_FLOW = 0x0a, /* hash or spec (esp_ip4_spec) */
+ AH_V6_FLOW = 0x0b, /* hash or spec (ah_ip6_spec; nfc only) */
+ ESP_V6_FLOW = 0x0c, /* hash or spec (esp_ip6_spec; nfc only) */
+ IPV4_USER_FLOW = 0x0d, /* spec only (usr_ip4_spec) */
+ IP_USER_FLOW = IPV4_USER_FLOW,
+ IPV6_USER_FLOW = 0x0e, /* spec only (usr_ip6_spec; nfc only) */
+ IPV4_FLOW = 0x10, /* hash only */
+ IPV6_FLOW = 0x11, /* hash only */
+ ETHER_FLOW = 0x12, /* spec only (ether_spec) */
+
+ /* Used for GTP-U IPv4 and IPv6.
+ * The format of GTP packets only includes
+ * elements such as TEID and GTP version.
+ * It is primarily intended for data communication of the UE.
+ */
+ GTPU_V4_FLOW = 0x13, /* hash only */
+ GTPU_V6_FLOW = 0x14, /* hash only */
+
+ /* Use for GTP-C IPv4 and v6.
+ * The format of these GTP packets does not include TEID.
+ * Primarily expected to be used for communication
+ * to create sessions for UE data communication,
+ * commonly referred to as CSR (Create Session Request).
+ */
+ GTPC_V4_FLOW = 0x15, /* hash only */
+ GTPC_V6_FLOW = 0x16, /* hash only */
+
+ /* Use for GTP-C IPv4 and v6.
+ * Unlike GTPC_V4_FLOW, the format of these GTP packets includes TEID.
+ * After session creation, it becomes this packet.
+ * This is mainly used for requests to realize UE handover.
+ */
+ GTPC_TEID_V4_FLOW = 0x17, /* hash only */
+ GTPC_TEID_V6_FLOW = 0x18, /* hash only */
+
+ /* Use for GTP-U and extended headers for the PSC (PDU Session Container).
+ * The format of these GTP packets includes TEID and QFI.
+ * In 5G communication using UPF (User Plane Function),
+ * data communication with this extended header is performed.
+ */
+ GTPU_EH_V4_FLOW = 0x19, /* hash only */
+ GTPU_EH_V6_FLOW = 0x1a, /* hash only */
+
+ /* Use for GTP-U IPv4 and v6 PSC (PDU Session Container) extended headers.
+ * This differs from GTPU_EH_V(4|6)_FLOW in that it is distinguished by
+ * UL/DL included in the PSC.
+ * There are differences in the data included based on Downlink/Uplink,
+ * and can be used to distinguish packets.
+ * The functions described so far are useful when you want to
+ * handle communication from the mobile network in UPF, PGW, etc.
+ */
+ GTPU_UL_V4_FLOW = 0x1b, /* hash only */
+ GTPU_UL_V6_FLOW = 0x1c, /* hash only */
+ GTPU_DL_V4_FLOW = 0x1d, /* hash only */
+ GTPU_DL_V6_FLOW = 0x1e, /* hash only */
+
+ __FLOW_TYPE_COUNT,
+};
/* Flag to enable additional fields in struct ethtool_rx_flow_spec */
#define FLOW_EXT 0x80000000
diff --git a/uapi/linux/ethtool_netlink_generated.h b/uapi/linux/ethtool_netlink_generated.h
index fa0522b..fb973c3 100644
--- a/uapi/linux/ethtool_netlink_generated.h
+++ b/uapi/linux/ethtool_netlink_generated.h
@@ -31,17 +31,24 @@ enum ethtool_header_flags {
ETHTOOL_FLAG_STATS = 4,
};
-enum {
- ETHTOOL_PHY_UPSTREAM_TYPE_MAC,
- ETHTOOL_PHY_UPSTREAM_TYPE_PHY,
-};
-
enum ethtool_tcp_data_split {
ETHTOOL_TCP_DATA_SPLIT_UNKNOWN,
ETHTOOL_TCP_DATA_SPLIT_DISABLED,
ETHTOOL_TCP_DATA_SPLIT_ENABLED,
};
+/**
+ * enum hwtstamp_source - Source of the hardware timestamp
+ * @HWTSTAMP_SOURCE_NETDEV: Hardware timestamp comes from a MAC or a device
+ * which has MAC and PHY integrated
+ * @HWTSTAMP_SOURCE_PHYLIB: Hardware timestamp comes from one PHY device of the
+ * network topology
+ */
+enum hwtstamp_source {
+ HWTSTAMP_SOURCE_NETDEV = 1,
+ HWTSTAMP_SOURCE_PHYLIB,
+};
+
enum {
ETHTOOL_A_HEADER_UNSPEC,
ETHTOOL_A_HEADER_DEV_INDEX,
@@ -406,6 +413,8 @@ enum {
ETHTOOL_A_TSINFO_PHC_INDEX,
ETHTOOL_A_TSINFO_STATS,
ETHTOOL_A_TSINFO_HWTSTAMP_PROVIDER,
+ ETHTOOL_A_TSINFO_HWTSTAMP_SOURCE,
+ ETHTOOL_A_TSINFO_HWTSTAMP_PHYINDEX,
__ETHTOOL_A_TSINFO_CNT,
ETHTOOL_A_TSINFO_MAX = (__ETHTOOL_A_TSINFO_CNT - 1)
diff --git a/uapi/linux/if_link.h b/uapi/linux/if_link.h
index ceff2f2..bb94d88 100644
--- a/uapi/linux/if_link.h
+++ b/uapi/linux/if_link.h
@@ -1984,4 +1984,19 @@ enum {
#define IFLA_DSA_MAX (__IFLA_DSA_MAX - 1)
+/* OVPN section */
+
+enum ovpn_mode {
+ OVPN_MODE_P2P,
+ OVPN_MODE_MP,
+};
+
+enum {
+ IFLA_OVPN_UNSPEC,
+ IFLA_OVPN_MODE,
+ __IFLA_OVPN_MAX,
+};
+
+#define IFLA_OVPN_MAX (__IFLA_OVPN_MAX - 1)
+
#endif /* _LINUX_IF_LINK_H */
--
2.43.0
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [PATCH ethtool 2/2] tsinfo: Add support for PTP hardware source
2025-06-10 12:50 [PATCH ethtool 0/2] Add support for PTP hardware source Kory Maincent
2025-06-10 12:50 ` [PATCH ethtool 1/2] update UAPI header copies Kory Maincent
@ 2025-06-10 12:50 ` Kory Maincent
1 sibling, 0 replies; 3+ messages in thread
From: Kory Maincent @ 2025-06-10 12:50 UTC (permalink / raw)
To: Michal Kubecek, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Andrew Lunn, Willem de Bruijn, Jason Xing, Russell King,
Maxime Chevallier, Thomas Petazzoni, netdev, linux-kernel,
Kory Maincent
Add description of the PTP hardware source to indicate whether the
timestamp comes from a PHY or a MAC.
Signed-off-by: Kory Maincent <kory.maincent@bootlin.com>
---
netlink/tsinfo.c | 34 ++++++++++++++++++++++++++++++++++
1 file changed, 34 insertions(+)
diff --git a/netlink/tsinfo.c b/netlink/tsinfo.c
index 187c3ad..fd528e5 100644
--- a/netlink/tsinfo.c
+++ b/netlink/tsinfo.c
@@ -52,6 +52,37 @@ int tsinfo_show_hwprov(const struct nlattr *nest)
return 0;
}
+const char *tsinfo_source_names(u32 val)
+{
+ switch (val) {
+ case HWTSTAMP_SOURCE_NETDEV:
+ return "MAC";
+ case HWTSTAMP_SOURCE_PHYLIB:
+ return "PHY";
+ default:
+ return "Unknown";
+ }
+}
+
+int tsinfo_show_source(const struct nlattr **tb)
+{
+ u32 val;
+
+ val = mnl_attr_get_u32(tb[ETHTOOL_A_TSINFO_HWTSTAMP_SOURCE]);
+ print_string(PRINT_ANY, "hwtstamp-source:",
+ "Hardware timestamp source: %s\n",
+ tsinfo_source_names(val));
+
+ if (!tb[ETHTOOL_A_TSINFO_HWTSTAMP_PHYINDEX])
+ return 0;
+
+ val = mnl_attr_get_u32(tb[ETHTOOL_A_TSINFO_HWTSTAMP_PHYINDEX]);
+ print_uint(PRINT_ANY, "hwtstamp-source-phyindex:",
+ "Hardware timestamp source PHY index: %d\n", val);
+
+ return 0;
+}
+
static int tsinfo_show_stats(const struct nlattr *nest)
{
const struct nlattr *tb[ETHTOOL_A_TS_STAT_MAX + 1] = {};
@@ -185,6 +216,9 @@ int tsinfo_reply_cb(const struct nlmsghdr *nlhdr, void *data)
printf("none\n");
}
+ if (tb[ETHTOOL_A_TSINFO_HWTSTAMP_SOURCE])
+ tsinfo_show_source(tb);
+
ret = tsinfo_dump_list(nlctx, tb[ETHTOOL_A_TSINFO_TX_TYPES],
"Hardware Transmit Timestamp Modes", " none",
ETH_SS_TS_TX_TYPES);
--
2.43.0
^ permalink raw reply related [flat|nested] 3+ messages in thread
end of thread, other threads:[~2025-06-10 12:50 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-06-10 12:50 [PATCH ethtool 0/2] Add support for PTP hardware source Kory Maincent
2025-06-10 12:50 ` [PATCH ethtool 1/2] update UAPI header copies Kory Maincent
2025-06-10 12:50 ` [PATCH ethtool 2/2] tsinfo: Add support for PTP hardware source Kory Maincent
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).