-----Original Message----- From: Paolo Abeni pabeni@redhat.com Sent: Wednesday, November 19, 2025 11:40 AM To: Chia-Yu Chang (Nokia) chia-yu.chang@nokia-bell-labs.com; edumazet@google.com; parav@nvidia.com; linux-doc@vger.kernel.org; corbet@lwn.net; horms@kernel.org; dsahern@kernel.org; kuniyu@google.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; ij@kernel.org; ncardwell@google.com; Koen De Schepper (Nokia) koen.de_schepper@nokia-bell-labs.com; g.white@cablelabs.com; ingemar.s.johansson@ericsson.com; mirja.kuehlewind@ericsson.com; cheshire cheshire@apple.com; rs.ietf@gmx.at; Jason_Livingood@comcast.com; Vidhi Goel vidhi_goel@apple.com Subject: Re: [PATCH v6 net-next 03/14] net: update commnets for SKB_GSO_TCP_ECN and SKB_GSO_TCP_ACCECN
CAUTION: This is an external email. Please be very careful when clicking links or opening attachments. See the URL nok.it/ext for additional information.
On 11/19/25 11:24 AM, Chia-Yu Chang (Nokia) wrote:
I was thinking to totally remove ECN from Rx path,
??? do you mean you intend to remove the existing virtio_net ECN support? I guess/hope I misread the above.
Note that removing features from virtio_net is an extreme pain at best, and more probably simply impossible - see the UFO removal history.
Please clarify, thanks!
Paolo
This ECN flag on RX path shall not be used in Rx path for forwarding scenario. But it can still be used on Tx path in virtio_net.
And on RX path, new ACCECN flag shall be used to avoid breaking CWR flag for latter GSO Tx in forwarding scenario.
Let me borrow an example from Ilpo:
SKB_GSO_TCP_ECN will not replicate the same TCP header flags in a forwarding scenario: Segment 1 CWR set Segment 2 CWR set
GRO rx and GSO tx with SKB_GSO_TCP_ECN, after forwarding outputs these segments: Segment 1 CWR set Segment 2 CWR cleared
Thus, the ACE field in Segment 2 no longer contains the same value as it was sent with.
So, maybe a table below better represent this? +===============+======================+===========================+ | | SKB_GSO_TCP_ECN | SKB_GSO_TCP_ACCECN | +===============+======================+===========================+ | | The 1st TCP segment | The TCP segment uses | | Tx path | has CWR set and | the CWR flag as part of | | | suqsequent segments | ACE signal, and the CWR | | | have CWR cleared. | flag is not modified. | +---------------+----------------------+---------------------------+ | Rx path | Shall not be used to | Used to indicate latter | | of forwarding | avoid potential ACE | GSO Tx NOT to clear CWR | | scenario | signal corruption. | flag from the 2nd segment | +===============+======================+===========================+
Chia-Yu