Commit 55c0211d authored by Petr Machata's avatar Petr Machata Committed by David S. Miller

mlxsw: spectrum_span: Support LAG under mirror-to-gretap

When resolving a path that the packet will take after being encapsulated
in mirror-to-gretap scenarios, one of the devices en route could be a
LAG. In that case, mirror to first up slave that corresponds to a front
panel port.
Signed-off-by: default avatarPetr Machata <petrm@mellanox.com>
Signed-off-by: default avatarIdo Schimmel <idosch@mellanox.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent bde4c563
......@@ -245,6 +245,19 @@ mlxsw_sp_span_entry_vlan(const struct net_device *vlan_dev,
return vlan_dev_real_dev(vlan_dev);
}
static struct net_device *
mlxsw_sp_span_entry_lag(struct net_device *lag_dev)
{
struct net_device *dev;
struct list_head *iter;
netdev_for_each_lower_dev(lag_dev, dev, iter)
if ((dev->flags & IFF_UP) && mlxsw_sp_port_dev_check(dev))
return dev;
return NULL;
}
static __maybe_unused int
mlxsw_sp_span_entry_tunnel_parms_common(struct net_device *edev,
union mlxsw_sp_l3addr saddr,
......@@ -278,6 +291,14 @@ mlxsw_sp_span_entry_tunnel_parms_common(struct net_device *edev,
edev = mlxsw_sp_span_entry_vlan(edev, &vid);
}
if (netif_is_lag_master(edev)) {
if (!(edev->flags & IFF_UP))
goto unoffloadable;
edev = mlxsw_sp_span_entry_lag(edev);
if (!edev)
goto unoffloadable;
}
if (!mlxsw_sp_port_dev_check(edev))
goto unoffloadable;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment