diff options
| author | Willem de Bruijn <willemb@google.com> | 2026-05-26 09:40:37 -0400 |
|---|---|---|
| committer | Jakub Kicinski <kuba@kernel.org> | 2026-05-27 18:41:19 -0700 |
| commit | fabcf8cad67b4e2aa51b4c3f79f26fd215b50c8c (patch) | |
| tree | 228d5a5c345dbccf7ebae918d88a38c9ae5eb9a0 /tools | |
| parent | 56edbedb74ac8c99ef693a344cb8834885d4bdac (diff) | |
| download | linux-next-fabcf8cad67b4e2aa51b4c3f79f26fd215b50c8c.tar.gz linux-next-fabcf8cad67b4e2aa51b4c3f79f26fd215b50c8c.zip | |
net: sch_fq: update flow delivery time on earlier EDT packet
When inserting an EDT packet with time before flow->time_next_packet,
update the flow and possibly queue next delivery time.
Reinsert the flow into the q->delayed rb-tree to position correctly
and to have fq_check_throttled set wake-up at the right next time.
Factor RB tree insertion out fq_flow_set_throttled to avoid open
coding twice.
EDT packets do not take precedence over queue rate limit. Skip this
new step if a queue limit is set. EDT packets do take precedence over
per-socket rate limits, as can be seen from fq_dequeue reading
sk_pacing_rate if !skb->tstamp.
With this change the so_txtime selftest sends packets in the expected
order.
Signed-off-by: Willem de Bruijn <willemb@google.com>
Link: https://patch.msgid.link/20260526134109.2624493-1-willemdebruijn.kernel@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'tools')
| -rwxr-xr-x | tools/testing/selftests/drivers/net/so_txtime.py | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/tools/testing/selftests/drivers/net/so_txtime.py b/tools/testing/selftests/drivers/net/so_txtime.py index e7de8fe22c1e..5d4388bfc6dd 100755 --- a/tools/testing/selftests/drivers/net/so_txtime.py +++ b/tools/testing/selftests/drivers/net/so_txtime.py @@ -53,7 +53,7 @@ def _test_variants_mono(): ["zero_delay", "a,0", "a,0"], ["one_pkt", "a,10", "a,10"], ["in_order", "a,10,b,20", "a,10,b,20"], - ["reverse_order", "a,20,b,10", "b,20,a,20"], + ["reverse_order", "a,20,b,10", "b,10,a,20"], ]: name = f"v{ipver}_{testcase[0]}" yield KsftNamedVariant(name, ipver, testcase[1], testcase[2]) |
