include listenq max/backlog in tcp_info and related reports - correct version/signorder
Subsystems (4)
PATCH 1/1 include listenq max/backlog in tcp_info and related reports - correct version/signorder
Return some useful information such as the maximum listen backlog and the current listen backlog in the tcp_info structure and have that match what one can see in /proc/net/tcp, /proc/net/tcp6, and INET_DIAG_INFO.
---
Documentation/networking/proc_net_tcp.txt +2 -2
@@ -20,8 +20,8 @@ up into 3 parts because of the length of | | | | |--> number of unrecovered RTO timeouts | | | |----------> number of jiffies until timer expires | | |----------------> timer_active (see below) - | |----------------------> receive-queue - |-------------------------------> transmit-queue + | |----------------------> receive-queue or connection backlog + |-------------------------------> transmit-queue or connection limit 1000 0 54165785 4 cd1e6040 25 4 27 3 -1 | | | | | | | | | |--> slow start size threshold,
net/ipv4/tcp.c +8 -2
@@ -2030,8 +2030,14 @@ void tcp_get_info(struct sock *sk, struc info->tcpi_snd_mss = tp->mss_cache; info->tcpi_rcv_mss = icsk->icsk_ack.rcv_mss; - info->tcpi_unacked = tp->packets_out; - info->tcpi_sacked = tp->sacked_out; +if (sk->sk_state ==TCP_LISTEN ) { + info->tcpi_unacked = sk->sk_ack_backlog; + info->tcpi_sacked = sk->sk_max_ack_backlog; + } +else { + info->tcpi_unacked = tp->packets_out; + info->tcpi_sacked = tp->sacked_out; + } info->tcpi_lost = tp->lost_out; info->tcpi_retrans = tp->retrans_out; info->tcpi_fackets = tp->fackets_out;
net/ipv4/tcp_diag.c +6 -3
@@ -25,11 +25,14 @@ static void tcp_diag_get_info(struct socconst struct tcp_sock *tp =tcp_sk (sk);struct tcp_info *info = _info; -if (sk->sk_state ==TCP_LISTEN ) +if (sk->sk_state ==TCP_LISTEN ) { r->idiag_rqueue = sk->sk_ack_backlog; -else + r->idiag_wqueue = sk->sk_max_ack_backlog; + } +else { r->idiag_rqueue = tp->rcv_nxt - tp->copied_seq; - r->idiag_wqueue = tp->write_seq - tp->snd_una; + r->idiag_wqueue = tp->write_seq - tp->snd_una; + }if (info !=NULL )tcp_get_info (sk, info); }
net/ipv4/tcp_ipv4.c +2 -1
@@ -2320,7 +2320,8 @@ static void get_tcp4_sock(struct sock *s sprintf(tmpbuf, "%4d: %08X:%04X %08X:%04X %02X %08X:%08X %02X:%08lX " "%08X %5d %8d %lu %d %p %u %u %u %u %d", i, src, srcp, dest, destp, sk->sk_state, - tp->write_seq - tp->snd_una, + sk->sk_state == TCP_LISTEN ? sk->sk_max_ack_backlog : + (tp->write_seq - tp->snd_una), sk->sk_state == TCP_LISTEN ? sk->sk_ack_backlog : (tp->rcv_nxt - tp->copied_seq), timer_active,
net/ipv6/tcp_ipv6.c +4 -2
@@ -2005,8 +2005,10 @@ static void get_tcp6_sock(struct seq_fil dest->s6_addr32[0 ], dest->s6_addr32[1 ], dest->s6_addr32[2 ], dest->s6_addr32[3 ], destp, sp->sk_state, - tp->write_seq-tp->snd_una, - (sp->sk_state ==TCP_LISTEN ) ? sp->sk_ack_backlog : (tp->rcv_nxt - tp->copied_seq), + (sp->sk_state ==TCP_LISTEN ) ? sp->sk_max_ack_backlog: + tp->write_seq-tp->snd_una, + (sp->sk_state ==TCP_LISTEN ) ? sp->sk_ack_backlog : + (tp->rcv_nxt - tp->copied_seq), timer_active,jiffies_to_clock_t (timer_expires - jiffies), icsk->icsk_retransmits,
Since small things fall more easily through cracks I thought I'd make sure it didn't get lost?
rick jones
Quoted 96 lines · Rick Jones
Return some useful information such as the maximum listen backlog and the current listen backlog in the
tcp_infostructure and have that match what one can see in/proc/net/tcp,/proc/net/tcp6, andINET_DIAG_INFO.Signed-off-by Rick Jones <[email protected]>Signed-off-by Eric Dumazet <[email protected]>---
diff -r
bdcdd0e1ee9dDocumentation/networking/proc_net_tcp.txtDocumentation/networking/proc_net_tcp.txt +2
-2@@ -20,8 +20,8 @@ up into 3 parts because of the length of | | | | |--> number of unrecovered RTO timeouts | | | |----------> number of jiffies until timer expires | | |----------------> timer_active (see below) - | |----------------------> receive-queue - |-------------------------------> transmit-queue + | |----------------------> receive-queue or connection backlog + |-------------------------------> transmit-queue or connection limit 1000 0 54165785 4 cd1e6040 25 4 27 3 -1 | | | | | | | | | |--> slow start size threshold,diff -r
bdcdd0e1ee9dnet/ipv4/tcp.cnet/ipv4/tcp.c +8
-2@@ -2030,8 +2030,14 @@ void tcp_get_info(struct sock *sk, struc info->tcpi_snd_mss = tp->mss_cache; info->tcpi_rcv_mss = icsk->icsk_ack.rcv_mss; - info->tcpi_unacked = tp->packets_out; - info->tcpi_sacked = tp->sacked_out; +if (sk->sk_state ==TCP_LISTEN ) { + info->tcpi_unacked = sk->sk_ack_backlog; + info->tcpi_sacked = sk->sk_max_ack_backlog; + } +else { + info->tcpi_unacked = tp->packets_out; + info->tcpi_sacked = tp->sacked_out; + } info->tcpi_lost = tp->lost_out; info->tcpi_retrans = tp->retrans_out; info->tcpi_fackets = tp->fackets_out;diff -r
bdcdd0e1ee9dnet/ipv4/tcp_diag.cnet/ipv4/tcp_diag.c +6
-3@@ -25,11 +25,14 @@ static void tcp_diag_get_info(struct socconst struct tcp_sock *tp =tcp_sk (sk);struct tcp_info *info = _info; -if (sk->sk_state ==TCP_LISTEN ) +if (sk->sk_state ==TCP_LISTEN ) { r->idiag_rqueue = sk->sk_ack_backlog; -else + r->idiag_wqueue = sk->sk_max_ack_backlog; + } +else { r->idiag_rqueue = tp->rcv_nxt - tp->copied_seq; - r->idiag_wqueue = tp->write_seq - tp->snd_una; + r->idiag_wqueue = tp->write_seq - tp->snd_una; + }if (info !=NULL )tcp_get_info (sk, info); }diff -r
bdcdd0e1ee9dnet/ipv4/tcp_ipv4.cnet/ipv4/tcp_ipv4.c +2
-1@@ -2320,7 +2320,8 @@ static void get_tcp4_sock(struct sock *s sprintf(tmpbuf, "%4d: %08X:%04X %08X:%04X %02X %08X:%08X %02X:%08lX " "%08X %5d %8d %lu %d %p %u %u %u %u %d", i, src, srcp, dest, destp, sk->sk_state, - tp->write_seq - tp->snd_una, + sk->sk_state == TCP_LISTEN ? sk->sk_max_ack_backlog : + (tp->write_seq - tp->snd_una), sk->sk_state == TCP_LISTEN ? sk->sk_ack_backlog : (tp->rcv_nxt - tp->copied_seq), timer_active,diff -r
bdcdd0e1ee9dnet/ipv6/tcp_ipv6.cnet/ipv6/tcp_ipv6.c +4
-3@@ -2005,8 +2005,10 @@ static void get_tcp6_sock(struct seq_fil dest->s6_addr32[0 ], dest->s6_addr32[1 ], dest->s6_addr32[2 ], dest->s6_addr32[3 ], destp, sp->sk_state, - tp->write_seq-tp->snd_una, - (sp->sk_state ==TCP_LISTEN ) ? sp->sk_ack_backlog : (tp->rcv_nxt - tp->copied_seq), + (sp->sk_state ==TCP_LISTEN ) ? sp->sk_max_ack_backlog: + tp->write_seq-tp->snd_una, + (sp->sk_state ==TCP_LISTEN ) ? sp->sk_ack_backlog : + (tp->rcv_nxt - tp->copied_seq), timer_active,jiffies_to_clock_t (timer_expires - jiffies), icsk->icsk_retransmits, -To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
David Miller
maintainerFrom: Rick Jones <[email protected]>
Date: Mon, 17 Sep 2007 11:38:09 -0700
Quoted 2 lines
Since small things fall more easily through cracks I thought I'd make sure it didn't get lost?
Reposting the patch is often better because if you quote it then the copy I have has to be meticuliously edited to remove the quoting information.
Alternatively forward the original patch posting so it does not get all the quoting material added.
As is, what you've forwarded is useless to me since I also don't have the original posting.
Quoted 11 lines · David Miller
From: Rick Jones <[email protected]>
Date: Mon, 17 Sep 2007 11:38:09 -0700Quoted 1 line
Since small things fall more easily through cracks I thought I'd make sure it didn't get lost?
Reposting the patch is often better because if you quote it then the copy I have has to be meticuliously edited to remove the quoting information.
Quoted 5 lines
Alternatively forward the original patch posting so it does not get all the quoting material added.
As is, what you've forwarded is useless to me since I also don't have the original posting.
I'm batting a thousand today... resent with a different mailer.
rick