From: Jakub Kicinski <kuba@kernel.org>
To: Kory Maincent <kory.maincent@bootlin.com>
Cc: Florian Fainelli <florian.fainelli@broadcom.com>,
Broadcom internal kernel review list
<bcm-kernel-feedback-list@broadcom.com>,
Andrew Lunn <andrew@lunn.ch>,
Heiner Kallweit <hkallweit1@gmail.com>,
Russell King <linux@armlinux.org.uk>,
"David S. Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Paolo Abeni <pabeni@redhat.com>,
Richard Cochran <richardcochran@gmail.com>,
Radu Pirea <radu-nicolae.pirea@oss.nxp.com>,
Jay Vosburgh <j.vosburgh@gmail.com>,
Andy Gospodarek <andy@greyhouse.net>,
Nicolas Ferre <nicolas.ferre@microchip.com>,
Claudiu Beznea <claudiu.beznea@tuxon.dev>,
Willem de Bruijn <willemdebruijn.kernel@gmail.com>,
Jonathan Corbet <corbet@lwn.net>,
Horatiu Vultur <horatiu.vultur@microchip.com>,
UNGLinuxDriver@microchip.com, Simon Horman <horms@kernel.org>,
Vladimir Oltean <vladimir.oltean@nxp.com>,
donald.hunter@gmail.com, danieller@nvidia.com,
ecree.xilinx@gmail.com, Andrew Lunn <andrew+netdev@lunn.ch>,
Thomas Petazzoni <thomas.petazzoni@bootlin.com>,
linux-kernel@vger.kernel.org, netdev@vger.kernel.org,
linux-doc@vger.kernel.org,
Maxime Chevallier <maxime.chevallier@bootlin.com>,
Rahul Rameshbabu <rrameshbabu@nvidia.com>,
Willem de Bruijn <willemb@google.com>,
Shannon Nelson <shannon.nelson@amd.com>,
Alexandra Winter <wintera@linux.ibm.com>,
Jacob Keller <jacob.e.keller@intel.com>
Subject: Re: [PATCH net-next v19 08/10] net: ethtool: tsinfo: Add support for reading tsinfo for a specific hwtstamp provider
Date: Mon, 11 Nov 2024 15:12:32 -0800 [thread overview]
Message-ID: <20241111151232.6827f48b@kernel.org> (raw)
In-Reply-To: <20241030-feature_ptp_netnext-v19-8-94f8aadc9d5c@bootlin.com>
On Wed, 30 Oct 2024 14:54:50 +0100 Kory Maincent wrote:
> diff --git a/net/ethtool/common.c b/net/ethtool/common.c
> index 0d62363dbd9d..a50cddd36b6d 100644
> --- a/net/ethtool/common.c
> +++ b/net/ethtool/common.c
> @@ -745,12 +745,45 @@ int ethtool_check_ops(const struct ethtool_ops *ops)
> return 0;
> }
>
> +int ethtool_get_ts_info_by_phc(struct net_device *dev,
> + struct kernel_ethtool_ts_info *info,
> + struct hwtstamp_provider *hwtstamp)
> +{
> + const struct ethtool_ops *ops = dev->ethtool_ops;
> + int err = 0;
> +
> + memset(info, 0, sizeof(*info));
> + info->cmd = ETHTOOL_GET_TS_INFO;
> + info->phc_qualifier = hwtstamp->qualifier;
> + info->phc_index = -1;
> +
> + if (!netdev_support_hwtstamp(dev, hwtstamp))
> + return -ENODEV;
> +
> + if (ptp_clock_from_phylib(hwtstamp->ptp) &&
> + phy_has_tsinfo(ptp_clock_phydev(hwtstamp->ptp)))
> + err = phy_ts_info(ptp_clock_phydev(hwtstamp->ptp), info);
> +
> + if (ptp_clock_from_netdev(hwtstamp->ptp) && ops->get_ts_info)
> + err = ops->get_ts_info(dev, info);
Is it not possibly to cleanly fold this into __ethtool_get_ts_info()?
looks like half of this function is a copy/paste.
> + info->so_timestamping |= SOF_TIMESTAMPING_RX_SOFTWARE |
> + SOF_TIMESTAMPING_SOFTWARE;
> +
> + return err;
> +}
> +++ b/net/ethtool/ts.h
> @@ -0,0 +1,52 @@
> +/* SPDX-License-Identifier: GPL-2.0-only */
> +
> +#ifndef _NET_ETHTOOL_TS_H
> +#define _NET_ETHTOOL_TS_H
> +
> +#include "netlink.h"
> +
> +struct hwtst_provider {
> + int index;
> + u32 qualifier;
> +};
> +
> +static const struct nla_policy
> +ethnl_ts_hwtst_prov_policy[ETHTOOL_A_TS_HWTSTAMP_PROVIDER_MAX + 1] = {
> + [ETHTOOL_A_TS_HWTSTAMP_PROVIDER_INDEX] =
> + NLA_POLICY_MIN(NLA_S32, 0),
> + [ETHTOOL_A_TS_HWTSTAMP_PROVIDER_QUALIFIER] =
> + NLA_POLICY_MAX(NLA_U32, HWTSTAMP_PROVIDER_QUALIFIER_CNT - 1)
> +};
> +
> +static inline int ts_parse_hwtst_provider(const struct nlattr *nest,
why not just put it in tsinfo.c and call it from the tsconfig.c;
or vice versa ??
> + struct hwtst_provider *hwtst,
> + struct netlink_ext_ack *extack,
> + bool *mod)
> +{
> + struct nlattr *tb[ARRAY_SIZE(ethnl_ts_hwtst_prov_policy)];
> + int ret;
> +
> + ret = nla_parse_nested(tb,
> + ARRAY_SIZE(ethnl_ts_hwtst_prov_policy) - 1,
> + nest,
> + if (req->hwtst.index != -1) {
> + struct hwtstamp_provider hwtstamp;
please name the hwtstamp_provider variables something more sensible
Maybe tsprov or hwprov? We already call the timestamps and the config
hwtstamp. It makes the code much harder to read.
> - if (ts_info->phc_index >= 0)
> + if (ts_info->phc_index >= 0) {
> + /* _TSINFO_HWTSTAMP_PROVIDER */
> + len += 2 * nla_total_size(sizeof(u32));
and a nest?
> len += nla_total_size(sizeof(u32)); /* _TSINFO_PHC_INDEX */
> + }
> if (req_base->flags & ETHTOOL_FLAG_STATS)
> len += nla_total_size(0) + /* _TSINFO_STATS */
> nla_total_size_64bit(sizeof(u64)) * ETHTOOL_TS_STAT_CNT;
> + reply_data->base.dev = NULL;
> + if (!ret && ehdr)
> + genlmsg_end(skb, ehdr);
> + else
> + genlmsg_cancel(skb, ehdr);
please use goto and a separate path for error handling
clarity > LoC
next prev parent reply other threads:[~2024-11-11 23:12 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-30 13:54 [PATCH net-next v19 00/10] net: Make timestamping selectable Kory Maincent
2024-10-30 13:54 ` [PATCH net-next v19 01/10] net: Make dev_get_hwtstamp_phylib accessible Kory Maincent
2024-10-30 13:54 ` [PATCH net-next v19 02/10] net: Make net_hwtstamp_validate accessible Kory Maincent
2024-10-30 13:54 ` [PATCH net-next v19 03/10] ptp: Add phc source and helpers to register specific PTP clock or get information Kory Maincent
2024-11-11 23:06 ` Jakub Kicinski
2024-11-12 10:12 ` Kory Maincent
2024-11-13 2:22 ` Jakub Kicinski
2024-11-13 10:38 ` Kory Maincent
2024-11-14 0:39 ` Jakub Kicinski
2024-11-14 10:46 ` Kory Maincent
2024-11-15 1:39 ` Jakub Kicinski
2024-11-15 9:12 ` Kory Maincent
2024-10-30 13:54 ` [PATCH net-next v19 04/10] net: Add the possibility to support a selected hwtstamp in netdevice Kory Maincent
2024-10-30 13:54 ` [PATCH net-next v19 05/10] net: netdevsim: ptp_mock: Convert to netdev_ptp_clock_register Kory Maincent
2024-10-30 13:54 ` [PATCH net-next v19 06/10] net: macb: " Kory Maincent
2024-10-30 13:54 ` [PATCH net-next v19 07/10] net: ptp: Move ptp_clock_index() to builtin symbol Kory Maincent
2024-10-30 13:54 ` [PATCH net-next v19 08/10] net: ethtool: tsinfo: Add support for reading tsinfo for a specific hwtstamp provider Kory Maincent
2024-11-11 23:12 ` Jakub Kicinski [this message]
2024-10-30 13:54 ` [PATCH net-next v19 09/10] net: ethtool: Add support for tsconfig command to get/set hwtstamp config Kory Maincent
2024-11-09 1:43 ` Vadim Fedorenko
2024-11-12 10:16 ` Kory Maincent
2024-10-30 13:54 ` [PATCH net-next v19 10/10] netlink: specs: Enhance tsinfo netlink attributes and add a tsconfig set command Kory Maincent
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=20241111151232.6827f48b@kernel.org \
--to=kuba@kernel.org \
--cc=UNGLinuxDriver@microchip.com \
--cc=andrew+netdev@lunn.ch \
--cc=andrew@lunn.ch \
--cc=andy@greyhouse.net \
--cc=bcm-kernel-feedback-list@broadcom.com \
--cc=claudiu.beznea@tuxon.dev \
--cc=corbet@lwn.net \
--cc=danieller@nvidia.com \
--cc=davem@davemloft.net \
--cc=donald.hunter@gmail.com \
--cc=ecree.xilinx@gmail.com \
--cc=edumazet@google.com \
--cc=florian.fainelli@broadcom.com \
--cc=hkallweit1@gmail.com \
--cc=horatiu.vultur@microchip.com \
--cc=horms@kernel.org \
--cc=j.vosburgh@gmail.com \
--cc=jacob.e.keller@intel.com \
--cc=kory.maincent@bootlin.com \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@armlinux.org.uk \
--cc=maxime.chevallier@bootlin.com \
--cc=netdev@vger.kernel.org \
--cc=nicolas.ferre@microchip.com \
--cc=pabeni@redhat.com \
--cc=radu-nicolae.pirea@oss.nxp.com \
--cc=richardcochran@gmail.com \
--cc=rrameshbabu@nvidia.com \
--cc=shannon.nelson@amd.com \
--cc=thomas.petazzoni@bootlin.com \
--cc=vladimir.oltean@nxp.com \
--cc=willemb@google.com \
--cc=willemdebruijn.kernel@gmail.com \
--cc=wintera@linux.ibm.com \
/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;
as well as URLs for NNTP newsgroup(s).