All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stanislav Fomichev <stfomichev@gmail.com>
To: Marcus Wichelmann <marcus.wichelmann@hetzner-cloud.de>
Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
	bpf@vger.kernel.org, linux-kselftest@vger.kernel.org,
	willemdebruijn.kernel@gmail.com, jasowang@redhat.com,
	andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com,
	kuba@kernel.org, pabeni@redhat.com, andrii@kernel.org,
	eddyz87@gmail.com, mykolal@fb.com, ast@kernel.org,
	daniel@iogearbox.net, martin.lau@linux.dev, song@kernel.org,
	yonghong.song@linux.dev, john.fastabend@gmail.com,
	kpsingh@kernel.org, sdf@fomichev.me, haoluo@google.com,
	jolsa@kernel.org, shuah@kernel.org, hawk@kernel.org
Subject: Re: [PATCH bpf-next v3 4/6] selftests/bpf: refactor xdp_context_functional test and bpf program
Date: Mon, 24 Feb 2025 09:12:31 -0800	[thread overview]
Message-ID: <Z7yof3pafRsMwBrf@mini-arch> (raw)
In-Reply-To: <20250224152909.3911544-5-marcus.wichelmann@hetzner-cloud.de>

On 02/24, Marcus Wichelmann wrote:
> The existing XDP metadata test works by creating a veth pair and
> attaching XDP & TC programs that drop the packet when the condition of
> the test isn't fulfilled. The test then pings through the veth pair and
> succeeds when the ping comes through.
> 
> While this test works great for a veth pair, it is hard to replicate for
> tap devices to test the XDP metadata support of them. A similar test for
> the tun driver would either involve logic to reply to the ping request,
> or would have to capture the packet to check if it was dropped or not.
> 
> To make the testing of other drivers easier while still maximizing code
> reuse, this commit refactors the existing xdp_context_functional test to
> use a test_result map. Instead of conditionally passing or dropping the
> packet, the TC program is changed to copy the received metadata into the
> value of that single-entry array map. Tests can then verify that the map
> value matches the expectation.
> 
> This testing logic is easy to adapt to other network drivers as the only
> remaining requirement is that there is some way to send a custom
> Ethernet packet through it that triggers the XDP & TC programs.
> 
> The payload of the Ethernet packet is used as the test data that is
> expected to be passed as metadata from the XDP to the TC program and
> written to the map. It has a fixed size of 32 bytes which is a
> reasonalbe size that should be supported by both drivers. Additional
> packet headers are not necessary for the test and were therefore skipped
> to keep the testing code short.
> 
> Signed-off-by: Marcus Wichelmann <marcus.wichelmann@hetzner-cloud.de>
> ---
>  .../bpf/prog_tests/xdp_context_test_run.c     | 99 +++++++++++++++----
>  .../selftests/bpf/progs/test_xdp_meta.c       | 56 ++++++-----
>  2 files changed, 112 insertions(+), 43 deletions(-)
> 
> diff --git a/tools/testing/selftests/bpf/prog_tests/xdp_context_test_run.c b/tools/testing/selftests/bpf/prog_tests/xdp_context_test_run.c
> index 937da9b7532a..4043f220d7c0 100644
> --- a/tools/testing/selftests/bpf/prog_tests/xdp_context_test_run.c
> +++ b/tools/testing/selftests/bpf/prog_tests/xdp_context_test_run.c
> @@ -4,13 +4,19 @@
>  #include "test_xdp_context_test_run.skel.h"
>  #include "test_xdp_meta.skel.h"
>  
> -#define TX_ADDR "10.0.0.1"
> -#define RX_ADDR "10.0.0.2"
>  #define RX_NAME "veth0"
>  #define TX_NAME "veth1"
>  #define TX_NETNS "xdp_context_tx"
>  #define RX_NETNS "xdp_context_rx"
>  
> +#define TEST_PAYLOAD_LEN 32
> +static const __u8 test_payload[TEST_PAYLOAD_LEN] = {
> +	0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
> +	0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18,
> +	0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28,
> +	0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
> +};
> +
>  void test_xdp_context_error(int prog_fd, struct bpf_test_run_opts opts,
>  			    __u32 data_meta, __u32 data, __u32 data_end,
>  			    __u32 ingress_ifindex, __u32 rx_queue_index,
> @@ -112,15 +118,66 @@ void test_xdp_context_test_run(void)
>  	test_xdp_context_test_run__destroy(skel);
>  }
>  
> -void test_xdp_context_functional(void)

