linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
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



  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).