From: Muhammad Husaini Zulkifli <muhammad.husaini.zulkifli@intel.com>
To: intel-wired-lan@osuosl.org
Cc: leon@kernel.org, netdev@vger.kernel.org,
richardcochran@gmail.com, saeed@kernel.org, edumazet@google.com,
gal@nvidia.com, kuba@kernel.org, michael.chan@broadcom.com,
muhammad.husaini.zulkifli@intel.com, davem@davemloft.net,
andy@greyhouse.net
Subject: [Intel-wired-lan] [PATCH v2 1/5] ethtool: Add new hwtstamp flag
Date: Tue, 18 Oct 2022 09:07:29 +0800 [thread overview]
Message-ID: <20221018010733.4765-2-muhammad.husaini.zulkifli@intel.com> (raw)
In-Reply-To: <20221018010733.4765-1-muhammad.husaini.zulkifli@intel.com>
This add patch add a new DMA Time Stamp flag. User can configure
hwtstamp_config with this flag if they want to use DMA time stamp.
Suggested-by: Vinicius Costa Gomes <vinicius.gomes@intel.com>
Signed-off-by: Muhammad Husaini Zulkifli <muhammad.husaini.zulkifli@intel.com>
---
include/uapi/linux/ethtool.h | 3 +++
include/uapi/linux/ethtool_netlink.h | 1 +
include/uapi/linux/net_tstamp.h | 5 ++++-
net/ethtool/common.c | 6 ++++++
net/ethtool/common.h | 2 ++
net/ethtool/strset.c | 5 +++++
net/ethtool/tsinfo.c | 17 +++++++++++++++++
7 files changed, 38 insertions(+), 1 deletion(-)
diff --git a/include/uapi/linux/ethtool.h b/include/uapi/linux/ethtool.h
index dc2aa3d75b39..a3c60e2bde36 100644
--- a/include/uapi/linux/ethtool.h
+++ b/include/uapi/linux/ethtool.h
@@ -683,6 +683,7 @@ enum ethtool_link_ext_substate_module {
* @ETH_SS_STATS_ETH_MAC: names of IEEE 802.3 MAC statistics
* @ETH_SS_STATS_ETH_CTRL: names of IEEE 802.3 MAC Control statistics
* @ETH_SS_STATS_RMON: names of RMON statistics
+ * @ETH_SS_HWTSTAMP_FLAG: timestamping flags
*
* @ETH_SS_COUNT: number of defined string sets
*/
@@ -708,6 +709,7 @@ enum ethtool_stringset {
ETH_SS_STATS_ETH_MAC,
ETH_SS_STATS_ETH_CTRL,
ETH_SS_STATS_RMON,
+ ETH_SS_HWTSTAMP_FLAG,
/* add new constants above here */
ETH_SS_COUNT
@@ -1416,6 +1418,7 @@ struct ethtool_ts_info {
__u32 tx_reserved[3];
__u32 rx_filters;
__u32 rx_reserved[3];
+ __u32 flag;
};
/*
diff --git a/include/uapi/linux/ethtool_netlink.h b/include/uapi/linux/ethtool_netlink.h
index bb57084ac524..4b7bd7554a3b 100644
--- a/include/uapi/linux/ethtool_netlink.h
+++ b/include/uapi/linux/ethtool_netlink.h
@@ -458,6 +458,7 @@ enum {
ETHTOOL_A_TSINFO_TX_TYPES, /* bitset */
ETHTOOL_A_TSINFO_RX_FILTERS, /* bitset */
ETHTOOL_A_TSINFO_PHC_INDEX, /* u32 */
+ ETHTOOL_A_TSINFO_FLAG, /* bitset */
/* add new constants above here */
__ETHTOOL_A_TSINFO_CNT,
diff --git a/include/uapi/linux/net_tstamp.h b/include/uapi/linux/net_tstamp.h
index 55501e5e7ac8..4966d5ca521f 100644
--- a/include/uapi/linux/net_tstamp.h
+++ b/include/uapi/linux/net_tstamp.h
@@ -89,7 +89,10 @@ enum hwtstamp_flags {
HWTSTAMP_FLAG_BONDED_PHC_INDEX = (1<<0),
#define HWTSTAMP_FLAG_BONDED_PHC_INDEX HWTSTAMP_FLAG_BONDED_PHC_INDEX
- HWTSTAMP_FLAG_LAST = HWTSTAMP_FLAG_BONDED_PHC_INDEX,
+ HWTSTAMP_FLAG_DMA_TIMESTAMP = (1<<1),
+#define HWTSTAMP_FLAG_DMA_TIMESTAMP HWTSTAMP_FLAG_DMA_TIMESTAMP
+
+ HWTSTAMP_FLAG_LAST = HWTSTAMP_FLAG_DMA_TIMESTAMP,
HWTSTAMP_FLAG_MASK = (HWTSTAMP_FLAG_LAST - 1) | HWTSTAMP_FLAG_LAST
};
diff --git a/net/ethtool/common.c b/net/ethtool/common.c
index 566adf85e658..f2a178d162ef 100644
--- a/net/ethtool/common.c
+++ b/net/ethtool/common.c
@@ -406,6 +406,12 @@ const char sof_timestamping_names[][ETH_GSTRING_LEN] = {
};
static_assert(ARRAY_SIZE(sof_timestamping_names) == __SOF_TIMESTAMPING_CNT);
+const char ts_flag_names[][ETH_GSTRING_LEN] = {
+ [const_ilog2(HWTSTAMP_FLAG_BONDED_PHC_INDEX)] = "bonded-phc-index",
+ [const_ilog2(HWTSTAMP_FLAG_DMA_TIMESTAMP)] = "dma-time-stamp",
+};
+static_assert(ARRAY_SIZE(ts_flag_names) == __HWTSTAMP_FLAG_CNT);
+
const char ts_tx_type_names[][ETH_GSTRING_LEN] = {
[HWTSTAMP_TX_OFF] = "off",
[HWTSTAMP_TX_ON] = "on",
diff --git a/net/ethtool/common.h b/net/ethtool/common.h
index c1779657e074..0161e04d4de8 100644
--- a/net/ethtool/common.h
+++ b/net/ethtool/common.h
@@ -13,6 +13,7 @@
ETHTOOL_LINK_MODE_ ## speed ## base ## type ## _ ## duplex ## _BIT
#define __SOF_TIMESTAMPING_CNT (const_ilog2(SOF_TIMESTAMPING_LAST) + 1)
+#define __HWTSTAMP_FLAG_CNT (const_ilog2(HWTSTAMP_FLAG_LAST) + 1)
struct link_mode_info {
int speed;
@@ -36,6 +37,7 @@ extern const char sof_timestamping_names[][ETH_GSTRING_LEN];
extern const char ts_tx_type_names[][ETH_GSTRING_LEN];
extern const char ts_rx_filter_names[][ETH_GSTRING_LEN];
extern const char udp_tunnel_type_names[][ETH_GSTRING_LEN];
+extern const char ts_flag_names[][ETH_GSTRING_LEN];
int __ethtool_get_link(struct net_device *dev);
diff --git a/net/ethtool/strset.c b/net/ethtool/strset.c
index 3f7de54d85fb..b3fb1b1c516c 100644
--- a/net/ethtool/strset.c
+++ b/net/ethtool/strset.c
@@ -105,6 +105,11 @@ static const struct strset_info info_template[] = {
.count = __ETHTOOL_A_STATS_RMON_CNT,
.strings = stats_rmon_names,
},
+ [ETH_SS_HWTSTAMP_FLAG] = {
+ .per_dev = false,
+ .count = __HWTSTAMP_FLAG_CNT,
+ .strings = ts_flag_names,
+ },
};
struct strset_req_info {
diff --git a/net/ethtool/tsinfo.c b/net/ethtool/tsinfo.c
index 63b5814bd460..af5acf7bf561 100644
--- a/net/ethtool/tsinfo.c
+++ b/net/ethtool/tsinfo.c
@@ -52,6 +52,7 @@ static int tsinfo_reply_size(const struct ethnl_req_info *req_base,
BUILD_BUG_ON(__SOF_TIMESTAMPING_CNT > 32);
BUILD_BUG_ON(__HWTSTAMP_TX_CNT > 32);
BUILD_BUG_ON(__HWTSTAMP_FILTER_CNT > 32);
+ BUILD_BUG_ON(__HWTSTAMP_FLAG_CNT > 32);
if (ts_info->so_timestamping) {
ret = ethnl_bitset32_size(&ts_info->so_timestamping, NULL,
@@ -79,6 +80,14 @@ static int tsinfo_reply_size(const struct ethnl_req_info *req_base,
}
if (ts_info->phc_index >= 0)
len += nla_total_size(sizeof(u32)); /* _TSINFO_PHC_INDEX */
+ if (ts_info->flag) {
+ ret = ethnl_bitset32_size(&ts_info->flag, NULL,
+ __HWTSTAMP_FLAG_CNT,
+ ts_flag_names, compact);
+ if (ret < 0)
+ return ret;
+ len += ret; /* _TSINFO_FLAG */
+ }
return len;
}
@@ -119,6 +128,14 @@ static int tsinfo_fill_reply(struct sk_buff *skb,
if (ts_info->phc_index >= 0 &&
nla_put_u32(skb, ETHTOOL_A_TSINFO_PHC_INDEX, ts_info->phc_index))
return -EMSGSIZE;
+ if (ts_info->flag) {
+ ret = ethnl_put_bitset32(skb, ETHTOOL_A_TSINFO_FLAG,
+ &ts_info->flag, NULL,
+ __HWTSTAMP_FLAG_CNT,
+ ts_flag_names, compact);
+ if (ret < 0)
+ return ret;
+ }
return 0;
}
--
2.17.1
_______________________________________________
Intel-wired-lan mailing list
Intel-wired-lan@osuosl.org
https://lists.osuosl.org/mailman/listinfo/intel-wired-lan
next prev parent reply other threads:[~2022-10-18 1:09 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-10-18 1:07 [Intel-wired-lan] [PATCH v2 0/5] Add support for DMA timestamp for non-PTP packets Muhammad Husaini Zulkifli
2022-10-18 1:07 ` Muhammad Husaini Zulkifli [this message]
2022-10-18 1:07 ` [Intel-wired-lan] [PATCH v2 2/5] net-timestamp: Increase the size of tsflags Muhammad Husaini Zulkifli
2022-10-18 5:57 ` Paul Menzel
2022-10-18 12:42 ` Zulkifli, Muhammad Husaini
2022-10-18 1:07 ` [Intel-wired-lan] [PATCH v2 3/5] net: sock: extend SO_TIMESTAMPING for DMA Fetch Muhammad Husaini Zulkifli
2022-10-18 1:07 ` [Intel-wired-lan] [PATCH v2 4/5] igc: Add support for DMA timestamp for non-PTP packets Muhammad Husaini Zulkifli
2022-10-20 22:39 ` Jacob Keller
2022-10-18 1:07 ` [Intel-wired-lan] [PATCH v2 5/5] ethtool: Add support for HWTSTAMP_FILTER_DMA_TIMESTAMP Muhammad Husaini Zulkifli
2022-10-18 11:45 ` [Intel-wired-lan] [PATCH v2 0/5] Add support for DMA timestamp for non-PTP packets Richard Cochran
2022-10-18 14:12 ` Zulkifli, Muhammad Husaini
2022-10-19 2:37 ` Richard Cochran
2022-10-21 0:25 ` Zulkifli, Muhammad Husaini
2022-10-21 12:48 ` Richard Cochran
2022-10-21 15:16 ` Jakub Kicinski
2022-10-18 14:23 ` Gal Pressman
2022-10-19 14:23 ` Zulkifli, Muhammad Husaini
2022-10-23 7:15 ` Gal Pressman
2022-10-18 19:02 ` Jakub Kicinski
2022-10-20 2:16 ` Zulkifli, Muhammad Husaini
2022-10-20 2:47 ` Jakub Kicinski
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20221018010733.4765-2-muhammad.husaini.zulkifli@intel.com \
--to=muhammad.husaini.zulkifli@intel.com \
--cc=andy@greyhouse.net \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=gal@nvidia.com \
--cc=intel-wired-lan@osuosl.org \
--cc=kuba@kernel.org \
--cc=leon@kernel.org \
--cc=michael.chan@broadcom.com \
--cc=netdev@vger.kernel.org \
--cc=richardcochran@gmail.com \
--cc=saeed@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox