All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jiri Pirko <jiri@resnulli.us>
To: Jakub Kicinski <kuba@kernel.org>
Cc: davem@davemloft.net, netdev@vger.kernel.org, edumazet@google.com,
	pabeni@redhat.com, jacob.e.keller@intel.com
Subject: Re: [PATCH net-next 05/14] devlink: use an explicit structure for dump context
Date: Wed, 4 Jan 2023 11:04:01 +0100	[thread overview]
Message-ID: <Y7VPES6vqZWEMqwM@nanopsycho> (raw)
In-Reply-To: <20230104041636.226398-6-kuba@kernel.org>

Wed, Jan 04, 2023 at 05:16:27AM CET, kuba@kernel.org wrote:
>Create a dump context structure instead of using cb->args
>as an unsigned long array. This is a pure conversion which
>is intended to be as much of a noop as possible.
>Subsequent changes will use this to simplify the code.
>
>The two non-trivial parts are:
> - devlink_nl_cmd_health_reporter_dump_get_dumpit() checks args[0]
>   to see if devlink_fmsg_dumpit() has already been called (whether
>   this is the first msg), but doesn't use the exact value, so we
>   can drop the local variable there already
> - devlink_nl_cmd_region_read_dumpit() uses args[0] for address
>   but we'll use args[1] now, shouldn't matter

I don't follow this. Where do you use args[1]? you mean
dump->start_offset? If yes, it does not matter at all and I think
mentioning that only confuses reader (as it did for me).


>
>Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
>Signed-off-by: Jakub Kicinski <kuba@kernel.org>
>---
> net/devlink/devl_internal.h | 23 +++++++++
> net/devlink/leftover.c      | 98 ++++++++++++++++++++++---------------
> 2 files changed, 81 insertions(+), 40 deletions(-)
>
>diff --git a/net/devlink/devl_internal.h b/net/devlink/devl_internal.h
>index bc7df9b0f775..91059311f18d 100644
>--- a/net/devlink/devl_internal.h
>+++ b/net/devlink/devl_internal.h
>@@ -107,6 +107,21 @@ enum devlink_multicast_groups {
> 	DEVLINK_MCGRP_CONFIG,
> };
> 
>+/* state held across netlink dumps */
>+struct devlink_nl_dump_state {
>+	int idx;
>+	union {
>+		/* DEVLINK_CMD_REGION_READ */
>+		struct {
>+			u64 start_offset;
>+		};
>+		/* DEVLINK_CMD_HEALTH_REPORTER_DUMP_GET */
>+		struct {
>+			u64 dump_ts;
>+		};
>+	};
>+};
>+
> extern const struct genl_small_ops devlink_nl_ops[56];
> 
> struct devlink *devlink_get_from_attrs(struct net *net, struct nlattr **attrs);
>@@ -114,6 +129,14 @@ struct devlink *devlink_get_from_attrs(struct net *net, struct nlattr **attrs);
> void devlink_notify_unregister(struct devlink *devlink);
> void devlink_notify_register(struct devlink *devlink);
> 
>+static inline struct devlink_nl_dump_state *
>+devl_dump_state(struct netlink_callback *cb)

What is the convesion you established again regarding "devl_" and
"devlink_" prefixes? I don't find it written down anywhere and honestly
it confuses me a bit.



