* [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
* [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 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
* 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 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.