On 11/6/25 12:06 PM, Paolo Abeni wrote: > On 10/30/25 3:34 PM, [email protected] wrote: >> From: Chia-Yu Chang <[email protected]> >> >> No functional changes. >> >> Co-developed-by: Ilpo Järvinen <[email protected]> >> Signed-off-by: Ilpo Järvinen <[email protected]> >> Signed-off-by: Chia-Yu Chang <[email protected]> >> --- >> include/linux/skbuff.h | 13 ++++++++++++- >> 1 file changed, 12 insertions(+), 1 deletion(-) >> >> diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h >> index a7cc3d1f4fd1..74d6a209e203 100644 >> --- a/include/linux/skbuff.h >> +++ b/include/linux/skbuff.h >> @@ -671,7 +671,12 @@ enum { >> /* This indicates the skb is from an untrusted source. */ >> SKB_GSO_DODGY = 1 << 1, >> >> - /* This indicates the tcp segment has CWR set. */ >> + /* For Tx, this indicates the first TCP segment has CWR set, and any >> + * subsequent segment in the same skb has CWR cleared. This cannot be >> + * used on Rx, because the connection to which the segment belongs is >> + * not tracked to use RFC3168 or Accurate ECN, and using RFC3168 ECN >> + * offload may corrupt AccECN signal of AccECN segments. >> + */ > > The intended difference between RX and TX sounds bad to me; I think it > conflicts with the basic GRO design goal of making aggregated and > re-segmented traffic indistinguishable from the original stream. Also > what about forwarded packet?
Uhm... I missed completely the point that SKB_GSO_TCP_ECN is TX path only, i.e. GRO never produces aggregated SKB_GSO_TCP_ECN packets. Except virtio_net uses it in the RX path ( virtio_net_hdr_to_skb ). Please clarify the statement accordingly. /P
