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.
Unified · Split
| @@ -175,7 +175,9 @@ static inline void tcp_accecn_third_ack(struct sock *sk, · 174 unmodified lines | ||
| 175 | 175 | switch (ace) { |
| 176 | 176 | case 0x0: |
| 177 | 177 | /* 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); | |
| 179 | 181 | break; |
| 180 | 182 | case 0x7: |
| 181 | 183 | case 0x5: |