Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 53636068 authored by Roi Dayan's avatar Roi Dayan Committed by David S. Miller
Browse files

net/mlx5e: Remove redundant hashtable lookup in configure flower



We will never find a flow with the same cookie as cls_flower always
allocates a new flow and the cookie is the allocated memory address.

Fixes: e3a2b7ed ("net/mlx5e: Support offload cls_flower with drop action")
Signed-off-by: default avatarRoi Dayan <roid@mellanox.com>
Reviewed-by: default avatarHadar Hen Zion <hadarh@mellanox.com>
Signed-off-by: default avatarSaeed Mahameed <saeedm@mellanox.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent ec8b9981
Loading
Loading
Loading
Loading
+7 −19
Original line number Diff line number Diff line
@@ -915,25 +915,17 @@ int mlx5e_configure_flower(struct mlx5e_priv *priv, __be16 protocol,
	u32 flow_tag, action;
	struct mlx5e_tc_flow *flow;
	struct mlx5_flow_spec *spec;
	struct mlx5_flow_handle *old = NULL;
	struct mlx5_esw_flow_attr *old_attr = NULL;
	struct mlx5_eswitch *esw = priv->mdev->priv.eswitch;

	if (esw && esw->mode == SRIOV_OFFLOADS)
		fdb_flow = true;

	flow = rhashtable_lookup_fast(&tc->ht, &f->cookie,
				      tc->ht_params);
	if (flow) {
		old = flow->rule;
		old_attr = flow->attr;
	} else {
	if (fdb_flow)
			flow = kzalloc(sizeof(*flow) + sizeof(struct mlx5_esw_flow_attr),
		flow = kzalloc(sizeof(*flow) +
			       sizeof(struct mlx5_esw_flow_attr),
			       GFP_KERNEL);
	else
		flow = kzalloc(sizeof(*flow), GFP_KERNEL);
	}

	spec = mlx5_vzalloc(sizeof(*spec));
	if (!spec || !flow) {
@@ -970,16 +962,12 @@ int mlx5e_configure_flower(struct mlx5e_priv *priv, __be16 protocol,
	if (err)
		goto err_del_rule;

	if (old)
		mlx5e_tc_del_flow(priv, old, old_attr);

	goto out;

err_del_rule:
	mlx5_del_flow_rules(flow->rule);

err_free:
	if (!old)
	kfree(flow);
out:
	kvfree(spec);