mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-02 12:10:23 -04:00
Merge branch 'tcp-warn-once'
Jason Xing says: ==================== tcp: add tcp_warn_once() common helper Paolo Abeni suggested we can introduce a new helper to cover more cases in the future for better debug. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
@@ -2430,6 +2430,20 @@ void tcp_plb_update_state(const struct sock *sk, struct tcp_plb_state *plb,
|
||||
void tcp_plb_check_rehash(struct sock *sk, struct tcp_plb_state *plb);
|
||||
void tcp_plb_update_state_upon_rto(struct sock *sk, struct tcp_plb_state *plb);
|
||||
|
||||
static inline void tcp_warn_once(const struct sock *sk, bool cond, const char *str)
|
||||
{
|
||||
WARN_ONCE(cond,
|
||||
"%scwn:%u out:%u sacked:%u lost:%u retrans:%u tlp_high_seq:%u sk_state:%u ca_state:%u advmss:%u mss_cache:%u pmtu:%u\n",
|
||||
str,
|
||||
tcp_snd_cwnd(tcp_sk(sk)),
|
||||
tcp_sk(sk)->packets_out, tcp_sk(sk)->sacked_out,
|
||||
tcp_sk(sk)->lost_out, tcp_sk(sk)->retrans_out,
|
||||
tcp_sk(sk)->tlp_high_seq, sk->sk_state,
|
||||
inet_csk(sk)->icsk_ca_state,
|
||||
tcp_sk(sk)->advmss, tcp_sk(sk)->mss_cache,
|
||||
inet_csk(sk)->icsk_pmtu_cookie);
|
||||
}
|
||||
|
||||
/* At how many usecs into the future should the RTO fire? */
|
||||
static inline s64 tcp_rto_delta_us(const struct sock *sk)
|
||||
{
|
||||
@@ -2441,17 +2455,7 @@ static inline s64 tcp_rto_delta_us(const struct sock *sk)
|
||||
|
||||
return rto_time_stamp_us - tcp_sk(sk)->tcp_mstamp;
|
||||
} else {
|
||||
WARN_ONCE(1,
|
||||
"rtx queue empty: "
|
||||
"out:%u sacked:%u lost:%u retrans:%u "
|
||||
"tlp_high_seq:%u sk_state:%u ca_state:%u "
|
||||
"advmss:%u mss_cache:%u pmtu:%u\n",
|
||||
tcp_sk(sk)->packets_out, tcp_sk(sk)->sacked_out,
|
||||
tcp_sk(sk)->lost_out, tcp_sk(sk)->retrans_out,
|
||||
tcp_sk(sk)->tlp_high_seq, sk->sk_state,
|
||||
inet_csk(sk)->icsk_ca_state,
|
||||
tcp_sk(sk)->advmss, tcp_sk(sk)->mss_cache,
|
||||
inet_csk(sk)->icsk_pmtu_cookie);
|
||||
tcp_warn_once(sk, 1, "rtx queue empty: ");
|
||||
return jiffies_to_usecs(rto);
|
||||
}
|
||||
|
||||
|
||||
@@ -2954,9 +2954,7 @@ void tcp_send_loss_probe(struct sock *sk)
|
||||
}
|
||||
skb = skb_rb_last(&sk->tcp_rtx_queue);
|
||||
if (unlikely(!skb)) {
|
||||
WARN_ONCE(tp->packets_out,
|
||||
"invalid inflight: %u state %u cwnd %u mss %d\n",
|
||||
tp->packets_out, sk->sk_state, tcp_snd_cwnd(tp), mss);
|
||||
tcp_warn_once(sk, tp->packets_out, "invalid inflight: ");
|
||||
smp_store_release(&inet_csk(sk)->icsk_pending, 0);
|
||||
return;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user