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 | switch (ace) { | 175 | switch (ace) { |
| 176 | case 0x0: | 176 | case 0x0: |
| 177 | /* Invalid value */ | 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 | break; | 181 | break; |
| 180 | case 0x7: | 182 | case 0x7: |
| 181 | case 0x5: | 183 | case 0x5: |