From: Jiri Pirko <jiri@resnulli.us>
To: dsahern@kernel.org
Cc: netdev@vger.kernel.org, idosch@mellanox.com, jiri@mellanox.com,
jakub.kicinski@netronome.com, David Ahern <dsahern@gmail.com>
Subject: Re: [PATCH net-next 3/3] mlxsw: Add extack messages for port_{un,}split failures^[
Date: Tue, 5 Jun 2018 09:52:30 +0200 [thread overview]
Message-ID: <20180605075230.GC2164@nanopsycho> (raw)
In-Reply-To: <20180604221503.20329-4-dsahern@kernel.org>
Tue, Jun 05, 2018 at 12:15:03AM CEST, dsahern@kernel.org wrote:
>From: David Ahern <dsahern@gmail.com>
>
>Return messages in extack for port split/unsplit errors. e.g.,
> $ devlink port split swp1s1 count 4
> Error: mlxsw_spectrum: Port cannot be split further.
> devlink answers: Invalid argument
>
> $ devlink port unsplit swp4
> Error: mlxsw_spectrum: Port was not split.
> devlink answers: Invalid argument
>
>Signed-off-by: David Ahern <dsahern@gmail.com>
>---
> drivers/net/ethernet/mellanox/mlxsw/core.c | 14 ++++++++++----
> drivers/net/ethernet/mellanox/mlxsw/core.h | 5 +++--
> drivers/net/ethernet/mellanox/mlxsw/spectrum.c | 13 +++++++++++--
> 3 files changed, 24 insertions(+), 8 deletions(-)
>
>diff --git a/drivers/net/ethernet/mellanox/mlxsw/core.c b/drivers/net/ethernet/mellanox/mlxsw/core.c
>index 7ed38d80bc08..f9c724752a32 100644
>--- a/drivers/net/ethernet/mellanox/mlxsw/core.c
>+++ b/drivers/net/ethernet/mellanox/mlxsw/core.c
>@@ -775,11 +775,14 @@ static int mlxsw_devlink_port_split(struct devlink *devlink,
> {
> struct mlxsw_core *mlxsw_core = devlink_priv(devlink);
>
>- if (port_index >= mlxsw_core->max_ports)
>+ if (port_index >= mlxsw_core->max_ports) {
>+ NL_SET_ERR_MSG_MOD(extack, "Port index exceeds maximum number of ports");
> return -EINVAL;
>+ }
> if (!mlxsw_core->driver->port_split)
> return -EOPNOTSUPP;
>- return mlxsw_core->driver->port_split(mlxsw_core, port_index, count);
>+ return mlxsw_core->driver->port_split(mlxsw_core, port_index, count,
>+ extack);
> }
>
> static int mlxsw_devlink_port_unsplit(struct devlink *devlink,
>@@ -788,11 +791,14 @@ static int mlxsw_devlink_port_unsplit(struct devlink *devlink,
> {
> struct mlxsw_core *mlxsw_core = devlink_priv(devlink);
>
>- if (port_index >= mlxsw_core->max_ports)
>+ if (port_index >= mlxsw_core->max_ports) {
>+ NL_SET_ERR_MSG_MOD(extack, "Port index exceeds maximum number of ports");
> return -EINVAL;
>+ }
> if (!mlxsw_core->driver->port_unsplit)
> return -EOPNOTSUPP;
>- return mlxsw_core->driver->port_unsplit(mlxsw_core, port_index);
>+ return mlxsw_core->driver->port_unsplit(mlxsw_core, port_index,
>+ extack);
> }
>
> static int
>diff --git a/drivers/net/ethernet/mellanox/mlxsw/core.h b/drivers/net/ethernet/mellanox/mlxsw/core.h
>index 4a8d4c7f89d9..552cfa29c2f7 100644
>--- a/drivers/net/ethernet/mellanox/mlxsw/core.h
>+++ b/drivers/net/ethernet/mellanox/mlxsw/core.h
>@@ -274,8 +274,9 @@ struct mlxsw_driver {
> int (*port_type_set)(struct mlxsw_core *mlxsw_core, u8 local_port,
> enum devlink_port_type new_type);
> int (*port_split)(struct mlxsw_core *mlxsw_core, u8 local_port,
>- unsigned int count);
>- int (*port_unsplit)(struct mlxsw_core *mlxsw_core, u8 local_port);
>+ unsigned int count, struct netlink_ext_ack *extack);
>+ int (*port_unsplit)(struct mlxsw_core *mlxsw_core, u8 local_port,
>+ struct netlink_ext_ack *extack);
> int (*sb_pool_get)(struct mlxsw_core *mlxsw_core,
> unsigned int sb_index, u16 pool_index,
> struct devlink_sb_pool_info *pool_info);
>diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c
>index fc39f22e5c70..1b6d930e452d 100644
>--- a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c
>+++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c
>@@ -3092,7 +3092,8 @@ static void mlxsw_sp_port_unsplit_create(struct mlxsw_sp *mlxsw_sp,
> }
>
> static int mlxsw_sp_port_split(struct mlxsw_core *mlxsw_core, u8 local_port,
>- unsigned int count)
>+ unsigned int count,
>+ struct netlink_ext_ack *extack)
> {
> struct mlxsw_sp *mlxsw_sp = mlxsw_core_driver_priv(mlxsw_core);
> struct mlxsw_sp_port *mlxsw_sp_port;
>@@ -3104,6 +3105,7 @@ static int mlxsw_sp_port_split(struct mlxsw_core *mlxsw_core, u8 local_port,
> if (!mlxsw_sp_port) {
> dev_err(mlxsw_sp->bus_info->dev, "Port number \"%d\" does not exist\n",
> local_port);
>+ NL_SET_ERR_MSG_MOD(extack, "Port number does not exist");
> return -EINVAL;
> }
>
>@@ -3112,11 +3114,13 @@ static int mlxsw_sp_port_split(struct mlxsw_core *mlxsw_core, u8 local_port,
>
> if (count != 2 && count != 4) {
> netdev_err(mlxsw_sp_port->dev, "Port can only be split into 2 or 4 ports\n");
>+ NL_SET_ERR_MSG_MOD(extack, "Port can only be split into 2 or 4 ports");
> return -EINVAL;
> }
>
> if (cur_width != MLXSW_PORT_MODULE_MAX_WIDTH) {
> netdev_err(mlxsw_sp_port->dev, "Port cannot be split further\n");
>+ NL_SET_ERR_MSG_MOD(extack, "Port cannot be split further");
> return -EINVAL;
> }
>
>@@ -3125,6 +3129,7 @@ static int mlxsw_sp_port_split(struct mlxsw_core *mlxsw_core, u8 local_port,
> base_port = local_port;
> if (mlxsw_sp->ports[base_port + 1]) {
> netdev_err(mlxsw_sp_port->dev, "Invalid split configuration\n");
>+ NL_SET_ERR_MSG_MOD(extack, "Invalid split configuration");
> return -EINVAL;
> }
> } else {
>@@ -3132,6 +3137,7 @@ static int mlxsw_sp_port_split(struct mlxsw_core *mlxsw_core, u8 local_port,
> if (mlxsw_sp->ports[base_port + 1] ||
> mlxsw_sp->ports[base_port + 3]) {
> netdev_err(mlxsw_sp_port->dev, "Invalid split configuration\n");
>+ NL_SET_ERR_MSG_MOD(extack, "Invalid split configuration");
> return -EINVAL;
> }
> }
>@@ -3153,7 +3159,8 @@ static int mlxsw_sp_port_split(struct mlxsw_core *mlxsw_core, u8 local_port,
> return err;
> }
>
>-static int mlxsw_sp_port_unsplit(struct mlxsw_core *mlxsw_core, u8 local_port)
>+static int mlxsw_sp_port_unsplit(struct mlxsw_core *mlxsw_core, u8 local_port,
>+ struct netlink_ext_ack *extack)
> {
> struct mlxsw_sp *mlxsw_sp = mlxsw_core_driver_priv(mlxsw_core);
> struct mlxsw_sp_port *mlxsw_sp_port;
>@@ -3165,11 +3172,13 @@ static int mlxsw_sp_port_unsplit(struct mlxsw_core *mlxsw_core, u8 local_port)
> if (!mlxsw_sp_port) {
> dev_err(mlxsw_sp->bus_info->dev, "Port number \"%d\" does not exist\n",
> local_port);
>+ NL_SET_ERR_MSG_MOD(extack, "Port number does not exist");
> return -EINVAL;
> }
>
> if (!mlxsw_sp_port->split) {
> netdev_err(mlxsw_sp_port->dev, "Port wasn't split\n");
>+ NL_SET_ERR_MSG_MOD(extack, "Port was not split");
I wonder if we need the dmesg for these as well. Plus it is not the same
(wasn't/was not) which is maybe confusing. Any objection against the
original dmesg messages removal?
> return -EINVAL;
> }
>
>--
>2.11.0
>
next prev parent reply other threads:[~2018-06-05 7:53 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-06-04 22:15 [PATCH net-next 0/3] devlink: Add extack messages for reload and port split/unsplit dsahern
2018-06-04 22:15 ` [PATCH net-next 1/3] devlink: Add extack to reload and port_{un,}split operations dsahern
2018-06-05 7:50 ` Jiri Pirko
2018-06-04 22:15 ` [PATCH net-next 2/3] netdevsim: Add extack error message for devlink reload dsahern
2018-06-04 22:47 ` Jakub Kicinski
2018-06-04 22:15 ` [PATCH net-next 3/3] mlxsw: Add extack messages for port_{un,}split failures dsahern
2018-06-05 5:56 ` Ido Schimmel
2018-06-05 7:52 ` Jiri Pirko [this message]
2018-06-05 8:05 ` [PATCH net-next 3/3] mlxsw: Add extack messages for port_{un,}split failures? Ido Schimmel
2018-06-05 8:18 ` Jiri Pirko
2018-06-05 14:24 ` David Miller
2018-06-05 14:58 ` David Ahern
2018-06-05 15:05 ` David Miller
2018-06-05 15:05 ` 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=20180605075230.GC2164@nanopsycho \
--to=jiri@resnulli.us \
--cc=dsahern@gmail.com \
--cc=dsahern@kernel.org \
--cc=idosch@mellanox.com \
--cc=jakub.kicinski@netronome.com \
--cc=jiri@mellanox.com \
--cc=netdev@vger.kernel.org \
/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.