All of lore.kernel.org
 help / color / mirror / Atom feed
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;

  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 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.