Currently the exec test does not build:
make[1]: Entering directory '/linux/tools/testing/selftests/exec'
...
make[1]: *** No rule to make target '/output/kselftest/exec/pipe', needed by 'all'.
This is because pipe is listed in TEST_GEN_FILES, but pipe is not
generated by the Makefile, it's created at runtime. So drop pipe from
TEST_GEN_FILES.
With that fixed, then install fails:
make[1]: Entering directory '/linux/tools/testing/selftests/exec'
rsync -a binfmt_script non-regular /output/install/exec/
rsync: link_stat "/linux/tools/testing/selftests/exec/non-regular" failed: No such file or directory (2)
That's because non-regular hasn't been built, because it's in
TEST_PROGS, it should be part of TEST_GEN_PROGS to indicate that it
needs to be built.
Signed-off-by: Michael Ellerman <mpe(a)ellerman.id.au>
---
tools/testing/selftests/exec/Makefile | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/tools/testing/selftests/exec/Makefile b/tools/testing/selftests/exec/Makefile
index cf69b2fcce59..a1e8a7abf576 100644
--- a/tools/testing/selftests/exec/Makefile
+++ b/tools/testing/selftests/exec/Makefile
@@ -3,9 +3,9 @@ CFLAGS = -Wall
CFLAGS += -Wno-nonnull
CFLAGS += -D_GNU_SOURCE
-TEST_PROGS := binfmt_script non-regular
-TEST_GEN_PROGS := execveat load_address_4096 load_address_2097152 load_address_16777216
-TEST_GEN_FILES := execveat.symlink execveat.denatured script subdir pipe
+TEST_PROGS := binfmt_script
+TEST_GEN_PROGS := execveat non-regular load_address_4096 load_address_2097152 load_address_16777216
+TEST_GEN_FILES := execveat.symlink execveat.denatured script subdir
# Makefile is a run-time dependency, since it's accessed by the execveat test
TEST_FILES := Makefile
base-commit: cf7cd542d1b538f6e9e83490bc090dd773f4266d
--
2.25.1
On older distros struct clone_args does not have a cgroup member,
leading to build errors:
cgroup_util.c: In function 'clone_into_cgroup':
cgroup_util.c:343:4: error: 'struct clone_args' has no member named 'cgroup'
But the selftests already have a locally defined version of the
structure which is up to date, called __clone_args.
So use __clone_args which fixes the error.
Signed-off-by: Michael Ellerman <mpe(a)ellerman.id.au>
---
tools/testing/selftests/cgroup/cgroup_util.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/testing/selftests/cgroup/cgroup_util.c b/tools/testing/selftests/cgroup/cgroup_util.c
index 05853b0b8831..58e30f65df5e 100644
--- a/tools/testing/selftests/cgroup/cgroup_util.c
+++ b/tools/testing/selftests/cgroup/cgroup_util.c
@@ -337,7 +337,7 @@ pid_t clone_into_cgroup(int cgroup_fd)
#ifdef CLONE_ARGS_SIZE_VER2
pid_t pid;
- struct clone_args args = {
+ struct __clone_args args = {
.flags = CLONE_INTO_CGROUP,
.exit_signal = SIGCHLD,
.cgroup = cgroup_fd,
base-commit: cf7cd542d1b538f6e9e83490bc090dd773f4266d
--
2.25.1
The memfd tests emit several warnings:
fuse_test.c:261:7: warning: implicit declaration of function 'open'
fuse_test.c:67:6: warning: implicit declaration of function 'fcntl'
memfd_test.c:397:6: warning: implicit declaration of function 'fallocate'
memfd_test.c:64:7: warning: implicit declaration of function 'open'
memfd_test.c:90:6: warning: implicit declaration of function 'fcntl'
These are all caused by the test not including fcntl.h.
Instead of including linux/fcntl.h, include fcntl.h, which should
eventually cause the former to be included as well.
Signed-off-by: Michael Ellerman <mpe(a)ellerman.id.au>
---
tools/testing/selftests/memfd/fuse_test.c | 2 +-
tools/testing/selftests/memfd/memfd_test.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/tools/testing/selftests/memfd/fuse_test.c b/tools/testing/selftests/memfd/fuse_test.c
index b018e835737d..be675002f918 100644
--- a/tools/testing/selftests/memfd/fuse_test.c
+++ b/tools/testing/selftests/memfd/fuse_test.c
@@ -20,7 +20,7 @@
#include <inttypes.h>
#include <limits.h>
#include <linux/falloc.h>
-#include <linux/fcntl.h>
+#include <fcntl.h>
#include <linux/memfd.h>
#include <sched.h>
#include <stdio.h>
diff --git a/tools/testing/selftests/memfd/memfd_test.c b/tools/testing/selftests/memfd/memfd_test.c
index 334a7eea2004..74baab83fec3 100644
--- a/tools/testing/selftests/memfd/memfd_test.c
+++ b/tools/testing/selftests/memfd/memfd_test.c
@@ -6,7 +6,7 @@
#include <inttypes.h>
#include <limits.h>
#include <linux/falloc.h>
-#include <linux/fcntl.h>
+#include <fcntl.h>
#include <linux/memfd.h>
#include <sched.h>
#include <stdio.h>
base-commit: cf7cd542d1b538f6e9e83490bc090dd773f4266d
--
2.25.1
This patchset provides support for the SRv6 End.DT4 behavior.
The SRv6 End.DT4 is used to implement multi-tenant IPv4 L3 VPN. It
decapsulates the received packets and performs IPv4 routing lookup in
the routing table of the tenant. The SRv6 End.DT4 Linux implementation
leverages a VRF device. The SRv6 End.DT4 is defined in the SRv6 Network
Programming [1].
- Patch 1/5 is needed to solve a pre-existing issue with tunneled packets
when a sniffer is attached;
- Patch 2/5 improves the management of the seg6local attributes used by the
SRv6 behaviors;
- Patch 3/5 introduces two callbacks used for customizing the
creation/destruction of a SRv6 behavior;
- Patch 4/5 is the core patch that adds support for the SRv6 End.DT4 behavior;
- Patch 5/5 adds the selftest for SRv6 End.DT4 behavior.
I would like to thank David Ahern for his support during the development of
this patch set.
Comments, suggestions and improvements are very welcome!
Thanks,
Andrea Mayer
v1
improve comments;
add new patch 2/5 titled: seg6: improve management of behavior attributes
seg6: add support for the SRv6 End.DT4 behavior
- remove the inline keyword in the definition of fib6_config_get_net().
selftests: add selftest for the SRv6 End.DT4 behavior
- add check for the vrf sysctl
[1] https://tools.ietf.org/html/draft-ietf-spring-srv6-network-programming
Andrea Mayer (5):
vrf: add mac header for tunneled packets when sniffer is attached
seg6: improve management of behavior attributes
seg6: add callbacks for customizing the creation/destruction of a
behavior
seg6: add support for the SRv6 End.DT4 behavior
selftests: add selftest for the SRv6 End.DT4 behavior
drivers/net/vrf.c | 78 ++-
net/ipv6/seg6_local.c | 370 ++++++++++++-
.../selftests/net/srv6_end_dt4_l3vpn_test.sh | 494 ++++++++++++++++++
3 files changed, 927 insertions(+), 15 deletions(-)
create mode 100755 tools/testing/selftests/net/srv6_end_dt4_l3vpn_test.sh
--
2.20.1
This patch set adds AF_XDP selftests based on veth to selftests/xsk/.
# Topology:
# ---------
# -----------
# _ | Process | _
# / ----------- \
# / | \
# / | \
# ----------- | -----------
# | Thread1 | | | Thread2 |
# ----------- | -----------
# | | |
# ----------- | -----------
# | xskX | | | xskY |
# ----------- | -----------
# | | |
# ----------- | ----------
# | vethX | --------- | vethY |
# ----------- peer ----------
# | | |
# namespaceX | namespaceY
These selftests test AF_XDP SKB and Native/DRV modes using veth Virtual
Ethernet interfaces.
The test program contains two threads, each thread is single socket with
a unique UMEM. It validates in-order packet delivery and packet content
by sending packets to each other.
Prerequisites setup by script TEST_PREREQUISITES.sh:
Set up veth interfaces as per the topology shown ^^:
* setup two veth interfaces and one namespace
** veth<xxxx> in root namespace
** veth<yyyy> in af_xdp<xxxx> namespace
** namespace af_xdp<xxxx>
* create a spec file veth.spec that includes this run-time configuration
that is read by test scripts - filenames prefixed with TEST_XSK
*** xxxx and yyyy are randomly generated 4 digit numbers used to avoid
conflict with any existing interface.
The following tests are provided:
1. AF_XDP SKB mode
Generic mode XDP is driver independent, used when the driver does
not have support for XDP. Works on any netdevice using sockets and
generic XDP path. XDP hook from netif_receive_skb().
a. nopoll - soft-irq processing
b. poll - using poll() syscall
c. Socket Teardown
Create a Tx and a Rx socket, Tx from one socket, Rx on another.
Destroy both sockets, then repeat multiple times. Only nopoll mode
is used
d. Bi-directional Sockets
Configure sockets as bi-directional tx/rx sockets, sets up fill
and completion rings on each socket, tx/rx in both directions.
Only nopoll mode is used
2. AF_XDP DRV/Native mode
Works on any netdevice with XDP_REDIRECT support, driver dependent.
Processes packets before SKB allocation. Provides better performance
than SKB. Driver hook available just after DMA of buffer descriptor.
a. nopoll
b. poll
c. Socket Teardown
d. Bi-directional Sockets
* Only copy mode is supported because veth does not currently support
zero-copy mode
Total tests: 8.
Flow:
* Single process spawns two threads: Tx and Rx
* Each of these two threads attach to a veth interface within their
assigned namespaces
* Each thread creates one AF_XDP socket connected to a unique umem
for each veth interface
* Tx thread transmits 10k packets from veth<xxxx> to veth<yyyy>
* Rx thread verifies if all 10k packets were received and delivered
in-order, and have the right content
Structure of the patch set:
Patch 1: This patch adds XSK Selftests framework under
tools/testing/selftests/xsk, and README
Patch 2: Adds tests: SKB poll and nopoll mode, mac-ip-udp debug,
and README updates
Patch 3: Adds tests: DRV poll and nopoll mode, and README updates
Patch 4: Adds tests: SKB and DRV Socket Teardown, and README updates
Patch 5: Adds tests: SKB and DRV Bi-directional Sockets, and README
updates
Thanks: Weqaar
Weqaar Janjua (5):
selftests/xsk: xsk selftests framework
selftests/xsk: xsk selftests - SKB POLL, NOPOLL
selftests/xsk: xsk selftests - DRV POLL, NOPOLL
selftests/xsk: xsk selftests - Socket Teardown - SKB, DRV
selftests/xsk: xsk selftests - Bi-directional Sockets - SKB, DRV
MAINTAINERS | 1 +
tools/testing/selftests/Makefile | 1 +
tools/testing/selftests/xsk/Makefile | 34 +
tools/testing/selftests/xsk/README | 125 +++
.../selftests/xsk/TEST_PREREQUISITES.sh | 53 +
tools/testing/selftests/xsk/TEST_XSK.sh | 15 +
.../xsk/TEST_XSK_DRV_BIDIRECTIONAL.sh | 22 +
.../selftests/xsk/TEST_XSK_DRV_NOPOLL.sh | 18 +
.../selftests/xsk/TEST_XSK_DRV_POLL.sh | 18 +
.../selftests/xsk/TEST_XSK_DRV_TEARDOWN.sh | 18 +
.../xsk/TEST_XSK_SKB_BIDIRECTIONAL.sh | 19 +
.../selftests/xsk/TEST_XSK_SKB_NOPOLL.sh | 18 +
.../selftests/xsk/TEST_XSK_SKB_POLL.sh | 18 +
.../selftests/xsk/TEST_XSK_SKB_TEARDOWN.sh | 18 +
tools/testing/selftests/xsk/config | 12 +
tools/testing/selftests/xsk/prereqs.sh | 119 ++
tools/testing/selftests/xsk/xdpprogs/Makefile | 64 ++
.../selftests/xsk/xdpprogs/Makefile.target | 68 ++
.../selftests/xsk/xdpprogs/xdpxceiver.c | 1000 +++++++++++++++++
.../selftests/xsk/xdpprogs/xdpxceiver.h | 159 +++
tools/testing/selftests/xsk/xskenv.sh | 33 +
21 files changed, 1833 insertions(+)
create mode 100644 tools/testing/selftests/xsk/Makefile
create mode 100644 tools/testing/selftests/xsk/README
create mode 100755 tools/testing/selftests/xsk/TEST_PREREQUISITES.sh
create mode 100755 tools/testing/selftests/xsk/TEST_XSK.sh
create mode 100755 tools/testing/selftests/xsk/TEST_XSK_DRV_BIDIRECTIONAL.sh
create mode 100755 tools/testing/selftests/xsk/TEST_XSK_DRV_NOPOLL.sh
create mode 100755 tools/testing/selftests/xsk/TEST_XSK_DRV_POLL.sh
create mode 100755 tools/testing/selftests/xsk/TEST_XSK_DRV_TEARDOWN.sh
create mode 100755 tools/testing/selftests/xsk/TEST_XSK_SKB_BIDIRECTIONAL.sh
create mode 100755 tools/testing/selftests/xsk/TEST_XSK_SKB_NOPOLL.sh
create mode 100755 tools/testing/selftests/xsk/TEST_XSK_SKB_POLL.sh
create mode 100755 tools/testing/selftests/xsk/TEST_XSK_SKB_TEARDOWN.sh
create mode 100644 tools/testing/selftests/xsk/config
create mode 100755 tools/testing/selftests/xsk/prereqs.sh
create mode 100644 tools/testing/selftests/xsk/xdpprogs/Makefile
create mode 100644 tools/testing/selftests/xsk/xdpprogs/Makefile.target
create mode 100644 tools/testing/selftests/xsk/xdpprogs/xdpxceiver.c
create mode 100644 tools/testing/selftests/xsk/xdpprogs/xdpxceiver.h
create mode 100755 tools/testing/selftests/xsk/xskenv.sh
--
2.20.1