>+{
>+	NL_ASSET_DUMP_CTX_FITS(struct devlink_nl_dump_state);
>+
>+	return (struct devlink_nl_dump_state *)cb->ctx;
>+}
>+
> /* Ports */
> int devlink_port_netdevice_event(struct notifier_block *nb,
> 				 unsigned long event, void *ptr);
>diff --git a/net/devlink/leftover.c b/net/devlink/leftover.c
>index e01ba7999b91..bcc930b7cfcf 100644
>--- a/net/devlink/leftover.c
>+++ b/net/devlink/leftover.c
>@@ -1222,9 +1222,10 @@ static void devlink_rate_notify(struct devlink_rate *devlink_rate,
> static int devlink_nl_cmd_rate_get_dumpit(struct sk_buff *msg,
> 					  struct netlink_callback *cb)
> {
>+	struct devlink_nl_dump_state *dump = devl_dump_state(cb);

Could this be named "state" or "dump_state"? "dump" is not what it is.



> 	struct devlink_rate *devlink_rate;
> 	struct devlink *devlink;
>-	int start = cb->args[0];
>+	int start = dump->idx;
> 	unsigned long index;
> 	int idx = 0;
> 	int err = 0;

[..]


  reply	other threads:[~2023-01-04 10:04 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-01-04  4:16 [PATCH net-next 00/14] devlink: code split and structured instance walk Jakub Kicinski
2023-01-04  4:16 ` [PATCH net-next 01/14] devlink: move code to a dedicated directory Jakub Kicinski
2023-01-04  4:16 ` [PATCH net-next 02/14] devlink: split out core code Jakub Kicinski
2023-01-04  9:50   ` Jiri Pirko
2023-01-05  2:10     ` Jakub Kicinski
2023-01-06 23:55       ` Jacob Keller
2023-01-04  4:16 ` [PATCH net-next 03/14] devlink: split out netlink code Jakub Kicinski
2023-01-05  9:03   ` Jiri Pirko
2023-01-05 18:20     ` Jakub Kicinski
2023-01-06  8:47       ` Jiri Pirko
2023-01-04  4:16 ` [PATCH net-next 04/14] netlink: add macro for checking dump ctx size Jakub Kicinski
2023-01-04  9:51   ` Jiri Pirko
2023-01-04  4:16 ` [PATCH net-next 05/14] devlink: use an explicit structure for dump context Jakub Kicinski
2023-01-04 10:04   ` Jiri Pirko [this message]
2023-01-05  2:22     ` Jakub Kicinski
2023-01-04  4:16 ` [PATCH net-next 06/14] devlink: remove start variables from dumps Jakub Kicinski
2023-01-04  4:16 ` [PATCH net-next 07/14] devlink: drop the filter argument from devlinks_xa_find_get Jakub Kicinski
2023-01-04 10:05   ` Jiri Pirko
2023-01-04  4:16 ` [PATCH net-next 08/14] devlink: health: combine loops in dump Jakub Kicinski
2023-01-04 10:06   ` Jiri Pirko
2023-01-04  4:16 ` [PATCH net-next 09/14] devlink: restart dump based on devlink instance ids (simple) Jakub Kicinski
2023-01-04 14:18   ` Jiri Pirko
2023-01-05  3:21     ` Jakub Kicinski
2023-01-04  4:16 ` [PATCH net-next 10/14] devlink: restart dump based on devlink instance ids (nested) Jakub Kicinski
2023-01-04 15:47   ` Jiri Pirko
2023-01-04  4:16 ` [PATCH net-next 11/14] devlink: restart dump based on devlink instance ids (function) Jakub Kicinski
2023-01-04 15:51   ` Jiri Pirko
2023-01-04  4:16 ` [PATCH net-next 12/14] devlink: uniformly take the devlink instance lock in the dump loop Jakub Kicinski
2023-01-04 15:52   ` Jiri Pirko
2023-01-04  4:16 ` [PATCH net-next 13/14] devlink: add by-instance dump infra Jakub Kicinski
2023-01-04 16:50   ` Jiri Pirko
2023-01-05  3:46     ` Jakub Kicinski
2023-01-05  9:02       ` Jiri Pirko
2023-01-05 18:24         ` Jakub Kicinski
2023-01-06  8:56           ` Jiri Pirko
2023-01-06 21:12             ` Jakub Kicinski
2023-01-07  9:23               ` Jiri Pirko
2023-01-09 19:49                 ` Jakub Kicinski
2023-01-10 14:31                   ` Jiri Pirko
2023-01-12  0:13                     ` Jacob Keller
2023-01-06 11:25       ` Jiri Pirko
2023-01-04  4:16 ` [PATCH net-next 14/14] devlink: convert remaining dumps to the by-instance scheme Jakub Kicinski

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=Y7VPES6vqZWEMqwM@nanopsycho \
    --to=jiri@resnulli.us \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=jacob.e.keller@intel.com \
    --cc=kuba@kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.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.