bpf.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Magnus Karlsson <magnus.karlsson@gmail.com>
To: magnus.karlsson@intel.com, bjorn@kernel.org, ast@kernel.org,
	daniel@iogearbox.net, netdev@vger.kernel.org,
	maciej.fijalkowski@intel.com
Cc: jonathan.lemon@gmail.com, ciara.loftus@intel.com,
	bpf@vger.kernel.org, yhs@fb.com, andrii@kernel.org
Subject: [PATCH bpf-next v2 07/16] selftests: xsk: disassociate umem size with packets sent
Date: Tue, 17 Aug 2021 11:27:20 +0200	[thread overview]
Message-ID: <20210817092729.433-8-magnus.karlsson@gmail.com> (raw)
In-Reply-To: <20210817092729.433-1-magnus.karlsson@gmail.com>

From: Magnus Karlsson <magnus.karlsson@intel.com>

Disassociate the number of packets sent with the number of buffers in
the umem. This so we can loop over the umem to test more things. Set
the size of the umem to be a multiple of 2M. A requirement for huge
pages that are needed in unaligned mode.

Signed-off-by: Magnus Karlsson <magnus.karlsson@intel.com>
---
 tools/testing/selftests/bpf/xdpxceiver.c | 18 ++++++++----------
 tools/testing/selftests/bpf/xdpxceiver.h |  2 +-
 2 files changed, 9 insertions(+), 11 deletions(-)

diff --git a/tools/testing/selftests/bpf/xdpxceiver.c b/tools/testing/selftests/bpf/xdpxceiver.c
index b0fee71355bf..ebed88c13509 100644
--- a/tools/testing/selftests/bpf/xdpxceiver.c
+++ b/tools/testing/selftests/bpf/xdpxceiver.c
@@ -250,7 +250,7 @@ static void gen_eth_frame(struct xsk_umem_info *umem, u64 addr)
 	memcpy(xsk_umem__get_data(umem->buffer, addr), pkt_data, PKT_SIZE);
 }
 