[..]

> +int send_test_packet(int ifindex)

nit: static? same for assert_test_result below

  reply	other threads:[~2025-02-24 17:12 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-02-24 15:29 [PATCH bpf-next v3 0/6] XDP metadata support for tun driver Marcus Wichelmann
2025-02-24 15:29 ` [PATCH bpf-next v3 1/6] net: tun: enable XDP metadata support Marcus Wichelmann
2025-02-26  5:50   ` Jason Wang
2025-02-24 15:29 ` [PATCH bpf-next v3 2/6] net: tun: enable transfer of XDP metadata to skb Marcus Wichelmann
2025-02-25 18:26   ` Willem de Bruijn
2025-02-26  5:59   ` Jason Wang
2025-02-24 15:29 ` [PATCH bpf-next v3 3/6] selftests/bpf: move open_tuntap to network helpers Marcus Wichelmann
2025-02-25 18:24   ` Willem de Bruijn
2025-02-26  6:31   ` Jason Wang
2025-02-24 15:29 ` [PATCH bpf-next v3 4/6] selftests/bpf: refactor xdp_context_functional test and bpf program Marcus Wichelmann
2025-02-24 17:12   ` Stanislav Fomichev [this message]
2025-02-26 15:56     ` Marcus Wichelmann
2025-02-25 15:07   ` Marcus Wichelmann
2025-02-25 18:23     ` Willem de Bruijn
2025-02-26 17:39       ` Marcus Wichelmann
2025-02-25 18:32   ` Willem de Bruijn
2025-02-26 17:14     ` Marcus Wichelmann
2025-02-24 15:29 ` [PATCH bpf-next v3 5/6] selftests/bpf: add test for XDP metadata support in tun driver Marcus Wichelmann
2025-02-24 17:14   ` Stanislav Fomichev
2025-02-26 18:50     ` Marcus Wichelmann
2025-02-26 19:00       ` Stanislav Fomichev
2025-02-26 19:29         ` Marcus Wichelmann
2025-02-24 15:29 ` [PATCH bpf-next v3 6/6] selftests/bpf: fix file descriptor assertion in open_tuntap helper Marcus Wichelmann
2025-02-25 18:24   ` Willem de Bruijn
2025-02-25 14:55 ` [PATCH bpf-next v3 0/6] XDP metadata support for tun driver Willem de Bruijn
2025-02-25 15:03   ` Marcus Wichelmann
2025-02-25 18:14     ` Willem de Bruijn

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=Z7yof3pafRsMwBrf@mini-arch \
    --to=stfomichev@gmail.com \
    --cc=andrew+netdev@lunn.ch \
    --cc=andrii@kernel.org \
    --cc=ast@kernel.org \
    --cc=bpf@vger.kernel.org \
    --cc=daniel@iogearbox.net \
    --cc=davem@davemloft.net \
    --cc=eddyz87@gmail.com \
    --cc=edumazet@google.com \
    --cc=haoluo@google.com \
    --cc=hawk@kernel.org \
    --cc=jasowang@redhat.com \
    --cc=john.fastabend@gmail.com \
    --cc=jolsa@kernel.org \
    --cc=kpsingh@kernel.org \
    --cc=kuba@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=marcus.wichelmann@hetzner-cloud.de \
    --cc=martin.lau@linux.dev \
    --cc=mykolal@fb.com \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=sdf@fomichev.me \
    --cc=shuah@kernel.org \
    --cc=song@kernel.org \
    --cc=willemdebruijn.kernel@gmail.com \
    --cc=yonghong.song@linux.dev \
    /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.