From 0c635e0004282425602e63b713664909e8218370 Mon Sep 17 00:00:00 2001 From: Xuan Zhuo Date: Thu, 9 Jul 2020 19:45:15 +0800 Subject: [PATCH 1724/2944] alinux: tcp_rt module: P record add rt and tcp reorder info to #27804112 Signed-off-by: Xuan Zhuo Acked-by: Dust Li Reviewed-by: Ya Zhao Reviewed-by: Cambda Zhu --- net/ipv4/tcp_rt/core.c | 8 ++++++++ net/ipv4/tcp_rt/output.c | 5 +++++ 2 files changed, 13 insertions(+) diff --git a/net/ipv4/tcp_rt/core.c b/net/ipv4/tcp_rt/core.c index b679988..47d2582 100644 --- a/net/ipv4/tcp_rt/core.c +++ b/net/ipv4/tcp_rt/core.c @@ -69,6 +69,7 @@ static void tcp_rt_sk_send_data_peer(const struct sock *sk, struct tcp_rt *rt, case TCPRT_STAGE_PEER_NONE: ktime_get_real_ts64(&rt->start_time); + rt->end_time = rt->start_time; rt->request_num += 1; rt->upload_data = 0; rt->stage_peer = TCPRT_STAGE_PEER_REQUEST; @@ -119,6 +120,13 @@ static void tcp_rt_sk_recv_data_peer(const struct sock *sk, struct tcp_rt *rt, rt->stage_peer = TCPRT_STAGE_PEER_RESPONSE; rt->upload_data = tp->snd_nxt - rt->start_seq; rt->start_seq = tp->snd_nxt; + ktime_get_real_ts64(&rt->end_time); + return; + + case TCPRT_STAGE_PEER_RESPONSE: + ktime_get_real_ts64(&rt->end_time); + if (!RB_EMPTY_ROOT(&tp->out_of_order_queue)) + rt->rcv_reorder = 1; return; default: diff --git a/net/ipv4/tcp_rt/output.c b/net/ipv4/tcp_rt/output.c index 558719b..6f147b3 100644 --- a/net/ipv4/tcp_rt/output.c +++ b/net/ipv4/tcp_rt/output.c @@ -265,21 +265,26 @@ void tcp_rt_log_printk(const struct sock *sk, char flag, bool fin, bool stats) break; case LOG_STATUS_P: + t_rt = timespec64_dec(rt->end_time, rt->start_time); + t_seq = rt->upload_data; t_retrans = tp->total_retrans - rt->last_total_retrans; size = bufheader(buf, size, flag, sk); size += bufappend(buf, size, t_seq); + size += bufappend(buf, size, t_rt); size += bufappend(buf, size, t_retrans); size += bufappend(buf, size, rt->request_num); size += bufappend(buf, size, mrtt); + size += bufappend(buf, size, rt->rcv_reorder); size += bufappend(buf, size, tp->mss_cache); buf[size++] = '\n'; if (stats) { stats_peer_inc(rt, number); stats_peer_add(rt, bytes, t_seq); + stats_peer_add(rt, rt, t_rt); stats_peer_add(rt, packets, t_seq / tp->mss_cache + 1); stats_peer_add(rt, drop, t_retrans); } -- 1.8.3.1