-static void xsk_configure_umem(struct ifobject *data, void *buffer, int idx)
+static void xsk_configure_umem(struct ifobject *data, void *buffer, u64 size, int idx)
 {
 	struct xsk_umem_config cfg = {
 		.fill_size = XSK_RING_PROD__DEFAULT_NUM_DESCS,
@@ -259,7 +259,6 @@ static void xsk_configure_umem(struct ifobject *data, void *buffer, int idx)
 		.frame_headroom = frame_headroom,
 		.flags = XSK_UMEM__DEFAULT_FLAGS
 	};
-	int size = num_frames * XSK_UMEM__DEFAULT_FRAME_SIZE;
 	struct xsk_umem_info *umem;
 	int ret;
 
@@ -722,22 +721,23 @@ static void worker_pkt_validate(void)
 
 static void thread_common_ops(struct ifobject *ifobject, void *bufs)
 {
-	int umem_sz = num_frames * XSK_UMEM__DEFAULT_FRAME_SIZE;
+	u64 umem_sz = num_frames * XSK_UMEM__DEFAULT_FRAME_SIZE;
+	int mmap_flags = MAP_PRIVATE | MAP_ANONYMOUS | MAP_NORESERVE;
+	size_t mmap_sz = umem_sz;
 	int ctr = 0;
 	int ret;
 
 	ifobject->ns_fd = switch_namespace(ifobject->nsname);
 
 	if (test_type == TEST_TYPE_BPF_RES)
-		umem_sz *= 2;
+		mmap_sz *= 2;
 
-	bufs = mmap(NULL, umem_sz,
-		    PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
+	bufs = mmap(NULL, mmap_sz, PROT_READ | PROT_WRITE, mmap_flags, -1, 0);
 	if (bufs == MAP_FAILED)
 		exit_with_error(errno);
 
 	while (ctr++ < SOCK_RECONF_CTR) {
-		xsk_configure_umem(ifobject, bufs, 0);
+		xsk_configure_umem(ifobject, bufs, umem_sz, 0);
 		ifobject->umem = ifobject->umem_arr[0];
 		ret = xsk_configure_socket(ifobject, 0);
 		if (!ret)
@@ -753,7 +753,7 @@ static void thread_common_ops(struct ifobject *ifobject, void *bufs)
 	ifobject->xsk = ifobject->xsk_arr[0];
 
 	if (test_type == TEST_TYPE_BPF_RES) {
-		xsk_configure_umem(ifobject, (u8 *)bufs + (umem_sz / 2), 1);
+		xsk_configure_umem(ifobject, (u8 *)bufs + umem_sz, umem_sz, 1);
 		ifobject->umem = ifobject->umem_arr[1];
 		ret = xsk_configure_socket(ifobject, 1);
 	}
@@ -1094,8 +1094,6 @@ int main(int argc, char **argv)
 
 	parse_command_line(argc, argv);
 
-	num_frames = ++opt_pkt_count;
-
 	init_iface(ifdict[0], MAC1, MAC2, IP1, IP2, UDP_PORT1, UDP_PORT2, tx);
 	init_iface(ifdict[1], MAC2, MAC1, IP2, IP1, UDP_PORT2, UDP_PORT1, rx);
 
diff --git a/tools/testing/selftests/bpf/xdpxceiver.h b/tools/testing/selftests/bpf/xdpxceiver.h
index a4371d9e2798..131bd998e374 100644
--- a/tools/testing/selftests/bpf/xdpxceiver.h
+++ b/tools/testing/selftests/bpf/xdpxceiver.h
@@ -70,7 +70,7 @@ enum STAT_TEST_TYPES {
 
 static int configured_mode = TEST_MODE_UNCONFIGURED;
 static u8 debug_pkt_dump;
-static u32 num_frames;
+static u32 num_frames = DEFAULT_PKT_CNT / 4;
 static bool second_step;
 static int test_type;
 
-- 
2.29.0


  parent reply	other threads:[~2021-08-17  9:29 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-08-17  9:27 [PATCH bpf-next v2 00/16] selftests: xsk: various simplifications Magnus Karlsson
2021-08-17  9:27 ` [PATCH bpf-next v2 01/16] selftests: xsk: remove color mode Magnus Karlsson
2021-08-17  9:27 ` [PATCH bpf-next v2 02/16] selftests: xsk: remove the num_tx_packets option Magnus Karlsson
2021-08-17  9:27 ` [PATCH bpf-next v2 03/16] selftests: xsk: remove unused variables Magnus Karlsson
2021-08-17  9:27 ` [PATCH bpf-next v2 04/16] selftests: xsk: return correct error codes Magnus Karlsson
2021-08-17  9:27 ` [PATCH bpf-next v2 05/16] selftests: xsk: simplify the retry code Magnus Karlsson
2021-08-17  9:27 ` [PATCH bpf-next v2 06/16] selftests: xsk: remove end-of-test packet Magnus Karlsson
2021-08-17  9:27 ` Magnus Karlsson [this message]
2021-08-17  9:27 ` [PATCH bpf-next v2 08/16] selftests: xsk: rename worker_* functions that are not thread entry points Magnus Karlsson
2021-08-17  9:27 ` [PATCH bpf-next v2 09/16] selftests: xsk: simplify packet validation in xsk tests Magnus Karlsson
2021-08-17  9:27 ` [PATCH bpf-next v2 10/16] selftests: xsk: validate tx stats on tx thread Magnus Karlsson
2021-08-19  9:26   ` Maciej Fijalkowski
2021-08-19  9:52     ` Magnus Karlsson
2021-08-17  9:27 ` [PATCH bpf-next v2 11/16] selftests: xsk: decrease batch size Magnus Karlsson
2021-08-17  9:27 ` [PATCH bpf-next v2 12/16] selftests: xsk: remove cleanup at end of program Magnus Karlsson
2021-08-19  9:28   ` Maciej Fijalkowski
2021-08-19 10:02     ` Magnus Karlsson
2021-08-17  9:27 ` [PATCH bpf-next v2 13/16] selftests: xsk: generate packet directly in umem Magnus Karlsson
2021-08-17  9:27 ` [PATCH bpf-next v2 14/16] selftests: xsk: generate packets from specification Magnus Karlsson
2021-08-19 10:10   ` Maciej Fijalkowski
2021-08-19 10:38     ` Magnus Karlsson
2021-08-17  9:27 ` [PATCH bpf-next v2 15/16] selftests: xsk: make enums lower case Magnus Karlsson
2021-08-17  9:27 ` [PATCH bpf-next v2 16/16] selftests: xsk: preface options with opt Magnus Karlsson
2021-08-19 10:13 ` [PATCH bpf-next v2 00/16] selftests: xsk: various simplifications Maciej Fijalkowski

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=20210817092729.433-8-magnus.karlsson@gmail.com \
    --to=magnus.karlsson@gmail.com \
    --cc=andrii@kernel.org \
    --cc=ast@kernel.org \
    --cc=bjorn@kernel.org \
    --cc=bpf@vger.kernel.org \
    --cc=ciara.loftus@intel.com \
    --cc=daniel@iogearbox.net \
    --cc=jonathan.lemon@gmail.com \
    --cc=maciej.fijalkowski@intel.com \
    --cc=magnus.karlsson@intel.com \
    --cc=netdev@vger.kernel.org \
    --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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).