net: tcp: refactor the dbg message in tcp_retransmit_timer()
authorMenglong Dong <imagedong@tencent.com>
Fri, 11 Aug 2023 02:55:30 +0000 (10:55 +0800)
committerDavid S. Miller <davem@davemloft.net>
Sun, 13 Aug 2023 11:21:38 +0000 (12:21 +0100)
The debug message in tcp_retransmit_timer() is slightly wrong, because
they could be printed even if we did not receive a new ACK packet from
the remote peer.

Change it to probing zero-window, as it is a expected case now. The
description may be not correct.

Adding the duration since the last ACK we received, and the duration of
the retransmission, which are useful for debugging.

And the message now like this:

Probing zero-window on 127.0.0.1:9999/46946, seq=3737778959:3737791503, recv 209ms ago, lasting 209ms
Probing zero-window on 127.0.0.1:9999/46946, seq=3737778959:3737791503, recv 404ms ago, lasting 408ms
Probing zero-window on 127.0.0.1:9999/46946, seq=3737778959:3737791503, recv 812ms ago, lasting 1224ms

Signed-off-by: Menglong Dong <imagedong@tencent.com>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/tcp_timer.c

index f2a52c11e044e9efbe806da41f4b091bfe3a59f1..74c70fc1003c6525fcb7443d0649eac6069542ef 100644 (file)
@@ -519,20 +519,23 @@ void tcp_retransmit_timer(struct sock *sk)
                 * we cannot allow such beasts to hang infinitely.
                 */
                struct inet_sock *inet = inet_sk(sk);
+               u32 rtx_delta;
+
+               rtx_delta = tcp_time_stamp(tp) - (tp->retrans_stamp ?: tcp_skb_timestamp(skb));
                if (sk->sk_family == AF_INET) {
-                       net_dbg_ratelimited("Peer %pI4:%u/%u unexpectedly shrunk window %u:%u (repaired)\n",
-                                           &inet->inet_daddr,
-                                           ntohs(inet->inet_dport),
-                                           inet->inet_num,
-                                           tp->snd_una, tp->snd_nxt);
+                       net_dbg_ratelimited("Probing zero-window on %pI4:%u/%u, seq=%u:%u, recv %ums ago, lasting %ums\n",
+                               &inet->inet_daddr, ntohs(inet->inet_dport),
+                               inet->inet_num, tp->snd_una, tp->snd_nxt,
+                               jiffies_to_msecs(jiffies - tp->rcv_tstamp),
+                               rtx_delta);
                }
 #if IS_ENABLED(CONFIG_IPV6)
                else if (sk->sk_family == AF_INET6) {
-                       net_dbg_ratelimited("Peer %pI6:%u/%u unexpectedly shrunk window %u:%u (repaired)\n",
-                                           &sk->sk_v6_daddr,
-                                           ntohs(inet->inet_dport),
-                                           inet->inet_num,
-                                           tp->snd_una, tp->snd_nxt);
+                       net_dbg_ratelimited("Probing zero-window on %pI6:%u/%u, seq=%u:%u, recv %ums ago, lasting %ums\n",
+                               &sk->sk_v6_daddr, ntohs(inet->inet_dport),
+                               inet->inet_num, tp->snd_una, tp->snd_nxt,
+                               jiffies_to_msecs(jiffies - tp->rcv_tstamp),
+                               rtx_delta);
                }
 #endif
                if (tcp_rtx_probe0_timed_out(sk, skb)) {