From: Jakub Kicinski <kuba@kernel.org>
To: Paolo Abeni <pabeni@redhat.com>
Cc: netdev@vger.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 03/12] net-shapers: implement NL get operation
Date: Thu, 1 Aug 2024 08:09:01 -0700 [thread overview]
Message-ID: <20240801080901.4c4aa004@kernel.org> (raw)
In-Reply-To: <7ed5d9b312ccda58c3400c7ba78bca8e5f8ea853.1722357745.git.pabeni@redhat.com>
On Tue, 30 Jul 2024 22:39:46 +0200 Paolo Abeni wrote:
> +#include <linux/types.h>
> +#include <linux/bits.h>
> +#include <linux/bitfield.h>
> +#include <linux/netdevice.h>
> +#include <linux/netlink.h>
most of these could be replaced by forward declaration of types
> +#include <uapi/linux/net_shaper.h>
> +
> +/**
> + * struct net_shaper_info - represents a shaping node on the NIC H/W
> + * zeroed field are considered not set.
> + * @handle: Unique identifier for the shaper, see @net_shaper_make_handle
> + * @parent: Unique identifier for the shaper parent, usually implied. Only
> + * NET_SHAPER_SCOPE_QUEUE, NET_SHAPER_SCOPE_NETDEV and NET_SHAPER_SCOPE_DETACHED
> + * can have the parent handle explicitly set, placing such shaper under
> + * the specified parent.
> + * @metric: Specify if the bw limits refers to PPS or BPS
> + * @bw_min: Minimum guaranteed rate for this shaper
> + * @bw_max: Maximum peak bw allowed for this shaper
> + * @burst: Maximum burst for the peek rate of this shaper
> + * @priority: Scheduling priority for this shaper
> + * @weight: Scheduling weight for this shaper
> + * @children: Number of nested shapers, accounted only for DETACHED scope
> + */
> +struct net_shaper_info {
> + u32 handle;
> + u32 parent;
> + enum net_shaper_metric metric;
> + u64 bw_min;
> + u64 bw_max;
> + u64 burst;
> + u32 priority;
> + u32 weight;
> + u32 children;
> +};
> +
> +/**
> + * define NET_SHAPER_SCOPE_VF - Shaper scope
> + *
> + * This shaper scope is not exposed to user-space; the shaper is attached to
> + * the given virtual function.
> + */
> +#define NET_SHAPER_SCOPE_VF __NET_SHAPER_SCOPE_MAX
> +
> +/**
> + * struct net_shaper_ops - Operations on device H/W shapers
> + *
> + * The initial shaping configuration ad device initialization is empty/
> + * a no-op/does not constraint the b/w in any way.
> + * The network core keeps track of the applied user-configuration in
> + * per device storage.
> + *
> + * Each shaper is uniquely identified within the device with an 'handle',
> + * dependent on the shaper scope and other data, see @shaper_make_handle()
we need to document locking, seems like the locking is.. missing?
Or at least I don't see what prevents two deletes from racing.
> + */
> +struct net_shaper_ops {
> + /**
> + * @group: create the specified shapers group
> + *
> + * Nest the specified @inputs shapers under the given @output shaper
> + * on the network device @dev. The @input shaper array size is specified
> + * by @nr_input.
> + * Create either the @inputs and the @output shaper as needed,
> + * otherwise move them as needed. Can't create @inputs shapers with
> + * NET_SHAPER_SCOPE_DETACHED scope, a separate @group call with such
> + * shaper as @output is needed.
> + *
> + * Returns 0 on group successfully created, otherwise an negative
> + * error value and set @extack to describe the failure's reason.
> + */
> + int (*group)(struct net_device *dev, int nr_input,
> + const struct net_shaper_info *inputs,
> + const struct net_shaper_info *output,
> + struct netlink_ext_ack *extack);
> +
> + /* the default id for detached scope shapers is an invalid one
> + * to help the 'group' operation discriminate between new
> + * detached shaper creation (ID_UNSPEC) and reuse of existing
> + * shaper (any other value)
> + */
> + id_attr = tb[NET_SHAPER_A_ID];
> + if (id_attr)
> + id = nla_get_u32(id_attr);
double space
next prev parent reply other threads:[~2024-08-01 15:09 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
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 [this message]
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=20240801080901.4c4aa004@kernel.org \
--to=kuba@kernel.org \
--cc=horms@kernel.org \
--cc=jhs@mojatatu.com \
--cc=jiri@resnulli.us \
--cc=john.fastabend@gmail.com \
--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.