On 11/13, Jakub Kicinski wrote: > The XDP qstats tests send 2k packets over a single socket. > Looks like when netdev CI is busy running those tests in QEMU > occasionally flakes. The target doesn't get to run at all > before all 2000 packets are sent. > > Lower the number of packets to 1000 and reopen the socket > every 50 packets, to give RSS a chance to spread the packets > to multiple queues. > > For the netdev CI testing either lowering the count or using > multiple sockets is enough, but let's do both for extra resiliency. > > Signed-off-by: Jakub Kicinski <[email protected]> > --- > CC: [email protected] > CC: [email protected] > CC: [email protected] > CC: [email protected] > CC: [email protected] > CC: [email protected] > --- > tools/testing/selftests/drivers/net/xdp.py | 15 +++++++++------ > 1 file changed, 9 insertions(+), 6 deletions(-) > > diff --git a/tools/testing/selftests/drivers/net/xdp.py > b/tools/testing/selftests/drivers/net/xdp.py > index a148004e1c36..834a37ae7d0d 100755 > --- a/tools/testing/selftests/drivers/net/xdp.py > +++ b/tools/testing/selftests/drivers/net/xdp.py > @@ -687,9 +687,12 @@ from lib.py import ip, bpftool, defer > "/dev/null" > # Listener runs on "remote" in case of XDP_TX > rx_host = cfg.remote if act == XDPAction.TX else None > - # We want to spew 2000 packets quickly, bash seems to do a good enough > job > - tx_udp = f"exec 5<>/dev/udp/{cfg.addr}/{port}; " \ > - "for i in `seq 2000`; do echo a >&5; done; exec 5>&-" > + # We want to spew 1000 packets quickly, bash seems to do a good enough > job > + # Each reopening of the socket gives us a differenot local port (for RSS) > + tx_udp = "for _ in `seq 20`; do " \ > + f"exec 5<>/dev/udp/{cfg.addr}/{port}; " \ > + "for i in `seq 50`; do echo a >&5; done; " \ > + "exec 5>&-; done"
TIL about bash's /dev/udp, interesting.. Acked-by: Stanislav Fomichev <[email protected]>
