ncdevmem supports drivers that are limited to either 3-tuple or 5-tuple
FS support, but the ksft is currently 3-tuple only. Support drivers that
have 5-tuple FS supported by adding a ksft arg.

Signed-off-by: Mina Almasry <almasrym...@google.com>


fix 5-tuple


fix 5-tuple

---
 tools/testing/selftests/drivers/net/hw/devmem.py  |  4 ++--
 tools/testing/selftests/drivers/net/hw/ncdevmem.c | 15 +++++++++++++--
 2 files changed, 15 insertions(+), 4 deletions(-)

diff --git a/tools/testing/selftests/drivers/net/hw/devmem.py 
b/tools/testing/selftests/drivers/net/hw/devmem.py
index 6effb9e33fd8..553ebf669a71 100755
--- a/tools/testing/selftests/drivers/net/hw/devmem.py
+++ b/tools/testing/selftests/drivers/net/hw/devmem.py
@@ -24,11 +24,11 @@ def check_rx(cfg) -> None:
     require_devmem(cfg)
 
     port = rand_port()
-    listen_cmd = f"{cfg.bin_local} -l -f {cfg.ifname} -s {cfg.addr} -p {port}"
+    listen_cmd = f"{cfg.bin_local} -l -f {cfg.ifname} -s {cfg.addr} -p {port} 
-c {cfg.remote_addr}"
 
     with bkg(listen_cmd, exit_wait=True) as ncdevmem:
         wait_port_listen(port)
-        cmd(f"echo -e \"hello\\nworld\"| socat -u - 
TCP{cfg.addr_ipver}:{cfg.addr}:{port}", host=cfg.remote, shell=True)
+        cmd(f"echo -e \"hello\\nworld\"| socat -u - 
TCP{cfg.addr_ipver}:{cfg.addr}:{port},bind={cfg.remote_addr}:{port}", 
host=cfg.remote, shell=True)
 
     ksft_eq(ncdevmem.stdout.strip(), "hello\nworld")
 
diff --git a/tools/testing/selftests/drivers/net/hw/ncdevmem.c 
b/tools/testing/selftests/drivers/net/hw/ncdevmem.c
index ca723722a810..3c7529de8d48 100644
--- a/tools/testing/selftests/drivers/net/hw/ncdevmem.c
+++ b/tools/testing/selftests/drivers/net/hw/ncdevmem.c
@@ -370,7 +370,8 @@ static int configure_flow_steering(struct sockaddr_in6 
*server_sin)
                server_addr = strrchr(server_addr, ':') + 1;
        }
 
-       return run_command("sudo ethtool -N %s flow-type %s %s %s dst-ip %s %s 
%s dst-port %s queue %d >&2",
+       /* Try configure 5-tuple */
+       if (run_command("sudo ethtool -N %s flow-type %s %s %s dst-ip %s %s %s 
dst-port %s queue %d >&2",
                           ifname,
                           type,
                           client_ip ? "src-ip" : "",
@@ -378,7 +379,17 @@ static int configure_flow_steering(struct sockaddr_in6 
*server_sin)
                           server_addr,
                           client_ip ? "src-port" : "",
                           client_ip ? port : "",
-                          port, start_queue);
+                          port, start_queue))
+               /* If that fails, try configure 3-tuple */
+               if (run_command("sudo ethtool -N %s flow-type %s dst-ip %s 
dst-port %s queue %d >&2",
+                               ifname,
+                               type,
+                               server_addr,
+                               port, start_queue))
+                       /* If that fails, return error */
+                       return -1;
+
+       return 0;
 }
 
 static int bind_rx_queue(unsigned int ifindex, unsigned int dmabuf_fd,
-- 
2.49.0.1151.ga128411c76-goog


Reply via email to