From: Stanislav Fomichev <stfomichev@gmail.com>
To: Mina Almasry <almasrymina@google.com>
Cc: Stanislav Fomichev <sdf@fomichev.me>,
netdev@vger.kernel.org, davem@davemloft.net, edumazet@google.com,
kuba@kernel.org, pabeni@redhat.com
Subject: Re: [PATCH net-next v2 09/12] selftests: ncdevmem: Remove hard-coded queue numbers
Date: Thu, 3 Oct 2024 15:16:12 -0700 [thread overview]
Message-ID: <Zv8XrPEG6g_W_k7O@mini-arch> (raw)
In-Reply-To: <CAHS8izOJaGk5g9m-DgBJE13XDcgdXNAbbBq9MmcjH229cSVoxg@mail.gmail.com>
On 10/03, Mina Almasry wrote:
> On Thu, Oct 3, 2024 at 10:02 AM Stanislav Fomichev <stfomichev@gmail.com> wrote:
> >
> > On 10/03, Mina Almasry wrote:
> > > On Mon, Sep 30, 2024 at 10:18 AM Stanislav Fomichev <sdf@fomichev.me> wrote:
> > > >
> > > > Use single last queue of the device and probe it dynamically.
> > > >
> > >
> > > Sorry I know there was a pending discussion in the last iteration that
> > > I didn't respond to. Been a rough week with me out sick a bit.
> > >
> > > For this, the issue I see is that by default only 1 queue binding will
> > > be tested, but I feel like test coverage for the multiple queues case
> > > by default is very nice because I actually ran into some issues making
> > > multi-queue binding work.
> > >
> > > Can we change this so that, by default, it binds to the last rxq_num/2
> > > queues of the device?
> >
> > I'm probably missing something, but why do you think exercising this from
> > the probe/selftest mode is not enough? It might be confusing for the readers
> > to understand why we bind to half of the queues and flow steer into them
> > when in reality there is only single tcp flow.
> >
> > IOW, can we keep these two modes:
> > 1. server / client - use single queue
> > 2. selftest / probe - use more than 1 queue by default (and I'll remove the
> > checks that enforce the number of queues for this mode to let the
> > users override)
>
> Ah, I see. Thanks for the explanation.
>
> My paranoia here is that we don't notice multi-queue binding
> regressions because the tests are often run in data path mode and we
> don't use or notice failures in the probe mode.
>
> I will concede my paranoia is just that and this is not very likely to
> happen, but also if it is confusing to bind multi-queues and then just
> use one, then we could remedy that with a comment and keep the
> accidental test coverage. It also makes the test simpler to always
> bind the same # of queues rather than special case data and control
> path tests.
>
> But your 2 mode approach sounds fine as well. But to implement that
> you need more than to remove the checks that enforce the number of
> queues, right? In probe mode num_queues should be rxq_num/2, and in
> server mode num_queues should be 1, yes?
Yes, I'll follow your suggestion with `start_queues = num_queues / 2`
for the selftest part.
Tentatively (default to 1/2 queues, if want to override - provide both
-t an -q):
index 90aacfb3433f..3a456c058241 100644
--- a/tools/testing/selftests/net/ncdevmem.c
+++ b/tools/testing/selftests/net/ncdevmem.c
@@ -64,7 +64,7 @@ static char *client_ip;
static char *port;
static size_t do_validation;
static int start_queue = -1;
-static int num_queues = 1;
+static int num_queues = -1;
static char *ifname;
static unsigned int ifindex;
static unsigned int dmabuf_id;
@@ -706,19 +706,31 @@ int main(int argc, char *argv[])
}
}
- if (!server_ip)
- error(1, 0, "Missing -s argument\n");
-
- if (!port)
- error(1, 0, "Missing -p argument\n");
-
if (!ifname)
error(1, 0, "Missing -f argument\n");
ifindex = if_nametoindex(ifname);
- if (start_queue < 0) {
- start_queue = rxq_num(ifindex) - 1;
+ if (!server_ip && !client_ip) {
+ if (start_queue < 0 && num_queues < 0) {
+ num_queues = rxq_num(ifindex);
+ if (num_queues < 0)
+ error(1, 0, "couldn't detect number of queues\n");
+ /* make sure can bind to multiple queues */
+ start_queues = num_queues / 2;
+ num_queues /= 2;
+ }
+
+ if (start_queue < 0 || num_queues < 0)
+ error(1, 0, "Both -t and -q are requred\n");
+
+ run_devmem_tests();
+ return 0;
+ }
+
+ if (start_queue < 0 && num_queues < 0) {
+ num_queues = 1;
+ start_queue = rxq_num(ifindex) - num_queues;
next prev parent reply other threads:[~2024-10-03 22:16 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-09-30 17:17 [PATCH net-next v2 00/12] selftests: ncdevmem: Add ncdevmem to ksft Stanislav Fomichev
2024-09-30 17:17 ` [PATCH net-next v2 01/12] selftests: ncdevmem: Redirect all non-payload output to stderr Stanislav Fomichev
2024-10-03 17:40 ` Mina Almasry
2024-09-30 17:17 ` [PATCH net-next v2 02/12] selftests: ncdevmem: Separate out dmabuf provider Stanislav Fomichev
2024-10-03 17:57 ` Mina Almasry
2024-10-03 22:08 ` Stanislav Fomichev
2024-10-04 1:42 ` Mina Almasry
2024-09-30 17:17 ` [PATCH net-next v2 03/12] selftests: ncdevmem: Unify error handling Stanislav Fomichev
2024-10-03 6:57 ` Mina Almasry
2024-09-30 17:17 ` [PATCH net-next v2 04/12] selftests: ncdevmem: Make client_ip optional Stanislav Fomichev
2024-10-03 6:56 ` Mina Almasry
2024-09-30 17:17 ` [PATCH net-next v2 05/12] selftests: ncdevmem: Remove default arguments Stanislav Fomichev
2024-10-03 6:59 ` Mina Almasry
2024-10-03 16:36 ` Stanislav Fomichev
2024-10-03 18:51 ` Mina Almasry
2024-09-30 17:17 ` [PATCH net-next v2 06/12] selftests: ncdevmem: Switch to AF_INET6 Stanislav Fomichev
2024-10-03 7:07 ` Mina Almasry
2024-10-03 16:47 ` Stanislav Fomichev
2024-10-03 17:16 ` Mina Almasry
2024-09-30 17:17 ` [PATCH net-next v2 07/12] selftests: ncdevmem: Properly reset flow steering Stanislav Fomichev
2024-10-03 7:02 ` Mina Almasry
2024-10-03 16:42 ` Stanislav Fomichev
2024-10-03 18:54 ` Mina Almasry
2024-10-03 22:12 ` Stanislav Fomichev
2024-09-30 17:17 ` [PATCH net-next v2 08/12] selftests: ncdevmem: Use YNL to enable TCP header split Stanislav Fomichev
2024-10-03 7:22 ` Mina Almasry
2024-10-03 16:57 ` Stanislav Fomichev
2024-09-30 17:17 ` [PATCH net-next v2 09/12] selftests: ncdevmem: Remove hard-coded queue numbers Stanislav Fomichev
2024-10-03 7:14 ` Mina Almasry
2024-10-03 17:02 ` Stanislav Fomichev
2024-10-03 19:07 ` Mina Almasry
2024-10-03 22:16 ` Stanislav Fomichev [this message]
2024-09-30 17:17 ` [PATCH net-next v2 10/12] selftests: ncdevmem: Run selftest when none of the -s or -c has been provided Stanislav Fomichev
2024-10-03 7:26 ` Mina Almasry
2024-10-03 17:18 ` Stanislav Fomichev
2024-10-03 19:10 ` Mina Almasry
2024-09-30 17:17 ` [PATCH net-next v2 11/12] selftests: ncdevmem: Move ncdevmem under drivers/net/hw Stanislav Fomichev
2024-10-03 7:29 ` Mina Almasry
2024-10-03 17:25 ` Stanislav Fomichev
2024-10-03 19:16 ` Mina Almasry
2024-09-30 17:17 ` [PATCH net-next v2 12/12] selftests: ncdevmem: Add automated test Stanislav Fomichev
2024-10-03 7:39 ` Mina Almasry
2024-10-03 17:47 ` Stanislav Fomichev
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=Zv8XrPEG6g_W_k7O@mini-arch \
--to=stfomichev@gmail.com \
--cc=almasrymina@google.com \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=kuba@kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=sdf@fomichev.me \
/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