rdma-core/SOURCES/0007-mlx5-Allow-insertion-of-duplicate-rules-using-DR-API.patch
2021-09-10 03:47:28 +00:00

48 lines
1.6 KiB
Diff

From 981c7553f55c8200e00e845224b283059dc07c92 Mon Sep 17 00:00:00 2001
From: Alex Vesker <valex@mellanox.com>
Date: Sun, 6 Oct 2019 11:22:37 +0300
Subject: [PATCH rdma-core 07/13] mlx5: Allow insertion of duplicate rules
using DR API
[ Upstream commit b7c0d4d4611ac14f18024a6388d75f672aa7457a ]
Duplicate rules were not allowed to be configured with SW steering,
unlike when working over root, fix to allow that.
This functionality is useful for replacing rules without dropping
packets.
Fixes: a91e8c2bbedf ('mlx5: Expose steering rule functionality')
Signed-off-by: Alex Vesker <valex@mellanox.com>
Reviewed-by: Erez Shitrit <erezsh@mellanox.com>
Signed-off-by: Yishai Hadas <yishaih@mellanox.com>
Signed-off-by: Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
---
providers/mlx5/dr_rule.c | 10 ++++------
1 file changed, 4 insertions(+), 6 deletions(-)
diff --git a/providers/mlx5/dr_rule.c b/providers/mlx5/dr_rule.c
index 1b873744..1e2d1813 100644
--- a/providers/mlx5/dr_rule.c
+++ b/providers/mlx5/dr_rule.c
@@ -815,12 +815,10 @@ again:
* it means that all the previous stes are the same,
* if so, this rule is duplicated.
*/
- if (dr_ste_is_last_in_rule(nic_matcher, matched_ste->ste_chain_location)) {
- dr_dbg(dmn, "Duplicate rule inserted, aborting\n");
- errno = EINVAL;
- return NULL;
- }
- return matched_ste;
+ if (!dr_ste_is_last_in_rule(nic_matcher, ste_location))
+ return matched_ste;
+
+ dr_dbg(dmn, "Duplicate rule inserted\n");
}
if (!skip_rehash && dr_rule_need_enlarge_hash(cur_htbl, dmn, nic_dmn)) {
--
2.20.1