Commit fca08661 authored by Roi Dayan's avatar Roi Dayan Committed by Saeed Mahameed
Browse files

net/mlx5: Fix err prints and return when creating termination table



Fix print to print correct error code and not using IS_ERR() which
will just result in always printing 1.
Also return real err instead of always -EOPNOTSUPP.

Fixes: 10caabda ("net/mlx5e: Use termination table for VLAN push actions")
Signed-off-by: default avatarRoi Dayan <roid@nvidia.com>
Reviewed-by: default avatarMaor Dickman <maord@nvidia.com>
Signed-off-by: default avatarSaeed Mahameed <saeedm@nvidia.com>
parent 442b3d7b
Loading
Loading
Loading
Loading
+11 −12
Original line number Diff line number Diff line
@@ -65,7 +65,7 @@ mlx5_eswitch_termtbl_create(struct mlx5_core_dev *dev,
{
	struct mlx5_flow_table_attr ft_attr = {};
	struct mlx5_flow_namespace *root_ns;
	int err;
	int err, err2;

	root_ns = mlx5_get_flow_namespace(dev, MLX5_FLOW_NAMESPACE_FDB);
	if (!root_ns) {
@@ -83,26 +83,26 @@ mlx5_eswitch_termtbl_create(struct mlx5_core_dev *dev,
	ft_attr.autogroup.max_num_groups = 1;
	tt->termtbl = mlx5_create_auto_grouped_flow_table(root_ns, &ft_attr);
	if (IS_ERR(tt->termtbl)) {
		esw_warn(dev, "Failed to create termination table (error %d)\n",
			 IS_ERR(tt->termtbl));
		return -EOPNOTSUPP;
		err = PTR_ERR(tt->termtbl);
		esw_warn(dev, "Failed to create termination table, err %pe\n", tt->termtbl);
		return err;
	}

	tt->rule = mlx5_add_flow_rules(tt->termtbl, NULL, flow_act,
				       &tt->dest, 1);
	if (IS_ERR(tt->rule)) {
		esw_warn(dev, "Failed to create termination table rule (error %d)\n",
			 IS_ERR(tt->rule));
		err = PTR_ERR(tt->rule);
		esw_warn(dev, "Failed to create termination table rule, err %pe\n", tt->rule);
		goto add_flow_err;
	}
	return 0;

add_flow_err:
	err = mlx5_destroy_flow_table(tt->termtbl);
	if (err)
		esw_warn(dev, "Failed to destroy termination table\n");
	err2 = mlx5_destroy_flow_table(tt->termtbl);
	if (err2)
		esw_warn(dev, "Failed to destroy termination table, err %d\n", err2);

	return -EOPNOTSUPP;
	return err;
}

static struct mlx5_termtbl_handle *
@@ -270,8 +270,7 @@ mlx5_eswitch_add_termtbl_rule(struct mlx5_eswitch *esw,
		tt = mlx5_eswitch_termtbl_get_create(esw, &term_tbl_act,
						     &dest[i], attr);
		if (IS_ERR(tt)) {
			esw_warn(esw->dev, "Failed to get termination table (error %d)\n",
				 IS_ERR(tt));
			esw_warn(esw->dev, "Failed to get termination table, err %pe\n", tt);
			goto revert_changes;
		}
		attr->dests[num_vport_dests].termtbl = tt;