ntuple off/on might be not enough to do it on all NICs.
Add a bunch of shell crap to explicitly remove the rules.

Reviewed-by: Mina Almasry <almasrym...@google.com>
Signed-off-by: Stanislav Fomichev <s...@fomichev.me>
---
 tools/testing/selftests/net/ncdevmem.c | 19 ++++++++++++-------
 1 file changed, 12 insertions(+), 7 deletions(-)

diff --git a/tools/testing/selftests/net/ncdevmem.c 
b/tools/testing/selftests/net/ncdevmem.c
index 8e4a0fe74bb1..697771c1f9fa 100644
--- a/tools/testing/selftests/net/ncdevmem.c
+++ b/tools/testing/selftests/net/ncdevmem.c
@@ -217,13 +217,18 @@ void validate_buffer(void *line, size_t size)
 
 static int reset_flow_steering(void)
 {
-       int ret = 0;
-
-       ret = run_command("sudo ethtool -K %s ntuple off >&2", ifname);
-       if (ret)
-               return ret;
-
-       return run_command("sudo ethtool -K %s ntuple on >&2", ifname);
+       /* Depending on the NIC, toggling ntuple off and on might not
+        * be allowed. Additionally, attempting to delete existing filters
+        * will fail if no filters are present. Therefore, do not enforce
+        * the exit status.
+        */
+
+       run_command("sudo ethtool -K %s ntuple off >&2", ifname);
+       run_command("sudo ethtool -K %s ntuple on >&2", ifname);
+       run_command(
+               "sudo ethtool -n %s | grep 'Filter:' | awk '{print $2}' | xargs 
-n1 ethtool -N %s delete >&2",
+               ifname, ifname);
+       return 0;
 }
 
 static int configure_headersplit(bool on)
-- 
2.47.0


Reply via email to