All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 net-next 0/2] clean up SOCK_DEBUG()
@ 2019-02-16 16:28 Yafang Shao
  2019-02-16 16:28 ` [PATCH v2 net-next 1/2] tcp: " Yafang Shao
  2019-02-16 16:28 ` [PATCH v2 net-next 2/2] net: sock: undefine SOCK_DEBUGGING Yafang Shao
  0 siblings, 2 replies; 5+ messages in thread
From: Yafang Shao @ 2019-02-16 16:28 UTC (permalink / raw)
  To: davem
  Cc: daniel, edumazet, joe, xiyou.wangcong, netdev, shaoyafang, Yafang Shao

Per discussion with Daniel[1] and Eric[2], these SOCK_DEBUG() calles in
TCP are not needed now.
We'd better clean up it.

Plus undefine SOCK_DEBUGGING by default.

[1] https://patchwork.ozlabs.org/patch/1035573/
[2] https://patchwork.ozlabs.org/patch/1040533/


Yafang Shao (2):
  tcp: clean up SOCK_DEBUG()
  net: sock: undefine SOCK_DEBUGGING

 include/net/sock.h   | 13 ++++++++-----
 net/core/sock.c      |  3 +++
 net/ipv4/tcp_input.c | 19 +------------------
 net/ipv6/tcp_ipv6.c  |  2 --
 4 files changed, 12 insertions(+), 25 deletions(-)

-- 
1.8.3.1


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH v2 net-next 1/2] tcp: clean up SOCK_DEBUG()
  2019-02-16 16:28 [PATCH v2 net-next 0/2] clean up SOCK_DEBUG() Yafang Shao
@ 2019-02-16 16:28 ` Yafang Shao
  2019-02-16 16:28 ` [PATCH v2 net-next 2/2] net: sock: undefine SOCK_DEBUGGING Yafang Shao
  1 sibling, 0 replies; 5+ messages in thread
From: Yafang Shao @ 2019-02-16 16:28 UTC (permalink / raw)
  To: davem
  Cc: daniel, edumazet, joe, xiyou.wangcong, netdev, shaoyafang, Yafang Shao

Per discussion with Daniel[1] and Eric[2], these SOCK_DEBUG() calles in
TCP are not needed now.
We'd better clean up it.

[1] https://patchwork.ozlabs.org/patch/1035573/
[2] https://patchwork.ozlabs.org/patch/1040533/

Signed-off-by: Yafang Shao <laoar.shao@gmail.com>
---
 net/ipv4/tcp_input.c | 19 +------------------
 net/ipv6/tcp_ipv6.c  |  2 --
 2 files changed, 1 insertion(+), 20 deletions(-)

diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
index 7a027dec..6d2750e 100644
--- a/net/ipv4/tcp_input.c
+++ b/net/ipv4/tcp_input.c
@@ -3595,7 +3595,7 @@ static int tcp_ack(struct sock *sk, const struct sk_buff *skb, int flag)
 	 * this segment (RFC793 Section 3.9).
 	 */
 	if (after(ack, tp->snd_nxt))
