Re: [PATCH bpf-next 4/4] bpf/selftests: add simple selftest for bpf_smc_ops

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





On 11/3/24 9:01 PM, Zhu Yanjun wrote:
在 2024/10/24 4:42, D. Wythe 写道:
From: "D. Wythe" <alibuda@xxxxxxxxxxxxxxxxx>

This PATCH adds a tiny selftest for bpf_smc_ops, to verify the ability
to attach and write access.

Follow the steps below to run this test.

make -C tools/testing/selftests/bpf
cd tools/testing/selftests/bpf
sudo ./test_progs -t smc

Thanks a lot.

# ./test_progs -t smc
#27/1    bpf_smc/load:OK
#27      bpf_smc:OK
Summary: 1/1 PASSED, 0 SKIPPED, 0 FAILED

The above command is based on several kernel modules. After these dependent kernel modules are loaded, then can run the above command successfully.

Zhu Yanjun


Hi, Yanjun

This is indeed a problem, a better way may be to create a separate testing directory for SMC, and we are trying to do this.

Best wishes,
D. Wythe


Results shows:
Summary: 1/1 PASSED, 0 SKIPPED, 0 FAILED

Signed-off-by: D. Wythe <alibuda@xxxxxxxxxxxxxxxxx>
---
  .../selftests/bpf/prog_tests/test_bpf_smc.c        | 21 +++++++++++
  tools/testing/selftests/bpf/progs/bpf_smc.c        | 44 ++++++++++++++++++++++
  2 files changed, 65 insertions(+)
  create mode 100644 tools/testing/selftests/bpf/prog_tests/test_bpf_smc.c
  create mode 100644 tools/testing/selftests/bpf/progs/bpf_smc.c

diff --git a/tools/testing/selftests/bpf/prog_tests/test_bpf_smc.c b/tools/testing/selftests/bpf/prog_tests/test_bpf_smc.c
new file mode 100644
index 00000000..2299853
--- /dev/null
+++ b/tools/testing/selftests/bpf/prog_tests/test_bpf_smc.c
@@ -0,0 +1,21 @@
+// SPDX-License-Identifier: GPL-2.0
+#include <test_progs.h>
+
+#include "bpf_smc.skel.h"
+
+static void load(void)
+{
+    struct bpf_smc *skel;
+
+    skel = bpf_smc__open_and_load();
+    if (!ASSERT_OK_PTR(skel, "bpf_smc__open_and_load"))
+        return;
+
+    bpf_smc__destroy(skel);
+}
+
+void test_bpf_smc(void)
+{
+    if (test__start_subtest("load"))
+        load();
+}
diff --git a/tools/testing/selftests/bpf/progs/bpf_smc.c b/tools/testing/selftests/bpf/progs/bpf_smc.c
new file mode 100644
index 00000000..ebff477
--- /dev/null
+++ b/tools/testing/selftests/bpf/progs/bpf_smc.c
@@ -0,0 +1,44 @@
+// SPDX-License-Identifier: GPL-2.0
+
+#include "vmlinux.h"
+
+#include <bpf/bpf_helpers.h>
+#include <bpf/bpf_tracing.h>
+
+char _license[] SEC("license") = "GPL";
+
+struct smc_bpf_ops_ctx {
+    struct {
+        struct tcp_sock *tp;
+    } set_option;
+    struct {
+        const struct tcp_sock *tp;
+        struct inet_request_sock *ireq;
+        int smc_ok;
+    } set_option_cond;
+};
+
+struct smc_bpf_ops {
+    void (*set_option)(struct smc_bpf_ops_ctx *ctx);
+    void (*set_option_cond)(struct smc_bpf_ops_ctx *ctx);
+};
+
+SEC("struct_ops/bpf_smc_set_tcp_option_cond")
+void BPF_PROG(bpf_smc_set_tcp_option_cond, struct smc_bpf_ops_ctx *arg)
+{
+    arg->set_option_cond.smc_ok = 1;
+}
+
+SEC("struct_ops/bpf_smc_set_tcp_option")
+void BPF_PROG(bpf_smc_set_tcp_option, struct smc_bpf_ops_ctx *arg)
+{
+    struct tcp_sock *tp = arg->set_option.tp;
+
+    tp->syn_smc = 1;
+}
+
+SEC(".struct_ops.link")
+struct smc_bpf_ops sample_smc_bpf_ops = {
+    .set_option         = (void *) bpf_smc_set_tcp_option,
+    .set_option_cond    = (void *) bpf_smc_set_tcp_option_cond,
+};




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Kernel Development]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Info]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Linux Media]     [Device Mapper]

  Powered by Linux