Linux Kernel Selftest development
 help / color / mirror / Atom feed
From: "Ilpo Järvinen" <ij@kernel.org>
To: Paolo Abeni <pabeni@redhat.com>
Cc: chia-yu.chang@nokia-bell-labs.com, edumazet@google.com,
	 linux-doc@vger.kernel.org, corbet@lwn.net, horms@kernel.org,
	 dsahern@kernel.org, kuniyu@amazon.com, bpf@vger.kernel.org,
	 netdev@vger.kernel.org, dave.taht@gmail.com, jhs@mojatatu.com,
	 kuba@kernel.org, stephen@networkplumber.org,
	xiyou.wangcong@gmail.com,  jiri@resnulli.us, davem@davemloft.net,
	andrew+netdev@lunn.ch,  donald.hunter@gmail.com, ast@fiberby.net,
	liuhangbin@gmail.com,  shuah@kernel.org,
	linux-kselftest@vger.kernel.org, ncardwell@google.com,
	 koen.de_schepper@nokia-bell-labs.com, g.white@cablelabs.com,
	 ingemar.s.johansson@ericsson.com, mirja.kuehlewind@ericsson.com,
	 cheshire@apple.com, rs.ietf@gmx.at, Jason_Livingood@comcast.com,
	 vidhi_goel@apple.com
Subject: Re: [PATCH v4 net-next 02/13] gro: flushing when CWR is set negatively affects AccECN
Date: Thu, 16 Oct 2025 23:26:57 +0300 (EEST)	[thread overview]
Message-ID: <24bc44a8-6045-9565-c798-a9d4597366e8@kernel.org> (raw)
In-Reply-To: <98342f21-08c8-46de-9309-d58dfc44d0a0@redhat.com>

