Commit 031c44b7 authored by Menglong Dong's avatar Menglong Dong Committed by David S. Miller

net: tcp: refactor the dbg message in tcp_retransmit_timer()

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: default avatarMenglong Dong <imagedong@tencent.com>
Reviewed-by: default avatarEric Dumazet <edumazet@google.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent e89688e3
...@@ -519,20 +519,23 @@ void tcp_retransmit_timer(struct sock *sk) ...@@ -519,20 +519,23 @@ void tcp_retransmit_timer(struct sock *sk)
* we cannot allow such beasts to hang infinitely. * we cannot allow such beasts to hang infinitely.
*/ */
struct inet_sock *inet = inet_sk(sk); 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) { if (sk->sk_family == AF_INET) {
net_dbg_ratelimited("Peer %pI4:%u/%u unexpectedly shrunk window %u:%u (repaired)\n", net_dbg_ratelimited("Probing zero-window on %pI4:%u/%u, seq=%u:%u, recv %ums ago, lasting %ums\n",
&inet->inet_daddr, &inet->inet_daddr, ntohs(inet->inet_dport),
ntohs(inet->inet_dport), inet->inet_num, tp->snd_una, tp->snd_nxt,
inet->inet_num, jiffies_to_msecs(jiffies - tp->rcv_tstamp),
tp->snd_una, tp->snd_nxt); rtx_delta);
} }
#if IS_ENABLED(CONFIG_IPV6) #if IS_ENABLED(CONFIG_IPV6)
else if (sk->sk_family == AF_INET6) { else if (sk->sk_family == AF_INET6) {
net_dbg_ratelimited("Peer %pI6:%u/%u unexpectedly shrunk window %u:%u (repaired)\n", net_dbg_ratelimited("Probing zero-window on %pI6:%u/%u, seq=%u:%u, recv %ums ago, lasting %ums\n",
&sk->sk_v6_daddr, &sk->sk_v6_daddr, ntohs(inet->inet_dport),
ntohs(inet->inet_dport), inet->inet_num, tp->snd_una, tp->snd_nxt,
inet->inet_num, jiffies_to_msecs(jiffies - tp->rcv_tstamp),
tp->snd_una, tp->snd_nxt); rtx_delta);
} }
#endif #endif
if (tcp_rtx_probe0_timed_out(sk, skb)) { if (tcp_rtx_probe0_timed_out(sk, skb)) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment