From: netdev-bot+sashiko@kernel.org
To: willemdebruijn.kernel@gmail.com
Cc: netdev@vger.kernel.org, davem@davemloft.net, kuba@kernel.org,
edumazet@google.com, pabeni@redhat.com, horms@kernel.org,
andrew+netdev@lunn.ch, willemb@google.com
Subject: Re: [PATCH net-next v9 6/7] selftests: drv-net: in so_txtime tell apart sw from hw pacing
Date: Fri, 11 Sep 2026 17:13:18 +0000 [thread overview]
Message-ID: <178914679853.219967.10930030898097751336@kernel.org> (raw)
In-Reply-To: <20260910171131.2532487-7-willemdebruijn.kernel@gmail.com>
Thank you for your contribution! Sashiko AI review found 1 potential
issue(s) to consider:
Critical: 0 · High: 0 · Medium: 1 · Low: 0
- [Medium] `-H` is documented in usage() as 'verify hardware offload
(tx)' and the commit message claims it tells software apart from…
--
selftests: drv-net: in so_txtime tell apart sw from hw pacing
This adds a '-H' flag to so_txtime.c that enables SO_TIMESTAMPING with
SOF_TIMESTAMPING_TX_SOFTWARE, and flags an error if the software transmit
timestamp is more than cfg_variance_us after the send start time. It also
extends the errqueue polling deadline by cfg_variance_us and sorts the
getopt string and usage text alphabetically.
> diff --git a/tools/testing/selftests/drivers/net/so_txtime.c b/tools/testing/selftests/drivers/net/so_txtime.c
> index f6f3253ed1748..9ebe9f91227c7 100644
> --- a/tools/testing/selftests/drivers/net/so_txtime.c
> +++ b/tools/testing/selftests/drivers/net/so_txtime.c
[ ... ]
> @@ -191,12 +193,32 @@ static int do_recv_errqueue_txtime(struct sock_extended_err *err,
> return 1;
> }
>
> -static int do_recv_errqueue(int fdt)
> +static int do_recv_errqueue_timestamping(struct scm_timestamping *tss)
> +{
> + int64_t ts;
> +
> + ts = tss->ts[0].tv_sec * 1000ULL * 1000 * 1000;
> + ts += tss->ts[0].tv_nsec;
> + ts -= glob_tstart_real;
> + ts /= 1000;
> +
> + if (ts > cfg_variance_us) {
> + fprintf(stderr, "sw delay %" PRId64 "us exceeds bounds\n", ts);
> + if (!cfg_machine_slow)
> + errors++;
> + }
> +
> + return 1;
> +}
[Severity: Medium]
Can this check actually tell software pacing apart from hardware pacing for
every workload the next patch runs with '-H'?
The only positive criterion here is that the software transmit timestamp
lands within cfg_variance_us (8000 us) of glob_tstart_real. For a request
with no delay or a negative delay there is no pacing interval to observe at
all. do_send_one() does not even attach SCM_TXTIME when delay_us is
negative:
if (ts->delay_us >= 0) {
...
tdeliver = glob_tstart + ts->delay_us * 1000;
...
cm->cmsg_type = SCM_TXTIME;
So for the 'a,-1' and 'a,0' variants that the follow-up patch passes '-H'
to, ts comes out near 0 and the ts > cfg_variance_us test can never fire,
whether the transmit was hardware paced, software paced, or not paced at
all. Would it make sense to skip or reject '-H' when the requested delay
is not positive, so those variants do not report a pass without having
verified anything?
For the 10 ms variants there are only 2 ms between the requested delay and
the 8 ms threshold. Is that margin intentional?
A related question on cfg_variance_us: it is also the receiver side
delivery jitter tolerance used in do_recv_one():
if (llabs(tstop - texpect) > cfg_variance_us) {
fprintf(stderr, "exceeds variance (%d us)\n", cfg_variance_us);
Reusing it as the sender side software pacing threshold means changing one
tolerance silently changes the other. Would a separate constant for the
sender side threshold be clearer?
[ ... ]
> @@ -446,10 +505,11 @@ static void usage(const char *progname)
> " -6 only IPv6\n"
> " -c <clock> monotonic or tai (default)\n"
> " -D <addr> destination IP address (server)\n"
> - " -S <addr> source IP address (client)\n"
> + " -H verify hardware offload (tx)\n"
Given the above, is "verify hardware offload (tx)" an accurate description
of what the flag does? The implemented behaviour is a heuristic on the
software transmit delay, and it degrades to a no-op for zero and negative
delays. Would wording that describes the software delay check be closer to
the code?
> + " -m <mark> socket mark\n"
> " -r run rx mode\n"
> + " -S <addr> source IP address (client)\n"
> " -t <nsec> start time (UTC nanoseconds)\n"
> - " -m <mark> socket mark\n"
> "\n",
> progname);
> exit(1);
[ ... ]
--
Sashiko AI review · https://netdev-ai.bots.linux.dev/sashiko/#/patchset/20260910171131.2532487-1-willemdebruijn.kernel%40gmail.com
next prev parent reply other threads:[~2026-09-11 17:13 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-10 17:10 [PATCH net-next v9 0/7] hardware pacing offload Willem de Bruijn
2026-09-10 17:10 ` [PATCH net-next v9 1/7] net: rtnetlink: add pacing_offload attribute to net_device Willem de Bruijn
2026-09-11 17:13 ` netdev-bot+sashiko
2026-09-12 0:25 ` Willem de Bruijn
2026-09-10 17:10 ` [PATCH net-next v9 2/7] net_sched: sch_fq: check device pacing offload Willem de Bruijn
2026-09-11 17:13 ` netdev-bot+sashiko
2026-09-12 0:33 ` Willem de Bruijn
2026-09-10 17:10 ` [PATCH net-next v9 3/7] net_sched: sch_fq: clear past skb->tstamp if offloading pacing Willem de Bruijn
2026-09-11 17:13 ` netdev-bot+sashiko
2026-09-12 0:36 ` Willem de Bruijn
2026-09-10 17:10 ` [PATCH net-next v9 4/7] idpf: support pacing offload Willem de Bruijn
2026-09-11 17:13 ` netdev-bot+sashiko
2026-09-12 0:46 ` Willem de Bruijn
2026-09-10 17:10 ` [PATCH net-next v9 5/7] selftests: drv-net: refactor so_txtime errqueue handling Willem de Bruijn
2026-09-10 17:10 ` [PATCH net-next v9 6/7] selftests: drv-net: in so_txtime tell apart sw from hw pacing Willem de Bruijn
2026-09-11 17:13 ` netdev-bot+sashiko [this message]
2026-09-12 0:47 ` Willem de Bruijn
2026-09-10 17:10 ` [PATCH net-next v9 7/7] selftests: drv-net: extend so_txtime with hw offload Willem de Bruijn
2026-09-11 17:13 ` netdev-bot+sashiko
2026-09-12 0:57 ` Willem de Bruijn
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=178914679853.219967.10930030898097751336@kernel.org \
--to=netdev-bot+sashiko@kernel.org \
--cc=andrew+netdev@lunn.ch \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=horms@kernel.org \
--cc=kuba@kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=willemb@google.com \
--cc=willemdebruijn.kernel@gmail.com \
/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