From: Jakub Kicinski <kuba@kernel.org>
To: intel-wired-lan@osuosl.org
Subject: [Intel-wired-lan] [PATCH net-next v5 00/11] ethtool: Add support for frame preemption
Date: Mon, 23 May 2022 14:31:16 -0700 [thread overview]
Message-ID: <20220523143116.47df6b34@kernel.org> (raw)
In-Reply-To: <20220523203214.ooixl3vb5q6cgwfq@skbuf>
On Mon, 23 May 2022 20:32:15 +0000 Vladimir Oltean wrote:
> > > | In a port of a Bridge or station that supports frame preemption, a frame
> > > | of priority n is not available for transmission if that priority is
> > > | identified in the frame preemption status table (6.7.2) as preemptible
> > > | and either the holdRequest object (12.30.1.5) is set to the value hold,
> > > | or the transmission of a prior preemptible frame has yet to complete
> > > | because it has been interrupted to allow the transmission of an express
> > > | frame.
> > >
> > > So since the managed objects for frame preemption are stipulated by IEEE
> > > per priority:
> > >
> > > | The framePreemptionStatusTable (6.7.2) consists of 8
> > > | framePreemptionAdminStatus values (12.30.1.1.1), one per priority.
> > >
> > > I think it is only reasonable for Linux to expose the same thing, and
> > > let drivers do the priority to queue or traffic class remapping as they
> > > see fit, when tc-mqprio or tc-taprio or other qdiscs that change this
> > > mapping are installed (if their preemption hardware implementation is
> > > per TC or queue rather than per priority). After all, you can have 2
> > > priorities mapped to the same TC, but still have one express and one
> > > preemptible. That is to say, you can implement preemption even in single
> > > "queue" devices, and it even makes sense.
> >
> > Honestly I feel like I'm missing a key detail because all you wrote
> > sounds like an argument _against_ exposing the queue mask in ethtool.
>
> Yeah, I guess the key detail that you're missing is that there's no such
> thing as "preemptible queue mask" in 802.1Q. My feeling is that both
> Vinicius and myself were confused in different ways by some spec
> definitions and had slightly different things in mind, and we've
> essentially ended up debating where a non-standard thing should go.
>
> In my case, I said in my reply to the previous patch set that a priority
> is essentially synonymous with a traffic class (which it isn't, as per
> the definitions above), so I used the "traffic class" term incorrectly
> and didn't capitalize the "priority" word, which I should have.
> https://patchwork.kernel.org/project/netdevbpf/patch/20210626003314.3159402-3-vinicius.gomes at intel.com/#24812068
>
> In Vinicius' case, part of the confusion might come from the fact that
> his hardware really has preemption configurable per queue, and he
> mistook it for the standard itself.
>
> > Neither the standard calls for it, nor is it convenient to the user
> > who sets the prio->tc and queue allocation in TC.
> >
> > If we wanted to expose prio mask in ethtool, that's a different story.
>
> Re-reading what I've said, I can't say "I was right all along"
> (not by a long shot, sorry for my part in the confusion),
Sorry, I admit I did not go back to the archives to re-read your
feedback today. I'm purely reacting to the fact that the "preemptible
queue mask" attribute which I have successfully fought off in the
past have now returned.
Let me also spell out the source of my objection - high speed NICs
have multitude of queues, queue groups and sub-interfaces. ethtool
uAPI which uses a zero-based integer ID will lead to confusion and lack
of portability because users will not know the mapping and vendors
will invent whatever fits their HW best.
> but I guess the conclusion is that:
>
> (a) "preemptable queues" needs to become "preemptable priorities" in the
> UAPI. The question becomes how to expose the mask of preemptable
> priorities. A simple u8 bit mask where "BIT(i) == 1" means "prio i
> is preemptable", or with a nested netlink attribute scheme similar
> to DCB_PFC_UP_ATTR_0 -> DCB_PFC_UP_ATTR_7?
No preference there, we can also put it in DCBnl, if it fits better.
> (b) keeping the "preemptable priorities" away from tc-qdisc is ok
Ack.
> (c) non-standard hardware should deal with prio <-> queue mapping by
> itself if its queues are what are preemptable
I'd prefer if the core had helpers to do the mapping for drivers,
but in principle yes - make the preemptible queues an implementation
detail if possible.
WARNING: multiple messages have this Message-ID (diff)
From: Jakub Kicinski <kuba@kernel.org>
To: Vladimir Oltean <vladimir.oltean@nxp.com>
Cc: Vinicius Costa Gomes <vinicius.gomes@intel.com>,
"netdev@vger.kernel.org" <netdev@vger.kernel.org>,
"jhs@mojatatu.com" <jhs@mojatatu.com>,
"xiyou.wangcong@gmail.com" <xiyou.wangcong@gmail.com>,
"jiri@resnulli.us" <jiri@resnulli.us>,
"davem@davemloft.net" <davem@davemloft.net>,
Po Liu <po.liu@nxp.com>,
"boon.leong.ong@intel.com" <boon.leong.ong@intel.com>,
"intel-wired-lan@lists.osuosl.org"
<intel-wired-lan@lists.osuosl.org>
Subject: Re: [PATCH net-next v5 00/11] ethtool: Add support for frame preemption
Date: Mon, 23 May 2022 14:31:16 -0700 [thread overview]
Message-ID: <20220523143116.47df6b34@kernel.org> (raw)
In-Reply-To: <20220523203214.ooixl3vb5q6cgwfq@skbuf>
On Mon, 23 May 2022 20:32:15 +0000 Vladimir Oltean wrote:
> > > | In a port of a Bridge or station that supports frame preemption, a frame
> > > | of priority n is not available for transmission if that priority is
> > > | identified in the frame preemption status table (6.7.2) as preemptible
> > > | and either the holdRequest object (12.30.1.5) is set to the value hold,
> > > | or the transmission of a prior preemptible frame has yet to complete
> > > | because it has been interrupted to allow the transmission of an express
> > > | frame.
> > >
> > > So since the managed objects for frame preemption are stipulated by IEEE
> > > per priority:
> > >
> > > | The framePreemptionStatusTable (6.7.2) consists of 8
> > > | framePreemptionAdminStatus values (12.30.1.1.1), one per priority.
> > >
> > > I think it is only reasonable for Linux to expose the same thing, and
> > > let drivers do the priority to queue or traffic class remapping as they
> > > see fit, when tc-mqprio or tc-taprio or other qdiscs that change this
> > > mapping are installed (if their preemption hardware implementation is
> > > per TC or queue rather than per priority). After all, you can have 2
> > > priorities mapped to the same TC, but still have one express and one
> > > preemptible. That is to say, you can implement preemption even in single
> > > "queue" devices, and it even makes sense.
> >
> > Honestly I feel like I'm missing a key detail because all you wrote
> > sounds like an argument _against_ exposing the queue mask in ethtool.
>
> Yeah, I guess the key detail that you're missing is that there's no such
> thing as "preemptible queue mask" in 802.1Q. My feeling is that both
> Vinicius and myself were confused in different ways by some spec
> definitions and had slightly different things in mind, and we've
> essentially ended up debating where a non-standard thing should go.
>
> In my case, I said in my reply to the previous patch set that a priority
> is essentially synonymous with a traffic class (which it isn't, as per
> the definitions above), so I used the "traffic class" term incorrectly
> and didn't capitalize the "priority" word, which I should have.
> https://patchwork.kernel.org/project/netdevbpf/patch/20210626003314.3159402-3-vinicius.gomes@intel.com/#24812068
>
> In Vinicius' case, part of the confusion might come from the fact that
> his hardware really has preemption configurable per queue, and he
> mistook it for the standard itself.
>
> > Neither the standard calls for it, nor is it convenient to the user
> > who sets the prio->tc and queue allocation in TC.
> >
> > If we wanted to expose prio mask in ethtool, that's a different story.
>
> Re-reading what I've said, I can't say "I was right all along"
> (not by a long shot, sorry for my part in the confusion),
Sorry, I admit I did not go back to the archives to re-read your
feedback today. I'm purely reacting to the fact that the "preemptible
queue mask" attribute which I have successfully fought off in the
past have now returned.
Let me also spell out the source of my objection - high speed NICs
have multitude of queues, queue groups and sub-interfaces. ethtool
uAPI which uses a zero-based integer ID will lead to confusion and lack
of portability because users will not know the mapping and vendors
will invent whatever fits their HW best.
> but I guess the conclusion is that:
>
> (a) "preemptable queues" needs to become "preemptable priorities" in the
> UAPI. The question becomes how to expose the mask of preemptable
> priorities. A simple u8 bit mask where "BIT(i) == 1" means "prio i
> is preemptable", or with a nested netlink attribute scheme similar
> to DCB_PFC_UP_ATTR_0 -> DCB_PFC_UP_ATTR_7?
No preference there, we can also put it in DCBnl, if it fits better.
> (b) keeping the "preemptable priorities" away from tc-qdisc is ok
Ack.
> (c) non-standard hardware should deal with prio <-> queue mapping by
> itself if its queues are what are preemptable
I'd prefer if the core had helpers to do the mapping for drivers,
but in principle yes - make the preemptible queues an implementation
detail if possible.
next prev parent reply other threads:[~2022-05-23 21:31 UTC|newest]
Thread overview: 58+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-05-20 1:15 [Intel-wired-lan] [PATCH net-next v5 00/11] ethtool: Add support for frame preemption Vinicius Costa Gomes
2022-05-20 1:15 ` Vinicius Costa Gomes
2022-05-20 1:15 ` [Intel-wired-lan] [PATCH net-next v5 01/11] ethtool: Add support for configuring " Vinicius Costa Gomes
2022-05-20 1:15 ` Vinicius Costa Gomes
2022-05-20 9:06 ` [Intel-wired-lan] " Vladimir Oltean
2022-05-20 9:06 ` Vladimir Oltean
2022-05-20 1:15 ` [Intel-wired-lan] [PATCH net-next v5 02/11] ethtool: Add support for Frame Preemption verification Vinicius Costa Gomes
2022-05-20 1:15 ` Vinicius Costa Gomes
2022-05-20 9:16 ` [Intel-wired-lan] " Vladimir Oltean
2022-05-20 9:16 ` Vladimir Oltean
2022-05-20 1:15 ` [Intel-wired-lan] [PATCH net-next v5 03/11] igc: Add support for receiving frames with all zeroes address Vinicius Costa Gomes
2022-05-20 1:15 ` Vinicius Costa Gomes
2022-05-20 1:15 ` [Intel-wired-lan] [PATCH net-next v5 04/11] igc: Set the RX packet buffer size for TSN mode Vinicius Costa Gomes
2022-05-20 1:15 ` Vinicius Costa Gomes
2022-05-20 1:15 ` [Intel-wired-lan] [PATCH net-next v5 05/11] igc: Optimze TX buffer sizes for TSN Vinicius Costa Gomes
2022-05-20 1:15 ` Vinicius Costa Gomes
2022-05-20 9:33 ` [Intel-wired-lan] " Vladimir Oltean
2022-05-20 9:33 ` Vladimir Oltean
2022-05-20 1:15 ` [Intel-wired-lan] [PATCH net-next v5 06/11] igc: Add support for receiving errored frames Vinicius Costa Gomes
2022-05-20 1:15 ` Vinicius Costa Gomes
2022-05-20 9:19 ` [Intel-wired-lan] " Vladimir Oltean
2022-05-20 9:19 ` Vladimir Oltean
2022-05-20 1:15 ` [Intel-wired-lan] [PATCH net-next v5 07/11] igc: Add support for enabling frame preemption via ethtool Vinicius Costa Gomes
2022-05-20 1:15 ` Vinicius Costa Gomes
2022-05-20 1:15 ` [Intel-wired-lan] [PATCH net-next v5 08/11] igc: Add support for setting frame preemption configuration Vinicius Costa Gomes
2022-05-20 1:15 ` Vinicius Costa Gomes
2022-05-20 9:22 ` [Intel-wired-lan] " Vladimir Oltean
2022-05-20 9:22 ` Vladimir Oltean
2022-05-20 1:15 ` [Intel-wired-lan] [PATCH net-next v5 09/11] igc: Add support for Frame Preemption verification Vinicius Costa Gomes
2022-05-20 1:15 ` Vinicius Costa Gomes
2022-05-20 10:43 ` [Intel-wired-lan] " Vladimir Oltean
2022-05-20 10:43 ` Vladimir Oltean
2022-05-27 9:08 ` [Intel-wired-lan] " Zhou Furong
2022-05-27 9:08 ` Zhou Furong
2022-05-20 1:15 ` [Intel-wired-lan] [PATCH net-next v5 10/11] igc: Check incompatible configs for Frame Preemption Vinicius Costa Gomes
2022-05-20 1:15 ` Vinicius Costa Gomes
2022-05-20 6:11 ` [Intel-wired-lan] " kernel test robot
2022-05-20 6:11 ` kernel test robot
2022-05-20 11:06 ` [Intel-wired-lan] " Vladimir Oltean
2022-05-20 11:06 ` Vladimir Oltean
2022-05-20 1:15 ` [Intel-wired-lan] [PATCH net-next v5 11/11] igc: Add support for exposing frame preemption stats registers Vinicius Costa Gomes
2022-05-20 1:15 ` Vinicius Costa Gomes
2022-05-20 12:13 ` [Intel-wired-lan] " Vladimir Oltean
2022-05-20 12:13 ` Vladimir Oltean
2022-05-20 22:34 ` [Intel-wired-lan] [PATCH net-next v5 00/11] ethtool: Add support for frame preemption Jakub Kicinski
2022-05-20 22:34 ` Jakub Kicinski
2022-05-21 15:03 ` [Intel-wired-lan] " Vladimir Oltean
2022-05-21 15:03 ` Vladimir Oltean
2022-05-23 19:52 ` [Intel-wired-lan] " Jakub Kicinski
2022-05-23 19:52 ` Jakub Kicinski
2022-05-23 20:32 ` [Intel-wired-lan] " Vladimir Oltean
2022-05-23 20:32 ` Vladimir Oltean
2022-05-23 21:31 ` Jakub Kicinski [this message]
2022-05-23 21:31 ` Jakub Kicinski
2022-05-23 22:49 ` [Intel-wired-lan] " Vladimir Oltean
2022-05-23 22:49 ` Vladimir Oltean
2022-05-23 23:33 ` [Intel-wired-lan] " Vladimir Oltean
2022-05-23 23:33 ` Vladimir Oltean
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=20220523143116.47df6b34@kernel.org \
--to=kuba@kernel.org \
--cc=intel-wired-lan@osuosl.org \
/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.