Commit b4c1c1d0 authored by Daniel Borkmann's avatar Daniel Borkmann Committed by David S. Miller

net: tcp_probe: also include rcv_wnd next to snd_wnd

It is helpful to sometimes know the TCP window sizes of an established
socket e.g. to confirm that window scaling is working or to tweak the
window size to improve high-latency connections, etc etc. Currently the
TCP snooper only exports the send window size, but not the receive window
size. Therefore, also add the receive window size to the end of the
output line.
Signed-off-by: default avatarDaniel Borkmann <dborkman@redhat.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent baf3b3f2
...@@ -60,6 +60,7 @@ struct tcp_log { ...@@ -60,6 +60,7 @@ struct tcp_log {
u32 snd_nxt; u32 snd_nxt;
u32 snd_una; u32 snd_una;
u32 snd_wnd; u32 snd_wnd;
u32 rcv_wnd;
u32 snd_cwnd; u32 snd_cwnd;
u32 ssthresh; u32 ssthresh;
u32 srtt; u32 srtt;
...@@ -116,6 +117,7 @@ static int jtcp_rcv_established(struct sock *sk, struct sk_buff *skb, ...@@ -116,6 +117,7 @@ static int jtcp_rcv_established(struct sock *sk, struct sk_buff *skb,
p->snd_una = tp->snd_una; p->snd_una = tp->snd_una;
p->snd_cwnd = tp->snd_cwnd; p->snd_cwnd = tp->snd_cwnd;
p->snd_wnd = tp->snd_wnd; p->snd_wnd = tp->snd_wnd;
p->rcv_wnd = tp->rcv_wnd;
p->ssthresh = tcp_current_ssthresh(sk); p->ssthresh = tcp_current_ssthresh(sk);
p->srtt = tp->srtt >> 3; p->srtt = tp->srtt >> 3;
...@@ -157,13 +159,13 @@ static int tcpprobe_sprint(char *tbuf, int n) ...@@ -157,13 +159,13 @@ static int tcpprobe_sprint(char *tbuf, int n)
= ktime_to_timespec(ktime_sub(p->tstamp, tcp_probe.start)); = ktime_to_timespec(ktime_sub(p->tstamp, tcp_probe.start));
return scnprintf(tbuf, n, return scnprintf(tbuf, n,
"%lu.%09lu %pI4:%u %pI4:%u %d %#x %#x %u %u %u %u\n", "%lu.%09lu %pI4:%u %pI4:%u %d %#x %#x %u %u %u %u %u\n",
(unsigned long) tv.tv_sec, (unsigned long) tv.tv_sec,
(unsigned long) tv.tv_nsec, (unsigned long) tv.tv_nsec,
&p->saddr, ntohs(p->sport), &p->saddr, ntohs(p->sport),
&p->daddr, ntohs(p->dport), &p->daddr, ntohs(p->dport),
p->length, p->snd_nxt, p->snd_una, p->length, p->snd_nxt, p->snd_una,
p->snd_cwnd, p->ssthresh, p->snd_wnd, p->srtt); p->snd_cwnd, p->ssthresh, p->snd_wnd, p->srtt, p->rcv_wnd);
} }
static ssize_t tcpprobe_read(struct file *file, char __user *buf, static ssize_t tcpprobe_read(struct file *file, char __user *buf,
......
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