Commit 00414126 authored by Alex Vesker's avatar Alex Vesker Committed by Jakub Kicinski
Browse files

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: 41d07074 ("net/mlx5: DR, Expose steering rule functionality")
Signed-off-by: default avatarAlex Vesker <valex@mellanox.com>
Signed-off-by: default avatarTariq Toukan <tariqt@mellanox.com>
Signed-off-by: default avatarJakub Kicinski <jakub.kicinski@netronome.com>
parent 38dc3b5f
Loading
Loading
Loading
Loading
+4 −6
Original line number Original line Diff line number Diff line
@@ -788,12 +788,10 @@ again:
			 * it means that all the previous stes are the same,
			 * it means that all the previous stes are the same,
			 * if so, this rule is duplicated.
			 * if so, this rule is duplicated.
			 */
			 */
			if (mlx5dr_ste_is_last_in_rule(nic_matcher,
			if (!mlx5dr_ste_is_last_in_rule(nic_matcher, ste_location))
						       matched_ste->ste_chain_location)) {
				mlx5dr_info(dmn, "Duplicate rule inserted, aborting!!\n");
				return NULL;
			}
				return matched_ste;
				return matched_ste;

			mlx5dr_dbg(dmn, "Duplicate rule inserted\n");
		}
		}


		if (!skip_rehash && dr_rule_need_enlarge_hash(cur_htbl, dmn, nic_dmn)) {
		if (!skip_rehash && dr_rule_need_enlarge_hash(cur_htbl, dmn, nic_dmn)) {