Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

gro: flushing when CWR is set negatively affects AccECN

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.

Signed-off-by: Ilpo Järvinen <ij@kernel.org>
Signed-off-by: Chia-Yu Chang <chia-yu.chang@nokia-bell-labs.com>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Link: https://patch.msgid.link/20260131222515.8485-3-chia-yu.chang@nokia-bell-labs.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>

authored by

Ilpo Järvinen and committed by
Paolo Abeni
ab4c8b6f 7885ce01

+1 -2
+1 -2
net/ipv4/tcp_offload.c
··· 304 304 goto out_check_final; 305 305 306 306 th2 = tcp_hdr(p); 307 - flush = (__force int)(flags & TCP_FLAG_CWR); 308 - flush |= (__force int)((flags ^ tcp_flag_word(th2)) & 307 + flush = (__force int)((flags ^ tcp_flag_word(th2)) & 309 308 ~(TCP_FLAG_FIN | TCP_FLAG_PSH)); 310 309 flush |= (__force int)(th->ack_seq ^ th2->ack_seq); 311 310 for (i = sizeof(*th); i < thlen; i += 4)