Message ID | 20240530153436.2202800-2-yyd@google.com (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | tcp: add sysctl_tcp_rto_min_us | expand |
On Thu, May 30, 2024 at 03:34:35PM +0000, Kevin Yang wrote: > Rto_min now has multiple souces, ordered by preprecedence high to > low: ip route option rto_min, icsk->icsk_rto_min. Hi Kevin, If you have to respin for some other reason: souces -> sources Flagged by checkpatch.pl --codespell ...
From: Kevin Yang > Sent: 30 May 2024 16:35 > To: David Miller <davem@davemloft.net>; Eric Dumazet <edumazet@google.com>; Jakub Kicinski > > Rto_min now has multiple souces, ordered by preprecedence high to > low: ip route option rto_min, icsk->icsk_rto_min. > > When derive delack_max from rto_min, we should not only use ip > route option, but should use tcp_rto_min helper to get the correct > rto_min. ... > diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c > index f97e098f18a5..b44f639a9fa6 100644 > --- a/net/ipv4/tcp_output.c > +++ b/net/ipv4/tcp_output.c > @@ -4163,16 +4163,9 @@ EXPORT_SYMBOL(tcp_connect); > > u32 tcp_delack_max(const struct sock *sk) > { > - const struct dst_entry *dst = __sk_dst_get(sk); > - u32 delack_max = inet_csk(sk)->icsk_delack_max; > - > - if (dst && dst_metric_locked(dst, RTAX_RTO_MIN)) { > - u32 rto_min = dst_metric_rtt(dst, RTAX_RTO_MIN); > - u32 delack_from_rto_min = max_t(int, 1, rto_min - 1); > + u32 delack_from_rto_min = max_t(int, 1, tcp_rto_min(sk) - 1); That max_t() is more horrid than most. Perhaps: = max(tcp_rto_min(sk), 2) - 1; > > - delack_max = min_t(u32, delack_max, delack_from_rto_min); > - } > - return delack_max; > + return min_t(u32, inet_csk(sk)->icsk_delack_max, delack_from_rto_min); Can that just be a min() ?? David > } > > /* Send out a delayed ack, the caller does the policy checking > -- > 2.45.1.288.g0e0cd299f1-goog > - Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK Registration No: 1397386 (Wales)
thanks for the nice suggestions, sent v3 https://lore.kernel.org/netdev/20240603213054.3883725-1-yyd@google.com/ On Sat, Jun 1, 2024 at 10:56 AM David Laight <David.Laight@aculab.com> wrote: > > From: Kevin Yang > > Sent: 30 May 2024 16:35 > > To: David Miller <davem@davemloft.net>; Eric Dumazet <edumazet@google.com>; Jakub Kicinski > > > > Rto_min now has multiple souces, ordered by preprecedence high to > > low: ip route option rto_min, icsk->icsk_rto_min. > > > > When derive delack_max from rto_min, we should not only use ip > > route option, but should use tcp_rto_min helper to get the correct > > rto_min. > ... > > diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c > > index f97e098f18a5..b44f639a9fa6 100644 > > --- a/net/ipv4/tcp_output.c > > +++ b/net/ipv4/tcp_output.c > > @@ -4163,16 +4163,9 @@ EXPORT_SYMBOL(tcp_connect); > > > > u32 tcp_delack_max(const struct sock *sk) > > { > > - const struct dst_entry *dst = __sk_dst_get(sk); > > - u32 delack_max = inet_csk(sk)->icsk_delack_max; > > - > > - if (dst && dst_metric_locked(dst, RTAX_RTO_MIN)) { > > - u32 rto_min = dst_metric_rtt(dst, RTAX_RTO_MIN); > > - u32 delack_from_rto_min = max_t(int, 1, rto_min - 1); > > + u32 delack_from_rto_min = max_t(int, 1, tcp_rto_min(sk) - 1); > > That max_t() is more horrid than most. > Perhaps: > = max(tcp_rto_min(sk), 2) - 1; > > > > > - delack_max = min_t(u32, delack_max, delack_from_rto_min); > > - } > > - return delack_max; > > + return min_t(u32, inet_csk(sk)->icsk_delack_max, delack_from_rto_min); > > Can that just be a min() ?? > > David > > > } > > > > /* Send out a delayed ack, the caller does the policy checking > > -- > > 2.45.1.288.g0e0cd299f1-goog > > > > - > Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK > Registration No: 1397386 (Wales)
diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c index f97e098f18a5..b44f639a9fa6 100644 --- a/net/ipv4/tcp_output.c +++ b/net/ipv4/tcp_output.c @@ -4163,16 +4163,9 @@ EXPORT_SYMBOL(tcp_connect); u32 tcp_delack_max(const struct sock *sk) { - const struct dst_entry *dst = __sk_dst_get(sk); - u32 delack_max = inet_csk(sk)->icsk_delack_max; - - if (dst && dst_metric_locked(dst, RTAX_RTO_MIN)) { - u32 rto_min = dst_metric_rtt(dst, RTAX_RTO_MIN); - u32 delack_from_rto_min = max_t(int, 1, rto_min - 1); + u32 delack_from_rto_min = max_t(int, 1, tcp_rto_min(sk) - 1); - delack_max = min_t(u32, delack_max, delack_from_rto_min); - } - return delack_max; + return min_t(u32, inet_csk(sk)->icsk_delack_max, delack_from_rto_min); } /* Send out a delayed ack, the caller does the policy checking