[PATCH 11/13] selftests/bpf: test_xsk: Make kselftest dependency optional

From: Bastien Curutchet (eBPF Foundation)
Date: Thu Mar 13 2025 - 06:52:45 EST


test_xsk.c uses the kselftest framework. This isn't compatible with the
test_progs framework.

Add a XSK_SELTFEST define that allows to enable/disable the kselftest
usage.

Signed-off-by: Bastien Curutchet (eBPF Foundation) <bastien.curutchet@xxxxxxxxxxx>
---
tools/testing/selftests/bpf/Makefile | 2 +-
tools/testing/selftests/bpf/test_xsk.h | 18 +++++++++++++++++-
2 files changed, 18 insertions(+), 2 deletions(-)

diff --git a/tools/testing/selftests/bpf/Makefile b/tools/testing/selftests/bpf/Makefile
index ca14999fe0d832b24536f3a4f956e987c3b53cd8..3cde86a6e9b1ca467de162e0ba9670ad2085b6a6 100644
--- a/tools/testing/selftests/bpf/Makefile
+++ b/tools/testing/selftests/bpf/Makefile
@@ -777,7 +777,7 @@ $(OUTPUT)/test_verifier: test_verifier.c verifier/tests.h $(BPFOBJ) | $(OUTPUT)
EXTRA_SRC := $(TOOLSDIR)/lib/find_bit.c
$(OUTPUT)/xskxceiver: $(EXTRA_SRC) test_xsk.c xskxceiver.c xskxceiver.h $(OUTPUT)/network_helpers.o $(OUTPUT)/xsk.o $(OUTPUT)/xsk_xdp_progs.skel.h $(BPFOBJ) | $(OUTPUT)
$(call msg,BINARY,,$@)
- $(Q)$(CC) $(CFLAGS) $(filter %.a %.o %.c,$^) $(LDLIBS) -o $@
+ $(Q)$(CC) $(CFLAGS) -D XSK_KSELFTEST $(filter %.a %.o %.c,$^) $(LDLIBS) -o $@

$(OUTPUT)/xdp_hw_metadata: xdp_hw_metadata.c $(OUTPUT)/network_helpers.o $(OUTPUT)/xsk.o $(OUTPUT)/xdp_hw_metadata.skel.h | $(OUTPUT)
$(call msg,BINARY,,$@)
diff --git a/tools/testing/selftests/bpf/test_xsk.h b/tools/testing/selftests/bpf/test_xsk.h
index 61246013816431dca2f84ce2fec44c5160adbdad..9653687087c122ec5fdb9f23e3343e37c82373f6 100644
--- a/tools/testing/selftests/bpf/test_xsk.h
+++ b/tools/testing/selftests/bpf/test_xsk.h
@@ -5,7 +5,6 @@
#include <linux/ethtool.h>
#include <linux/if_xdp.h>

-#include "../kselftest.h"
#include "xsk.h"

#ifndef SO_PREFER_BUSY_POLL
@@ -31,12 +30,29 @@
#define SOCK_RECONF_CTR 10
#define USLEEP_MAX 10000

+
+#ifdef XSK_KSELFTEST
+#include "../kselftest.h"
+
static bool opt_verbose;
#define print_msg(x...) ksft_print_msg(x)
#define print_verbose(x...) do { if (opt_verbose) ksft_print_msg(x); } while (0)
#define skip_reason(x...) ksft_test_result_skip(x)
#define fail_reason(x...) ksft_test_result_fail(x)

+#else
+
+void xsk_log(const char *msg, ...);
+void xsk_verbose(const char *msg, ...);
+void xsk_skip(const char *msg);
+
+#define print_msg(x...) xsk_verbose(x)
+#define print_verbose(x...) xsk_verbose(x)
+#define skip_reason(x...) xsk_skip(x)
+#define fail_reason(x...) xsk_log(x)
+
+#endif
+
static inline u32 ceil_u32(u32 a, u32 b)
{
return (a + b - 1) / b;

--
2.48.1