From: Ivan Khoronzhuk <ivan.khoronzhuk@linaro•org>
To: Po Liu <po.liu@nxp•com>
Cc: "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>,
"vinicius.gomes@intel•com" <vinicius.gomes@intel•com>,
"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>
Subject: Re: [v1,net-next, 1/2] ethtool: add setting frame preemption of traffic classes
Date: Tue, 3 Dec 2019 17:11:34 +0200 [thread overview]
Message-ID: <20191203151133.GB2680@khorivan> (raw)
In-Reply-To: <20191127094517.6255-1-Po.Liu@nxp.com>
On Wed, Nov 27, 2019 at 09:59:18AM +0000, Po Liu wrote:
Hi, Po Liu
>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.
>
>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;
Why 32 when only 8 is needed?
>+ __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",
What about tx-frame-preempt? or frame-preemption?
> };
>
> static const char
>--
>2.17.1
>
--
Regards,
Ivan Khoronzhuk
next prev parent reply other threads:[~2019-12-03 15:11 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 [this message]
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
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=20191203151133.GB2680@khorivan \
--to=ivan.khoronzhuk@linaro$(echo .)org \
--cc=alexandru.ardelean@analog$(echo .)com \
--cc=alexandru.marginean@nxp$(echo .)com \
--cc=allison@lohutok$(echo .)net \
--cc=andrew@lunn$(echo .)ch \
--cc=ayal@mellanox$(echo .)com \
--cc=claudiu.manoil@nxp$(echo .)com \
--cc=davem@davemloft$(echo .)net \
--cc=f.fainelli@gmail$(echo .)com \
--cc=gregkh@linuxfoundation$(echo .)org \
--cc=hauke.mehrtens@intel$(echo .)com \
--cc=hkallweit1@gmail$(echo .)com \
--cc=jerry.huang@nxp$(echo .)com \
--cc=jiri@mellanox$(echo .)com \
--cc=leoyang.li@nxp$(echo .)com \
--cc=linux-kernel@vger$(echo .)kernel.org \
--cc=mingkai.hu@nxp$(echo .)com \
--cc=netdev@vger$(echo .)kernel.org \
--cc=pablo@netfilter$(echo .)org \
--cc=po.liu@nxp$(echo .)com \
--cc=roy.zang@nxp$(echo .)com \
--cc=saeedm@mellanox$(echo .)com \
--cc=simon.horman@netronome$(echo .)com \
--cc=tglx@linutronix$(echo .)de \
--cc=vinicius.gomes@intel$(echo .)com \
--cc=vladimir.oltean@nxp$(echo .)com \
--cc=xiaoliang.yang_1@nxp$(echo .)com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
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