From: Jiri Pirko <jiri@resnulli.us>
To: Vasundhara Volam <vasundhara-v.volam@broadcom.com>
Cc: davem@davemloft.net, michael.chan@broadcom.com,
jiri@mellanox.com, netdev@vger.kernel.org
Subject: Re: [PATCH net-next RFC 4/7] devlink: Add support for get/set driverinit value for devlink_port
Date: Wed, 5 Dec 2018 13:59:42 +0100 [thread overview]
Message-ID: <20181205125942.GE2318@nanopsycho> (raw)
In-Reply-To: <1543989420-14859-5-git-send-email-vasundhara-v.volam@broadcom.com>
Wed, Dec 05, 2018 at 06:56:57AM CET, vasundhara-v.volam@broadcom.com wrote:
>Add support for "driverinit" configuration mode value for devlink_port
>configuration parameters. Two additional functions added to help the
>driver get/set the value from/to devlink:
>devlink_port_param_driverinit_value_set() and
>devlink_port_param_driverinit_value_get().
>
>Also, move the common code to __devlink_param_driverinit_value_get/set()
>to be used by both device and port params.
>
>Cc: Jiri Pirko <jiri@mellanox.com>
>Signed-off-by: Vasundhara Volam <vasundhara-v.volam@broadcom.com>
>---
> include/net/devlink.h | 19 ++++++++
> net/core/devlink.c | 118 +++++++++++++++++++++++++++++++++++++++-----------
> 2 files changed, 112 insertions(+), 25 deletions(-)
>
>diff --git a/include/net/devlink.h b/include/net/devlink.h
>index 9b4d80b..c22b195 100644
>--- a/include/net/devlink.h
>+++ b/include/net/devlink.h
>@@ -588,6 +588,9 @@ int devlink_port_params_register(struct devlink_port *devlink_port,
> void devlink_port_params_unregister(struct devlink_port *devlink_port,
> const struct devlink_param *params,
> size_t params_count);
>+int devlink_port_param_driverinit_value_set(struct devlink_port *devlink_port,
>+ u32 param_id,
>+ union devlink_param_value init_val);
> struct devlink_region *devlink_region_create(struct devlink *devlink,
> const char *region_name,
> u32 region_max_snapshots,
>@@ -845,6 +848,22 @@ static inline bool devlink_dpipe_table_counter_enabled(struct devlink *devlink,
> {
> }
>
>+static inline int
>+devlink_port_param_driverinit_value_get(struct devlink_port *devlink_port,
>+ u32 param_id,
>+ union devlink_param_value *init_val)
>+{
>+ return -EOPNOTSUPP;
>+}
>+
>+static inline int
>+devlink_port_param_driverinit_value_set(struct devlink_port *devlink_port,
>+ u32 param_id,
>+ union devlink_param_value init_val)
>+{
>+ return -EOPNOTSUPP;
>+}
>+
> static inline struct devlink_region *
> devlink_region_create(struct devlink *devlink,
> const char *region_name,
>diff --git a/net/core/devlink.c b/net/core/devlink.c
>index 10e1c45..4f0052d 100644
>--- a/net/core/devlink.c
>+++ b/net/core/devlink.c
>@@ -4690,6 +4690,29 @@ void devlink_params_unregister(struct devlink *devlink,
> }
> EXPORT_SYMBOL_GPL(devlink_params_unregister);
>
>+static int
>+__devlink_param_driverinit_value_get(struct list_head *param_list, u32 param_id,
>+ union devlink_param_value *init_val)
>+{
>+ struct devlink_param_item *param_item;
>+
>+ param_item = devlink_param_find_by_id(param_list, param_id);
>+ if (!param_item)
>+ return -EINVAL;
>+
>+ if (!param_item->driverinit_value_valid ||
>+ !devlink_param_cmode_is_supported(param_item->param,
>+ DEVLINK_PARAM_CMODE_DRIVERINIT))
>+ return -EOPNOTSUPP;
>+
>+ if (param_item->param->type == DEVLINK_PARAM_TYPE_STRING)
>+ strcpy(init_val->vstr, param_item->driverinit_value.vstr);
>+ else
>+ *init_val = param_item->driverinit_value;
>+
>+ return 0;
>+}
>+
> /**
> * devlink_param_driverinit_value_get - get configuration parameter
> * value for driver initializing
>@@ -4704,28 +4727,40 @@ void devlink_params_unregister(struct devlink *devlink,
> int devlink_param_driverinit_value_get(struct devlink *devlink, u32 param_id,
> union devlink_param_value *init_val)
> {
>- struct devlink_param_item *param_item;
>-
> if (!devlink->ops || !devlink->ops->reload)
> return -EOPNOTSUPP;
>
>+ return __devlink_param_driverinit_value_get(&devlink->param_list,
>+ param_id, init_val);
>+}
>+EXPORT_SYMBOL_GPL(devlink_param_driverinit_value_get);
>+
>+static int
>+__devlink_param_driverinit_value_set(struct devlink *devlink,
>+ struct list_head *param_list,
>+ u32 param_id,
>+ union devlink_param_value init_val,
>+ enum devlink_command cmd)
>+{
>+ struct devlink_param_item *param_item;
>+
> param_item = devlink_param_find_by_id(&devlink->param_list, param_id);
> if (!param_item)
> return -EINVAL;
>
>- if (!param_item->driverinit_value_valid ||
>- !devlink_param_cmode_is_supported(param_item->param,
>+ if (!devlink_param_cmode_is_supported(param_item->param,
> DEVLINK_PARAM_CMODE_DRIVERINIT))
> return -EOPNOTSUPP;
>
> if (param_item->param->type == DEVLINK_PARAM_TYPE_STRING)
>- strcpy(init_val->vstr, param_item->driverinit_value.vstr);
>+ strcpy(param_item->driverinit_value.vstr, init_val.vstr);
> else
>- *init_val = param_item->driverinit_value;
>+ param_item->driverinit_value = init_val;
>+ param_item->driverinit_value_valid = true;
>+ devlink_param_notify(devlink, param_item, cmd);
>
> return 0;
Git does not understand what you do and it screwed thing up so the
review is not easy. I suggest to split this somehow, perhaps get and set
part separatelly.
Thanks.
> }
>-EXPORT_SYMBOL_GPL(devlink_param_driverinit_value_get);
>
[...]
next prev parent reply other threads:[~2018-12-05 13:06 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-12-05 5:56 [PATCH net-next RFC 0/7] Add configuration parameters support for devlink_port Vasundhara Volam
2018-12-05 5:56 ` [PATCH net-next RFC 1/7] devlink: Add devlink_param for port register and unregister Vasundhara Volam
2018-12-05 11:47 ` Jiri Pirko
2018-12-06 6:02 ` Vasundhara Volam
2018-12-06 7:06 ` Jiri Pirko
2018-12-06 7:26 ` Vasundhara Volam
2018-12-10 9:21 ` Vasundhara Volam
2018-12-10 11:29 ` Jiri Pirko
2018-12-05 5:56 ` [PATCH net-next RFC 2/7] devlink: Add port param get command Vasundhara Volam
2018-12-05 11:51 ` Jiri Pirko
2018-12-05 5:56 ` [PATCH net-next RFC 3/7] devlink: Add port param set command Vasundhara Volam
2018-12-05 12:13 ` Jiri Pirko
2018-12-05 5:56 ` [PATCH net-next RFC 4/7] devlink: Add support for get/set driverinit value for devlink_port Vasundhara Volam
2018-12-05 12:59 ` Jiri Pirko [this message]
2018-12-05 5:56 ` [PATCH net-next RFC 5/7] devlink: Add devlink notifications support for port params Vasundhara Volam
2018-12-05 13:02 ` Jiri Pirko
2018-12-05 5:56 ` [PATCH net-next RFC 6/7] devlink: Add a boolean generic port parameter Vasundhara Volam
2018-12-05 13:04 ` Jiri Pirko
2018-12-05 5:57 ` [PATCH net-next RFC 7/7] bnxt_en: Add bnxt_en initial port params table and register it Vasundhara Volam
2018-12-05 13:05 ` Jiri Pirko
2018-12-05 23:33 ` Jakub Kicinski
2018-12-06 0:01 ` Michael Chan
2018-12-06 0:42 ` Jakub Kicinski
2018-12-06 1:18 ` Michael Chan
2018-12-06 6:00 ` Jakub Kicinski
2018-12-06 6:41 ` Michael Chan
2018-12-06 7:11 ` Jakub Kicinski
2018-12-06 8:57 ` Michael Chan
2018-12-06 9:03 ` Jiri Pirko
2018-12-06 10:31 ` Vasundhara Volam
2018-12-06 11:11 ` Jiri Pirko
2018-12-06 10:36 ` Jakub Kicinski
2018-12-06 11:00 ` Michael Chan
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=20181205125942.GE2318@nanopsycho \
--to=jiri@resnulli.us \
--cc=davem@davemloft.net \
--cc=jiri@mellanox.com \
--cc=michael.chan@broadcom.com \
--cc=netdev@vger.kernel.org \
--cc=vasundhara-v.volam@broadcom.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.