Message ID | 1570454005-23749-1-git-send-email-tariqt@mellanox.com |
---|---|
State | Accepted |
Delegated to: | David Miller |
Headers | show |
Series | [net] net/mlx5: DR, Allow insertion of duplicate rules | expand |
On Mon, 7 Oct 2019 16:13:25 +0300, Tariq Toukan wrote: > From: Alex Vesker <valex@mellanox.com> > > Duplicate rules were not allowed to be configured with SW steering. > This restriction caused failures with the replace rule logic done by > upper layers. > > This fix allows for multiple rules with the same match values, in > such case the first inserted rules will match. > > Fixes: 41d07074154c ("net/mlx5: DR, Expose steering rule functionality") > Signed-off-by: Alex Vesker <valex@mellanox.com> > Signed-off-by: Tariq Toukan <tariqt@mellanox.com> Applied, thanks!
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/steering/dr_rule.c b/drivers/net/ethernet/mellanox/mlx5/core/steering/dr_rule.c index 4187f2b112b8..e8b656075c6f 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/steering/dr_rule.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/steering/dr_rule.c @@ -788,12 +788,10 @@ static int dr_rule_handle_empty_entry(struct mlx5dr_matcher *matcher, * it means that all the previous stes are the same, * if so, this rule is duplicated. */ - if (mlx5dr_ste_is_last_in_rule(nic_matcher, - matched_ste->ste_chain_location)) { - mlx5dr_info(dmn, "Duplicate rule inserted, aborting!!\n"); - return NULL; - } - return matched_ste; + if (!mlx5dr_ste_is_last_in_rule(nic_matcher, ste_location)) + return matched_ste; + + mlx5dr_dbg(dmn, "Duplicate rule inserted\n"); } if (!skip_rehash && dr_rule_need_enlarge_hash(cur_htbl, dmn, nic_dmn)) {