> -----Original Message-----
> From: Paolo Abeni <[email protected]> 
> Sent: Wednesday, November 19, 2025 11:40 AM
> To: Chia-Yu Chang (Nokia) <[email protected]>; 
> [email protected]; [email protected]; [email protected]; 
> [email protected]; [email protected]; [email protected]; [email protected]; 
> [email protected]; [email protected]; [email protected]; 
> [email protected]; [email protected]; [email protected]; 
> [email protected]; [email protected]; [email protected]; 
> [email protected]; [email protected]; [email protected]; 
> [email protected]; [email protected]; [email protected]; 
> [email protected]; [email protected]; Koen De Schepper (Nokia) 
> <[email protected]>; [email protected]; 
> [email protected]; [email protected]; cheshire 
> <[email protected]>; [email protected]; [email protected]; Vidhi Goel 
> <[email protected]>
> 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

Reply via email to