-		goto invalid_ack;
+		return -1;
 
 	if (after(ack, prior_snd_una)) {
 		flag |= FLAG_SND_UNA_ADVANCED;
@@ -3714,10 +3714,6 @@ static int tcp_ack(struct sock *sk, const struct sk_buff *skb, int flag)
 		tcp_process_tlp_ack(sk, ack, flag);
 	return 1;
 
-invalid_ack:
-	SOCK_DEBUG(sk, "Ack %u after %u:%u\n", ack, tp->snd_una, tp->snd_nxt);
-	return -1;
-
 old_ack:
 	/* If data was SACKed, tag it and see if we should send more data.
 	 * If data was DSACKed, see if we can undo a cwnd reduction.
@@ -3731,7 +3727,6 @@ 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);
 	return 0;
 }
 
@@ -4432,13 +4427,9 @@ static void tcp_ofo_queue(struct sock *sk)
 		rb_erase(&skb->rbnode, &tp->out_of_order_queue);
 
 		if (unlikely(!after(TCP_SKB_CB(skb)->end_seq, tp->rcv_nxt))) {
-			SOCK_DEBUG(sk, "ofo packet was already received\n");
 			tcp_drop(sk, skb);
 			continue;
 		}
-		SOCK_DEBUG(sk, "ofo requeuing : rcv_next %X seq %X - %X\n",
-			   tp->rcv_nxt, TCP_SKB_CB(skb)->seq,
-			   TCP_SKB_CB(skb)->end_seq);
 
 		tail = skb_peek_tail(&sk->sk_receive_queue);
 		eaten = tail && tcp_try_coalesce(sk, tail, skb, &fragstolen);
@@ -4502,8 +4493,6 @@ static void tcp_data_queue_ofo(struct sock *sk, struct sk_buff *skb)
 	NET_INC_STATS(sock_net(sk), LINUX_MIB_TCPOFOQUEUE);
 	seq = TCP_SKB_CB(skb)->seq;
 	end_seq = TCP_SKB_CB(skb)->end_seq;
-	SOCK_DEBUG(sk, "out of order segment: rcv_next %X seq %X - %X\n",
-		   tp->rcv_nxt, seq, end_seq);
 
 	p = &tp->out_of_order_queue.rb_node;
 	if (RB_EMPTY_ROOT(&tp->out_of_order_queue)) {
@@ -4779,10 +4768,6 @@ static void tcp_data_queue(struct sock *sk, struct sk_buff *skb)
 
 	if (before(TCP_SKB_CB(skb)->seq, tp->rcv_nxt)) {
 		/* Partial packet, seq < rcv_next < end_seq */
-		SOCK_DEBUG(sk, "partial packet: rcv_next %X seq %X - %X\n",
-			   tp->rcv_nxt, TCP_SKB_CB(skb)->seq,
-			   TCP_SKB_CB(skb)->end_seq);
-
 		tcp_dsack_set(sk, TCP_SKB_CB(skb)->seq, tp->rcv_nxt);
 
 		/* If window is closed, drop tail of packet. But after
@@ -5061,8 +5046,6 @@ static int tcp_prune_queue(struct sock *sk)
 {
 	struct tcp_sock *tp = tcp_sk(sk);
 
-	SOCK_DEBUG(sk, "prune_queue: c=%x\n", tp->copied_seq);
-
 	NET_INC_STATS(sock_net(sk), LINUX_MIB_PRUNECALLED);
 
 	if (atomic_read(&sk->sk_rmem_alloc) >= sk->sk_rcvbuf)
diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c
index e51cda7..57ef69a1 100644
--- a/net/ipv6/tcp_ipv6.c
+++ b/net/ipv6/tcp_ipv6.c
@@ -220,8 +220,6 @@ static int tcp_v6_connect(struct sock *sk, struct sockaddr *uaddr,
 		u32 exthdrlen = icsk->icsk_ext_hdr_len;
 		struct sockaddr_in sin;
 
-		SOCK_DEBUG(sk, "connect: ipv4 mapped\n");
-
 		if (__ipv6_only_sock(sk))
 			return -ENETUNREACH;
 
-- 
1.8.3.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH v2 net-next 2/2] net: sock: undefine SOCK_DEBUGGING
  2019-02-16 16:28 [PATCH v2 net-next 0/2] clean up SOCK_DEBUG() Yafang Shao
  2019-02-16 16:28 ` [PATCH v2 net-next 1/2] tcp: " Yafang Shao
@ 2019-02-16 16:28 ` Yafang Shao
  2019-02-17 11:58   ` Joe Perches
  1 sibling, 1 reply; 5+ messages in thread
From: Yafang Shao @ 2019-02-16 16:28 UTC (permalink / raw)
  To: davem
  Cc: daniel, edumazet, joe, xiyou.wangcong, netdev, shaoyafang, Yafang Shao

SOCK_DEBUG() is a old facility for debugging.
If the user want to use it for debugging, the user must modify the
application first, that doesn't seem like a good way.
Now we have more powerful facilities, i.e. bpf or tracepoint, for this kind
of debugging purpose.
So we'd better disable it by default.
The reason why I don't remove it comepletely is that someone may still
would like to use it for debugging.

Signed-off-by: Yafang Shao <laoar.shao@gmail.com>
Suggested-by: Joe Perches <joe@perches.com>
---
 include/net/sock.h | 13 ++++++++-----
 net/core/sock.c    |  3 +++
 2 files changed, 11 insertions(+), 5 deletions(-)

diff --git a/include/net/sock.h b/include/net/sock.h
index 6679f3c..d41e8f4 100644
--- a/include/net/sock.h
+++ b/include/net/sock.h
@@ -81,14 +81,17 @@
  */
 
 /* Define this to get the SOCK_DBG debugging facility. */
-#define SOCK_DEBUGGING
+/* #define SOCK_DEBUGGING */
 #ifdef SOCK_DEBUGGING
-#define SOCK_DEBUG(sk, msg...) do { if ((sk) && sock_flag((sk), SOCK_DBG)) \
-					printk(KERN_DEBUG msg); } while (0)
+#define SOCK_DEBUG(sk, fmt, ...)		\
+do {						\
+	if ((sk) && sock_flag((sk), SOCK_DBG))	\
+		pr_debug(fmt, ##__VA_ARGS__);	\
+} while (0)
 #else
 /* Validate arguments and do nothing */
-static inline __printf(2, 3)
-void SOCK_DEBUG(const struct sock *sk, const char *msg, ...)
+__printf(2, 3)
+static inline void SOCK_DEBUG(const struct sock *sk, const char *fmt, ...)
 {
 }
 #endif
diff --git a/net/core/sock.c b/net/core/sock.c
index 71ded4d..7c15835 100644
--- a/net/core/sock.c
+++ b/net/core/sock.c
@@ -753,6 +753,9 @@ int sock_setsockopt(struct socket *sock, int level, int optname,
 
 	switch (optname) {
 	case SO_DEBUG:
+		/* This option takes effect only when SOCK_DEBUGGING
+		 * is defined.
+		 */
 		if (val && !capable(CAP_NET_ADMIN))
 			ret = -EACCES;
 		else
-- 
1.8.3.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH v2 net-next 2/2] net: sock: undefine SOCK_DEBUGGING
  2019-02-16 16:28 ` [PATCH v2 net-next 2/2] net: sock: undefine SOCK_DEBUGGING Yafang Shao
@ 2019-02-17 11:58   ` Joe Perches
  2019-02-17 14:07     ` Yafang Shao
  0 siblings, 1 reply; 5+ messages in thread
From: Joe Perches @ 2019-02-17 11:58 UTC (permalink / raw)
  To: Yafang Shao, davem; +Cc: daniel, edumazet, xiyou.wangcong, netdev, shaoyafang

On Sun, 2019-02-17 at 00:28 +0800, Yafang Shao wrote:
> SOCK_DEBUG() is a old facility for debugging.
> If the user want to use it for debugging, the user must modify the
> application first, that doesn't seem like a good way.
> Now we have more powerful facilities, i.e. bpf or tracepoint, for this kind
> of debugging purpose.
> So we'd better disable it by default.
> The reason why I don't remove it comepletely is that someone may still
> would like to use it for debugging.
> 
> Signed-off-by: Yafang Shao <laoar.shao@gmail.com>
> Suggested-by: Joe Perches <joe@perches.com>
> ---
>  include/net/sock.h | 13 ++++++++-----
>  net/core/sock.c    |  3 +++
>  2 files changed, 11 insertions(+), 5 deletions(-)
> 
> diff --git a/include/net/sock.h b/include/net/sock.h
> index 6679f3c..d41e8f4 100644
> --- a/include/net/sock.h
> +++ b/include/net/sock.h
> @@ -81,14 +81,17 @@
>   */
>  
>  /* Define this to get the SOCK_DBG debugging facility. */
> -#define SOCK_DEBUGGING
> +/* #define SOCK_DEBUGGING */
>  #ifdef SOCK_DEBUGGING
> -#define SOCK_DEBUG(sk, msg...) do { if ((sk) && sock_flag((sk), SOCK_DBG)) \
> -					printk(KERN_DEBUG msg); } while (0)
> +#define SOCK_DEBUG(sk, fmt, ...)		\
> +do {						\
> +	if ((sk) && sock_flag((sk), SOCK_DBG))	\
> +		pr_debug(fmt, ##__VA_ARGS__);	\

trivia:

I would not suggest pr_debug here as it also requires
either DEBUG to be defined or CONFIG_DYNAMIC_DEBUG
to be set.

If you really set SOCK_DEBUGGING, then printk(KERN_DEBUG
is probably right.

                                                           


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v2 net-next 2/2] net: sock: undefine SOCK_DEBUGGING
  2019-02-17 11:58   ` Joe Perches
@ 2019-02-17 14:07     ` Yafang Shao
  0 siblings, 0 replies; 5+ messages in thread
From: Yafang Shao @ 2019-02-17 14:07 UTC (permalink / raw)
  To: Joe Perches
  Cc: David Miller, Daniel Borkmann, Eric Dumazet, Cong Wang, netdev,
	shaoyafang

On Sun, Feb 17, 2019 at 7:58 PM Joe Perches <joe@perches.com> wrote:
>
> On Sun, 2019-02-17 at 00:28 +0800, Yafang Shao wrote:
> > SOCK_DEBUG() is a old facility for debugging.
> > If the user want to use it for debugging, the user must modify the
> > application first, that doesn't seem like a good way.
> > Now we have more powerful facilities, i.e. bpf or tracepoint, for this kind
> > of debugging purpose.
> > So we'd better disable it by default.
> > The reason why I don't remove it comepletely is that someone may still
> > would like to use it for debugging.
> >
> > Signed-off-by: Yafang Shao <laoar.shao@gmail.com>
> > Suggested-by: Joe Perches <joe@perches.com>
> > ---
> >  include/net/sock.h | 13 ++++++++-----
> >  net/core/sock.c    |  3 +++
> >  2 files changed, 11 insertions(+), 5 deletions(-)
> >
> > diff --git a/include/net/sock.h b/include/net/sock.h
> > index 6679f3c..d41e8f4 100644
> > --- a/include/net/sock.h
> > +++ b/include/net/sock.h
> > @@ -81,14 +81,17 @@
> >   */
> >
> >  /* Define this to get the SOCK_DBG debugging facility. */
> > -#define SOCK_DEBUGGING
> > +/* #define SOCK_DEBUGGING */
> >  #ifdef SOCK_DEBUGGING
> > -#define SOCK_DEBUG(sk, msg...) do { if ((sk) && sock_flag((sk), SOCK_DBG)) \
> > -                                     printk(KERN_DEBUG msg); } while (0)
> > +#define SOCK_DEBUG(sk, fmt, ...)             \
> > +do {                                         \
> > +     if ((sk) && sock_flag((sk), SOCK_DBG))  \
> > +             pr_debug(fmt, ##__VA_ARGS__);   \
>
> trivia:
>
> I would not suggest pr_debug here as it also requires
> either DEBUG to be defined or CONFIG_DYNAMIC_DEBUG
> to be set.
>
> If you really set SOCK_DEBUGGING, then printk(KERN_DEBUG
> is probably right.
>

Sure. Will change it.

Thanks
Yafang

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2019-02-17 14:08 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-02-16 16:28 [PATCH v2 net-next 0/2] clean up SOCK_DEBUG() Yafang Shao
2019-02-16 16:28 ` [PATCH v2 net-next 1/2] tcp: " Yafang Shao
2019-02-16 16:28 ` [PATCH v2 net-next 2/2] net: sock: undefine SOCK_DEBUGGING Yafang Shao
2019-02-17 11:58   ` Joe Perches
2019-02-17 14:07     ` Yafang Shao

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.