lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Tue, 31 Jan 2023 22:16:36 +0000
From:   Andrei Gherzan <andrei.gherzan@...onical.com>
To:     Willem de Bruijn <willemb@...gle.com>
Cc:     "David S. Miller" <davem@...emloft.net>,
        Eric Dumazet <edumazet@...gle.com>,
        Jakub Kicinski <kuba@...nel.org>,
        Paolo Abeni <pabeni@...hat.com>, Shuah Khan <shuah@...nel.org>,
        Fred Klassen <fklassen@...neta.com>, netdev@...r.kernel.org,
        linux-kselftest@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH net-next v3 4/4] selftests: net: udpgso_bench_tx: Cater
 for pending datagrams zerocopy benchmarking

On 23/01/31 04:51PM, Willem de Bruijn wrote:
> On Tue, Jan 31, 2023 at 4:01 PM Andrei Gherzan
> <andrei.gherzan@...onical.com> wrote:
> >
> > The test tool can check that the zerocopy number of completions value is
> > valid taking into consideration the number of datagram send calls. This can
> > catch the system into a state where the datagrams are still in the system
> > (for example in a qdisk, waiting for the network interface to return a
> > completion notification, etc).
> >
> > This change adds a retry logic of computing the number of completions up to
> > a configurable (via CLI) timeout (default: 2 seconds).
> >
> > Fixes: 79ebc3c26010 ("net/udpgso_bench_tx: options to exercise TX CMSG")
> > Signed-off-by: Andrei Gherzan <andrei.gherzan@...onical.com>
> > Cc: Willem de Bruijn <willemb@...gle.com>
> > Cc: Paolo Abeni <pabeni@...hat.com>
> > ---
> >  tools/testing/selftests/net/udpgso_bench_tx.c | 34 +++++++++++++++----
> >  1 file changed, 27 insertions(+), 7 deletions(-)
> >
> > diff --git a/tools/testing/selftests/net/udpgso_bench_tx.c b/tools/testing/selftests/net/udpgso_bench_tx.c
> > index b47b5c32039f..ef887842522a 100644
> > --- a/tools/testing/selftests/net/udpgso_bench_tx.c
> > +++ b/tools/testing/selftests/net/udpgso_bench_tx.c
> > @@ -62,6 +62,7 @@ static int    cfg_payload_len = (1472 * 42);
> >  static int     cfg_port        = 8000;
> >  static int     cfg_runtime_ms  = -1;
> >  static bool    cfg_poll;
> > +static int     cfg_poll_loop_timeout_ms = 2000;
> >  static bool    cfg_segment;
> >  static bool    cfg_sendmmsg;
> >  static bool    cfg_tcp;
> > @@ -235,16 +236,17 @@ static void flush_errqueue_recv(int fd)
> >         }
> >  }
> >
> > -static void flush_errqueue(int fd, const bool do_poll)
> > +static void flush_errqueue(int fd, const bool do_poll,
> > +               unsigned long poll_timeout, const bool poll_err)
> 
> nit: his indentation looks off though

This one I've missed but I couldn't find any guidelines on it. Could you
clarify to me what this should be or point me to soem docs? Happy to fix
otherwise. I'm currently using vim smartindent but it is definitely not
in line with what is here already.

> 
> >  {
> >         if (do_poll) {
> >                 struct pollfd fds = {0};
> >                 int ret;
> >
> >                 fds.fd = fd;
> > -               ret = poll(&fds, 1, 500);
> > +               ret = poll(&fds, 1, poll_timeout);
> >                 if (ret == 0) {
> > -                       if (cfg_verbose)
> > +                       if ((cfg_verbose) && (poll_err))
> >                                 fprintf(stderr, "poll timeout\n");
> >                 } else if (ret < 0) {
> >                         error(1, errno, "poll");
> > @@ -254,6 +256,20 @@ static void flush_errqueue(int fd, const bool do_poll)
> >         flush_errqueue_recv(fd);
> >  }

-- 
Andrei Gherzan

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