Skip to content

Commit

Permalink
net/mlx5e: Remove redundant hashtable lookup in configure flower
Browse files Browse the repository at this point in the history
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: e3a2b7e ("net/mlx5e: Support offload cls_flower with drop action")
Signed-off-by: Roi Dayan <roid@mellanox.com>
Reviewed-by: Hadar Hen Zion <hadarh@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Roi Dayan authored and David S. Miller committed Dec 2, 2016
1 parent ec8b998 commit 5363606
Showing 1 changed file with 7 additions and 19 deletions.
26 changes: 7 additions & 19 deletions drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
Original file line number Diff line number Diff line change
Expand Up @@ -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),
GFP_KERNEL);
else
flow = kzalloc(sizeof(*flow), GFP_KERNEL);
}
if (fdb_flow)
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) {
Expand Down Expand Up @@ -970,17 +962,13 @@ 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);
kfree(flow);
out:
kvfree(spec);
return err;
Expand Down

0 comments on commit 5363606

Please sign in to comment.