History

tcp: accecn: fallback outgoing half link to non-AccECN

According to Section 3.2.2.1 of AccECN spec (RFC9768), if the Server is in AccECN mode and in SYN-RCVD state, and if it receives a value of zero on a pure ACK with SYN=0 and no SACK blocks, for the rest of the connection the Server MUST NOT set ECT on outgoing packets and MUST NOT respond to AccECN feedback. Nonetheless, as a Data Receiver it MUST NOT disable AccECN feedback.

Chia-Yu Chang committed 9 months ago

Commit 2ed66121 parent 40240811 file · +3 −1Browse files

Unified · Split

include/net/tcp_ecn.h+3−1
@@ -175,7 +175,9 @@ static inline void tcp_accecn_third_ack(struct sock *sk, · 174 unmodified lines
175175 switch (ace) {
176176 case 0x0:
177177 /* Invalid value */
178− tcp_accecn_fail_mode_set(tp, TCP_ACCECN_ACE_FAIL_RECV);
178+ if (!TCP_SKB_CB(skb)->sacked)
179+ tcp_accecn_fail_mode_set(tp, TCP_ACCECN_ACE_FAIL_RECV |
180+ TCP_ACCECN_OPT_FAIL_RECV);
179181 break;
180182 case 0x7:
181183 case 0x5: