From patchwork Tue Oct 18 01:07:29 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Zulkifli, Muhammad Husaini" X-Patchwork-Id: 1691306 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=osuosl.org (client-ip=140.211.166.137; helo=smtp4.osuosl.org; envelope-from=intel-wired-lan-bounces@osuosl.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=osuosl.org header.i=@osuosl.org header.a=rsa-sha256 header.s=default header.b=x2yjkeOf; dkim-atps=neutral Received: from smtp4.osuosl.org (smtp4.osuosl.org [140.211.166.137]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Mrwk52vHRz23jp for ; Tue, 18 Oct 2022 12:09:17 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by smtp4.osuosl.org (Postfix) with ESMTP id F34A040252; Tue, 18 Oct 2022 01:09:14 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp4.osuosl.org F34A040252 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=osuosl.org; s=default; t=1666055355; bh=p/HQlLWaBwIASjvEVPCDKleZWnJGSA2QziTOEjZiVFo=; h=From:To:Date:In-Reply-To:References:Subject:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: Cc:From; b=x2yjkeOfuxNTF8VPEGG4CcZhFZ7CuooA2J7rOtzg2j++DEKu/RmkhoEq9iuteGeFj CaXbvkUWDpp5tGz7HO1mCYgSz8Vd2Efc/MR8UTk1PdQZV2KxYkxYb19LTUvnUzraJg ZKnRVeuL8YYfpm/lJhl7ZvTuBA56f6atWuBo399m8GhBUsTllhxgARBpm0LRgJb14b JqffxdH0XmzL8B/7Pur6/ff/MlzMCShVdSSB4bFmJRAtYrIkyaw63q/+HbTkX2X7or xjduH9+5esG+KYCMDWIJ1h/5a1X/0oaX5FEiPJ7JbFSDLQgebAyjkGTdfG4DXgIXCa 6USPz76Wafl5A== X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp4.osuosl.org ([127.0.0.1]) by localhost (smtp4.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id TivHXq_akUA5; Tue, 18 Oct 2022 01:09:13 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by smtp4.osuosl.org (Postfix) with ESMTP id 5BEE04027B; Tue, 18 Oct 2022 01:09:13 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp4.osuosl.org 5BEE04027B X-Original-To: intel-wired-lan@osuosl.org Delivered-To: intel-wired-lan@osuosl.org Received: from smtp3.osuosl.org (smtp3.osuosl.org [140.211.166.136]) by ash.osuosl.org (Postfix) with ESMTP id A2B861BF399 for ; Tue, 18 Oct 2022 01:09:09 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp3.osuosl.org (Postfix) with ESMTP id 7DF8C60FA3 for ; Tue, 18 Oct 2022 01:09:09 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org 7DF8C60FA3 X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp3.osuosl.org ([127.0.0.1]) by localhost (smtp3.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id aAJkT56rqER0 for ; Tue, 18 Oct 2022 01:09:08 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.8.0 DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org AC17560776 Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by smtp3.osuosl.org (Postfix) with ESMTPS id AC17560776 for ; Tue, 18 Oct 2022 01:09:08 +0000 (UTC) X-IronPort-AV: E=McAfee;i="6500,9779,10503"; a="307624112" X-IronPort-AV: E=Sophos;i="5.95,192,1661842800"; d="scan'208";a="307624112" Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Oct 2022 18:09:08 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10503"; a="717704404" X-IronPort-AV: E=Sophos;i="5.95,192,1661842800"; d="scan'208";a="717704404" Received: from zulkifl3-ilbpg0.png.intel.com ([10.88.229.82]) by FMSMGA003.fm.intel.com with ESMTP; 17 Oct 2022 18:09:05 -0700 From: Muhammad Husaini Zulkifli To: intel-wired-lan@osuosl.org Date: Tue, 18 Oct 2022 09:07:29 +0800 Message-Id: <20221018010733.4765-2-muhammad.husaini.zulkifli@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20221018010733.4765-1-muhammad.husaini.zulkifli@intel.com> References: <20221018010733.4765-1-muhammad.husaini.zulkifli@intel.com> X-Mailman-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1666055348; x=1697591348; h=from:to:cc:subject:date:message-id:in-reply-to: references; bh=upmt3pZyDTQiw3ANIcvU53NO5MogN8byOr+ynwpMONE=; b=NBwyNaINNVYA7zjzPSMXenIVX9da0thMzBBSAg0CZEdX6r1CX4RqRY6d NmoNeNzN8TV6IlaKTq30yG7cOgwA7QYvm5vyHmcxBZYpOdr/DxfBC9kmD O3JU0KB5mf/9L1GeAgf0lOEIUK+dOV6IeZ7NIPaNq8CoR9yJbyK13cKkj 99ocZK3SJtg0lsXeBnBHOaU7yA/uZbRt/adOLjAu/Q54BBFKW4SQHWKzA bqex5ohZyI9aDTtcWedtrlnx6I2mvdOx8HyKsMtWm7s8ICMVnNC/CFaQ1 0s8SRpoikt1u1A+pNhJ3ghx+D3yV8evnVVIchxrxk0jU07f6HuY6kaVu1 Q==; X-Mailman-Original-Authentication-Results: smtp3.osuosl.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=NBwyNaIN Subject: [Intel-wired-lan] [PATCH v2 1/5] ethtool: Add new hwtstamp flag X-BeenThere: intel-wired-lan@osuosl.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel Wired Ethernet Linux Kernel Driver Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , 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 MIME-Version: 1.0 Errors-To: intel-wired-lan-bounces@osuosl.org Sender: "Intel-wired-lan" 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 Signed-off-by: Muhammad Husaini Zulkifli --- 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; } From patchwork Tue Oct 18 01:07:30 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Zulkifli, Muhammad Husaini" X-Patchwork-Id: 1691307 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=osuosl.org (client-ip=140.211.166.138; helo=smtp1.osuosl.org; envelope-from=intel-wired-lan-bounces@osuosl.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=osuosl.org header.i=@osuosl.org header.a=rsa-sha256 header.s=default header.b=ciOrpPMm; dkim-atps=neutral Received: from smtp1.osuosl.org (smtp1.osuosl.org [140.211.166.138]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Mrwk94Trjz23jp for ; Tue, 18 Oct 2022 12:09:21 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by smtp1.osuosl.org (Postfix) with ESMTP id B1CD882A29; Tue, 18 Oct 2022 01:09:19 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp1.osuosl.org B1CD882A29 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=osuosl.org; s=default; t=1666055359; bh=Wr06u3qCb0mGuEasdtWuW9vqftOtZZb3AcC6u+vMNRo=; h=From:To:Date:In-Reply-To:References:Subject:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: Cc:From; b=ciOrpPMmzL87xqnkv8aGOfIh5Q/LG5gBDJ1G1DYjPdykKvW/GOGxgXma5z46yTUhm 8Ih7afQTA53qlc9LAhsmcviJ9Y7gcJDASEauDBZTsUiCAI5KTAWy4S3GuxbZTULfuV Our89So2qZgnYmFai1cbE1fQK77QQL3kZBlhje/OR618AhYWNECynpVrxZ2CjIuXsi iYS0I+gaqQlIoZHsrM8AB/WI0Mla8ku59VN+nXEGyAYiiO5cG7jjUQv1MsS0+3rHiX ZMuNELTB+3ZLAj+//hcMflZ4UiacaRe9PSAx1y6+1NXKBhz6JFa2jfsaE89mDXoajh eBVDhzJRaK8MA== X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp1.osuosl.org ([127.0.0.1]) by localhost (smtp1.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id IUQWGiG_eXlb; Tue, 18 Oct 2022 01:09:18 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by smtp1.osuosl.org (Postfix) with ESMTP id 11EBB82A2E; Tue, 18 Oct 2022 01:09:18 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp1.osuosl.org 11EBB82A2E X-Original-To: intel-wired-lan@osuosl.org Delivered-To: intel-wired-lan@osuosl.org Received: from smtp3.osuosl.org (smtp3.osuosl.org [140.211.166.136]) by ash.osuosl.org (Postfix) with ESMTP id 2857C1BF399 for ; Tue, 18 Oct 2022 01:09:13 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp3.osuosl.org (Postfix) with ESMTP id 01D4F60FA9 for ; Tue, 18 Oct 2022 01:09:13 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org 01D4F60FA9 X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp3.osuosl.org ([127.0.0.1]) by localhost (smtp3.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id h79cCeZquj64 for ; Tue, 18 Oct 2022 01:09:12 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.8.0 DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org 3FD47607C0 Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by smtp3.osuosl.org (Postfix) with ESMTPS id 3FD47607C0 for ; Tue, 18 Oct 2022 01:09:12 +0000 (UTC) X-IronPort-AV: E=McAfee;i="6500,9779,10503"; a="307624124" X-IronPort-AV: E=Sophos;i="5.95,192,1661842800"; d="scan'208";a="307624124" Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Oct 2022 18:09:11 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10503"; a="717704414" X-IronPort-AV: E=Sophos;i="5.95,192,1661842800"; d="scan'208";a="717704414" Received: from zulkifl3-ilbpg0.png.intel.com ([10.88.229.82]) by FMSMGA003.fm.intel.com with ESMTP; 17 Oct 2022 18:09:08 -0700 From: Muhammad Husaini Zulkifli To: intel-wired-lan@osuosl.org Date: Tue, 18 Oct 2022 09:07:30 +0800 Message-Id: <20221018010733.4765-3-muhammad.husaini.zulkifli@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20221018010733.4765-1-muhammad.husaini.zulkifli@intel.com> References: <20221018010733.4765-1-muhammad.husaini.zulkifli@intel.com> X-Mailman-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1666055352; x=1697591352; h=from:to:cc:subject:date:message-id:in-reply-to: references; bh=xjj0YkAW4F3nyvpdguvfI3XQo+FdMI46/713tRluJBM=; b=KtzZHz0M3+N7GuanMBZPzYiyhYD6prsrgUq7N2eh6+1DSDK3+2FAOcDd L4KWQBGoL9WC2+doL/VqXFhimAzHbJbUPqsxpY/mMPUvwXBbwXLt4u7Bp Kwhpvlyq6jFIyNJyAx6ZL+QXVS/3UEtrPMEArXNeCNlJboOrPB2tgD9ii z3FBlNev+NwUDBRLCa7I55sf2EGK9jaCeY9+NImeXs8W0uaPgQ76PsZ9U MOB/lVdwFthjF75cx/r8OLsqzr5G0g259l4yN7sj1uk/N6SmccYFzUVJG QSP9TSd6SBWGSvVXo4j+sFieXHoV4WG61sUIqDAQAu/QG9UHvAlS0c3Cg g==; X-Mailman-Original-Authentication-Results: smtp3.osuosl.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=KtzZHz0M Subject: [Intel-wired-lan] [PATCH v2 2/5] net-timestamp: Increase the size of tsflags X-BeenThere: intel-wired-lan@osuosl.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel Wired Ethernet Linux Kernel Driver Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , 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 MIME-Version: 1.0 Errors-To: intel-wired-lan-bounces@osuosl.org Sender: "Intel-wired-lan" Increase the size of tsflags to support more SOF_TIMESTAMPING flags. Current flag size can only support up to 16 flags only. Suggested-by: Vinicius Costa Gomes Signed-off-by: Muhammad Husaini Zulkifli --- include/net/sock.h | 12 ++++++------ net/socket.c | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/include/net/sock.h b/include/net/sock.h index 08038a385ef2..ad5a3d44ad25 100644 --- a/include/net/sock.h +++ b/include/net/sock.h @@ -503,7 +503,7 @@ struct sock { #if BITS_PER_LONG==32 seqlock_t sk_stamp_seq; #endif - u16 sk_tsflags; + u32 sk_tsflags; u8 sk_shutdown; atomic_t sk_tskey; atomic_t sk_zckey; @@ -1892,7 +1892,7 @@ void sk_send_sigurg(struct sock *sk); struct sockcm_cookie { u64 transmit_time; u32 mark; - u16 tsflags; + u32 tsflags; }; static inline void sockcm_init(struct sockcm_cookie *sockc, @@ -2723,7 +2723,7 @@ static inline void sock_recv_cmsgs(struct msghdr *msg, struct sock *sk, sock_write_timestamp(sk, 0); } -void __sock_tx_timestamp(__u16 tsflags, __u8 *tx_flags); +void __sock_tx_timestamp(__u32 tsflags, __u8 *tx_flags); /** * _sock_tx_timestamp - checks whether the outgoing packet is to be time stamped @@ -2734,7 +2734,7 @@ void __sock_tx_timestamp(__u16 tsflags, __u8 *tx_flags); * * Note: callers should take care of initial ``*tx_flags`` value (usually 0) */ -static inline void _sock_tx_timestamp(struct sock *sk, __u16 tsflags, +static inline void _sock_tx_timestamp(struct sock *sk, __u32 tsflags, __u8 *tx_flags, __u32 *tskey) { if (unlikely(tsflags)) { @@ -2747,13 +2747,13 @@ static inline void _sock_tx_timestamp(struct sock *sk, __u16 tsflags, *tx_flags |= SKBTX_WIFI_STATUS; } -static inline void sock_tx_timestamp(struct sock *sk, __u16 tsflags, +static inline void sock_tx_timestamp(struct sock *sk, __u32 tsflags, __u8 *tx_flags) { _sock_tx_timestamp(sk, tsflags, tx_flags, NULL); } -static inline void skb_setup_tx_timestamp(struct sk_buff *skb, __u16 tsflags) +static inline void skb_setup_tx_timestamp(struct sk_buff *skb, __u32 tsflags) { _sock_tx_timestamp(skb->sk, tsflags, &skb_shinfo(skb)->tx_flags, &skb_shinfo(skb)->tskey); diff --git a/net/socket.c b/net/socket.c index 00da9ce3dba0..ab5d8973e719 100644 --- a/net/socket.c +++ b/net/socket.c @@ -679,7 +679,7 @@ void sock_release(struct socket *sock) } EXPORT_SYMBOL(sock_release); -void __sock_tx_timestamp(__u16 tsflags, __u8 *tx_flags) +void __sock_tx_timestamp(__u32 tsflags, __u8 *tx_flags) { u8 flags = *tx_flags; From patchwork Tue Oct 18 01:07:31 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Zulkifli, Muhammad Husaini" X-Patchwork-Id: 1691308 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=osuosl.org (client-ip=2605:bc80:3010::137; helo=smtp4.osuosl.org; envelope-from=intel-wired-lan-bounces@osuosl.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=osuosl.org header.i=@osuosl.org header.a=rsa-sha256 header.s=default header.b=iAlMZz+F; dkim-atps=neutral Received: from smtp4.osuosl.org (smtp4.osuosl.org [IPv6:2605:bc80:3010::137]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4MrwkF1lpnz23jp for ; Tue, 18 Oct 2022 12:09:25 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by smtp4.osuosl.org (Postfix) with ESMTP id 7DC8840252; Tue, 18 Oct 2022 01:09:23 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp4.osuosl.org 7DC8840252 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=osuosl.org; s=default; t=1666055363; bh=SFJcQ6C9qZOZJlyPZtPgar0NOxNXS3hNhOFIYVyYUVs=; h=From:To:Date:In-Reply-To:References:Subject:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: Cc:From; b=iAlMZz+FYZ0jwWuI0+46P+WNUteYHyidUZfVSH8T1Oa22e8QUNK/NJKNL/NuTJDIk JUm+YW8ocgO034k5QxCo4AWgoRb6En7z1uBJeuZmwaUnyHRW/GhzrOa8Pmwz+FW2Th nZ9XIXAEZRK+1ktcRF8UF56hDwo2b9HeWTwVzaQCrh5fA2HvRW6T8+C8bXBTdaQDQ3 1O9PW3kvqfKMgiT/fLnGuaS6k2W0OFdju8pqTJNIjsxAcdP2687rQjt8q1As9oUaNi K27NhxwRkvLiFV0mrbGQkfmiODpJerDMyLqUaO5SI76dO8+OBm4mU8i/IKCJEB1X0L Dm+EnK6vGnubw== X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp4.osuosl.org ([127.0.0.1]) by localhost (smtp4.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ElIQjCivg8xX; Tue, 18 Oct 2022 01:09:22 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by smtp4.osuosl.org (Postfix) with ESMTP id 2A8BA40880; Tue, 18 Oct 2022 01:09:22 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp4.osuosl.org 2A8BA40880 X-Original-To: intel-wired-lan@osuosl.org Delivered-To: intel-wired-lan@osuosl.org Received: from smtp3.osuosl.org (smtp3.osuosl.org [140.211.166.136]) by ash.osuosl.org (Postfix) with ESMTP id 83DC01BF399 for ; Tue, 18 Oct 2022 01:09:16 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp3.osuosl.org (Postfix) with ESMTP id 6C86B60ADB for ; Tue, 18 Oct 2022 01:09:16 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org 6C86B60ADB X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp3.osuosl.org ([127.0.0.1]) by localhost (smtp3.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id P9U-B8xZU126 for ; Tue, 18 Oct 2022 01:09:15 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.8.0 DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org 8E0E060FA3 Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by smtp3.osuosl.org (Postfix) with ESMTPS id 8E0E060FA3 for ; Tue, 18 Oct 2022 01:09:15 +0000 (UTC) X-IronPort-AV: E=McAfee;i="6500,9779,10503"; a="307624132" X-IronPort-AV: E=Sophos;i="5.95,192,1661842800"; d="scan'208";a="307624132" Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Oct 2022 18:09:15 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10503"; a="717704428" X-IronPort-AV: E=Sophos;i="5.95,192,1661842800"; d="scan'208";a="717704428" Received: from zulkifl3-ilbpg0.png.intel.com ([10.88.229.82]) by FMSMGA003.fm.intel.com with ESMTP; 17 Oct 2022 18:09:12 -0700 From: Muhammad Husaini Zulkifli To: intel-wired-lan@osuosl.org Date: Tue, 18 Oct 2022 09:07:31 +0800 Message-Id: <20221018010733.4765-4-muhammad.husaini.zulkifli@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20221018010733.4765-1-muhammad.husaini.zulkifli@intel.com> References: <20221018010733.4765-1-muhammad.husaini.zulkifli@intel.com> X-Mailman-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1666055355; x=1697591355; h=from:to:cc:subject:date:message-id:in-reply-to: references; bh=/X3NJNpAFZpLCntiaxyaosrbSVJWej2PE7E93BgbBVk=; b=HRJkeCxaU00NnxnMnlfjFES60Ey2zbacwRefkvO+eZ1BEIYomyxsXTsI hPmzoIntcPXvlzIunq8cCygmHdg7BYSKQOsr0aa1aTPwjAt9b+sO638p0 RtEsAyr0uo3mRyDl1rU/GEPJdzdyDjt68R4QSqF8LBLjTxg8qpMhfHkgI VSOjDztIWPXnqNieOslBvbTUvwfP8NU6cU4mTaMYGyc8j8x+FFBV4AkiO fsXnl6u1LgaBBdaRelDiCPuaQ0Udgo3VEbxCL5BMV39FEq0v9xEDXijiz xCC+E6Yve8E7lZHSG0fWFsFjZHST7RfM2JSQ1CylLF5t77U5N/chSxXX/ A==; X-Mailman-Original-Authentication-Results: smtp3.osuosl.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=HRJkeCxa Subject: [Intel-wired-lan] [PATCH v2 3/5] net: sock: extend SO_TIMESTAMPING for DMA Fetch X-BeenThere: intel-wired-lan@osuosl.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel Wired Ethernet Linux Kernel Driver Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , 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 MIME-Version: 1.0 Errors-To: intel-wired-lan-bounces@osuosl.org Sender: "Intel-wired-lan" This patch is to extend SO_TIMESTAMPING API to support the DMA Time Stamp by adding a new flag SOF_TIMESTAMPING_TX_HARDWARE_DMA_FETCH. User space application can configure this flag into hwtstamp_config flag if require to use the DMA Time Stamp for that socket application. Suggested-by: Vinicius Costa Gomes Signed-off-by: Muhammad Husaini Zulkifli --- include/linux/skbuff.h | 3 +++ include/uapi/linux/net_tstamp.h | 6 ++++-- net/ethtool/common.c | 1 + net/socket.c | 3 +++ 4 files changed, 11 insertions(+), 2 deletions(-) diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h index 9fcf534f2d92..49f0ef60701a 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h @@ -485,6 +485,9 @@ enum { /* generate software time stamp when entering packet scheduling */ SKBTX_SCHED_TSTAMP = 1 << 6, + + /* generate hardware DMA time stamp */ + SKBTX_HW_DMA_TSTAMP = 1 << 7, }; #define SKBTX_ANY_SW_TSTAMP (SKBTX_SW_TSTAMP | \ diff --git a/include/uapi/linux/net_tstamp.h b/include/uapi/linux/net_tstamp.h index 4966d5ca521f..c9e113cea883 100644 --- a/include/uapi/linux/net_tstamp.h +++ b/include/uapi/linux/net_tstamp.h @@ -31,8 +31,9 @@ enum { SOF_TIMESTAMPING_OPT_PKTINFO = (1<<13), SOF_TIMESTAMPING_OPT_TX_SWHW = (1<<14), SOF_TIMESTAMPING_BIND_PHC = (1 << 15), + SOF_TIMESTAMPING_TX_HARDWARE_DMA_FETCH = (1 << 16), - SOF_TIMESTAMPING_LAST = SOF_TIMESTAMPING_BIND_PHC, + SOF_TIMESTAMPING_LAST = SOF_TIMESTAMPING_TX_HARDWARE_DMA_FETCH, SOF_TIMESTAMPING_MASK = (SOF_TIMESTAMPING_LAST - 1) | SOF_TIMESTAMPING_LAST }; @@ -45,7 +46,8 @@ enum { #define SOF_TIMESTAMPING_TX_RECORD_MASK (SOF_TIMESTAMPING_TX_HARDWARE | \ SOF_TIMESTAMPING_TX_SOFTWARE | \ SOF_TIMESTAMPING_TX_SCHED | \ - SOF_TIMESTAMPING_TX_ACK) + SOF_TIMESTAMPING_TX_ACK | \ + SOF_TIMESTAMPING_TX_HARDWARE_DMA_FETCH) /** * struct so_timestamping - SO_TIMESTAMPING parameter diff --git a/net/ethtool/common.c b/net/ethtool/common.c index f2a178d162ef..24f8e7f9b4a5 100644 --- a/net/ethtool/common.c +++ b/net/ethtool/common.c @@ -403,6 +403,7 @@ const char sof_timestamping_names[][ETH_GSTRING_LEN] = { [const_ilog2(SOF_TIMESTAMPING_OPT_PKTINFO)] = "option-pktinfo", [const_ilog2(SOF_TIMESTAMPING_OPT_TX_SWHW)] = "option-tx-swhw", [const_ilog2(SOF_TIMESTAMPING_BIND_PHC)] = "bind-phc", + [const_ilog2(SOF_TIMESTAMPING_TX_HARDWARE_DMA_FETCH)] = "hardware-dma-transmit", }; static_assert(ARRAY_SIZE(sof_timestamping_names) == __SOF_TIMESTAMPING_CNT); diff --git a/net/socket.c b/net/socket.c index ab5d8973e719..9e2175685f4e 100644 --- a/net/socket.c +++ b/net/socket.c @@ -695,6 +695,9 @@ void __sock_tx_timestamp(__u32 tsflags, __u8 *tx_flags) flags |= SKBTX_HW_TSTAMP_USE_CYCLES; } + if (tsflags & SOF_TIMESTAMPING_TX_HARDWARE_DMA_FETCH) + flags |= SKBTX_HW_DMA_TSTAMP; + if (tsflags & SOF_TIMESTAMPING_TX_SOFTWARE) flags |= SKBTX_SW_TSTAMP; From patchwork Tue Oct 18 01:07:32 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Zulkifli, Muhammad Husaini" X-Patchwork-Id: 1691309 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=osuosl.org (client-ip=2605:bc80:3010::137; helo=smtp4.osuosl.org; envelope-from=intel-wired-lan-bounces@osuosl.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=osuosl.org header.i=@osuosl.org header.a=rsa-sha256 header.s=default header.b=3VVK4NFY; dkim-atps=neutral Received: from smtp4.osuosl.org (smtp4.osuosl.org [IPv6:2605:bc80:3010::137]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4MrwkM2VBwz23jp for ; Tue, 18 Oct 2022 12:09:31 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by smtp4.osuosl.org (Postfix) with ESMTP id 8B7B54069B; Tue, 18 Oct 2022 01:09:29 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp4.osuosl.org 8B7B54069B DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=osuosl.org; s=default; t=1666055369; bh=+WQoMtvuFUpkCVtoWFCzKoXXxjgFpk7RkHF9dsnGHZs=; h=From:To:Date:In-Reply-To:References:Subject:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: Cc:From; b=3VVK4NFYAqJmejDY7tTm8XFR5R48OyRRfrT8AAHqWtb6lnRjs1ZTZzB0lnLpJTHqJ LG9zclRIIaflKVpj5hmd36aBpQGTXbFb3wQF2sJSOjOGDIfr7ErK/qF2iOtdZBLUB4 xwYFGc74bg0yT83puB/4Xyb9YmvrPC1Tv53YmS2362kC1URDAVPqfJmvpABKddf88k BgUEBhvobmFq3zJQSLgg5ftXcBR6bI64el9gaO13o4U1WLMYuEbJiEc+KoqTiXGBfw XD4FKCqfpNl4RezPdm3fy63Gk6GLb7+4d44ikTv/pVZBe3Wo/HlIUS8xlik+pzEu3w 7cuecfMWlVPAA== X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp4.osuosl.org ([127.0.0.1]) by localhost (smtp4.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Nm9CJmAE5zJh; Tue, 18 Oct 2022 01:09:27 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by smtp4.osuosl.org (Postfix) with ESMTP id 27B6A40896; Tue, 18 Oct 2022 01:09:27 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp4.osuosl.org 27B6A40896 X-Original-To: intel-wired-lan@osuosl.org Delivered-To: intel-wired-lan@osuosl.org Received: from smtp3.osuosl.org (smtp3.osuosl.org [140.211.166.136]) by ash.osuosl.org (Postfix) with ESMTP id 146571BF399 for ; Tue, 18 Oct 2022 01:09:21 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp3.osuosl.org (Postfix) with ESMTP id E4001607C0 for ; Tue, 18 Oct 2022 01:09:20 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org E4001607C0 X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp3.osuosl.org ([127.0.0.1]) by localhost (smtp3.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id due5NRphUVFP for ; Tue, 18 Oct 2022 01:09:19 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.8.0 DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org BEBE160776 Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by smtp3.osuosl.org (Postfix) with ESMTPS id BEBE160776 for ; Tue, 18 Oct 2022 01:09:19 +0000 (UTC) X-IronPort-AV: E=McAfee;i="6500,9779,10503"; a="307624142" X-IronPort-AV: E=Sophos;i="5.95,192,1661842800"; d="scan'208";a="307624142" Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Oct 2022 18:09:19 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10503"; a="717704456" X-IronPort-AV: E=Sophos;i="5.95,192,1661842800"; d="scan'208";a="717704456" Received: from zulkifl3-ilbpg0.png.intel.com ([10.88.229.82]) by FMSMGA003.fm.intel.com with ESMTP; 17 Oct 2022 18:09:15 -0700 From: Muhammad Husaini Zulkifli To: intel-wired-lan@osuosl.org Date: Tue, 18 Oct 2022 09:07:32 +0800 Message-Id: <20221018010733.4765-5-muhammad.husaini.zulkifli@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20221018010733.4765-1-muhammad.husaini.zulkifli@intel.com> References: <20221018010733.4765-1-muhammad.husaini.zulkifli@intel.com> X-Mailman-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1666055359; x=1697591359; h=from:to:cc:subject:date:message-id:in-reply-to: references; bh=mMYZxYLtzUA09HyM2zDBclV5nMXSW/0b/hFR6Na8RrU=; b=lknxFPa6rWrlPo1NQ6w3Y2sP/TAW0TBVdXcKqTp6d7E3OWZhqMR4Q2XR zRvotUMP/bcoFLlonDuy2xkd/StDGgBeJmq+sxhJR+EzWZXXz0HagHMWX rMPxzmfGlx7kuWR8KurKCqJod2CjxkzYYRznN25R+/w3fN3GcURMATp3s S/qrsxGTqtmwHCDAxhSaSbhKxzfm+bgEeHnY/1eAHA/oAQATDvVRFIpo4 ayozS6ezQ7amirlvmnxhO9XXZJ687+uWNESkIHuRDqRsXK5AmaVuiX0Jy KWqrusFDGi37cObMgjP/FjNS+PSAAW/LEBDiKPbX3DeirNsiLym1k27mY Q==; X-Mailman-Original-Authentication-Results: smtp3.osuosl.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=lknxFPa6 Subject: [Intel-wired-lan] [PATCH v2 4/5] igc: Add support for DMA timestamp for non-PTP packets X-BeenThere: intel-wired-lan@osuosl.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel Wired Ethernet Linux Kernel Driver Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , 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 MIME-Version: 1.0 Errors-To: intel-wired-lan-bounces@osuosl.org Sender: "Intel-wired-lan" From: Vinicius Costa Gomes For PTP traffic, timestamp is retrieved from TXSTMP register. For all other packets, DMA time stamp field of the Transmit Descriptor Write-back is used. If the TXSTAMPO register is used for both PTP and non-PTP packets, there is a significant possibility that the time stamp for a PTP packet will be lost when there is a lot of traffic. This patch introduce to use the DMA Time Stamp for non PTP packet to solve the current issue. User application can add new SOF_TIMESTAMPING flag SOF_TIMESTAMPING_TX_HARDWARE_DMA_FETCH when configure the hwtstamp_config for the socket option if require DMA Time Stamp. Before: ptp4l: rms 2 max 5 freq -3404 +/- 3 delay 1 +/- 0 ptp4l: rms 3 max 6 freq -3400 +/- 3 delay 1 +/- 0 ptp4l: rms 2 max 4 freq -3400 +/- 3 delay 1 +/- 0 ptp4l: timed out while polling for tx timestamp ptp4l: increasing tx_timestamp_timeout may correct this issue, but it is likely caused by a driver bug ptp4l: port 1 (enp170s0.vlan): send peer delay response failed ptp4l: port 1 (enp170s0.vlan): SLAVE to FAULTY on FAULT_DETECTED ptp4l: port 1 (enp170s0.vlan): FAULTY to LISTENING on INIT_COMPLETE ptp4l: port 1 (enp170s0.vlan): LISTENING to MASTER on ANNOUNCE_RECEIPT_TIMEOUT_EXPIRES ptp4l: selected local clock aa00aa.fffe.00aa00 as best master ptp4l: port 1 (enp170s0.vlan): assuming the grand master role ptp4l: port 1 (enp170s0.vlan): new foreign master 22bb22.fffe.bb22bb-1 ptp4l: selected best master clock 22bb22.fffe.bb22bb ptp4l: port 1 (enp170s0.vlan): MASTER to UNCALIBRATED on RS_SLAVE ptp4l: port 1 (enp170s0.vlan): UNCALIBRATED to SLAVE on MASTER_CLOCK_SELECTED ptp4l: rms 39 max 66 freq -3355 +/- 45 delay 1 +/- 0 ptp4l: rms 20 max 36 freq -3339 +/- 12 delay 1 +/- 0 ptp4l: rms 11 max 18 freq -3371 +/- 11 delay 1 +/- 0 ptp4l: rms 10 max 16 freq -3384 +/- 2 delay 1 +/- 0 ptp4l: rms 1 max 2 freq -3375 +/- 2 delay 1 +/- 0 ptp4l: rms 3 max 6 freq -3373 +/- 4 delay 0 +/- 0 After: ptp4l: rms 3 max 4 freq -3386 +/- 4 delay 0 +/- 0 ptp4l: rms 3 max 7 freq -3380 +/- 3 delay 0 +/- 0 ptp4l: rms 3 max 6 freq -3380 +/- 3 delay 0 +/- 0 ptp4l: rms 1 max 3 freq -3381 +/- 2 delay 0 +/- 0 ptp4l: rms 3 max 5 freq -3377 +/- 2 delay 0 +/- 0 ptp4l: rms 2 max 3 freq -3377 +/- 2 delay 0 +/- 0 ptp4l: rms 3 max 6 freq -3375 +/- 4 delay 0 +/- 0 ptp4l: rms 2 max 4 freq -3380 +/- 2 delay 1 +/- 0 ptp4l: rms 4 max 7 freq -3385 +/- 3 delay 0 +/- 0 ptp4l: rms 2 max 3 freq -3384 +/- 2 delay 0 +/- 0 ptp4l: rms 4 max 7 freq -3376 +/- 2 delay 0 +/- 0 ptp4l: rms 3 max 5 freq -3376 +/- 4 delay 0 +/- 0 ptp4l: rms 3 max 5 freq -3382 +/- 2 delay 0 +/- 0 ptp4l: rms 5 max 7 freq -3389 +/- 2 delay 0 +/- 0 ptp4l: rms 3 max 4 freq -3388 +/- 3 delay 1 +/- 0 ptp4l: rms 3 max 5 freq -3387 +/- 4 delay 1 +/- 0 ptp4l: rms 5 max 8 freq -3395 +/- 3 delay 1 +/- 0 ptp4l: rms 5 max 8 freq -3399 +/- 4 delay 0 +/- 0 ptp4l: rms 2 max 5 freq -3397 +/- 3 delay 1 +/- 0 ptp4l: rms 2 max 4 freq -3397 +/- 3 delay 1 +/- 0 ptp4l: rms 2 max 3 freq -3397 +/- 2 delay 1 +/- 0 ptp4l: rms 3 max 5 freq -3391 +/- 2 delay 2 +/- 0 Test Setup: back-to-back communication between Host and DUT. Host will act as transmitter and DUT will become receiver. Host will generate the packet using sample application with timestamping_flag of SOF_TIMESTAMPING_TX_HARDWARE_DMA_FETCH and hwtstamp_config flag of HWTSTAMP_FLAG_DMA_TIMESTAMP. Signed-off-by: Vinicius Costa Gomes Co-developed-by: Muhammad Husaini Zulkifli Signed-off-by: Muhammad Husaini Zulkifli Co-developed-by: Aravindhan Gunasekaran Signed-off-by: Aravindhan Gunasekaran Signed-off-by: Muhammad Husaini Zulkifli --- drivers/net/ethernet/intel/igc/igc.h | 10 +++ drivers/net/ethernet/intel/igc/igc_base.h | 2 +- drivers/net/ethernet/intel/igc/igc_defines.h | 2 + drivers/net/ethernet/intel/igc/igc_ethtool.c | 5 +- drivers/net/ethernet/intel/igc/igc_main.c | 24 ++++-- drivers/net/ethernet/intel/igc/igc_ptp.c | 83 ++++++++++++++++++++ 6 files changed, 119 insertions(+), 7 deletions(-) diff --git a/drivers/net/ethernet/intel/igc/igc.h b/drivers/net/ethernet/intel/igc/igc.h index 1e7e7071f64d..38a24b5260d1 100644 --- a/drivers/net/ethernet/intel/igc/igc.h +++ b/drivers/net/ethernet/intel/igc/igc.h @@ -348,6 +348,12 @@ extern char igc_driver_name[]; #define IGC_I225_RX_LATENCY_1000 300 #define IGC_I225_RX_LATENCY_2500 1485 +/* Transmit latency (for DMA timestamps) in nanosecond */ +#define IGC_I225_TX_DMA_LATENCY_10 13100 +#define IGC_I225_TX_DMA_LATENCY_100 1410 +#define IGC_I225_TX_DMA_LATENCY_1000 285 +#define IGC_I225_TX_DMA_LATENCY_2500 1485 + /* RX and TX descriptor control thresholds. * PTHRESH - MAC will consider prefetch if it has fewer than this number of * descriptors available in its onboard memory. @@ -410,6 +416,8 @@ enum igc_tx_flags { /* olinfo flags */ IGC_TX_FLAGS_IPV4 = 0x10, IGC_TX_FLAGS_CSUM = 0x20, + + IGC_TX_FLAGS_DMA_TSTAMP = 0x200, }; enum igc_boards { @@ -627,6 +635,8 @@ void igc_ptp_reset(struct igc_adapter *adapter); void igc_ptp_suspend(struct igc_adapter *adapter); void igc_ptp_stop(struct igc_adapter *adapter); ktime_t igc_ptp_rx_pktstamp(struct igc_adapter *adapter, __le32 *buf); +void igc_ptp_tx_dma_tstamp(struct igc_adapter *adapter, + struct sk_buff *skb, u64 tstamp); int igc_ptp_set_ts_config(struct net_device *netdev, struct ifreq *ifr); int igc_ptp_get_ts_config(struct net_device *netdev, struct ifreq *ifr); void igc_ptp_tx_hang(struct igc_adapter *adapter); diff --git a/drivers/net/ethernet/intel/igc/igc_base.h b/drivers/net/ethernet/intel/igc/igc_base.h index ce530f5fd7bd..672cf2d92165 100644 --- a/drivers/net/ethernet/intel/igc/igc_base.h +++ b/drivers/net/ethernet/intel/igc/igc_base.h @@ -16,7 +16,7 @@ union igc_adv_tx_desc { __le32 olinfo_status; } read; struct { - __le64 rsvd; /* Reserved */ + __le64 dma_tstamp; __le32 nxtseq_seed; __le32 status; } wb; diff --git a/drivers/net/ethernet/intel/igc/igc_defines.h b/drivers/net/ethernet/intel/igc/igc_defines.h index f7311aeb293b..baedf48b4e2e 100644 --- a/drivers/net/ethernet/intel/igc/igc_defines.h +++ b/drivers/net/ethernet/intel/igc/igc_defines.h @@ -312,6 +312,7 @@ #define IGC_TXD_CMD_DEXT 0x20000000 /* Desc extension (0 = legacy) */ #define IGC_TXD_CMD_VLE 0x40000000 /* Add VLAN tag */ #define IGC_TXD_STAT_DD 0x00000001 /* Descriptor Done */ +#define IGC_TXD_STAT_TS_STAT 0x00000002 /* DMA Timestamp in packet */ #define IGC_TXD_CMD_TCP 0x01000000 /* TCP packet */ #define IGC_TXD_CMD_IP 0x02000000 /* IP packet */ #define IGC_TXD_CMD_TSE 0x04000000 /* TCP Seg enable */ @@ -520,6 +521,7 @@ /* Transmit Scheduling */ #define IGC_TQAVCTRL_TRANSMIT_MODE_TSN 0x00000001 #define IGC_TQAVCTRL_ENHANCED_QAV 0x00000008 +#define IGC_TQAVCTRL_1588_STAT_EN 0x00000004 #define IGC_TXQCTL_QUEUE_MODE_LAUNCHT 0x00000001 #define IGC_TXQCTL_STRICT_CYCLE 0x00000002 diff --git a/drivers/net/ethernet/intel/igc/igc_ethtool.c b/drivers/net/ethernet/intel/igc/igc_ethtool.c index 8cc077b712ad..7d198fb6d619 100644 --- a/drivers/net/ethernet/intel/igc/igc_ethtool.c +++ b/drivers/net/ethernet/intel/igc/igc_ethtool.c @@ -1532,7 +1532,8 @@ static int igc_ethtool_get_ts_info(struct net_device *dev, SOF_TIMESTAMPING_SOFTWARE | SOF_TIMESTAMPING_TX_HARDWARE | SOF_TIMESTAMPING_RX_HARDWARE | - SOF_TIMESTAMPING_RAW_HARDWARE; + SOF_TIMESTAMPING_RAW_HARDWARE | + SOF_TIMESTAMPING_TX_HARDWARE_DMA_FETCH; info->tx_types = BIT(HWTSTAMP_TX_OFF) | @@ -1541,6 +1542,8 @@ static int igc_ethtool_get_ts_info(struct net_device *dev, info->rx_filters = BIT(HWTSTAMP_FILTER_NONE); info->rx_filters |= BIT(HWTSTAMP_FILTER_ALL); + info->flag = HWTSTAMP_FLAG_DMA_TIMESTAMP; + return 0; default: return -EOPNOTSUPP; diff --git a/drivers/net/ethernet/intel/igc/igc_main.c b/drivers/net/ethernet/intel/igc/igc_main.c index 671255edf3c2..daa6ca5acab3 100644 --- a/drivers/net/ethernet/intel/igc/igc_main.c +++ b/drivers/net/ethernet/intel/igc/igc_main.c @@ -1415,6 +1415,7 @@ static int igc_tso(struct igc_ring *tx_ring, static netdev_tx_t igc_xmit_frame_ring(struct sk_buff *skb, struct igc_ring *tx_ring) { + struct igc_adapter *adapter = netdev_priv(tx_ring->netdev); u16 count = TXD_USE_COUNT(skb_headlen(skb)); __be16 protocol = vlan_get_protocol(skb); struct igc_tx_buffer *first; @@ -1445,16 +1446,14 @@ static netdev_tx_t igc_xmit_frame_ring(struct sk_buff *skb, first->bytecount = skb->len; first->gso_segs = 1; - if (unlikely(skb_shinfo(skb)->tx_flags & SKBTX_HW_TSTAMP)) { - struct igc_adapter *adapter = netdev_priv(tx_ring->netdev); - + if (unlikely((skb_shinfo(skb)->tx_flags & SKBTX_HW_TSTAMP) && + !(skb_shinfo(skb)->tx_flags & SKBTX_HW_DMA_TSTAMP))) { /* FIXME: add support for retrieving timestamps from * the other timer registers before skipping the * timestamping request. */ if (adapter->tstamp_config.tx_type == HWTSTAMP_TX_ON && - !test_and_set_bit_lock(__IGC_PTP_TX_IN_PROGRESS, - &adapter->state)) { + !test_and_set_bit_lock(__IGC_PTP_TX_IN_PROGRESS, &adapter->state)) { skb_shinfo(skb)->tx_flags |= SKBTX_IN_PROGRESS; tx_flags |= IGC_TX_FLAGS_TSTAMP; @@ -1463,6 +1462,14 @@ static netdev_tx_t igc_xmit_frame_ring(struct sk_buff *skb, } else { adapter->tx_hwtstamp_skipped++; } + } else if (unlikely(skb_shinfo(skb)->tx_flags & SKBTX_HW_DMA_TSTAMP)) { + if (adapter->tstamp_config.tx_type == HWTSTAMP_TX_ON && + adapter->tstamp_config.flags == HWTSTAMP_FLAG_DMA_TIMESTAMP) { + skb_shinfo(skb)->tx_flags |= SKBTX_IN_PROGRESS; + tx_flags |= IGC_TX_FLAGS_DMA_TSTAMP; + } else { + adapter->tx_hwtstamp_skipped++; + } } if (skb_vlan_tag_present(skb)) { @@ -2741,6 +2748,13 @@ static bool igc_clean_tx_irq(struct igc_q_vector *q_vector, int napi_budget) if (!(eop_desc->wb.status & cpu_to_le32(IGC_TXD_STAT_DD))) break; + if (eop_desc->wb.status & cpu_to_le32(IGC_TXD_STAT_TS_STAT) && + tx_buffer->tx_flags & IGC_TX_FLAGS_DMA_TSTAMP) { + u64 tstamp = le64_to_cpu(eop_desc->wb.dma_tstamp); + + igc_ptp_tx_dma_tstamp(adapter, tx_buffer->skb, tstamp); + } + /* clear next_to_watch to prevent false hangs */ tx_buffer->next_to_watch = NULL; diff --git a/drivers/net/ethernet/intel/igc/igc_ptp.c b/drivers/net/ethernet/intel/igc/igc_ptp.c index 8dbb9f903ca7..631972d7e97b 100644 --- a/drivers/net/ethernet/intel/igc/igc_ptp.c +++ b/drivers/net/ethernet/intel/igc/igc_ptp.c @@ -432,6 +432,29 @@ static void igc_ptp_systim_to_hwtstamp(struct igc_adapter *adapter, } } +static void igc_ptp_dma_time_to_hwtstamp(struct igc_adapter *adapter, + struct skb_shared_hwtstamps *hwtstamps, + u64 systim) +{ + struct igc_hw *hw = &adapter->hw; + u32 sec, nsec; + + nsec = rd32(IGC_SYSTIML); + sec = rd32(IGC_SYSTIMH); + + if (unlikely(nsec < (systim & 0xFFFFFFFF))) + --sec; + + switch (adapter->hw.mac.type) { + case igc_i225: + memset(hwtstamps, 0, sizeof(*hwtstamps)); + hwtstamps->hwtstamp = ktime_set(sec, systim & 0xFFFFFFFF); + break; + default: + break; + } +} + /** * igc_ptp_rx_pktstamp - Retrieve timestamp from Rx packet buffer * @adapter: Pointer to adapter the packet buffer belongs to @@ -549,6 +572,28 @@ static void igc_ptp_enable_tx_timestamp(struct igc_adapter *adapter) rd32(IGC_TXSTMPH); } +static void igc_ptp_disable_dma_timestamp(struct igc_adapter *adapter) +{ + struct igc_hw *hw = &adapter->hw; + u32 tqavctrl; + + tqavctrl = rd32(IGC_TQAVCTRL); + tqavctrl &= ~IGC_TQAVCTRL_1588_STAT_EN; + + wr32(IGC_TQAVCTRL, tqavctrl); +} + +static void igc_ptp_enable_dma_timestamp(struct igc_adapter *adapter) +{ + struct igc_hw *hw = &adapter->hw; + u32 tqavctrl; + + tqavctrl = rd32(IGC_TQAVCTRL); + tqavctrl |= IGC_TQAVCTRL_1588_STAT_EN; + + wr32(IGC_TQAVCTRL, tqavctrl); +} + /** * igc_ptp_set_timestamp_mode - setup hardware for timestamping * @adapter: networking device structure @@ -562,9 +607,14 @@ static int igc_ptp_set_timestamp_mode(struct igc_adapter *adapter, switch (config->tx_type) { case HWTSTAMP_TX_OFF: igc_ptp_disable_tx_timestamp(adapter); + igc_ptp_disable_dma_timestamp(adapter); break; case HWTSTAMP_TX_ON: igc_ptp_enable_tx_timestamp(adapter); + + /* Ensure that flag only can be used during HWTSTAMP_TX_ON */ + if (config->flags == HWTSTAMP_FLAG_DMA_TIMESTAMP) + igc_ptp_enable_dma_timestamp(adapter); break; default: return -ERANGE; @@ -683,6 +733,39 @@ static void igc_ptp_tx_hwtstamp(struct igc_adapter *adapter) dev_kfree_skb_any(skb); } +void igc_ptp_tx_dma_tstamp(struct igc_adapter *adapter, + struct sk_buff *skb, u64 tstamp) +{ + struct skb_shared_hwtstamps shhwtstamps; + int adjust = 0; + + if (!(skb_shinfo(skb)->tx_flags & SKBTX_IN_PROGRESS)) + return; + + igc_ptp_dma_time_to_hwtstamp(adapter, &shhwtstamps, tstamp); + + switch (adapter->link_speed) { + case SPEED_10: + adjust = IGC_I225_TX_DMA_LATENCY_10; + break; + case SPEED_100: + adjust = IGC_I225_TX_DMA_LATENCY_100; + break; + case SPEED_1000: + adjust = IGC_I225_TX_DMA_LATENCY_1000; + break; + case SPEED_2500: + adjust = IGC_I225_TX_DMA_LATENCY_2500; + break; + } + + shhwtstamps.hwtstamp = + ktime_add_ns(shhwtstamps.hwtstamp, adjust); + + /* Notify the stack and free the skb after we've unlocked */ + skb_tstamp_tx(skb, &shhwtstamps); +} + /** * igc_ptp_tx_work * @work: pointer to work struct From patchwork Tue Oct 18 01:07:33 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Zulkifli, Muhammad Husaini" X-Patchwork-Id: 1691310 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=osuosl.org (client-ip=140.211.166.133; helo=smtp2.osuosl.org; envelope-from=intel-wired-lan-bounces@osuosl.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=osuosl.org header.i=@osuosl.org header.a=rsa-sha256 header.s=default header.b=kL8E1yfz; dkim-atps=neutral Received: from smtp2.osuosl.org (smtp2.osuosl.org [140.211.166.133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4MrwkQ51mDz23jp for ; Tue, 18 Oct 2022 12:09:34 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by smtp2.osuosl.org (Postfix) with ESMTP id CA6A9400AF; Tue, 18 Oct 2022 01:09:32 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp2.osuosl.org CA6A9400AF DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=osuosl.org; s=default; t=1666055372; bh=qWPgCSTQcMV+yaAArNi4AwjeKkY/yNw/wJPNLbPcuIM=; h=From:To:Date:In-Reply-To:References:Subject:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: Cc:From; b=kL8E1yfzA5tvWVAkVBWjR/BNyKPCktTPY5tAvCEzYrMG2/kFPDKpur9S/oEjl7LPt QelUr5Bev+sci+rICd2uYZ9UJwqFHiN4YATDiaahjFc6sbCey7DkWB9A+5aL/3SMfW PvWfFxOkXZtBxQyn+0lWFhhlGWIUMkhARxmqrxw+VlwTVphTDTph90def5Nk8XG6Zm nOVB0FIWEn1Jgm0wcV+294dRpAbpWULXq8OL5ne47k63N7h8NovML2KX6zauO/5PfB TdH0DuADmOEqUGIt9RN98q4RvCgowJEbAGDiQarNZAzPgPCGEUAScSQZAlZHMYnMfI oxls+Rl+RHO4A== X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp2.osuosl.org ([127.0.0.1]) by localhost (smtp2.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id IG4eduHsktCt; Tue, 18 Oct 2022 01:09:32 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by smtp2.osuosl.org (Postfix) with ESMTP id AEA204018E; Tue, 18 Oct 2022 01:09:31 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp2.osuosl.org AEA204018E X-Original-To: intel-wired-lan@osuosl.org Delivered-To: intel-wired-lan@osuosl.org Received: from smtp3.osuosl.org (smtp3.osuosl.org [140.211.166.136]) by ash.osuosl.org (Postfix) with ESMTP id 6F5E31BF399 for ; Tue, 18 Oct 2022 01:09:23 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp3.osuosl.org (Postfix) with ESMTP id 584BF607C0 for ; Tue, 18 Oct 2022 01:09:23 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org 584BF607C0 X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp3.osuosl.org ([127.0.0.1]) by localhost (smtp3.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id g74eMsNbVp6N for ; Tue, 18 Oct 2022 01:09:22 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.8.0 DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org AA13160776 Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by smtp3.osuosl.org (Postfix) with ESMTPS id AA13160776 for ; Tue, 18 Oct 2022 01:09:22 +0000 (UTC) X-IronPort-AV: E=McAfee;i="6500,9779,10503"; a="307624150" X-IronPort-AV: E=Sophos;i="5.95,192,1661842800"; d="scan'208";a="307624150" Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Oct 2022 18:09:22 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10503"; a="717704470" X-IronPort-AV: E=Sophos;i="5.95,192,1661842800"; d="scan'208";a="717704470" Received: from zulkifl3-ilbpg0.png.intel.com ([10.88.229.82]) by FMSMGA003.fm.intel.com with ESMTP; 17 Oct 2022 18:09:19 -0700 From: Muhammad Husaini Zulkifli To: intel-wired-lan@osuosl.org Date: Tue, 18 Oct 2022 09:07:33 +0800 Message-Id: <20221018010733.4765-6-muhammad.husaini.zulkifli@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20221018010733.4765-1-muhammad.husaini.zulkifli@intel.com> References: <20221018010733.4765-1-muhammad.husaini.zulkifli@intel.com> X-Mailman-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1666055362; x=1697591362; h=from:to:cc:subject:date:message-id:in-reply-to: references; bh=/fIBo7hgaZxh4uv3Wc6ZmEJ4CD1I02BsVLcw1qCiQyE=; b=YJPmj9ttlqmSHesniH+3vIOvnLI93mRootdK9cnIdRaKWFJG7EDSCn5I Zbc1YCPuxDiA7lk6ywVcnMEXQXmO7moe3yfQVOH7KId0pLajEw+QXjQ2k 2mUzHKVVKadmOYPgI+7WNqIsF3qWK6zxFWjoMPLrl5E5vQ3LCgG/WWKTj Z2AAWD5KktWWTvgiV967GMVCdRfRfFPkpySzzCwnA+wTNW3RicwMbb31y nJlTbQ7ZW+bTAmhNLsJ+yYPq+7wVn+/dBV7aCz5B2S2+b+PZGl2grpZpv nyz0nQ8voW4qGE1bdvAd9Cu71hDqzQ043inSl1JjYI7hZPUCyK6v9TRWa w==; X-Mailman-Original-Authentication-Results: smtp3.osuosl.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=YJPmj9tt Subject: [Intel-wired-lan] [PATCH v2 5/5] ethtool: Add support for HWTSTAMP_FILTER_DMA_TIMESTAMP X-BeenThere: intel-wired-lan@osuosl.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel Wired Ethernet Linux Kernel Driver Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , 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 MIME-Version: 1.0 Errors-To: intel-wired-lan-bounces@osuosl.org Sender: "Intel-wired-lan" Add new HWTSTAMP_FILTER_DMA_TIMESTAMP receive filters. This filter can be configured for devices that support/allow the DMA timestamp retrieval on receive side. Signed-off-by: Muhammad Husaini Zulkifli --- drivers/net/ethernet/intel/igc/igc_ptp.c | 1 + include/uapi/linux/net_tstamp.h | 3 +++ net/core/dev_ioctl.c | 1 + net/ethtool/common.c | 1 + 4 files changed, 6 insertions(+) diff --git a/drivers/net/ethernet/intel/igc/igc_ptp.c b/drivers/net/ethernet/intel/igc/igc_ptp.c index 631972d7e97b..39ed759f9057 100644 --- a/drivers/net/ethernet/intel/igc/igc_ptp.c +++ b/drivers/net/ethernet/intel/igc/igc_ptp.c @@ -637,6 +637,7 @@ static int igc_ptp_set_timestamp_mode(struct igc_adapter *adapter, case HWTSTAMP_FILTER_PTP_V2_L4_DELAY_REQ: case HWTSTAMP_FILTER_PTP_V1_L4_EVENT: case HWTSTAMP_FILTER_NTP_ALL: + case HWTSTAMP_FILTER_DMA_TIMESTAMP: case HWTSTAMP_FILTER_ALL: igc_ptp_enable_rx_timestamp(adapter); config->rx_filter = HWTSTAMP_FILTER_ALL; diff --git a/include/uapi/linux/net_tstamp.h b/include/uapi/linux/net_tstamp.h index c9e113cea883..e72261ed879f 100644 --- a/include/uapi/linux/net_tstamp.h +++ b/include/uapi/linux/net_tstamp.h @@ -177,6 +177,9 @@ enum hwtstamp_rx_filters { /* NTP, UDP, all versions and packet modes */ HWTSTAMP_FILTER_NTP_ALL, + /* DMA time stamp packet */ + HWTSTAMP_FILTER_DMA_TIMESTAMP, + /* add new constants above here */ __HWTSTAMP_FILTER_CNT }; diff --git a/net/core/dev_ioctl.c b/net/core/dev_ioctl.c index 7674bb9f3076..963327472c26 100644 --- a/net/core/dev_ioctl.c +++ b/net/core/dev_ioctl.c @@ -229,6 +229,7 @@ static int net_hwtstamp_validate(struct ifreq *ifr) case HWTSTAMP_FILTER_PTP_V2_SYNC: case HWTSTAMP_FILTER_PTP_V2_DELAY_REQ: case HWTSTAMP_FILTER_NTP_ALL: + case HWTSTAMP_FILTER_DMA_TIMESTAMP: rx_filter_valid = 1; break; case __HWTSTAMP_FILTER_CNT: diff --git a/net/ethtool/common.c b/net/ethtool/common.c index 24f8e7f9b4a5..fe6e5dfdfcce 100644 --- a/net/ethtool/common.c +++ b/net/ethtool/common.c @@ -438,6 +438,7 @@ const char ts_rx_filter_names[][ETH_GSTRING_LEN] = { [HWTSTAMP_FILTER_PTP_V2_SYNC] = "ptpv2-sync", [HWTSTAMP_FILTER_PTP_V2_DELAY_REQ] = "ptpv2-delay-req", [HWTSTAMP_FILTER_NTP_ALL] = "ntp-all", + [HWTSTAMP_FILTER_DMA_TIMESTAMP] = "dma-timestamp", }; static_assert(ARRAY_SIZE(ts_rx_filter_names) == __HWTSTAMP_FILTER_CNT);