* [patch net-next 0/2] mlxsw: Add more extack error reporting
@ 2017-10-05 21:39 Jiri Pirko
2017-10-05 21:39 ` [patch net-next 1/2] mlxsw: spectrum: Add extack for VLAN enslavements Jiri Pirko
` (2 more replies)
0 siblings, 3 replies; 7+ messages in thread
From: Jiri Pirko @ 2017-10-05 21:39 UTC (permalink / raw)
To: netdev; +Cc: davem, idosch, mlxsw
From: Jiri Pirko <jiri@mellanox.com>
Ido says:
Add error messages to VLAN and bridge enslavements to help users
understand why the enslavement failed.
Ido Schimmel (2):
mlxsw: spectrum: Add extack for VLAN enslavements
mlxsw: spectrum: Propagate extack further for bridge enslavements
drivers/net/ethernet/mellanox/mlxsw/spectrum.c | 18 ++++++++++++----
drivers/net/ethernet/mellanox/mlxsw/spectrum.h | 3 ++-
.../ethernet/mellanox/mlxsw/spectrum_switchdev.c | 25 +++++++++++++++-------
3 files changed, 33 insertions(+), 13 deletions(-)
--
2.9.5
^ permalink raw reply [flat|nested] 7+ messages in thread* [patch net-next 1/2] mlxsw: spectrum: Add extack for VLAN enslavements 2017-10-05 21:39 [patch net-next 0/2] mlxsw: Add more extack error reporting Jiri Pirko @ 2017-10-05 21:39 ` Jiri Pirko 2017-10-06 18:24 ` David Ahern 2017-10-05 21:40 ` [patch net-next 2/2] mlxsw: spectrum: Propagate extack further for bridge enslavements Jiri Pirko 2017-10-07 22:23 ` [patch net-next 0/2] mlxsw: Add more extack error reporting David Miller 2 siblings, 1 reply; 7+ messages in thread From: Jiri Pirko @ 2017-10-05 21:39 UTC (permalink / raw) To: netdev; +Cc: davem, idosch, mlxsw From: Ido Schimmel <idosch@mellanox.com> Similar to physical ports, enslavement of VLAN devices can also fail. Use extack to indicate why the enslavement failed. $ ip link add link enp1s0np1 name enp1s0np1.10 type vlan id 10 $ ip link add name bond0 type bond mode 802.3ad $ ip link set dev enp1s0np1.10 master bond0 Error: spectrum: VLAN devices only support bridge and VRF uppers. Signed-off-by: Ido Schimmel <idosch@mellanox.com> Signed-off-by: Jiri Pirko <jiri@mellanox.com> --- drivers/net/ethernet/mellanox/mlxsw/spectrum.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c index 5cd4df0..5ab4fd7 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c @@ -53,6 +53,7 @@ #include <linux/notifier.h> #include <linux/dcbnl.h> #include <linux/inetdevice.h> +#include <linux/netlink.h> #include <net/switchdev.h> #include <net/pkt_cls.h> #include <net/tc_act/tc_mirred.h> @@ -4389,18 +4390,25 @@ static int mlxsw_sp_netdevice_port_vlan_event(struct net_device *vlan_dev, { struct mlxsw_sp_port *mlxsw_sp_port = netdev_priv(dev); struct netdev_notifier_changeupper_info *info = ptr; + struct netlink_ext_ack *extack; struct net_device *upper_dev; int err = 0; + extack = netdev_notifier_info_to_extack(&info->info); + switch (event) { case NETDEV_PRECHANGEUPPER: upper_dev = info->upper_dev; - if (!netif_is_bridge_master(upper_dev)) + if (!netif_is_bridge_master(upper_dev)) { + NL_SET_ERR_MSG(extack, "spectrum: VLAN devices only support bridge and VRF uppers"); return -EINVAL; + } if (!info->linking) break; - if (netdev_has_any_upper_dev(upper_dev)) + if (netdev_has_any_upper_dev(upper_dev)) { + NL_SET_ERR_MSG(extack, "spectrum: Enslaving a port to a device that already has an upper device is not supported"); return -EINVAL; + } break; case NETDEV_CHANGEUPPER: upper_dev = info->upper_dev; -- 2.9.5 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [patch net-next 1/2] mlxsw: spectrum: Add extack for VLAN enslavements 2017-10-05 21:39 ` [patch net-next 1/2] mlxsw: spectrum: Add extack for VLAN enslavements Jiri Pirko @ 2017-10-06 18:24 ` David Ahern 0 siblings, 0 replies; 7+ messages in thread From: David Ahern @ 2017-10-06 18:24 UTC (permalink / raw) To: Jiri Pirko, netdev; +Cc: davem, idosch, mlxsw On 10/5/17 3:39 PM, Jiri Pirko wrote: > From: Ido Schimmel <idosch@mellanox.com> > > Similar to physical ports, enslavement of VLAN devices can also fail. > Use extack to indicate why the enslavement failed. > > $ ip link add link enp1s0np1 name enp1s0np1.10 type vlan id 10 > $ ip link add name bond0 type bond mode 802.3ad > $ ip link set dev enp1s0np1.10 master bond0 > Error: spectrum: VLAN devices only support bridge and VRF uppers. > > Signed-off-by: Ido Schimmel <idosch@mellanox.com> > Signed-off-by: Jiri Pirko <jiri@mellanox.com> > --- > drivers/net/ethernet/mellanox/mlxsw/spectrum.c | 12 ++++++++++-- > 1 file changed, 10 insertions(+), 2 deletions(-) Acked-by: David Ahern <dsahern@gmail.com> ^ permalink raw reply [flat|nested] 7+ messages in thread
* [patch net-next 2/2] mlxsw: spectrum: Propagate extack further for bridge enslavements 2017-10-05 21:39 [patch net-next 0/2] mlxsw: Add more extack error reporting Jiri Pirko 2017-10-05 21:39 ` [patch net-next 1/2] mlxsw: spectrum: Add extack for VLAN enslavements Jiri Pirko @ 2017-10-05 21:40 ` Jiri Pirko 2017-10-06 18:24 ` David Ahern 2017-10-07 22:23 ` [patch net-next 0/2] mlxsw: Add more extack error reporting David Miller 2 siblings, 1 reply; 7+ messages in thread From: Jiri Pirko @ 2017-10-05 21:40 UTC (permalink / raw) To: netdev; +Cc: davem, idosch, mlxsw From: Ido Schimmel <idosch@mellanox.com> The code that actually takes care of bridge offload introduces a few more non-trivial constraints with regards to bridge enslavements. Propagate extack there to indicate the reason. $ ip link add link enp1s0np1 name enp1s0np1.10 type vlan id 10 $ ip link add link enp1s0np1 name enp1s0np1.20 type vlan id 20 $ ip link add name br0 type bridge $ ip link set dev enp1s0np1.10 master br0 $ ip link set dev enp1s0np1.20 master br0 Error: spectrum: Can not bridge VLAN uppers of the same port. Signed-off-by: Ido Schimmel <idosch@mellanox.com> Signed-off-by: Jiri Pirko <jiri@mellanox.com> --- drivers/net/ethernet/mellanox/mlxsw/spectrum.c | 6 ++++-- drivers/net/ethernet/mellanox/mlxsw/spectrum.h | 3 ++- .../ethernet/mellanox/mlxsw/spectrum_switchdev.c | 25 +++++++++++++++------- 3 files changed, 23 insertions(+), 11 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c index 5ab4fd7..321988a 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c @@ -4299,7 +4299,8 @@ static int mlxsw_sp_netdevice_port_upper_event(struct net_device *lower_dev, if (info->linking) err = mlxsw_sp_port_bridge_join(mlxsw_sp_port, lower_dev, - upper_dev); + upper_dev, + extack); else mlxsw_sp_port_bridge_leave(mlxsw_sp_port, lower_dev, @@ -4416,7 +4417,8 @@ static int mlxsw_sp_netdevice_port_vlan_event(struct net_device *vlan_dev, if (info->linking) err = mlxsw_sp_port_bridge_join(mlxsw_sp_port, vlan_dev, - upper_dev); + upper_dev, + extack); else mlxsw_sp_port_bridge_leave(mlxsw_sp_port, vlan_dev, diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum.h b/drivers/net/ethernet/mellanox/mlxsw/spectrum.h index ae67e60..8e45183 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum.h +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum.h @@ -326,7 +326,8 @@ void mlxsw_sp_port_vlan_bridge_leave(struct mlxsw_sp_port_vlan *mlxsw_sp_port_vlan); int mlxsw_sp_port_bridge_join(struct mlxsw_sp_port *mlxsw_sp_port, struct net_device *brport_dev, - struct net_device *br_dev); + struct net_device *br_dev, + struct netlink_ext_ack *extack); void mlxsw_sp_port_bridge_leave(struct mlxsw_sp_port *mlxsw_sp_port, struct net_device *brport_dev, struct net_device *br_dev); diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c index 0f9eac5..2cfdf22 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c @@ -46,6 +46,7 @@ #include <linux/workqueue.h> #include <linux/jiffies.h> #include <linux/rtnetlink.h> +#include <linux/netlink.h> #include <net/switchdev.h> #include "spectrum.h" @@ -107,7 +108,8 @@ struct mlxsw_sp_bridge_vlan { struct mlxsw_sp_bridge_ops { int (*port_join)(struct mlxsw_sp_bridge_device *bridge_device, struct mlxsw_sp_bridge_port *bridge_port, - struct mlxsw_sp_port *mlxsw_sp_port); + struct mlxsw_sp_port *mlxsw_sp_port, + struct netlink_ext_ack *extack); void (*port_leave)(struct mlxsw_sp_bridge_device *bridge_device, struct mlxsw_sp_bridge_port *bridge_port, struct mlxsw_sp_port *mlxsw_sp_port); @@ -1735,12 +1737,15 @@ static const struct switchdev_ops mlxsw_sp_port_switchdev_ops = { static int mlxsw_sp_bridge_8021q_port_join(struct mlxsw_sp_bridge_device *bridge_device, struct mlxsw_sp_bridge_port *bridge_port, - struct mlxsw_sp_port *mlxsw_sp_port) + struct mlxsw_sp_port *mlxsw_sp_port, + struct netlink_ext_ack *extack) { struct mlxsw_sp_port_vlan *mlxsw_sp_port_vlan; - if (is_vlan_dev(bridge_port->dev)) + if (is_vlan_dev(bridge_port->dev)) { + NL_SET_ERR_MSG(extack, "spectrum: Can not enslave a VLAN device to a VLAN-aware bridge"); return -EINVAL; + } mlxsw_sp_port_vlan = mlxsw_sp_port_vlan_find_by_vid(mlxsw_sp_port, 1); if (WARN_ON(!mlxsw_sp_port_vlan)) @@ -1797,13 +1802,16 @@ mlxsw_sp_port_is_br_member(const struct mlxsw_sp_port *mlxsw_sp_port, static int mlxsw_sp_bridge_8021d_port_join(struct mlxsw_sp_bridge_device *bridge_device, struct mlxsw_sp_bridge_port *bridge_port, - struct mlxsw_sp_port *mlxsw_sp_port) + struct mlxsw_sp_port *mlxsw_sp_port, + struct netlink_ext_ack *extack) { struct mlxsw_sp_port_vlan *mlxsw_sp_port_vlan; u16 vid; - if (!is_vlan_dev(bridge_port->dev)) + if (!is_vlan_dev(bridge_port->dev)) { + NL_SET_ERR_MSG(extack, "spectrum: Only VLAN devices can be enslaved to a VLAN-unaware bridge"); return -EINVAL; + } vid = vlan_dev_vlan_id(bridge_port->dev); mlxsw_sp_port_vlan = mlxsw_sp_port_vlan_find_by_vid(mlxsw_sp_port, vid); @@ -1811,7 +1819,7 @@ mlxsw_sp_bridge_8021d_port_join(struct mlxsw_sp_bridge_device *bridge_device, return -EINVAL; if (mlxsw_sp_port_is_br_member(mlxsw_sp_port, bridge_device->dev)) { - netdev_err(mlxsw_sp_port->dev, "Can't bridge VLAN uppers of the same port\n"); + NL_SET_ERR_MSG(extack, "spectrum: Can not bridge VLAN uppers of the same port"); return -EINVAL; } @@ -1854,7 +1862,8 @@ static const struct mlxsw_sp_bridge_ops mlxsw_sp_bridge_8021d_ops = { int mlxsw_sp_port_bridge_join(struct mlxsw_sp_port *mlxsw_sp_port, struct net_device *brport_dev, - struct net_device *br_dev) + struct net_device *br_dev, + struct netlink_ext_ack *extack) { struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp; struct mlxsw_sp_bridge_device *bridge_device; @@ -1867,7 +1876,7 @@ int mlxsw_sp_port_bridge_join(struct mlxsw_sp_port *mlxsw_sp_port, bridge_device = bridge_port->bridge_device; err = bridge_device->ops->port_join(bridge_device, bridge_port, - mlxsw_sp_port); + mlxsw_sp_port, extack); if (err) goto err_port_join; -- 2.9.5 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [patch net-next 2/2] mlxsw: spectrum: Propagate extack further for bridge enslavements 2017-10-05 21:40 ` [patch net-next 2/2] mlxsw: spectrum: Propagate extack further for bridge enslavements Jiri Pirko @ 2017-10-06 18:24 ` David Ahern 0 siblings, 0 replies; 7+ messages in thread From: David Ahern @ 2017-10-06 18:24 UTC (permalink / raw) To: Jiri Pirko, netdev; +Cc: davem, idosch, mlxsw On 10/5/17 3:40 PM, Jiri Pirko wrote: > From: Ido Schimmel <idosch@mellanox.com> > > The code that actually takes care of bridge offload introduces a few > more non-trivial constraints with regards to bridge enslavements. > Propagate extack there to indicate the reason. > > $ ip link add link enp1s0np1 name enp1s0np1.10 type vlan id 10 > $ ip link add link enp1s0np1 name enp1s0np1.20 type vlan id 20 > $ ip link add name br0 type bridge > $ ip link set dev enp1s0np1.10 master br0 > $ ip link set dev enp1s0np1.20 master br0 > Error: spectrum: Can not bridge VLAN uppers of the same port. > > Signed-off-by: Ido Schimmel <idosch@mellanox.com> > Signed-off-by: Jiri Pirko <jiri@mellanox.com> > --- > drivers/net/ethernet/mellanox/mlxsw/spectrum.c | 6 ++++-- > drivers/net/ethernet/mellanox/mlxsw/spectrum.h | 3 ++- > .../ethernet/mellanox/mlxsw/spectrum_switchdev.c | 25 +++++++++++++++------- > 3 files changed, 23 insertions(+), 11 deletions(-) Acked-by: David Ahern <dsahern@gmail.com> ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [patch net-next 0/2] mlxsw: Add more extack error reporting 2017-10-05 21:39 [patch net-next 0/2] mlxsw: Add more extack error reporting Jiri Pirko 2017-10-05 21:39 ` [patch net-next 1/2] mlxsw: spectrum: Add extack for VLAN enslavements Jiri Pirko 2017-10-05 21:40 ` [patch net-next 2/2] mlxsw: spectrum: Propagate extack further for bridge enslavements Jiri Pirko @ 2017-10-07 22:23 ` David Miller 2017-10-08 9:50 ` Jiri Pirko 2 siblings, 1 reply; 7+ messages in thread From: David Miller @ 2017-10-07 22:23 UTC (permalink / raw) To: jiri; +Cc: netdev, idosch, mlxsw From: Jiri Pirko <jiri@resnulli.us> Date: Thu, 5 Oct 2017 23:39:58 +0200 > From: Jiri Pirko <jiri@mellanox.com> > > Ido says: > > Add error messages to VLAN and bridge enslavements to help users > understand why the enslavement failed. For some reason patch #2 didn't make it to the list and patchwork, could you please resend (and add in David Ahern's ACK of course). ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [patch net-next 0/2] mlxsw: Add more extack error reporting 2017-10-07 22:23 ` [patch net-next 0/2] mlxsw: Add more extack error reporting David Miller @ 2017-10-08 9:50 ` Jiri Pirko 0 siblings, 0 replies; 7+ messages in thread From: Jiri Pirko @ 2017-10-08 9:50 UTC (permalink / raw) To: David Miller; +Cc: netdev, idosch, mlxsw Sun, Oct 08, 2017 at 12:23:50AM CEST, davem@davemloft.net wrote: >From: Jiri Pirko <jiri@resnulli.us> >Date: Thu, 5 Oct 2017 23:39:58 +0200 > >> From: Jiri Pirko <jiri@mellanox.com> >> >> Ido says: >> >> Add error messages to VLAN and bridge enslavements to help users >> understand why the enslavement failed. > >For some reason patch #2 didn't make it to the list and patchwork, >could you please resend (and add in David Ahern's ACK of course). Will do. Thanks ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2017-10-08 9:50 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2017-10-05 21:39 [patch net-next 0/2] mlxsw: Add more extack error reporting Jiri Pirko 2017-10-05 21:39 ` [patch net-next 1/2] mlxsw: spectrum: Add extack for VLAN enslavements Jiri Pirko 2017-10-06 18:24 ` David Ahern 2017-10-05 21:40 ` [patch net-next 2/2] mlxsw: spectrum: Propagate extack further for bridge enslavements Jiri Pirko 2017-10-06 18:24 ` David Ahern 2017-10-07 22:23 ` [patch net-next 0/2] mlxsw: Add more extack error reporting David Miller 2017-10-08 9:50 ` Jiri Pirko
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).