[PATCH v6 net-next 03/14] net: update commnets for SKB_GSO_TCP_ECN and SKB_GSO_TCP_ACCECN

chia-yu.chang
2025-11-14T07:14:01Z

No functional changes.

Co-developed-by: Ilpo Järvinen <ij@kernel.org>
Signed-off-by: Ilpo Järvinen <ij@kernel.org>
Signed-off-by: Chia-Yu Chang <chia-yu.chang@nokia-bell-labs.com>

---
v6:
- Update comments.
---
include/linux/skbuff.h | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
index ff90281ddf90..e09455cee8e3 100644
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
@@ -671,7 +671,13 @@ 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 is not
+ * used on Rx except for virtio_net. However, 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. Therefore, this cannot be used on Rx.
+ */
SKB_GSO_TCP_ECN = 1 << 2,

__SKB_GSO_TCP_FIXEDID = 1 << 3,
@@ -706,6 +712,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. This is
+ * not used on Rx except for virtio_net. For RX, any CWR flagged segment
+ * must use SKB_GSO_TCP_ACCECN to ensure CWR flag is not cleared by any
+ * RFC3168 ECN offload, and thus keeping AccECN signal of TCP segments.
+ */
SKB_GSO_TCP_ACCECN = 1 << 19,

/* These indirectly map onto the same netdev feature.
--
2.34.1