On 7/4/25 10:53 AM, chia-yu.chang@xxxxxxxxxxxxxxxxxxx wrote: > @@ -1151,7 +1155,10 @@ static unsigned int tcp_established_options(struct sock *sk, struct sk_buff *skb > } > > if (tcp_ecn_mode_accecn(tp) && > - READ_ONCE(sock_net(sk)->ipv4.sysctl_tcp_ecn_option)) { > + READ_ONCE(sock_net(sk)->ipv4.sysctl_tcp_ecn_option) && > + (READ_ONCE(sock_net(sk)->ipv4.sysctl_tcp_ecn_option) >= TCP_ACCECN_OPTION_FULL || > + tp->accecn_opt_demand || > + tcp_accecn_option_beacon_check(sk))) { > opts->use_synack_ecn_bytes = 0; > size += tcp_options_fit_accecn(opts, tp->accecn_minlen, > MAX_TCP_OPTION_SPACE - size); whoops, I almost missed it... Please call READ_ONCE(sock_net(sk)->ipv4.sysctl_tcp_ecn_option) only once, i.e.: if (tcp_ecn_mode_accecn(tp)) { int ecn_opt = READ_ONCE(sock_net(sk)->ipv4.sysctl_tcp_ecn_option); if (ecn_opt && (ecn_opt >= TCP_ACCECN_OPTION_FULL || // ... /P