linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Vinicius Costa Gomes <vinicius.gomes@intel.com>
To: Po Liu <po.liu@nxp.com>,
	"davem\@davemloft.net" <davem@davemloft.net>,
	"hauke.mehrtens\@intel.com" <hauke.mehrtens@intel.com>,
	"gregkh\@linuxfoundation.org" <gregkh@linuxfoundation.org>,
	"allison\@lohutok.net" <allison@lohutok.net>,
	"tglx\@linutronix.de" <tglx@linutronix.de>,
	"hkallweit1\@gmail.com" <hkallweit1@gmail.com>,
	"saeedm\@mellanox.com" <saeedm@mellanox.com>,
	"andrew\@lunn.ch" <andrew@lunn.ch>,
	"f.fainelli\@gmail.com" <f.fainelli@gmail.com>,
	"alexandru.ardelean\@analog.com" <alexandru.ardelean@analog.com>,
	"jiri\@mellanox.com" <jiri@mellanox.com>,
	"ayal\@mellanox.com" <ayal@mellanox.com>,
	"pablo\@netfilter.org" <pablo@netfilter.org>,
	"linux-kernel\@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"netdev\@vger.kernel.org" <netdev@vger.kernel.org>
Cc: "simon.horman\@netronome.com" <simon.horman@netronome.com>,
	Claudiu Manoil <claudiu.manoil@nxp.com>,
	Vladimir Oltean <vladimir.oltean@nxp.com>,
	Alexandru Marginean <alexandru.marginean@nxp.com>,
	Xiaoliang Yang <xiaoliang.yang_1@nxp.com>,
	Roy Zang <roy.zang@nxp.com>, Mingkai Hu <mingkai.hu@nxp.com>,
	Jerry Huang <jerry.huang@nxp.com>, Leo Li <leoyang.li@nxp.com>,
	Po Liu <po.liu@nxp.com>
Subject: Re: [v1,net-next, 1/2] ethtool: add setting frame preemption of traffic classes
Date: Fri, 17 Jan 2020 16:03:07 -0800	[thread overview]
Message-ID: <87v9p93a2s.fsf@linux.intel.com> (raw)
In-Reply-To: <20191127094517.6255-1-Po.Liu@nxp.com>

Hi,

Po Liu <po.liu@nxp.com> writes:

> IEEE Std 802.1Qbu standard defined the frame preemption of port
> traffic classes. This patch introduce a method to set traffic
> classes preemption. Add a parameter 'preemption' in struct
> ethtool_link_settings. The value will be translated to a binary,
> each bit represent a traffic class. Bit "1" means preemptable
> traffic class. Bit "0" means express traffic class.  MSB represent
> high number traffic class.

I think that we should keep the concept of 'traffic classes' outside of
ethtool. Ethtool should only care about queues (or similar concepts).
And unless I am missing something here, what you mean by 'traffic class'
here is really a hardware queue.