[-- Attachment #1: Type: text/plain, Size: 3453 bytes --]

On Thu, 16 Oct 2025, Paolo Abeni wrote:
> On 10/13/25 7:03 PM, chia-yu.chang@nokia-bell-labs.com wrote:
> > From: Ilpo Järvinen <ij@kernel.org>
> > 
> > As AccECN may keep CWR bit asserted due to different
> > interpretation of the bit, flushing with GRO because of
> > CWR may effectively disable GRO until AccECN counter
> > field changes such that CWR-bit becomes 0.
> > 
> > There is no harm done from not immediately forwarding the
> > CWR'ed segment with RFC3168 ECN.
> 
> I guess this change could introduce additional latency for RFC3168
> notification, which sounds not good.
> 
> @Eric: WDYT?

I'm not Eric but I want to add I foresaw somebody making this argument 
and thus wanted to not hide this change into some other patch so it can be 
properly discussed and rejected if so preferred, either way it's not a 
correctness issue.

I agree it's possible for some delay be added but the question is why 
would that matter? "CWR" tells sender did already reduce its sending rate 
which is where congestion control aims to. So the reaction to congestion 
is already done when GRO sees CWR (some might have a misconception that
delivering CWR causes sender to reduce sending rate but that's not the 
case). With RFC 3168 ECN, CWR only tells the receiving end to stop sending 
ECE. Why does it matter if that information arrives a bit later?

If there are other segments, they normally don't have CWR with RFC 3168 
ECN which normally set CWR once per RTT. A non-CWR'ed segment results in 
flush after an inter-packet delay due to flags difference. That delay is 
nothing compared to GRO aggregating non-CWR segments en masse which is 
in n times the inter-packet delay (simplification, ignores burstiness, 
etc.).

If there are no other segments, the receiver won't be sending any ECEs 
either, so the extra delay does not seem that impactful.

Some might argue that with this "special delivery" for CWR the segment 
could trigger an ACK "sooner", but GRO shouldn't hold the segment forever 
either (though I don't recall the details anymore). But if we make that 
argument (which is no longer ECN signalling related at all, BTW), why use 
GRO at all as it add delay for other segments too delaying other ACKs, why 
is this CWR'ed segment so special that it in particular must elicit ACK 
ASAP? It's hard to justify that distinction/CWR speciality, unless one has 
that misconception CWR must arrive ASAP to expedite congestion reaction 
which is based on misunderstanding how RFC 3168 ECN works.

Thus, what I wrote to the changelog about the delay not being harmful 
seems well justified.

> On the flip side adding too much
> AccECN logic to GRO (i.e. to allow aggregation only for AccECN enabled
> flows) looks overkill.

The usual aggregation works on header bits remaining identical which 
just happens to also suit AccECN better here. The RFC 3168 CWR trickery is 
what is an expection to the rule, and as explained above, it does not seem 
even that useful.

This CWR special delivery rule, on the other hand, is clearly harmful for 
aggregating AccECN segments which may have long row of CWR flagged 
segments if ACE field remains unchanging. None of them can be aggregated 
by GRO if this particular change is not accepted. Not an end of the world 
but if we weight the pros and cons, it seems to clearly favor not keeping 
this special delivery rule.


-- 
 i.

  reply	other threads:[~2025-10-16 20:27 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-10-13 17:03 [PATCH v4 net-next 00/13] AccECN protocol case handling series chia-yu.chang
2025-10-13 17:03 ` [PATCH v4 net-next 01/13] tcp: try to avoid safer when ACKs are thinned chia-yu.chang
2025-10-13 17:03 ` [PATCH v4 net-next 02/13] gro: flushing when CWR is set negatively affects AccECN chia-yu.chang
2025-10-16  9:17   ` Paolo Abeni
2025-10-16 20:26     ` Ilpo Järvinen [this message]
2025-10-20 15:26       ` Chia-Yu Chang (Nokia)
2025-10-20 15:31         ` Eric Dumazet
2025-10-20 16:46           ` Chia-Yu Chang (Nokia)
2025-10-13 17:03 ` [PATCH v4 net-next 03/13] tcp: L4S ECT(1) identifier and NEEDS_ACCECN for CC modules chia-yu.chang
2025-10-13 17:03 ` [PATCH v4 net-next 04/13] tcp: disable RFC3168 fallback identifier " chia-yu.chang
2025-10-13 17:03 ` [PATCH v4 net-next 05/13] tcp: accecn: handle unexpected AccECN negotiation feedback chia-yu.chang
2025-10-16  9:02   ` Paolo Abeni
2025-10-13 17:03 ` [PATCH v4 net-next 06/13] tcp: accecn: retransmit downgraded SYN in AccECN negotiation chia-yu.chang
2025-10-13 17:03 ` [PATCH v4 net-next 07/13] tcp: move increment of num_retrans chia-yu.chang
2025-10-13 17:03 ` [PATCH v4 net-next 08/13] tcp: accecn: retransmit SYN/ACK without AccECN option or non-AccECN SYN/ACK chia-yu.chang
2025-10-16  9:13   ` Paolo Abeni
2025-10-18 16:06     ` Chia-Yu Chang (Nokia)
2025-10-13 17:03 ` [PATCH v4 net-next 09/13] tcp: accecn: unset ECT if receive or send ACE=0 in AccECN negotiaion chia-yu.chang
2025-10-13 17:03 ` [PATCH v4 net-next 10/13] tcp: accecn: fallback outgoing half link to non-AccECN chia-yu.chang
2025-10-13 17:03 ` [PATCH v4 net-next 11/13] tcp: accecn: verify ACE counter in 1st ACK after AccECN negotiation chia-yu.chang
2025-10-13 17:03 ` [PATCH v4 net-next 12/13] tcp: accecn: detect loss ACK w/ AccECN option and add TCP_ACCECN_OPTION_PERSIST chia-yu.chang
2025-10-16  9:25   ` Paolo Abeni
2025-10-13 17:03 ` [PATCH v4 net-next 13/13] tcp: accecn: enable AccECN chia-yu.chang
2025-10-16 10:08 ` [PATCH v4 net-next 00/13] AccECN protocol case handling series Jakub Sitnicki
  -- strict thread matches above, loose matches on Subject: below --
2025-10-10 13:17 chia-yu.chang
2025-10-10 13:17 ` [PATCH v4 net-next 02/13] gro: flushing when CWR is set negatively affects AccECN chia-yu.chang

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=24bc44a8-6045-9565-c798-a9d4597366e8@kernel.org \
    --to=ij@kernel.org \
    --cc=Jason_Livingood@comcast.com \
    --cc=andrew+netdev@lunn.ch \
    --cc=ast@fiberby.net \
    --cc=bpf@vger.kernel.org \
    --cc=cheshire@apple.com \
    --cc=chia-yu.chang@nokia-bell-labs.com \
    --cc=corbet@lwn.net \
    --cc=dave.taht@gmail.com \
    --cc=davem@davemloft.net \
    --cc=donald.hunter@gmail.com \
    --cc=dsahern@kernel.org \
    --cc=edumazet@google.com \
    --cc=g.white@cablelabs.com \
    --cc=horms@kernel.org \
    --cc=ingemar.s.johansson@ericsson.com \
    --cc=jhs@mojatatu.com \
    --cc=jiri@resnulli.us \
    --cc=koen.de_schepper@nokia-bell-labs.com \
    --cc=kuba@kernel.org \
    --cc=kuniyu@amazon.com \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=liuhangbin@gmail.com \
    --cc=mirja.kuehlewind@ericsson.com \
    --cc=ncardwell@google.com \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=rs.ietf@gmx.at \
    --cc=shuah@kernel.org \
    --cc=stephen@networkplumber.org \
    --cc=vidhi_goel@apple.com \
    --cc=xiyou.wangcong@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