From 5eead6270a19f00464052d4084f32182cfe027ff Mon Sep 17 00:00:00 2001 From: Eric Dumazet Date: Thu, 29 Nov 2018 02:27:54 -0800 Subject: [PATCH] ss: add support for bytes_sent, bytes_retrans, dsack_dups and reord_seen Wei Wang added these fields in linux-4.19 Tested: ss -ti ... ts sack cubic wscale:8,8 rto:7 rtt:2.678/0.267 mss:1428 pmtu:1500 rcvmss:536 advmss:1428 cwnd:91 ssthresh:65 (*) bytes_sent:17470606104 bytes_retrans:2856 bytes_acked:17470483297 segs_out:12234320 segs_in:622983 data_segs_out:12234318 send 388.2Mbps lastrcv:986784 lastack:1 pacing_rate 465.8Mbps delivery_rate 162.7Mbps delivered:12234235 delivered_ce:3669056 busy:986784ms unacked:84 retrans:0/2 (*) dsack_dups:2 rcv_space:14280 rcv_ssthresh:65535 notsent:2016336 minrtt:0.183 Signed-off-by: Eric Dumazet Cc: Wei Wang Cc: Yuchung Cheng Cc: Neal Cardwell Cc: Soheil Hassas Yeganeh Acked-by: Wei Wang Signed-off-by: Stephen Hemminger --- misc/ss.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/misc/ss.c b/misc/ss.c index 3aa94f23..3589ebed 100644 --- a/misc/ss.c +++ b/misc/ss.c @@ -819,6 +819,8 @@ struct tcpstat { unsigned int not_sent; unsigned int delivered; unsigned int delivered_ce; + unsigned int dsack_dups; + unsigned int reord_seen; double rcv_rtt; double min_rtt; int rcv_space; @@ -826,6 +828,8 @@ struct tcpstat { unsigned long long busy_time; unsigned long long rwnd_limited; unsigned long long sndbuf_limited; + unsigned long long bytes_sent; + unsigned long long bytes_retrans; bool has_ts_opt; bool has_sack_opt; bool has_ecn_opt; @@ -2426,6 +2430,10 @@ static void tcp_stats_print(struct tcpstat *s) if (s->ssthresh) out(" ssthresh:%d", s->ssthresh); + if (s->bytes_sent) + out(" bytes_sent:%llu", s->bytes_sent); + if (s->bytes_retrans) + out(" bytes_retrans:%llu", s->bytes_retrans); if (s->bytes_acked) out(" bytes_acked:%llu", s->bytes_acked); if (s->bytes_received) @@ -2512,10 +2520,14 @@ static void tcp_stats_print(struct tcpstat *s) out(" lost:%u", s->lost); if (s->sacked && s->ss.state != SS_LISTEN) out(" sacked:%u", s->sacked); + if (s->dsack_dups) + out(" dsack_dups:%u", s->dsack_dups); if (s->fackets) out(" fackets:%u", s->fackets); if (s->reordering != 3) out(" reordering:%d", s->reordering); + if (s->reord_seen) + out(" reord_seen:%d", s->reord_seen); if (s->rcv_rtt) out(" rcv_rtt:%g", s->rcv_rtt); if (s->rcv_space) @@ -2837,6 +2849,10 @@ static void tcp_show_info(const struct nlmsghdr *nlh, struct inet_diag_msg *r, s.sndbuf_limited = info->tcpi_sndbuf_limited; s.delivered = info->tcpi_delivered; s.delivered_ce = info->tcpi_delivered_ce; + s.dsack_dups = info->tcpi_dsack_dups; + s.reord_seen = info->tcpi_reord_seen; + s.bytes_sent = info->tcpi_bytes_sent; + s.bytes_retrans = info->tcpi_bytes_retrans; tcp_stats_print(&s); free(s.dctcp); free(s.bbr_info); -- 2.39.2