Messages in this thread | | | Subject | Re: [bpf-next 1/2] tcp: replace SOCK_DEBUG() with tcp_stats() | From | Eric Dumazet <> | Date | Tue, 12 Feb 2019 07:07:25 -0800 |
| |
On 02/12/2019 03:31 AM, Yafang Shao wrote: > SOCK_DEBUG is a very ancient debugging interface, and it's not very useful > for debugging. > So this patch removes the SOCK_DEBUG() and introduce a new function > tcp_stats() to trace this kind of events. > Some MIBs are added for these events. > > Regarding the SO_DEBUG in sock_{s,g}etsockopt, I think it is better to > keep as-is, because if we return an errno to tell the application that > this optname isn't supported for TCP, it may break the application. > The application still can use this option but don't take any effect for > TCP. > > Signed-off-by: Yafang Shao <laoar.shao@gmail.com> > --- > include/uapi/linux/snmp.h | 3 +++ > net/ipv4/proc.c | 3 +++ > net/ipv4/tcp_input.c | 26 +++++++++++--------------- > net/ipv6/tcp_ipv6.c | 2 -- > 4 files changed, 17 insertions(+), 17 deletions(-) > > diff --git a/include/uapi/linux/snmp.h b/include/uapi/linux/snmp.h > index 86dc24a..fd5c09c 100644 > --- a/include/uapi/linux/snmp.h > +++ b/include/uapi/linux/snmp.h > @@ -283,6 +283,9 @@ enum > LINUX_MIB_TCPACKCOMPRESSED, /* TCPAckCompressed */ > LINUX_MIB_TCPZEROWINDOWDROP, /* TCPZeroWindowDrop */ > LINUX_MIB_TCPRCVQDROP, /* TCPRcvQDrop */ > + LINUX_MIB_TCPINVALIDACK, /* TCPInvalidAck */ > + LINUX_MIB_TCPOLDACK, /* TCPOldAck */ > + LINUX_MIB_TCPPARTIALPACKET, /* TCPPartialPacket */ > __LINUX_MIB_MAX > }; > > diff --git a/net/ipv4/proc.c b/net/ipv4/proc.c > index c3610b3..1b0320a 100644 > --- a/net/ipv4/proc.c > +++ b/net/ipv4/proc.c > @@ -291,6 +291,9 @@ static int sockstat_seq_show(struct seq_file *seq, void *v) > SNMP_MIB_ITEM("TCPAckCompressed", LINUX_MIB_TCPACKCOMPRESSED), > SNMP_MIB_ITEM("TCPZeroWindowDrop", LINUX_MIB_TCPZEROWINDOWDROP), > SNMP_MIB_ITEM("TCPRcvQDrop", LINUX_MIB_TCPRCVQDROP), > + SNMP_MIB_ITEM("TCPInvalidAck", LINUX_MIB_TCPINVALIDACK), > + SNMP_MIB_ITEM("TCPOldAck", LINUX_MIB_TCPOLDACK), > + SNMP_MIB_ITEM("TCPPartialPacket", LINUX_MIB_TCPPARTIALPACKET), > SNMP_MIB_SENTINEL > }; > > diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c > index 7a027dec..88deb1f 100644 > --- a/net/ipv4/tcp_input.c > +++ b/net/ipv4/tcp_input.c > @@ -3554,6 +3554,11 @@ static u32 tcp_newly_delivered(struct sock *sk, u32 prior_delivered, int flag) > return delivered; > } > > +static void tcp_stats(struct sock *sk, int mib_idx) > +{ > + NET_INC_STATS(sock_net(sk), mib_idx); > +}
This is not a very descriptive name.
Why is it static, and in net/ipv4/tcp_input.c ???
> + > /* This routine deals with incoming acks, but not outgoing ones. */ > static int tcp_ack(struct sock *sk, const struct sk_buff *skb, int flag) > { > @@ -3715,7 +3720,7 @@ static int tcp_ack(struct sock *sk, const struct sk_buff *skb, int flag) > return 1; > > invalid_ack: > - SOCK_DEBUG(sk, "Ack %u after %u:%u\n", ack, tp->snd_una, tp->snd_nxt); > + tcp_stats(sk, LINUX_MIB_TCPINVALIDACK); > return -1; > > old_ack: > @@ -3731,7 +3736,7 @@ static int tcp_ack(struct sock *sk, const struct sk_buff *skb, int flag) > tcp_xmit_recovery(sk, rexmit); > } > > - SOCK_DEBUG(sk, "Ack %u before %u:%u\n", ack, tp->snd_una, tp->snd_nxt); > + tcp_stats(sk, LINUX_MIB_TCPOLDACK); > return 0; > } >
These counters will add noise to an already crowded MIB space.
What bug do you expect to track and fix with these ?
I see many TCP patches coming adding icache pressure, enabling companies to build their own modified TCP stack, but no real meat.
| |