diff options
author | Ido Schimmel <idosch@mellanox.com> | 2018-07-14 11:39:51 +0300 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2018-07-14 11:23:25 -0700 |
commit | c55161852fe852edd9e615768835e59059695990 (patch) | |
tree | 9445398ec9351a12f49cfd68d3d0fe7d1a88c868 /drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c | |
parent | ff0432e5a8025df895813408325b2afdfa21f946 (diff) | |
download | linux-stable-c55161852fe852edd9e615768835e59059695990.tar.gz linux-stable-c55161852fe852edd9e615768835e59059695990.tar.bz2 linux-stable-c55161852fe852edd9e615768835e59059695990.zip |
mlxsw: spectrum: Enable macvlan upper devices
In order to allow more unicast MAC addresses (e.g., VRRP virtual MAC) to
be directed to the router we need to enable macvlan uppers on top of
mlxsw netdevs.
Allow macvlan upper devices on top of mlxsw netdevs and sanitize
configurations that can't work. For example, a macvlan can't be enslaved
to a bridge as without ACLs the device doesn't take the destination MAC
into account when classifying a packet to a bridge instance (i.e., a
FID).
Signed-off-by: Ido Schimmel <idosch@mellanox.com>
Reviewed-by: Petr Machata <petrm@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c')
-rw-r--r-- | drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c index b4126db695dd..3fc521db1528 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c @@ -6692,7 +6692,10 @@ int mlxsw_sp_netdevice_vrf_event(struct net_device *l3_dev, unsigned long event, struct mlxsw_sp *mlxsw_sp = mlxsw_sp_lower_get(l3_dev); int err = 0; - if (!mlxsw_sp) + /* We do not create a RIF for a macvlan, but only use it to + * direct more MAC addresses to the router. + */ + if (!mlxsw_sp || netif_is_macvlan(l3_dev)) return 0; switch (event) { |