From: Donald Hunter <donald.hunter@gmail.com>
To: Paolo Abeni <pabeni@redhat.com>
Cc: netdev@vger.kernel.org, Jakub Kicinski <kuba@kernel.org>,
Jiri Pirko <jiri@resnulli.us>,
Madhu Chittim <madhu.chittim@intel.com>,
Sridhar Samudrala <sridhar.samudrala@intel.com>,
Simon Horman <horms@kernel.org>,
John Fastabend <john.fastabend@gmail.com>,
Sunil Kovvuri Goutham <sgoutham@marvell.com>,
Jamal Hadi Salim <jhs@mojatatu.com>
Subject: Re: [PATCH v3 02/12] netlink: spec: add shaper YAML spec
Date: Fri, 02 Aug 2024 12:15:30 +0100 [thread overview]
Message-ID: <m2v80jnpkd.fsf@gmail.com> (raw)
In-Reply-To: <07bae4f7-4450-4ec5-a2fe-37b563f6105d@redhat.com> (Paolo Abeni's message of "Thu, 1 Aug 2024 16:31:04 +0200")
Paolo Abeni <pabeni@redhat.com> writes:
> On 7/31/24 23:13, Donald Hunter wrote:
>> Paolo Abeni <pabeni@redhat.com> writes:
>>
>>> + name: inputs
>>> + type: nest
>>> + multi-attr: true
>>> + nested-attributes: ns-info
>>> + doc: |
>>> + Describes a set of inputs shapers for a @group operation
>> The @group renders exactly as-is in the generated htmldocs. There may be
>> a more .rst friendly markup you can use that will render better.
>
> Uhm... AFAICS the problem is the target (e.g. 'group') is outside the htmldoc section itself, I
> can't find any existing markup to serve this purpose well. What about sticking to quotes ''
> everywhere?
>
> FTR, I used @ following the kdoc style.
Yeah, I was just thinking of using .rst markup like ``code`` or
`italics`, but the meaning of @ is pretty obvious when reading the spec.
If you stick with @ then we could always teach ynl-to-rst to render it
as ``code``.
>
> [...]
>>> + -
>>> + name: group
>>> + doc: |
>>> + Group the specified input shapers under the specified
>>> + output shaper, eventually creating the latter, if needed.
>>> + Input shapers scope must be either @queue or @detached.
>> It says above that you cannot create a detached shaper, so how do you
>> create one to use as an input shaper here? Is this group op more like a
>> multi-create op?
>
> The group operation has the main goal of configuring a single WRR or SP scheduling group
> atomically. It can creates the needed shapers as needed, see below.
>
> The need for such operation sparks from some H/W constraints:
>
> https://lore.kernel.org/netdev/9dd818dc-1fef-4633-b388-6ce7272f9cb4@lunn.ch/
>
>>> + Output shaper scope must be either @detached or @netdev.
>>> + When using an output @detached scope shaper, if the
>>> + @handle @id is not specified, a new shaper of such scope
>>> + is created and, otherwise the specified output shaper
>>> + must be already existing.
>>> + The operation is atomic, on failures the extack is set
>>> + accordingly and no change is applied to the device
>>> + shaping configuration, otherwise the output shaper
>>> + handle is provided as reply.
>>> + attribute-set: net-shaper
>>> + flags: [ admin-perm ]
>> Does there need to be a reciprocal 'ungroup' operation? Without it,
>> create / group / delete seems like they will have ambiguous semantics.
>
> I guess we need a better description. Can you please tell where/how the current one is
> ambiguous?
My expectation for 'group' would be to group existing things, with a
reciprocal 'ungroup' operation. I think you intend 'group' to both be
able to group existing shapers/groups and create a group of shapers.
Am I right in saying that delete lets you delete something from a group
(with side-effect of deleting group if it becomes empty), or delete a
whole group?
It feels a lot like each of 'set', 'group' and 'delete' are doing
multiple things and the interaction between them all becomes challenging
to describe, or to handle all the corner cases. I think part of the
problem is the mixed terminology of input, output for groups, handle,
parent for shapers and using detached to differentiate from 'implicitly
attached to a resource'.
Perhaps the API would be better if you had:
- shaper-new
- shaper-delete
- shaper-get/dump
- shaper-set
- group-new
- group-delete
- group-get/dump
- group-set
If you went with Jakub's suggestion to give every shaper n x inputs and
an output, then you could recombine groups and shapers and just have 4
ops. And you could rename 'detached' to 'shaper' so that an attachment
is one of port, netdev, queue or shaper.
next prev parent reply other threads:[~2024-08-02 11:23 UTC|newest]
Thread overview: 91+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-07-30 20:39 [PATCH v3 00/12] net: introduce TX H/W shaping API Paolo Abeni
2024-07-30 20:39 ` [PATCH v3 01/12] tools: ynl: lift an assumption about spec file name Paolo Abeni
2024-07-30 20:39 ` [PATCH v3 02/12] netlink: spec: add shaper YAML spec Paolo Abeni
2024-07-31 21:13 ` Donald Hunter
2024-08-01 14:31 ` Paolo Abeni
2024-08-02 10:57 ` Jiri Pirko
2024-08-02 11:15 ` Donald Hunter [this message]
2024-08-05 14:35 ` Paolo Abeni
2024-08-05 20:37 ` Jakub Kicinski
2024-08-01 13:10 ` Jiri Pirko
2024-08-01 14:40 ` Jakub Kicinski
2024-08-01 15:12 ` Paolo Abeni
2024-08-02 10:49 ` Jiri Pirko
2024-08-05 15:11 ` Paolo Abeni
2024-08-06 7:06 ` Jiri Pirko
2024-08-12 14:58 ` Paolo Abeni
2024-08-12 15:25 ` Jakub Kicinski
2024-08-12 16:50 ` Jiri Pirko
2024-08-12 17:42 ` Jakub Kicinski
2024-08-13 5:38 ` Jiri Pirko
2024-08-13 14:12 ` Jakub Kicinski
2024-08-13 14:47 ` Paolo Abeni
2024-08-13 14:58 ` Jakub Kicinski
2024-08-13 15:31 ` Paolo Abeni
2024-08-13 15:43 ` Jakub Kicinski
2024-08-14 8:56 ` Donald Hunter
2024-08-13 17:12 ` Donald Hunter
2024-08-14 14:21 ` Paolo Abeni
2024-08-15 9:07 ` Donald Hunter
2024-08-02 11:19 ` Jiri Pirko
2024-08-02 11:26 ` Jiri Pirko
2024-08-02 16:04 ` Jiri Pirko
2024-07-30 20:39 ` [PATCH v3 03/12] net-shapers: implement NL get operation Paolo Abeni
2024-08-01 13:42 ` Jiri Pirko
2024-08-13 15:17 ` Paolo Abeni
2024-08-14 8:37 ` Jiri Pirko
2024-08-16 8:52 ` Paolo Abeni
2024-08-16 9:16 ` Jiri Pirko
2024-08-19 9:33 ` Paolo Abeni
2024-08-19 11:53 ` Jiri Pirko
2024-08-19 16:52 ` Paolo Abeni
2024-08-22 12:02 ` Jiri Pirko
2024-08-22 14:41 ` Jakub Kicinski
2024-08-22 20:30 ` Paolo Abeni
2024-08-22 22:56 ` Jakub Kicinski
2024-08-23 11:50 ` Jiri Pirko
2024-08-23 12:58 ` Paolo Abeni
2024-08-23 13:36 ` Jiri Pirko
2024-08-23 14:23 ` Paolo Abeni
2024-08-26 9:31 ` Jiri Pirko
2024-08-27 14:37 ` Paolo Abeni
2024-08-27 14:54 ` Jakub Kicinski
2024-08-27 20:43 ` Paolo Abeni
2024-08-27 21:03 ` Jakub Kicinski
2024-08-27 21:54 ` Paolo Abeni
2024-08-28 6:40 ` Jiri Pirko
2024-08-28 10:55 ` Paolo Abeni
2024-08-28 13:02 ` Jiri Pirko
2024-08-28 20:30 ` Jakub Kicinski
2024-08-28 21:13 ` Paolo Abeni
2024-08-29 11:45 ` Jiri Pirko
2024-08-01 15:09 ` Jakub Kicinski
2024-08-02 11:53 ` Jiri Pirko
2024-07-30 20:39 ` [PATCH v3 04/12] net-shapers: implement NL set and delete operations Paolo Abeni
2024-08-01 15:00 ` Jakub Kicinski
2024-08-01 15:25 ` Paolo Abeni
2024-08-01 15:39 ` Jakub Kicinski
2024-08-02 16:15 ` Jiri Pirko
2024-08-02 22:01 ` Jakub Kicinski
2024-08-05 15:23 ` Paolo Abeni
2024-07-30 20:39 ` [PATCH v3 05/12] net-shapers: implement NL group operation Paolo Abeni
2024-07-30 20:39 ` [PATCH v3 06/12] netlink: spec: add shaper introspection support Paolo Abeni
2024-08-02 11:21 ` Donald Hunter
2024-07-30 20:39 ` [PATCH v3 07/12] net: shaper: implement " Paolo Abeni
2024-07-30 20:39 ` [PATCH v3 08/12] testing: net-drv: add basic shaper test Paolo Abeni
2024-07-31 7:52 ` Paolo Abeni
2024-08-01 1:55 ` Jakub Kicinski
2024-08-05 14:22 ` Simon Horman
2024-08-05 19:36 ` Jakub Kicinski
2024-08-06 15:21 ` Simon Horman
2024-08-08 12:20 ` Simon Horman
2024-08-08 14:17 ` Jakub Kicinski
2024-08-08 14:34 ` Simon Horman
2024-08-11 12:40 ` Simon Horman
2024-08-12 15:31 ` Jakub Kicinski
2024-08-12 16:03 ` Paolo Abeni
2024-07-30 20:39 ` [PATCH v3 09/12] virtchnl: support queue rate limit and quanta size configuration Paolo Abeni
2024-07-30 20:39 ` [PATCH v3 10/12] ice: Support VF " Paolo Abeni
2024-07-30 20:39 ` [PATCH v3 11/12] iavf: Add net_shaper_ops support Paolo Abeni
2024-07-30 20:39 ` [PATCH v3 12/12] iavf: add support to exchange qos capabilities Paolo Abeni
2024-08-01 12:57 ` [PATCH v3 00/12] net: introduce TX H/W shaping API Jiri Pirko
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=m2v80jnpkd.fsf@gmail.com \
--to=donald.hunter@gmail.com \
--cc=horms@kernel.org \
--cc=jhs@mojatatu.com \
--cc=jiri@resnulli.us \
--cc=john.fastabend@gmail.com \
--cc=kuba@kernel.org \
--cc=madhu.chittim@intel.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=sgoutham@marvell.com \
--cc=sridhar.samudrala@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 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.