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: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <667a85a38657b_38c6b5294e6@willemb.c.googlers.com.notmuch>
Date: Tue, 25 Jun 2024 04:53:55 -0400
From: Willem de Bruijn <willemdebruijn.kernel@...il.com>
To: Jakub Kicinski <kuba@...nel.org>, 
 davem@...emloft.net
Cc: netdev@...r.kernel.org, 
 edumazet@...gle.com, 
 pabeni@...hat.com, 
 willemdebruijn.kernel@...il.com, 
 ecree.xilinx@...il.com, 
 dw@...idwei.uk, 
 przemyslaw.kitszel@...el.com, 
 michael.chan@...adcom.com, 
 andrew.gospodarek@...adcom.com, 
 Jakub Kicinski <kuba@...nel.org>
Subject: Re: [PATCH net-next v2 3/4] selftests: drv-net: add ability to wait
 for at least N packets to load gen

Jakub Kicinski wrote:
> Teach the load generator how to wait for at least given number
> of packets to be received. This will be useful for filtering
> where we'll want to send a non-trivial number of packets and
> make sure they landed in right queues.
> 
> Signed-off-by: Jakub Kicinski <kuba@...nel.org>
> ---
> v2:
>  - add comment that pps or pkt_cnt are mutually exclusive (David)
>  - rename variables (David)
> ---
>  .../selftests/drivers/net/lib/py/load.py      | 30 ++++++++++++++-----
>  1 file changed, 23 insertions(+), 7 deletions(-)
> 
> diff --git a/tools/testing/selftests/drivers/net/lib/py/load.py b/tools/testing/selftests/drivers/net/lib/py/load.py
> index abdb677bdb1c..31f82f1e32c1 100644
> --- a/tools/testing/selftests/drivers/net/lib/py/load.py
> +++ b/tools/testing/selftests/drivers/net/lib/py/load.py
> @@ -18,15 +18,31 @@ from lib.py import ksft_pr, cmd, ip, rand_port, wait_port_listen
>                                   background=True, host=env.remote)
>  
>          # Wait for traffic to ramp up
> -        pkt = ip("-s link show dev " + env.ifname, json=True)[0]["stats64"]["rx"]["packets"]
> +        if not self._wait_pkts(pps=1000):
> +            self.stop(verbose=True)
> +            raise Exception("iperf3 traffic did not ramp up")
> +
> +    def _wait_pkts(self, pkt_cnt=None, pps=None):
> +        """
> +        Wait until we've seen pkt_cnt or until traffic ramps up to pps.
> +        Only one of pkt_cnt or pss can be specified.
> +        """
> +        pkt_end = ip("-s link show dev " + self.env.ifname, json=True)[0]["stats64"]["rx"]["packets"]

nit: kind of confusing that the first reading is called pkt_end.

I'd s/pkt_end/pkt_start and pkt_start/pkt_now.

Obviously only bikeshedding at this point. Feel free to ignore.

>          for _ in range(50):
>              time.sleep(0.1)
> -            now = ip("-s link show dev " + env.ifname, json=True)[0]["stats64"]["rx"]["packets"]
> -            if now - pkt > 1000:
> -                return
> -            pkt = now
> -        self.stop(verbose=True)
> -        raise Exception("iperf3 traffic did not ramp up")
> +            pkt_start = ip("-s link show dev " + self.env.ifname, json=True)[0]["stats64"]["rx"]["packets"]
> +            if pps:
> +                if pkt_start - pkt_end > pps / 10:
> +                    return True
> +                pkt_end = pkt_start
> +            elif pkt_cnt:
> +                if pkt_start - pkt_end > pkt_cnt:
> +                    return True
> +        return False
> +
> +    def wait_pkts_and_stop(self, pkt_cnt):
> +        failed = not self._wait_pkts(pkt_cnt=pkt_cnt)
> +        self.stop(verbose=failed)
>  
>      def stop(self, verbose=None):
>          self._iperf_client.process(terminate=True)
> -- 
> 2.45.2
> 



Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