mirror of
https://github.com/torvalds/linux.git
synced 2026-07-31 19:47:08 +02:00
Merge branch 'selftests-drv-net-improve-zerocopy-tests'
Jakub Kicinski says: ==================== selftests: drv-net: improve zerocopy tests A few tweaks to the devmem test to make it more "NIPA-compatible". We still need a fix to make sure that the test sets hds threshold to 0. Taehee is presumably already/still working on that: https://lore.kernel.org/20250702104249.1665034-1-ap420073@gmail.com so I'm not including my version. # ./tools/testing/selftests/drivers/net/hw/devmem.py TAP version 13 1..3 ok 1 devmem.check_rx ok 2 devmem.check_tx ok 3 devmem.check_tx_chunks # Totals: pass:3 fail:0 xfail:0 xpass:0 skip:0 error:0 ==================== Link: https://patch.msgid.link/20250811231334.561137-1-kuba@kernel.org Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
commit
7ceff083ee
|
|
@ -1,5 +1,7 @@
|
|||
CONFIG_IO_URING=y
|
||||
CONFIG_IPV6=y
|
||||
CONFIG_IPV6_GRE=y
|
||||
CONFIG_NET_IPGRE=y
|
||||
CONFIG_NET_IPGRE_DEMUX=y
|
||||
CONFIG_UDMABUF=y
|
||||
CONFIG_VXLAN=y
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ def check_rx(cfg) -> None:
|
|||
require_devmem(cfg)
|
||||
|
||||
port = rand_port()
|
||||
socat = f"socat -u - TCP{cfg.addr_ipver}:{cfg.addr}:{port},bind={cfg.remote_addr}:{port}"
|
||||
socat = f"socat -u - TCP{cfg.addr_ipver}:{cfg.baddr}:{port},bind={cfg.remote_baddr}:{port}"
|
||||
listen_cmd = f"{cfg.bin_local} -l -f {cfg.ifname} -s {cfg.addr} -p {port} -c {cfg.remote_addr} -v 7"
|
||||
|
||||
with bkg(listen_cmd, exit_wait=True) as ncdevmem:
|
||||
|
|
@ -42,9 +42,9 @@ def check_tx(cfg) -> None:
|
|||
port = rand_port()
|
||||
listen_cmd = f"socat -U - TCP{cfg.addr_ipver}-LISTEN:{port}"
|
||||
|
||||
with bkg(listen_cmd) as socat:
|
||||
wait_port_listen(port)
|
||||
cmd(f"echo -e \"hello\\nworld\"| {cfg.bin_remote} -f {cfg.ifname} -s {cfg.addr} -p {port}", host=cfg.remote, shell=True)
|
||||
with bkg(listen_cmd, host=cfg.remote, exit_wait=True) as socat:
|
||||
wait_port_listen(port, host=cfg.remote)
|
||||
cmd(f"echo -e \"hello\\nworld\"| {cfg.bin_local} -f {cfg.ifname} -s {cfg.remote_addr} -p {port}", shell=True)
|
||||
|
||||
ksft_eq(socat.stdout.strip(), "hello\nworld")
|
||||
|
||||
|
|
@ -56,9 +56,9 @@ def check_tx_chunks(cfg) -> None:
|
|||
port = rand_port()
|
||||
listen_cmd = f"socat -U - TCP{cfg.addr_ipver}-LISTEN:{port}"
|
||||
|
||||
with bkg(listen_cmd, exit_wait=True) as socat:
|
||||
wait_port_listen(port)
|
||||
cmd(f"echo -e \"hello\\nworld\"| {cfg.bin_remote} -f {cfg.ifname} -s {cfg.addr} -p {port} -z 3", host=cfg.remote, shell=True)
|
||||
with bkg(listen_cmd, host=cfg.remote, exit_wait=True) as socat:
|
||||
wait_port_listen(port, host=cfg.remote)
|
||||
cmd(f"echo -e \"hello\\nworld\"| {cfg.bin_local} -f {cfg.ifname} -s {cfg.remote_addr} -p {port} -z 3", shell=True)
|
||||
|
||||
ksft_eq(socat.stdout.strip(), "hello\nworld")
|
||||
|
||||
|
|
|
|||
|
|
@ -287,10 +287,10 @@ static int reset_flow_steering(void)
|
|||
* 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("ethtool -K %s ntuple off >&2", ifname);
|
||||
run_command("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",
|
||||
"ethtool -n %s | grep 'Filter:' | awk '{print $2}' | xargs -n1 ethtool -N %s delete >&2",
|
||||
ifname, ifname);
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -351,12 +351,12 @@ static int configure_headersplit(bool on)
|
|||
|
||||
static int configure_rss(void)
|
||||
{
|
||||
return run_command("sudo ethtool -X %s equal %d >&2", ifname, start_queue);
|
||||
return run_command("ethtool -X %s equal %d >&2", ifname, start_queue);
|
||||
}
|
||||
|
||||
static int configure_channels(unsigned int rx, unsigned int tx)
|
||||
{
|
||||
return run_command("sudo ethtool -L %s rx %u tx %u", ifname, rx, tx);
|
||||
return run_command("ethtool -L %s rx %u tx %u", ifname, rx, tx);
|
||||
}
|
||||
|
||||
static int configure_flow_steering(struct sockaddr_in6 *server_sin)
|
||||
|
|
@ -374,7 +374,7 @@ static int configure_flow_steering(struct sockaddr_in6 *server_sin)
|
|||
}
|
||||
|
||||
/* 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",
|
||||
if (run_command("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" : "",
|
||||
|
|
@ -384,7 +384,7 @@ static int configure_flow_steering(struct sockaddr_in6 *server_sin)
|
|||
client_ip ? port : "",
|
||||
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",
|
||||
if (run_command("ethtool -N %s flow-type %s dst-ip %s dst-port %s queue %d >&2",
|
||||
ifname,
|
||||
type,
|
||||
server_addr,
|
||||
|
|
|
|||
|
|
@ -117,6 +117,7 @@ class bkg(cmd):
|
|||
shell=shell, fail=fail, ns=ns, host=host,
|
||||
ksft_wait=ksft_wait)
|
||||
self.terminate = not exit_wait and not ksft_wait
|
||||
self._exit_wait = exit_wait
|
||||
self.check_fail = fail
|
||||
|
||||
if shell and self.terminate:
|
||||
|
|
@ -127,7 +128,9 @@ class bkg(cmd):
|
|||
return self
|
||||
|
||||
def __exit__(self, ex_type, ex_value, ex_tb):
|
||||
return self.process(terminate=self.terminate, fail=self.check_fail)
|
||||
# Force termination on exception
|
||||
terminate = self.terminate or (self._exit_wait and ex_type)
|
||||
return self.process(terminate=terminate, fail=self.check_fail)
|
||||
|
||||
|
||||
global_defer_queue = []
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user