All of lore.kernel.org
 help / color / mirror / Atom feed
From: Michael Walle <michael@walle.cc>
To: Vinicius Costa Gomes <vinicius.gomes@intel.com>
Cc: jeffrey.t.kirsher@intel.com, netdev@vger.kernel.org,
	vladimir.oltean@nxp.com, po.liu@nxp.com, m-karicheri2@ti.com,
	Jose.Abreu@synopsys.com
Subject: Re: [next-queue RFC 0/4] ethtool: Add support for frame preemption
Date: Sun, 17 May 2020 17:06:01 +0200	[thread overview]
Message-ID: <20200517170601.31832446@apollo> (raw)
In-Reply-To: <20200516012948.3173993-1-vinicius.gomes@intel.com>

Am Fri, 15 May 2020 18:29:44 -0700
schrieb Vinicius Costa Gomes <vinicius.gomes@intel.com>:

> Hi,
> 
> This series adds support for configuring frame preemption, as defined
> by IEEE 802.1Q-2018 (previously IEEE 802.1Qbu) and IEEE 802.3br.
> 
> Frame preemption allows a packet from a higher priority queue marked
> as "express" to preempt a packet from lower priority queue marked as
> "preemptible". The idea is that this can help reduce the latency for
> higher priority traffic.
> 
> Previously, the proposed interface for configuring these features was
> using the qdisc layer. But as this is very hardware dependent and all
> that qdisc did was pass the information to the driver, it makes sense
> to have this in ethtool.
> 
> One example, for retrieving and setting the configuration:
> 
> $ ethtool $ sudo ./ethtool --show-frame-preemption enp3s0
> Frame preemption settings for enp3s0:
> 	support: supported
> 	active: active
> 	supported queues: 0xf
> 	supported queues: 0xe
> 	minimum fragment size: 68
> 
> 
> $ ethtool --set-frame-preemption enp3s0 fp on min-frag-size 68
> preemptible-queues-mask 0xe
> 
> This is a RFC because I wanted to have feedback on some points:
> 
>   - The parameters added are enough for the hardware I have, is it
>     enough in general?

What about the Qbu handshake state? And some NICs support overriding
this. I.e. enable frame preemption even if the handshake wasn't
successful.

-michael

> 
>   - even with the ethtool via netlink effort, I chose to keep the
>     ioctl() way, in case someone wants to backport this to an older
>     kernel, is there a problem with this?
> 
>   - Some space for bikeshedding the names and location (for example,
>     does it make sense for these settings to be per-queue?), as I am
>     not quite happy with them, one example, is the use of preemptible
>     vs. preemptable;
> 
> 
> About the patches, should be quite straightforward:
> 
> Patch 1, adds the ETHTOOL_GFP and ETHOOL_SFP commands and the
> associated data structures;
> 
> Patch 2, adds the ETHTOOL_MSG_PREEMPT_GET and ETHTOOL_MSG_PREEMPT_SET
> netlink messages and the associated attributes;
> 
> Patch 3, is the example implementation for the igc driver, the catch
> here is that frame preemption in igc is dependent on the TSN "mode"
> being enabled;
> 
> Patch 4, adds some registers that helped during implementation.
> 
> Another thing is that because igc is still under development, to avoid
> conflicts, I think it might be easier for the PATCH version of this
> series to go through Jeff Kirsher's tree.
> 
> Vinicius Costa Gomes (4):
>   ethtool: Add support for configuring frame preemption
>   ethtool: Add support for configuring frame preemption via netlink
>   igc: Add support for configuring frame preemption
>   igc: Add support for exposing frame preemption stats registers
> 
>  drivers/net/ethernet/intel/igc/igc.h         |   3 +
>  drivers/net/ethernet/intel/igc/igc_defines.h |   6 +
>  drivers/net/ethernet/intel/igc/igc_ethtool.c |  77 ++++++++
>  drivers/net/ethernet/intel/igc/igc_regs.h    |  10 +
>  drivers/net/ethernet/intel/igc/igc_tsn.c     |  46 ++++-
>  include/linux/ethtool.h                      |   6 +
>  include/uapi/linux/ethtool.h                 |  25 +++
>  include/uapi/linux/ethtool_netlink.h         |  19 ++
>  net/ethtool/Makefile                         |   3 +-
>  net/ethtool/ioctl.c                          |  36 ++++
>  net/ethtool/netlink.c                        |  15 ++
>  net/ethtool/netlink.h                        |   2 +
>  net/ethtool/preempt.c                        | 181
> +++++++++++++++++++ 13 files changed, 423 insertions(+), 6
> deletions(-) create mode 100644 net/ethtool/preempt.c
> 


  parent reply	other threads:[~2020-05-17 15:06 UTC|newest]