>
> If hardware support the frame preemption, driver could set the
> ethernet device with hw_features and features with NETIF_F_PREEMPTION
> when initializing the port driver.
>
> User can check the feature 'tx-preemption' by command 'ethtool -k
> devname'. If hareware set preemption feature. The property would
> be a fixed value 'on' if hardware support the frame preemption.
> Feature would show a fixed value 'off' if hardware don't support
> the frame preemption.
>
> Command 'ethtool devname' and 'ethtool -s devname preemption N'
> would show/set which traffic classes are frame preemptable.
>
> Port driver would implement the frame preemption in the function
> get_link_ksettings() and set_link_ksettings() in the struct ethtool_ops.
>
> Signed-off-by: Po Liu <Po.Liu@nxp.com>
> ---
>  include/linux/netdev_features.h | 5 ++++-
>  include/uapi/linux/ethtool.h    | 5 ++++-
>  net/core/ethtool.c              | 1 +
>  3 files changed, 9 insertions(+), 2 deletions(-)
>
> diff --git a/include/linux/netdev_features.h b/include/linux/netdev_features.h
> index 4b19c544c59a..299750a8b414 100644
> --- a/include/linux/netdev_features.h
> +++ b/include/linux/netdev_features.h
> @@ -80,6 +80,7 @@ enum {
>  
>  	NETIF_F_GRO_HW_BIT,		/* Hardware Generic receive offload */
>  	NETIF_F_HW_TLS_RECORD_BIT,	/* Offload TLS record */
> +	NETIF_F_HW_PREEMPTION_BIT,	/* Hardware TC frame preemption */
>  
>  	/*
>  	 * Add your fresh new feature above and remember to update
> @@ -150,6 +151,7 @@ enum {
>  #define NETIF_F_GSO_UDP_L4	__NETIF_F(GSO_UDP_L4)
>  #define NETIF_F_HW_TLS_TX	__NETIF_F(HW_TLS_TX)
>  #define NETIF_F_HW_TLS_RX	__NETIF_F(HW_TLS_RX)
> +#define NETIF_F_PREEMPTION	__NETIF_F(HW_PREEMPTION)
>  
>  /* Finds the next feature with the highest number of the range of start till 0.
>   */
> @@ -175,7 +177,8 @@ static inline int find_next_netdev_feature(u64 feature, unsigned long start)
>  /* Features valid for ethtool to change */
>  /* = all defined minus driver/device-class-related */
>  #define NETIF_F_NEVER_CHANGE	(NETIF_F_VLAN_CHALLENGED | \
> -				 NETIF_F_LLTX | NETIF_F_NETNS_LOCAL)
> +				 NETIF_F_LLTX | NETIF_F_NETNS_LOCAL | \
> +				 NETIF_F_PREEMPTION)
>  
>  /* remember that ((t)1 << t_BITS) is undefined in C99 */
>  #define NETIF_F_ETHTOOL_BITS	((__NETIF_F_BIT(NETDEV_FEATURE_COUNT - 1) | \
> diff --git a/include/uapi/linux/ethtool.h b/include/uapi/linux/ethtool.h
> index d4591792f0b4..12ffb34afbfa 100644
> --- a/include/uapi/linux/ethtool.h
> +++ b/include/uapi/linux/ethtool.h
> @@ -1776,6 +1776,8 @@ enum ethtool_reset_flags {
>  };
>  #define ETH_RESET_SHARED_SHIFT	16
>  
> +/* Disable preemtion. */
> +#define PREEMPTION_DISABLE     0x0
>  
>  /**
>   * struct ethtool_link_settings - link control and status
> @@ -1886,7 +1888,8 @@ struct ethtool_link_settings {
>  	__s8	link_mode_masks_nwords;
>  	__u8	transceiver;
>  	__u8	reserved1[3];
> -	__u32	reserved[7];
> +	__u32	preemption;
> +	__u32	reserved[6];
>  	__u32	link_mode_masks[0];
>  	/* layout of link_mode_masks fields:
>  	 * __u32 map_supported[link_mode_masks_nwords];
> diff --git a/net/core/ethtool.c b/net/core/ethtool.c
> index cd9bc67381b2..6ffcd8a602b8 100644
> --- a/net/core/ethtool.c
> +++ b/net/core/ethtool.c
> @@ -111,6 +111,7 @@ static const char netdev_features_strings[NETDEV_FEATURE_COUNT][ETH_GSTRING_LEN]
>  	[NETIF_F_HW_TLS_RECORD_BIT] =	"tls-hw-record",
>  	[NETIF_F_HW_TLS_TX_BIT] =	 "tls-hw-tx-offload",
>  	[NETIF_F_HW_TLS_RX_BIT] =	 "tls-hw-rx-offload",
> +	[NETIF_F_HW_PREEMPTION_BIT] =	 "tx-preemption",
>  };
>  
>  static const char
> -- 
> 2.17.1

  parent reply	other threads:[~2020-01-18  0:02 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-11-27  9:59 [v1,net-next, 1/2] ethtool: add setting frame preemption of traffic classes Po Liu
2019-11-27  9:59 ` [v1,net-next, 2/2] enetc: implement the enetc 802.1Qbu hardware function Po Liu
2019-11-27 11:00   ` Vladimir Oltean
2019-12-04  1:35   ` Ivan Khoronzhuk
2019-11-27 18:57 ` [v1,net-next, 1/2] ethtool: add setting frame preemption of traffic classes David Miller
2019-12-03 15:11 ` Ivan Khoronzhuk
2019-12-11  2:52 ` Andre Guedes
2019-12-16  7:43   ` [EXT] " Po Liu
2019-12-16 21:44     ` Vinicius Costa Gomes
2019-12-19  0:43       ` Ivan Khoronzhuk
2019-12-19  1:54         ` Vinicius Costa Gomes
2019-12-30 16:56           ` Murali Karicheri
2020-01-17 23:47             ` Vinicius Costa Gomes
2019-12-30 17:03           ` Murali Karicheri
2020-01-09  1:07             ` Andre Guedes
2020-01-09  8:59               ` Jose Abreu
2020-01-09 18:04                 ` Andre Guedes
2020-01-10 14:35                   ` Jose Abreu
2020-01-10 16:02               ` Vladimir Oltean
2020-01-10 20:59                 ` Andre Guedes
2020-01-09  0:56       ` Andre Guedes
2020-01-18  0:03 ` Vinicius Costa Gomes [this message]
2020-01-22 18:10   ` Murali Karicheri
2020-01-23 13:30     ` Vladimir Oltean
2020-01-23 17:50       ` Vinicius Costa Gomes
2020-02-10 20:30         ` Murali Karicheri
2020-02-11 19:22           ` Vinicius Costa Gomes
2020-02-25 17:55             ` Murali Karicheri
2020-02-10 20:17       ` Murali Karicheri
2020-02-21 21:43 ` Vinicius Costa Gomes
2020-02-22  3:26   ` [EXT] " Po Liu
2020-02-25 17:59     ` Murali Karicheri
2020-02-25 17:59       ` Murali Karicheri
2020-02-26  2:01       ` Po Liu
2020-03-12 23:34     ` Vinicius Costa Gomes
2020-03-13  6:00       ` Po Liu
2020-03-18 14:07       ` Murali Karicheri
2020-05-13 14:55         ` Murali Karicheri
2020-05-13 17:21           ` Vinicius Costa Gomes

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=87v9p93a2s.fsf@linux.intel.com \
    --to=vinicius.gomes@intel.com \
    --cc=alexandru.ardelean@analog.com \
    --cc=alexandru.marginean@nxp.com \
    --cc=allison@lohutok.net \
    --cc=andrew@lunn.ch \
    --cc=ayal@mellanox.com \
    --cc=claudiu.manoil@nxp.com \
    --cc=davem@davemloft.net \
    --cc=f.fainelli@gmail.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=hauke.mehrtens@intel.com \
    --cc=hkallweit1@gmail.com \
    --cc=jerry.huang@nxp.com \
    --cc=jiri@mellanox.com \
    --cc=leoyang.li@nxp.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingkai.hu@nxp.com \
    --cc=netdev@vger.kernel.org \
    --cc=pablo@netfilter.org \
    --cc=po.liu@nxp.com \
    --cc=roy.zang@nxp.com \
    --cc=saeedm@mellanox.com \
    --cc=simon.horman@netronome.com \
    --cc=tglx@linutronix.de \
    --cc=vladimir.oltean@nxp.com \
    --cc=xiaoliang.yang_1@nxp.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).