From: Jiri Pirko <jiri@resnulli.us>
To: Michal Wilczynski <michal.wilczynski@intel.com>
Cc: netdev@vger.kernel.org, alexandr.lobakin@intel.com,
jacob.e.keller@intel.com, jesse.brandeburg@intel.com,
przemyslaw.kitszel@intel.com, anthony.l.nguyen@intel.com,
kuba@kernel.org, ecree.xilinx@gmail.com
Subject: Re: [PATCH net-next v8 5/9] devlink: Allow to set up parent in devl_rate_leaf_create()
Date: Mon, 31 Oct 2022 11:26:56 +0100 [thread overview]
Message-ID: <Y1+i8LjMJuIsAhqH@nanopsycho> (raw)
In-Reply-To: <20221028105143.3517280-6-michal.wilczynski@intel.com>
Fri, Oct 28, 2022 at 12:51:39PM CEST, michal.wilczynski@intel.com wrote:
>Currently the driver is able to create leaf nodes for the devlink-rate,
>but is unable to set parent for them. This wasn't as issue, before the
>possibility to export hierarchy from the driver. After adding the export
>feature, in order for the driver to supply correct hierarchy, it's
>necessary for it to be able to supply a parent name to
>devl_rate_leaf_create().
>
>Introduce a new parameter 'parent_name' in devl_rate_leaf_create().
>
>Signed-off-by: Michal Wilczynski <michal.wilczynski@intel.com>
>---
> .../ethernet/mellanox/mlx5/core/esw/devlink_port.c | 4 ++--
> drivers/net/netdevsim/dev.c | 2 +-
> include/net/devlink.h | 2 +-
> net/core/devlink.c | 14 +++++++++++++-
> 4 files changed, 17 insertions(+), 5 deletions(-)
>
>diff --git a/drivers/net/ethernet/mellanox/mlx5/core/esw/devlink_port.c b/drivers/net/ethernet/mellanox/mlx5/core/esw/devlink_port.c
>index 9bc7be95db54..084a910bb4e7 100644
>--- a/drivers/net/ethernet/mellanox/mlx5/core/esw/devlink_port.c
>+++ b/drivers/net/ethernet/mellanox/mlx5/core/esw/devlink_port.c
>@@ -91,7 +91,7 @@ int mlx5_esw_offloads_devlink_port_register(struct mlx5_eswitch *esw, u16 vport_
> if (err)
> goto reg_err;
>
>- err = devl_rate_leaf_create(dl_port, vport);
>+ err = devl_rate_leaf_create(dl_port, vport, NULL);
> if (err)
> goto rate_err;
>
>@@ -160,7 +160,7 @@ int mlx5_esw_devlink_sf_port_register(struct mlx5_eswitch *esw, struct devlink_p
> if (err)
> return err;
>
>- err = devl_rate_leaf_create(dl_port, vport);
>+ err = devl_rate_leaf_create(dl_port, vport, NULL);
> if (err)
> goto rate_err;
>
>diff --git a/drivers/net/netdevsim/dev.c b/drivers/net/netdevsim/dev.c
>index 794fc0cc73b8..10e5c4de6b02 100644
>--- a/drivers/net/netdevsim/dev.c
>+++ b/drivers/net/netdevsim/dev.c
>@@ -1392,7 +1392,7 @@ static int __nsim_dev_port_add(struct nsim_dev *nsim_dev, enum nsim_dev_port_typ
>
> if (nsim_dev_port_is_vf(nsim_dev_port)) {
> err = devl_rate_leaf_create(&nsim_dev_port->devlink_port,
>- nsim_dev_port);
>+ nsim_dev_port, NULL);
> if (err)
> goto err_nsim_destroy;
> }
>diff --git a/include/net/devlink.h b/include/net/devlink.h
>index 9d0a424712fd..2ccb69606d23 100644
>--- a/include/net/devlink.h
>+++ b/include/net/devlink.h
>@@ -1602,7 +1602,7 @@ void devlink_port_attrs_pci_vf_set(struct devlink_port *devlink_port, u32 contro
> void devlink_port_attrs_pci_sf_set(struct devlink_port *devlink_port,
> u32 controller, u16 pf, u32 sf,
> bool external);
>-int devl_rate_leaf_create(struct devlink_port *port, void *priv);
>+int devl_rate_leaf_create(struct devlink_port *port, void *priv, char *parent_name);
> int devl_rate_node_create(struct devlink *devlink, void *priv, char *node_name,
> char *parent_name);
> void devl_rate_leaf_destroy(struct devlink_port *devlink_port);
>diff --git a/net/core/devlink.c b/net/core/devlink.c
>index 9bdbc158c36a..140336c09bd5 100644
>--- a/net/core/devlink.c
>+++ b/net/core/devlink.c
>@@ -10325,13 +10325,15 @@ EXPORT_SYMBOL_GPL(devl_rate_node_create);
> * devl_rate_leaf_create - create devlink rate leaf
> * @devlink_port: devlink port object to create rate object on
> * @priv: driver private data
>+ * @parent_name: name of the parent node
> *
> * Create devlink rate object of type leaf on provided @devlink_port.
> */
>-int devl_rate_leaf_create(struct devlink_port *devlink_port, void *priv)
>+int devl_rate_leaf_create(struct devlink_port *devlink_port, void *priv, char *parent_name)
Again, don't refer to parent object by string, but rather pointer to the
struct.
> {
> struct devlink *devlink = devlink_port->devlink;
> struct devlink_rate *devlink_rate;
>+ struct devlink_rate *parent;
>
> devl_assert_locked(devlink_port->devlink);
>
>@@ -10342,6 +10344,16 @@ int devl_rate_leaf_create(struct devlink_port *devlink_port, void *priv)
> if (!devlink_rate)
> return -ENOMEM;
>
>+ if (parent_name) {
>+ parent = devlink_rate_node_get_by_name(devlink, parent_name);
>+ if (IS_ERR(parent)) {
>+ kfree(devlink_rate);
>+ return -ENODEV;
>+ }
>+ devlink_rate->parent = parent;
>+ refcount_inc(&devlink_rate->parent->refcnt);
>+ }
>+
> devlink_rate->type = DEVLINK_RATE_TYPE_LEAF;
> devlink_rate->devlink = devlink;
> devlink_rate->devlink_port = devlink_port;
>--
>2.37.2
>
next prev parent reply other threads:[~2022-10-31 10:27 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-10-28 10:51 [PATCH net-next v8 0/9] Implement devlink-rate API and extend it Michal Wilczynski
2022-10-28 10:51 ` [PATCH net-next v8 1/9] devlink: Introduce new parameter 'tx_priority' to devlink-rate Michal Wilczynski
2022-10-31 10:13 ` Jiri Pirko
2022-11-02 10:38 ` Wilczynski, Michal
2022-10-28 10:51 ` [PATCH net-next v8 2/9] devlink: Introduce new parameter 'tx_weight' " Michal Wilczynski
2022-10-28 10:51 ` [PATCH net-next v8 3/9] devlink: Enable creation of the devlink-rate nodes from the driver Michal Wilczynski
2022-10-31 10:19 ` Jiri Pirko
2022-11-04 14:34 ` Wilczynski, Michal
2022-10-28 10:51 ` [PATCH net-next v8 4/9] devlink: Allow for devlink-rate nodes parent reassignment Michal Wilczynski
2022-10-31 10:25 ` Jiri Pirko
2022-10-28 10:51 ` [PATCH net-next v8 5/9] devlink: Allow to set up parent in devl_rate_leaf_create() Michal Wilczynski
2022-10-31 10:26 ` Jiri Pirko [this message]
2022-10-28 10:51 ` [PATCH net-next v8 6/9] devlink: Allow to change priv in devlink-rate from parent_set callbacks Michal Wilczynski
2022-10-31 12:22 ` Jiri Pirko
2022-11-04 14:38 ` Wilczynski, Michal
2022-10-28 10:51 ` [PATCH net-next v8 7/9] ice: Introduce new parameters in ice_sched_node Michal Wilczynski
2022-10-28 10:51 ` [PATCH net-next v8 8/9] ice: Implement devlink-rate API Michal Wilczynski
2022-10-28 10:51 ` [PATCH net-next v8 9/9] ice: Prevent ADQ, DCB, RDMA coexistence with Custom Tx scheduler Michal Wilczynski
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=Y1+i8LjMJuIsAhqH@nanopsycho \
--to=jiri@resnulli.us \
--cc=alexandr.lobakin@intel.com \
--cc=anthony.l.nguyen@intel.com \
--cc=ecree.xilinx@gmail.com \
--cc=jacob.e.keller@intel.com \
--cc=jesse.brandeburg@intel.com \
--cc=kuba@kernel.org \
--cc=michal.wilczynski@intel.com \
--cc=netdev@vger.kernel.org \
--cc=przemyslaw.kitszel@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.