> -----Original Message-----
> From: Eric Dumazet <[email protected]>
> Sent: Wednesday, June 25, 2025 9:58 AM
> To: Chia-Yu Chang (Nokia) <[email protected]>
> Cc: [email protected]; [email protected]; [email protected];
> [email protected]; [email protected]; [email protected];
> [email protected]; [email protected]; [email protected];
> [email protected]; [email protected]; [email protected];
> [email protected]; [email protected]; [email protected];
> [email protected]; [email protected]; [email protected];
> [email protected]; [email protected]; [email protected];
> [email protected]; Koen De Schepper (Nokia)
> <[email protected]>; [email protected];
> [email protected]; [email protected];
> [email protected]; [email protected]; [email protected];
> [email protected]; Olivier Tilmans (Nokia) <[email protected]>
> Subject: Re: [PATCH v9 net-next 05/15] tcp: accecn: AccECN negotiation
>
>
> CAUTION: This is an external email. Please be very careful when clicking
> links or opening attachments. See the URL nok.it/ext for additional
> information.
>
>
>
> On Sat, Jun 21, 2025 at 12:37 PM <[email protected]> wrote:
> >
> > From: Ilpo Järvinen <[email protected]>
> >
> > Accurate ECN negotiation parts based on the specification:
> > https://tools.ietf.org/id/draft-ietf-tcpm-accurate-ecn-28.txt
> >
[...]
> >
> > diff --git a/include/net/tcp.h b/include/net/tcp.h index
> > 6cf5cea992e3..4d6325fa3f67 100644
> > --- a/include/net/tcp.h
> > +++ b/include/net/tcp.h
[...]
> > @@ -1051,6 +1123,15 @@ struct tcp_skb_cb {
> >
> > #define TCP_SKB_CB(__skb) ((struct tcp_skb_cb *)&((__skb)->cb[0]))
> >
> > +static inline u16 tcp_accecn_reflector_flags(u8 ect)
> > +{
> > + u32 flags = ect + 2;
> > +
> > + if (ect == 3)
> > + flags++;
>
> A comment might help, I have no idea of what is going on here.
Hi Eric,
Sure, comments will be added in the next version.
>
> > + return FIELD_PREP(TCPHDR_ACE, flags);
> > +}
> > +
> > extern const struct inet_connection_sock_af_ops ipv4_specific;
> >
> > #if IS_ENABLED(CONFIG_IPV6)
[...]
> > diff --git a/net/ipv4/sysctl_net_ipv4.c b/net/ipv4/sysctl_net_ipv4.c
> > index 3a43010d726f..75ec1a599b52 100644
> > --- a/net/ipv4/sysctl_net_ipv4.c
> > +++ b/net/ipv4/sysctl_net_ipv4.c
> > @@ -47,6 +47,7 @@ static unsigned int udp_child_hash_entries_max =
> > UDP_HTABLE_SIZE_MAX;
> > static int tcp_plb_max_rounds = 31;
> > static int tcp_plb_max_cong_thresh = 256;
> > static unsigned int tcp_tw_reuse_delay_max = TCP_PAWS_MSL * MSEC_PER_SEC;
> > +static int tcp_ecn_mode_max = 5;
> >
> > /* obsolete */
> > static int sysctl_tcp_low_latency __read_mostly;
> > @@ -728,7 +729,7 @@ static struct ctl_table ipv4_net_table[] = {
> > .mode = 0644,
> > .proc_handler = proc_dou8vec_minmax,
> > .extra1 = SYSCTL_ZERO,
> > - .extra2 = SYSCTL_TWO,
> > + .extra2 = &tcp_ecn_mode_max,
>
> Please change Documentation/networking/ip-sysctl.rst tcp_ecn accordingly ?
>
OK, I will break the patch of Documentation/networking/ip-sysctl.rst in this
patch.
> > },
> > {
> > .procname = "tcp_ecn_fallback",
> > diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c
> > index 8e0e8d784b1c..e6d7b5420c88 100644
> > --- a/net/ipv4/tcp.c
> > +++ b/net/ipv4/tcp.c
> > @@ -3392,6 +3392,8 @@ int tcp_disconnect(struct sock *sk, int flags)
> > tp->window_clamp = 0;
> > tp->delivered = 0;
> > tp->delivered_ce = 0;
> > + tp->wait_third_ack = 0;
> > + tp->accecn_fail_mode = 0;
> > tcp_accecn_init_counters(tp);
> > if (icsk->icsk_ca_initialized && icsk->icsk_ca_ops->release)
> > icsk->icsk_ca_ops->release(sk);
> > diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
> > index 0fa3803b353d..c986452302cb 100644
> > --- a/net/ipv4/tcp_input.c
> > +++ b/net/ipv4/tcp_input.c
> > @@ -411,14 +411,114 @@ static void tcp_data_ecn_check(struct sock *sk,
> > const struct sk_buff *skb)
> > }
> > }
>
> I do think this patch is too big and should be split.
I will remove the following two parts from this patch into other patches:
(1) ECN negotiation in simultaneous connect, and
(2) CA module flag (TCP_CONG_NEEDS_ACCECN) defines that the CA expects to
negotiate AccECN functionality.
Best regards,
Chia-Yu