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.
+        */
        SKB_GSO_TCP_ECN = 1 << 2,
 
        __SKB_GSO_TCP_FIXEDID = 1 << 3,
@@ -706,6 +711,12 @@ enum {
 
        SKB_GSO_FRAGLIST = 1 << 18,
 
+       /* For TX, this indicates the TCP segment uses the CWR flag as part of
+        * AccECN signal, and the CWR flag is not modified in the skb. For RX,
+        * any CWR flagged segment must use SKB_GSO_TCP_ACCECN. This is to
+        * ensure the CWR flag is not cleared by any RFC3168 ECN offload, and
+        * thus keeping AccECN signal of AccECN segments.
+        */
        SKB_GSO_TCP_ACCECN = 1 << 19,
 
        /* These indirectly map onto the same netdev feature.
-- 
2.34.1


Reply via email to