net/mlx5: DR, Allow insertion of duplicate rules

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: 41d0707415 ("net/mlx5: DR, Expose steering rule functionality")
Signed-off-by: Alex Vesker <valex@mellanox.com>
Signed-off-by: Tariq Toukan <tariqt@mellanox.com>
Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
这个提交包含在:
Alex Vesker
2019-10-07 16:13:25 +03:00
提交者 Jakub Kicinski
父节点 38dc3b5f56
当前提交 0041412694

查看文件

@@ -788,12 +788,10 @@ again:
* 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)) {