net/sfc/base: fix manual filter delete in EF10
authorIgor Romanov <igor.romanov@oktetlabs.ru>
Wed, 20 May 2020 13:59:52 +0000 (14:59 +0100)
committerFerruh Yigit <ferruh.yigit@intel.com>
Thu, 21 May 2020 15:38:12 +0000 (17:38 +0200)
When user requests a filter deletion only filter with
manual priority must be deleted. When an automatic filter has
the same specification, it must be skipped.

Fixes: 585c22edb29c ("net/sfc/base: handle manual and auto filter clashes in EF10")
Cc: stable@dpdk.org
Signed-off-by: Igor Romanov <igor.romanov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
drivers/net/sfc/base/ef10_filter.c

index 7a726ef..12c84a5 100644 (file)
@@ -1161,7 +1161,8 @@ ef10_filter_delete(
                i = (hash + depth) & (EFX_EF10_FILTER_TBL_ROWS - 1);
                saved_spec = ef10_filter_entry_spec(table, i);
                if (saved_spec && ef10_filter_equal(spec, saved_spec) &&
-                   ef10_filter_same_dest(spec, saved_spec)) {
+                   ef10_filter_same_dest(spec, saved_spec) &&
+                   saved_spec->efs_priority == EFX_FILTER_PRI_MANUAL) {
                        break;
                }
                if (depth == EF10_FILTER_SEARCH_LIMIT) {