All of lore.kernel.org
 help / color / mirror / Atom feed
From: Zhu Yanjun <yanjun.zhu@linux.dev>
To: "D. Wythe" <alibuda@linux.alibaba.com>,
	kgraul@linux.ibm.com, wenjia@linux.ibm.com, jaka@linux.ibm.com,
	ast@kernel.org, daniel@iogearbox.net, andrii@kernel.org,
	martin.lau@linux.dev, pabeni@redhat.com, song@kernel.org,
	sdf@google.com, haoluo@google.com, yhs@fb.com,
	edumazet@google.com, john.fastabend@gmail.com,
	kpsingh@kernel.org, jolsa@kernel.org, guwen@linux.alibaba.com
Cc: kuba@kernel.org, davem@davemloft.net, netdev@vger.kernel.org,
	linux-s390@vger.kernel.org, linux-rdma@vger.kernel.org,
	bpf@vger.kernel.org, dtcccc@linux.alibaba.com
Subject: Re: [PATCH bpf-next 4/4] bpf/selftests: add simple selftest for bpf_smc_ops
Date: Mon, 25 Nov 2024 11:52:41 +0100	[thread overview]
Message-ID: <0a8c2285-29c2-4a79-b704-c2baeac90b70@linux.dev> (raw)
In-Reply-To: <e8ba7dc0-96b5-4119-b2f6-b07432f65fdb@linux.alibaba.com>


On 21.11.24 03:00, D. Wythe wrote:
>
>
> On 11/3/24 9:01 PM, Zhu Yanjun wrote:
>> 在 2024/10/24 4:42, D. Wythe 写道:
>>> From: "D. Wythe" <alibuda@linux.alibaba.com>
>>>
>>> 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.

Got it. In the latest patch series, if a test program in sample/bpf can 
verify this bpf feature, it is better than a selftest program in the 
directory tools/testing/selftests/bpf.

I delved into this selftest tool. It seems that this selftest tool only 
makes the basic checks. A test program in sample/bpf can do more.

I mean, it is very nice that a selftest tool can make selftest on smc 
bpf. But it is better that a test program in sample/bpf can make some 
parameter changes in smc.

These parameter changes are mentioned in the previous commits.

"

     As a subsequent enhancement, this patch introduces a new hook for eBPF
     programs that allows decisions on whether to use SMC or not at runtime,
     including but not limited to local/remote IP address or ports. In
     simpler words, this feature allows modifications to syn_smc through 
eBPF
     programs before the TCP three-way handshake got established.

"

Zhu Yanjun

>
> Best wishes,
> D. Wythe
>
>>>
>>> Results shows:
>>> Summary: 1/1 PASSED, 0 SKIPPED, 0 FAILED
>>>
>>> Signed-off-by: D. Wythe <alibuda@linux.alibaba.com>
>>> ---
>>>   .../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,
>>> +};

-- 
Best Regards,
Yanjun.Zhu


  reply	other threads:[~2024-11-25 10:52 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-10-24  2:42 [PATCH bpf-next 0/4] net/smc: Introduce smc_bpf_ops D. Wythe
2024-10-24  2:42 ` [PATCH bpf-next 1/4] bpf: export necessary sympols for modules D. Wythe
2024-10-24  2:42 ` [PATCH bpf-next 2/4] bpf: allow to access bpf_prog during bpf_struct_access D. Wythe
2024-10-25  9:14   ` kernel test robot
2024-10-25 12:20   ` kernel test robot
2024-10-24  2:42 ` [PATCH net-next 3/4] net/smc: Introduce smc_bpf_ops D. Wythe
2024-10-25  0:26   ` Martin KaFai Lau
2024-10-25 11:05     ` D. Wythe
2024-10-25 18:30       ` Martin KaFai Lau
2024-10-29  8:53         ` D. Wythe
2024-10-24  2:42 ` [PATCH bpf-next 4/4] bpf/selftests: add simple selftest for bpf_smc_ops D. Wythe
2024-10-24  4:04   ` D. Wythe
2024-10-24  4:49     ` Tianchen Ding
2024-10-24  5:49       ` D. Wythe
2024-11-03 13:01   ` Zhu Yanjun
2024-11-21  2:00     ` D. Wythe
2024-11-25 10:52       ` Zhu Yanjun [this message]
2024-11-25 23:32         ` Martin KaFai Lau
2024-11-26  8:29           ` Zhu Yanjun
2024-11-29  4:11           ` D. Wythe

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=0a8c2285-29c2-4a79-b704-c2baeac90b70@linux.dev \
    --to=yanjun.zhu@linux.dev \
    --cc=alibuda@linux.alibaba.com \
    --cc=andrii@kernel.org \
    --cc=ast@kernel.org \
    --cc=bpf@vger.kernel.org \
    --cc=daniel@iogearbox.net \
    --cc=davem@davemloft.net \
    --cc=dtcccc@linux.alibaba.com \
    --cc=edumazet@google.com \
    --cc=guwen@linux.alibaba.com \
    --cc=haoluo@google.com \
    --cc=jaka@linux.ibm.com \
    --cc=john.fastabend@gmail.com \
    --cc=jolsa@kernel.org \
    --cc=kgraul@linux.ibm.com \
    --cc=kpsingh@kernel.org \
    --cc=kuba@kernel.org \
    --cc=linux-rdma@vger.kernel.org \
    --cc=linux-s390@vger.kernel.org \
    --cc=martin.lau@linux.dev \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=sdf@google.com \
    --cc=song@kernel.org \
    --cc=wenjia@linux.ibm.com \
    --cc=yhs@fb.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.