From: Przemek Kitszel <przemyslaw.kitszel@intel.com>
To: Faizal Rahim <faizal.abdul.rahim@linux.intel.com>
Cc: Tony Nguyen <anthony.l.nguyen@intel.com>,
Andrew Lunn <andrew+netdev@lunn.ch>,
"David S . Miller" <davem@davemloft.net>,
"Eric Dumazet" <edumazet@google.com>,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
Maxime Coquelin <mcoquelin.stm32@gmail.com>,
"Alexandre Torgue" <alexandre.torgue@foss.st.com>,
Simon Horman <horms@kernel.org>,
Russell King <linux@armlinux.org.uk>,
Alexei Starovoitov <ast@kernel.org>,
Daniel Borkmann <daniel@iogearbox.net>,
Jesper Dangaard Brouer <hawk@kernel.org>,
John Fastabend <john.fastabend@gmail.com>,
Furong Xu <0x1207@gmail.com>,
Russell King <rmk+kernel@armlinux.org.uk>,
"Vladimir Oltean" <vladimir.oltean@nxp.com>,
Serge Semin <fancer.lancer@gmail.com>,
Xiaolei Wang <xiaolei.wang@windriver.com>,
Suraj Jaiswal <quic_jsuraj@quicinc.com>,
Kory Maincent <kory.maincent@bootlin.com>,
"Gal Pressman" <gal@nvidia.com>,
Jesper Nilsson <jesper.nilsson@axis.com>,
"Andrew Halaney" <ahalaney@redhat.com>,
Choong Yong Liang <yong.liang.choong@linux.intel.com>,
Kunihiko Hayashi <hayashi.kunihiko@socionext.com>,
Vinicius Costa Gomes <vinicius.gomes@intel.com>,
<intel-wired-lan@lists.osuosl.org>, <netdev@vger.kernel.org>,
<linux-kernel@vger.kernel.org>,
<linux-stm32@st-md-mailman.stormreply.com>,
<linux-arm-kernel@lists.infradead.org>, <bpf@vger.kernel.org>
Subject: Re: [PATCH iwl-next v6 5/9] igc: Add support for frame preemption verification
Date: Fri, 28 Feb 2025 11:15:36 +0100 [thread overview]
Message-ID: <99df73ed-7988-405c-b6f9-e251ec11bb67@intel.com> (raw)
In-Reply-To: <20250227140158.2129988-6-faizal.abdul.rahim@linux.intel.com>
On 2/27/25 15:01, Faizal Rahim wrote:
> This patch implements the "ethtool --set-mm" callback to trigger the
> frame preemption verification handshake.
>
> Uses the MAC Merge Software Verification (mmsv) mechanism in ethtool
> to perform the verification handshake for igc.
> The structure fpe.mmsv is set by mmsv in ethtool and should remain
> read-only for the driver.
>
[..]
Thank you for the series, please find some comments inline,
sorry for them being mostly nitpicks.
> ---
> drivers/net/ethernet/intel/igc/igc.h | 12 +-
> drivers/net/ethernet/intel/igc/igc_base.h | 1 +
> drivers/net/ethernet/intel/igc/igc_defines.h | 8 +-
> drivers/net/ethernet/intel/igc/igc_ethtool.c | 21 +++
> drivers/net/ethernet/intel/igc/igc_main.c | 53 ++++++-
> drivers/net/ethernet/intel/igc/igc_tsn.c | 147 ++++++++++++++++++-
> drivers/net/ethernet/intel/igc/igc_tsn.h | 51 +++++++
> 7 files changed, 288 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/net/ethernet/intel/igc/igc.h b/drivers/net/ethernet/intel/igc/igc.h
> index 22ecdac26cf4..705bd4739e3b 100644
> --- a/drivers/net/ethernet/intel/igc/igc.h
> +++ b/drivers/net/ethernet/intel/igc/igc.h
> @@ -40,6 +40,10 @@ void igc_ethtool_set_ops(struct net_device *);
>
> #define IGC_MAX_TX_TSTAMP_REGS 4
>
> +struct fpe_t {
please use "igc_" prefix
> @@ -2068,6 +2088,7 @@ static const struct ethtool_ops igc_ethtool_ops = {
> .set_rxfh = igc_ethtool_set_rxfh,
> .get_ts_info = igc_ethtool_get_ts_info,
> .get_channels = igc_ethtool_get_channels,
> + .set_mm = igc_ethtool_set_mm,
> .set_channels = igc_ethtool_set_channels,
you have picked a wierd place on this list to plug the new op
> .get_priv_flags = igc_ethtool_get_priv_flags,
> .set_priv_flags = igc_ethtool_set_priv_flags,
> +/**
> + * igc_enable_empty_addr_recv - Enable rx of packets with all-zeroes MAC address
Rx
> + * @adapter: Pointer to the igc_adapter structure.
> + *
> + * Frame preemption verification requires that packets with the all-zeroes
> + * MAC address are allowed to be received by IGC. This function adds the
s/IGC/the driver/?
> + * all-zeroes destination address to the list of acceptable addresses.
> + *
> + * Return: 0 on success, negative value otherwise.
> + */
> +int igc_enable_empty_addr_recv(struct igc_adapter *adapter)
> +{
> + u8 empty[ETH_ALEN] = { };
the style prefered is = {}
> +
> + return igc_add_mac_filter(adapter, IGC_MAC_FILTER_TYPE_DST, empty, -1);
> +}
> +
> +void igc_disable_empty_addr_recv(struct igc_adapter *adapter)
> +{
> + u8 empty[ETH_ALEN] = { };
ditto {}
> +
> + igc_del_mac_filter(adapter, IGC_MAC_FILTER_TYPE_DST, empty);
> +}
> diff --git a/drivers/net/ethernet/intel/igc/igc_tsn.c b/drivers/net/ethernet/intel/igc/igc_tsn.c
> index f0213cfce07d..acfff3919793 100644
> --- a/drivers/net/ethernet/intel/igc/igc_tsn.c
> +++ b/drivers/net/ethernet/intel/igc/igc_tsn.c
> @@ -1,10 +1,137 @@
> // SPDX-License-Identifier: GPL-2.0
> /* Copyright (c) 2019 Intel Corporation */
>
> +#include <linux/kernel.h>
Please don't include umbrealla headers, instdead IWYU
(Include What You Use)
linux/jump_label.h etc
> #include "igc.h"
> +#include "igc_base.h"
> #include "igc_hw.h"
> #include "igc_tsn.h"
>
> diff --git a/drivers/net/ethernet/intel/igc/igc_tsn.h b/drivers/net/ethernet/intel/igc/igc_tsn.h
> index 98ec845a86bf..7ba232ef37c9 100644
> --- a/drivers/net/ethernet/intel/igc/igc_tsn.h
> +++ b/drivers/net/ethernet/intel/igc/igc_tsn.h
> @@ -4,9 +4,60 @@
> #ifndef _IGC_TSN_H_
> #define _IGC_TSN_H_
>
> +#define SMD_FRAME_SIZE 60
> +
> +enum igc_txd_popts_type {
> + SMD_V = 0x01,
> + SMD_R = 0x02
please end enums with comma (,), unless the last entry is a COUNT/MAX/
SIZE or similar
> +};
> +
> +DECLARE_STATIC_KEY_FALSE(igc_fpe_enabled);
> +
> +void igc_fpe_init(struct igc_adapter *adapter);
> +u32 igc_fpe_get_supported_frag_size(u32 user_frag_size);
> int igc_tsn_offload_apply(struct igc_adapter *adapter);
> int igc_tsn_reset(struct igc_adapter *adapter);
> void igc_tsn_adjust_txtime_offset(struct igc_adapter *adapter);
> bool igc_tsn_is_taprio_activated_by_user(struct igc_adapter *adapter);
>
> +static inline bool igc_fpe_is_pmac_enabled(struct igc_adapter *adapter)
> +{
> + return static_branch_unlikely(&igc_fpe_enabled) &&
> + adapter->fpe.mmsv.pmac_enabled;
> +}
> +
> +static inline bool igc_fpe_is_verify_or_response(union igc_adv_rx_desc *rx_desc,
> + unsigned int size)
> +{
> + u32 status_error = le32_to_cpu(rx_desc->wb.upper.status_error);
> + int smd;
> +
> + smd = FIELD_GET(IGC_RXDADV_STAT_SMD_TYPE_MASK, status_error);
> +
> + return ((smd == IGC_RXD_STAT_SMD_TYPE_V || smd == IGC_RXD_STAT_SMD_TYPE_R) &&
> + size == SMD_FRAME_SIZE);
too much braces
next prev parent reply other threads:[~2025-02-28 10:20 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-02-27 14:01 [PATCH iwl-next v6 0/9] igc: Add support for Frame Preemption feature in IGC Faizal Rahim
2025-02-27 14:01 ` [PATCH iwl-next v6 1/9] net: ethtool: mm: extract stmmac verification logic into common library Faizal Rahim
2025-02-27 14:01 ` [PATCH iwl-next v6 2/9] igc: Rename xdp_get_tx_ring() for non-xdp usage Faizal Rahim
2025-02-28 9:57 ` Przemek Kitszel
2025-02-27 14:01 ` [PATCH iwl-next v6 3/9] igc: Optimize the TX packet buffer utilization Faizal Rahim
2025-02-27 14:01 ` [PATCH iwl-next v6 4/9] igc: Set the RX packet buffer size for TSN mode Faizal Rahim
2025-02-27 14:01 ` [PATCH iwl-next v6 5/9] igc: Add support for frame preemption verification Faizal Rahim
2025-02-28 10:15 ` Przemek Kitszel [this message]
2025-02-27 14:01 ` [PATCH iwl-next v6 6/9] igc: Add support to set tx-min-frag-size Faizal Rahim
2025-02-27 14:01 ` [PATCH iwl-next v6 7/9] igc: Block setting preemptible traffic class in taprio Faizal Rahim
2025-02-27 14:01 ` [PATCH iwl-next v6 8/9] igc: Add support to get MAC Merge data via ethtool Faizal Rahim
2025-02-27 14:01 ` [PATCH iwl-next v6 9/9] igc: Add support to get frame preemption statistics " Faizal Rahim
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=99df73ed-7988-405c-b6f9-e251ec11bb67@intel.com \
--to=przemyslaw.kitszel@intel.com \
--cc=0x1207@gmail.com \
--cc=ahalaney@redhat.com \
--cc=alexandre.torgue@foss.st.com \
--cc=andrew+netdev@lunn.ch \
--cc=anthony.l.nguyen@intel.com \
--cc=ast@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=daniel@iogearbox.net \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=faizal.abdul.rahim@linux.intel.com \
--cc=fancer.lancer@gmail.com \
--cc=gal@nvidia.com \
--cc=hawk@kernel.org \
--cc=hayashi.kunihiko@socionext.com \
--cc=horms@kernel.org \
--cc=intel-wired-lan@lists.osuosl.org \
--cc=jesper.nilsson@axis.com \
--cc=john.fastabend@gmail.com \
--cc=kory.maincent@bootlin.com \
--cc=kuba@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-stm32@st-md-mailman.stormreply.com \
--cc=linux@armlinux.org.uk \
--cc=mcoquelin.stm32@gmail.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=quic_jsuraj@quicinc.com \
--cc=rmk+kernel@armlinux.org.uk \
--cc=vinicius.gomes@intel.com \
--cc=vladimir.oltean@nxp.com \
--cc=xiaolei.wang@windriver.com \
--cc=yong.liang.choong@linux.intel.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).