Commit 52a6444c authored by Petr Machata's avatar Petr Machata Committed by David S. Miller

mlxsw: Move a mirroring check to mlxsw_sp_span_entry_create

The check for whether a mirror port (which is a mlxsw front panel port)
belongs to the same mlxsw instance as the mirrored port, is currently
only done in spectrum_acl, even though it's applicable for the matchall
case as well. Thus move it to mlxsw_sp_span_entry_create().
Signed-off-by: default avatarPetr Machata <petrm@mellanox.com>
Reviewed-by: default avatarIdo Schimmel <idosch@mellanox.com>
Signed-off-by: default avatarJiri Pirko <jiri@mellanox.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 803335ac
...@@ -572,7 +572,6 @@ int mlxsw_sp_acl_rulei_act_mirror(struct mlxsw_sp *mlxsw_sp, ...@@ -572,7 +572,6 @@ int mlxsw_sp_acl_rulei_act_mirror(struct mlxsw_sp *mlxsw_sp,
struct net_device *out_dev) struct net_device *out_dev)
{ {
struct mlxsw_sp_acl_block_binding *binding; struct mlxsw_sp_acl_block_binding *binding;
struct mlxsw_sp_port *out_port;
struct mlxsw_sp_port *in_port; struct mlxsw_sp_port *in_port;
if (!list_is_singular(&block->binding_list)) if (!list_is_singular(&block->binding_list))
...@@ -581,9 +580,6 @@ int mlxsw_sp_acl_rulei_act_mirror(struct mlxsw_sp *mlxsw_sp, ...@@ -581,9 +580,6 @@ int mlxsw_sp_acl_rulei_act_mirror(struct mlxsw_sp *mlxsw_sp,
binding = list_first_entry(&block->binding_list, binding = list_first_entry(&block->binding_list,
struct mlxsw_sp_acl_block_binding, list); struct mlxsw_sp_acl_block_binding, list);
in_port = binding->mlxsw_sp_port; in_port = binding->mlxsw_sp_port;
out_port = netdev_priv(out_dev);
if (out_port->mlxsw_sp != mlxsw_sp)
return -EINVAL;
return mlxsw_afa_block_append_mirror(rulei->act_block, return mlxsw_afa_block_append_mirror(rulei->act_block,
in_port->local_port, in_port->local_port,
......
...@@ -164,7 +164,11 @@ mlxsw_sp_span_entry_configure(struct mlxsw_sp *mlxsw_sp, ...@@ -164,7 +164,11 @@ mlxsw_sp_span_entry_configure(struct mlxsw_sp *mlxsw_sp,
struct mlxsw_sp_span_parms sparms) struct mlxsw_sp_span_parms sparms)
{ {
if (sparms.dest_port) { if (sparms.dest_port) {
if (span_entry->ops->configure(span_entry, sparms)) { if (sparms.dest_port->mlxsw_sp != mlxsw_sp) {
netdev_err(span_entry->to_dev, "Cannot mirror to %s, which belongs to a different mlxsw instance",
sparms.dest_port->dev->name);
sparms.dest_port = NULL;
} else if (span_entry->ops->configure(span_entry, sparms)) {
netdev_err(span_entry->to_dev, "Failed to offload mirror to %s", netdev_err(span_entry->to_dev, "Failed to offload mirror to %s",
sparms.dest_port->dev->name); sparms.dest_port->dev->name);
sparms.dest_port = NULL; sparms.dest_port = NULL;
......
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