Thread overview: 77+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-05-16  1:29 [Intel-wired-lan] [next-queue RFC 0/4] ethtool: Add support for frame preemption Vinicius Costa Gomes
2020-05-16  1:29 ` Vinicius Costa Gomes
2020-05-16  1:29 ` [Intel-wired-lan] [next-queue RFC 1/4] ethtool: Add support for configuring " Vinicius Costa Gomes
2020-05-16  1:29   ` Vinicius Costa Gomes
2020-05-19 15:27   ` [Intel-wired-lan] " Murali Karicheri
2020-05-19 15:27     ` Murali Karicheri
2020-05-16  1:29 ` [Intel-wired-lan] [next-queue RFC 2/4] ethtool: Add support for configuring frame preemption via netlink Vinicius Costa Gomes
2020-05-16  1:29   ` Vinicius Costa Gomes
2020-05-18 12:27   ` Dan Carpenter
2020-05-18 12:27     ` Dan Carpenter
2020-05-16  1:29 ` [Intel-wired-lan] [next-queue RFC 3/4] igc: Add support for configuring frame preemption Vinicius Costa Gomes
2020-05-16  1:29   ` Vinicius Costa Gomes
2020-05-19 16:36   ` [Intel-wired-lan] " Murali Karicheri
2020-05-19 16:36     ` Murali Karicheri
2020-05-16  1:29 ` [Intel-wired-lan] [next-queue RFC 4/4] igc: Add support for exposing frame preemption stats registers Vinicius Costa Gomes
2020-05-16  1:29   ` Vinicius Costa Gomes
2020-05-20 12:50   ` [Intel-wired-lan] " Murali Karicheri
2020-05-20 12:50     ` Murali Karicheri
2020-05-16  9:33 ` [Intel-wired-lan] [next-queue RFC 0/4] ethtool: Add support for frame preemption Michal Kubecek
2020-05-16  9:33   ` Michal Kubecek
2020-05-18 19:34   ` [Intel-wired-lan] " Vinicius Costa Gomes
2020-05-18 19:34     ` Vinicius Costa Gomes
2020-05-19 22:40     ` [Intel-wired-lan] " Andre Guedes
2020-05-19 22:40       ` Andre Guedes
2020-05-19 22:53       ` [Intel-wired-lan] " Vinicius Costa Gomes
2020-05-19 22:53         ` Vinicius Costa Gomes
2020-05-16 20:37 ` [Intel-wired-lan] " David Miller
2020-05-16 20:37   ` David Miller
2020-05-16 21:03   ` [Intel-wired-lan] " Vladimir Oltean
2020-05-16 21:03     ` Vladimir Oltean
2020-05-16 22:19     ` [Intel-wired-lan] " David Miller
2020-05-16 22:19       ` David Miller
2020-05-17 10:51       ` [Intel-wired-lan] " Vladimir Oltean
2020-05-17 10:51         ` Vladimir Oltean
2020-05-17 18:45         ` [Intel-wired-lan] " Andrew Lunn
2020-05-17 18:45           ` Andrew Lunn
2020-05-17 19:04           ` [Intel-wired-lan] " Vladimir Oltean
2020-05-17 19:04             ` Vladimir Oltean
2020-05-18 19:05       ` [Intel-wired-lan] " Vinicius Costa Gomes
2020-05-18 19:05         ` Vinicius Costa Gomes
2020-05-18 20:56         ` [Intel-wired-lan] " Jakub Kicinski
2020-05-18 20:56           ` Jakub Kicinski
2020-05-18 22:06           ` [Intel-wired-lan] " Vinicius Costa Gomes
2020-05-18 22:06             ` Vinicius Costa Gomes
2020-05-18 22:22             ` [Intel-wired-lan] " Jakub Kicinski
2020-05-18 22:22               ` Jakub Kicinski
2020-05-18 23:05               ` [Intel-wired-lan] " Vinicius Costa Gomes
2020-05-18 23:05                 ` Vinicius Costa Gomes
2020-05-18 23:09                 ` [Intel-wired-lan] " Jakub Kicinski
2020-05-18 23:09                   ` Jakub Kicinski
2020-05-20 21:42                   ` [Intel-wired-lan] " Andre Guedes
2020-05-20 21:42                     ` Andre Guedes
2020-05-20 22:35                     ` Vinicius Costa Gomes
2020-05-20 22:35                       ` Vinicius Costa Gomes
2020-05-19 16:34             ` Murali Karicheri
2020-05-19 16:34               ` Murali Karicheri
2020-05-19 17:49               ` [Intel-wired-lan] " Vinicius Costa Gomes
2020-05-19 17:49                 ` Vinicius Costa Gomes
2020-05-17 15:06 ` Michael Walle [this message]
2020-05-18 13:36   ` Murali Karicheri
2020-05-19 20:41     ` Michael Walle
2020-05-19 14:53 ` [Intel-wired-lan] " Murali Karicheri
2020-05-19 14:53   ` Murali Karicheri
2020-05-19 15:32   ` [Intel-wired-lan] " Vinicius Costa Gomes
2020-05-19 15:32     ` Vinicius Costa Gomes
2020-05-19 16:11     ` [Intel-wired-lan] " Murali Karicheri
2020-05-19 16:11       ` Murali Karicheri
2020-05-19 22:39 ` [Intel-wired-lan] " Andre Guedes
2020-05-19 22:39   ` Andre Guedes
2020-05-19 23:37   ` [Intel-wired-lan] " Vinicius Costa Gomes
2020-05-19 23:37     ` Vinicius Costa Gomes
2020-05-20 12:47     ` [Intel-wired-lan] " Murali Karicheri
2020-05-20 12:47       ` Murali Karicheri
2020-05-20 12:52     ` [Intel-wired-lan] " Joergen Andreasen
2020-05-20 12:52       ` Joergen Andreasen
2020-05-20 21:32       ` [Intel-wired-lan] " Vinicius Costa Gomes
2020-05-20 21:32         ` 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=20200517170601.31832446@apollo \
    --to=michael@walle.cc \
    --cc=Jose.Abreu@synopsys.com \
    --cc=jeffrey.t.kirsher@intel.com \
    --cc=m-karicheri2@ti.com \
    --cc=netdev@vger.kernel.org \
    --cc=po.liu@nxp.com \
    --cc=vinicius.gomes@intel.com \
    --cc=vladimir.oltean@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 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.