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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.