All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH net-next 0/2] tcp/dccp: Cleanup initialisation code of refcounted.
@ 2020-03-23 18:18 ` Kuniyuki Iwashima
  0 siblings, 0 replies; 14+ messages in thread
From: Kuniyuki Iwashima @ 2020-03-23 18:18 UTC (permalink / raw)
  To: David S . Miller, Jakub Kicinski, Eric Dumazet, Gerrit Renker,
	Alexey Kuznetsov, Hideaki YOSHIFUJI
  Cc: dccp, netdev, Kuniyuki Iwashima, Kuniyuki Iwashima, osa-contribution-log

These patches cleanup initialisation of the refcounted which is passed to
__inet_lookup_skb().

Kuniyuki Iwashima (2):
  tcp/dccp: Move initialisation of refcounted into if block.
  tcp/dccp: Remove unnecessary initialization of refcounted.

 include/net/inet6_hashtables.h | 11 +++++++----
 include/net/inet_hashtables.h  | 11 +++++++----
 net/dccp/ipv4.c                |  1 -
 net/dccp/ipv6.c                |  1 -
 net/ipv4/tcp_ipv4.c            |  1 -
 net/ipv6/tcp_ipv6.c            |  1 -
 6 files changed, 14 insertions(+), 12 deletions(-)

-- 
2.17.2 (Apple Git-113)


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

* [PATCH net-next 0/2] tcp/dccp: Cleanup initialisation code of refcounted.
@ 2020-03-23 18:18 ` Kuniyuki Iwashima
  0 siblings, 0 replies; 14+ messages in thread
From: Kuniyuki Iwashima @ 2020-03-23 18:18 UTC (permalink / raw)
  To: dccp

These patches cleanup initialisation of the refcounted which is passed to
__inet_lookup_skb().

Kuniyuki Iwashima (2):
  tcp/dccp: Move initialisation of refcounted into if block.
  tcp/dccp: Remove unnecessary initialization of refcounted.

 include/net/inet6_hashtables.h | 11 +++++++----
 include/net/inet_hashtables.h  | 11 +++++++----
 net/dccp/ipv4.c                |  1 -
 net/dccp/ipv6.c                |  1 -
 net/ipv4/tcp_ipv4.c            |  1 -
 net/ipv6/tcp_ipv6.c            |  1 -
 6 files changed, 14 insertions(+), 12 deletions(-)

-- 
2.17.2 (Apple Git-113)

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

* [PATCH net-next 1/2] tcp/dccp: Move initialisation of refcounted into if block.
@ 2020-03-23 18:18   ` Kuniyuki Iwashima
  0 siblings, 0 replies; 14+ messages in thread
From: Kuniyuki Iwashima @ 2020-03-23 18:18 UTC (permalink / raw)
  To: David S . Miller, Jakub Kicinski, Eric Dumazet, Gerrit Renker,
	Alexey Kuznetsov, Hideaki YOSHIFUJI
  Cc: dccp, netdev, Kuniyuki Iwashima, Kuniyuki Iwashima, osa-contribution-log

The refcounted is initialised at most three times.

  - __inet_lookup_skb() sets it true.
  - skb_steal_sock() is false and __inet_lookup() sets it true.
  - __inet_lookup_established() is false and __inet_lookup() sets it false.

We do not need to initialise refcounted again and again, so we should do
it just before return.

Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.co.jp>
---
 include/net/inet6_hashtables.h | 11 +++++++----
 include/net/inet_hashtables.h  | 11 +++++++----
 2 files changed, 14 insertions(+), 8 deletions(-)

diff --git a/include/net/inet6_hashtables.h b/include/net/inet6_hashtables.h
index fe96bf247aac..9b6c97100d54 100644
--- a/include/net/inet6_hashtables.h
+++ b/include/net/inet6_hashtables.h
@@ -70,9 +70,11 @@ static inline struct sock *__inet6_lookup(struct net *net,
 	struct sock *sk = __inet6_lookup_established(net, hashinfo, saddr,
 						     sport, daddr, hnum,
 						     dif, sdif);
-	*refcounted = true;
-	if (sk)
+	if (sk) {
+		*refcounted = true;
 		return sk;
+	}
+
 	*refcounted = false;
 	return inet6_lookup_listener(net, hashinfo, skb, doff, saddr, sport,
 				     daddr, hnum, dif, sdif);
@@ -87,9 +89,10 @@ static inline struct sock *__inet6_lookup_skb(struct inet_hashinfo *hashinfo,
 {
 	struct sock *sk = skb_steal_sock(skb);
 
-	*refcounted = true;
-	if (sk)
+	if (sk) {
+		*refcounted = true;
 		return sk;
+	}
 
 	return __inet6_lookup(dev_net(skb_dst(skb)->dev), hashinfo, skb,
 			      doff, &ipv6_hdr(skb)->saddr, sport,
diff --git a/include/net/inet_hashtables.h b/include/net/inet_hashtables.h
index d0019d3395cf..aa859bf8607b 100644
--- a/include/net/inet_hashtables.h
+++ b/include/net/inet_hashtables.h
@@ -345,9 +345,11 @@ static inline struct sock *__inet_lookup(struct net *net,
 
 	sk = __inet_lookup_established(net, hashinfo, saddr, sport,
 				       daddr, hnum, dif, sdif);
-	*refcounted = true;
-	if (sk)
+	if (sk) {
+		*refcounted = true;
 		return sk;
+	}
+
 	*refcounted = false;
 	return __inet_lookup_listener(net, hashinfo, skb, doff, saddr,
 				      sport, daddr, hnum, dif, sdif);
@@ -382,9 +384,10 @@ static inline struct sock *__inet_lookup_skb(struct inet_hashinfo *hashinfo,
 	struct sock *sk = skb_steal_sock(skb);
 	const struct iphdr *iph = ip_hdr(skb);
 
-	*refcounted = true;
-	if (sk)
+	if (sk) {
+		*refcounted = true;
 		return sk;
+	}
 
 	return __inet_lookup(dev_net(skb_dst(skb)->dev), hashinfo, skb,
 			     doff, iph->saddr, sport,
-- 
2.17.2 (Apple Git-113)


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

* [PATCH net-next 1/2] tcp/dccp: Move initialisation of refcounted into if block.
@ 2020-03-23 18:18   ` Kuniyuki Iwashima
  0 siblings, 0 replies; 14+ messages in thread
From: Kuniyuki Iwashima @ 2020-03-23 18:18 UTC (permalink / raw)
  To: dccp

The refcounted is initialised at most three times.

  - __inet_lookup_skb() sets it true.
  - skb_steal_sock() is false and __inet_lookup() sets it true.
  - __inet_lookup_established() is false and __inet_lookup() sets it false.

We do not need to initialise refcounted again and again, so we should do
it just before return.

Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.co.jp>
---
 include/net/inet6_hashtables.h | 11 +++++++----
 include/net/inet_hashtables.h  | 11 +++++++----
 2 files changed, 14 insertions(+), 8 deletions(-)

diff --git a/include/net/inet6_hashtables.h b/include/net/inet6_hashtables.h
index fe96bf247aac..9b6c97100d54 100644
--- a/include/net/inet6_hashtables.h
+++ b/include/net/inet6_hashtables.h
@@ -70,9 +70,11 @@ static inline struct sock *__inet6_lookup(struct net *net,
 	struct sock *sk = __inet6_lookup_established(net, hashinfo, saddr,
 						     sport, daddr, hnum,
 						     dif, sdif);
-	*refcounted = true;
-	if (sk)
+	if (sk) {
+		*refcounted = true;
 		return sk;
+	}
+
 	*refcounted = false;
 	return inet6_lookup_listener(net, hashinfo, skb, doff, saddr, sport,
 				     daddr, hnum, dif, sdif);
@@ -87,9 +89,10 @@ static inline struct sock *__inet6_lookup_skb(struct inet_hashinfo *hashinfo,
 {
 	struct sock *sk = skb_steal_sock(skb);
 
-	*refcounted = true;
-	if (sk)
+	if (sk) {
+		*refcounted = true;
 		return sk;
+	}
 
 	return __inet6_lookup(dev_net(skb_dst(skb)->dev), hashinfo, skb,
 			      doff, &ipv6_hdr(skb)->saddr, sport,
diff --git a/include/net/inet_hashtables.h b/include/net/inet_hashtables.h
index d0019d3395cf..aa859bf8607b 100644
--- a/include/net/inet_hashtables.h
+++ b/include/net/inet_hashtables.h
@@ -345,9 +345,11 @@ static inline struct sock *__inet_lookup(struct net *net,
 
 	sk = __inet_lookup_established(net, hashinfo, saddr, sport,
 				       daddr, hnum, dif, sdif);
-	*refcounted = true;
-	if (sk)
+	if (sk) {
+		*refcounted = true;
 		return sk;
+	}
+
 	*refcounted = false;
 	return __inet_lookup_listener(net, hashinfo, skb, doff, saddr,
 				      sport, daddr, hnum, dif, sdif);
@@ -382,9 +384,10 @@ static inline struct sock *__inet_lookup_skb(struct inet_hashinfo *hashinfo,
 	struct sock *sk = skb_steal_sock(skb);
 	const struct iphdr *iph = ip_hdr(skb);
 
-	*refcounted = true;
-	if (sk)
+	if (sk) {
+		*refcounted = true;
 		return sk;
+	}
 
 	return __inet_lookup(dev_net(skb_dst(skb)->dev), hashinfo, skb,
 			     doff, iph->saddr, sport,
-- 
2.17.2 (Apple Git-113)

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

* [PATCH net-next 2/2] tcp/dccp: Remove unnecessary initialization of refcounted.
@ 2020-03-23 18:18   ` Kuniyuki Iwashima
  0 siblings, 0 replies; 14+ messages in thread
From: Kuniyuki Iwashima @ 2020-03-23 18:18 UTC (permalink / raw)
  To: David S . Miller, Jakub Kicinski, Eric Dumazet, Gerrit Renker,
	Alexey Kuznetsov, Hideaki YOSHIFUJI
  Cc: dccp, netdev, Kuniyuki Iwashima, Kuniyuki Iwashima, osa-contribution-log

When we get a TCP_NEW_SYN_RECV/DCCP_NEW_SYN_RECV socket by
__inet_lookup_skb(), refcounted is already set true, so it is not
necessary to do it again.

Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.co.jp>
---
 net/dccp/ipv4.c     | 1 -
 net/dccp/ipv6.c     | 1 -
 net/ipv4/tcp_ipv4.c | 1 -
 net/ipv6/tcp_ipv6.c | 1 -
 4 files changed, 4 deletions(-)

diff --git a/net/dccp/ipv4.c b/net/dccp/ipv4.c
index d19557c6d04b..c63b6bd68284 100644
--- a/net/dccp/ipv4.c
+++ b/net/dccp/ipv4.c
@@ -838,7 +838,6 @@ static int dccp_v4_rcv(struct sk_buff *skb)
 			goto lookup;
 		}
 		sock_hold(sk);
-		refcounted = true;
 		nsk = dccp_check_req(sk, skb, req);
 		if (!nsk) {
 			reqsk_put(req);
diff --git a/net/dccp/ipv6.c b/net/dccp/ipv6.c
index 1e5e08cc0bfc..b3ca9b1ef32a 100644
--- a/net/dccp/ipv6.c
+++ b/net/dccp/ipv6.c
@@ -740,7 +740,6 @@ static int dccp_v6_rcv(struct sk_buff *skb)
 			goto lookup;
 		}
 		sock_hold(sk);
-		refcounted = true;
 		nsk = dccp_check_req(sk, skb, req);
 		if (!nsk) {
 			reqsk_put(req);
diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c
index df1166b76126..b59a89d8fa69 100644
--- a/net/ipv4/tcp_ipv4.c
+++ b/net/ipv4/tcp_ipv4.c
@@ -1931,7 +1931,6 @@ int tcp_v4_rcv(struct sk_buff *skb)
 		 * as we might lose it too soon.
 		 */
 		sock_hold(sk);
-		refcounted = true;
 		nsk = NULL;
 		if (!tcp_filter(sk, skb)) {
 			th = (const struct tcphdr *)skb->data;
diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c
index eaf09e6b7844..3a587c40ca52 100644
--- a/net/ipv6/tcp_ipv6.c
+++ b/net/ipv6/tcp_ipv6.c
@@ -1603,7 +1603,6 @@ INDIRECT_CALLABLE_SCOPE int tcp_v6_rcv(struct sk_buff *skb)
 			goto lookup;
 		}
 		sock_hold(sk);
-		refcounted = true;
 		nsk = NULL;
 		if (!tcp_filter(sk, skb)) {
 			th = (const struct tcphdr *)skb->data;
-- 
2.17.2 (Apple Git-113)


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

* [PATCH net-next 2/2] tcp/dccp: Remove unnecessary initialization of refcounted.
@ 2020-03-23 18:18   ` Kuniyuki Iwashima
  0 siblings, 0 replies; 14+ messages in thread
From: Kuniyuki Iwashima @ 2020-03-23 18:18 UTC (permalink / raw)
  To: dccp

When we get a TCP_NEW_SYN_RECV/DCCP_NEW_SYN_RECV socket by
__inet_lookup_skb(), refcounted is already set true, so it is not
necessary to do it again.

Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.co.jp>
---
 net/dccp/ipv4.c     | 1 -
 net/dccp/ipv6.c     | 1 -
 net/ipv4/tcp_ipv4.c | 1 -
 net/ipv6/tcp_ipv6.c | 1 -
 4 files changed, 4 deletions(-)

diff --git a/net/dccp/ipv4.c b/net/dccp/ipv4.c
index d19557c6d04b..c63b6bd68284 100644
--- a/net/dccp/ipv4.c
+++ b/net/dccp/ipv4.c
@@ -838,7 +838,6 @@ static int dccp_v4_rcv(struct sk_buff *skb)
 			goto lookup;
 		}
 		sock_hold(sk);
-		refcounted = true;
 		nsk = dccp_check_req(sk, skb, req);
 		if (!nsk) {
 			reqsk_put(req);
diff --git a/net/dccp/ipv6.c b/net/dccp/ipv6.c
index 1e5e08cc0bfc..b3ca9b1ef32a 100644
--- a/net/dccp/ipv6.c
+++ b/net/dccp/ipv6.c
@@ -740,7 +740,6 @@ static int dccp_v6_rcv(struct sk_buff *skb)
 			goto lookup;
 		}
 		sock_hold(sk);
-		refcounted = true;
 		nsk = dccp_check_req(sk, skb, req);
 		if (!nsk) {
 			reqsk_put(req);
diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c
index df1166b76126..b59a89d8fa69 100644
--- a/net/ipv4/tcp_ipv4.c
+++ b/net/ipv4/tcp_ipv4.c
@@ -1931,7 +1931,6 @@ int tcp_v4_rcv(struct sk_buff *skb)
 		 * as we might lose it too soon.
 		 */
 		sock_hold(sk);
-		refcounted = true;
 		nsk = NULL;
 		if (!tcp_filter(sk, skb)) {
 			th = (const struct tcphdr *)skb->data;
diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c
index eaf09e6b7844..3a587c40ca52 100644
--- a/net/ipv6/tcp_ipv6.c
+++ b/net/ipv6/tcp_ipv6.c
@@ -1603,7 +1603,6 @@ INDIRECT_CALLABLE_SCOPE int tcp_v6_rcv(struct sk_buff *skb)
 			goto lookup;
 		}
 		sock_hold(sk);
-		refcounted = true;
 		nsk = NULL;
 		if (!tcp_filter(sk, skb)) {
 			th = (const struct tcphdr *)skb->data;
-- 
2.17.2 (Apple Git-113)

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

* Re: [PATCH net-next 1/2] tcp/dccp: Move initialisation of refcounted into if block.
  2020-03-23 18:18   ` Kuniyuki Iwashima
@ 2020-03-23 18:45     ` Eric Dumazet
  -1 siblings, 0 replies; 14+ messages in thread
From: Eric Dumazet @ 2020-03-23 18:45 UTC (permalink / raw)
  To: Kuniyuki Iwashima
  Cc: David S . Miller, Jakub Kicinski, Gerrit Renker,
	Alexey Kuznetsov, Hideaki YOSHIFUJI, dccp, netdev,
	Kuniyuki Iwashima, osa-contribution-log

On Mon, Mar 23, 2020 at 11:18 AM Kuniyuki Iwashima <kuniyu@amazon.co.jp> wrote:
>
> The refcounted is initialised at most three times.
>
>   - __inet_lookup_skb() sets it true.
>   - skb_steal_sock() is false and __inet_lookup() sets it true.
>   - __inet_lookup_established() is false and __inet_lookup() sets it false.
>
> We do not need to initialise refcounted again and again, so we should do
> it just before return.
>
> Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.co.jp>
> ---

Well, I do not believe this patch (and the following one) makes things
more readable.

I doubt setting a boolean in a register or a stack variable has any cost,
I prefer letting the compiler optimize this.

The ehash lookup cost is at least 2 or 3 cache lines, this is the
major contribution.

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

* Re: [PATCH net-next 1/2] tcp/dccp: Move initialisation of refcounted into if block.
@ 2020-03-23 18:45     ` Eric Dumazet
  0 siblings, 0 replies; 14+ messages in thread
From: Eric Dumazet @ 2020-03-23 18:45 UTC (permalink / raw)
  To: dccp

On Mon, Mar 23, 2020 at 11:18 AM Kuniyuki Iwashima <kuniyu@amazon.co.jp> wrote:
>
> The refcounted is initialised at most three times.
>
>   - __inet_lookup_skb() sets it true.
>   - skb_steal_sock() is false and __inet_lookup() sets it true.
>   - __inet_lookup_established() is false and __inet_lookup() sets it false.
>
> We do not need to initialise refcounted again and again, so we should do
> it just before return.
>
> Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.co.jp>
> ---

Well, I do not believe this patch (and the following one) makes things
more readable.

I doubt setting a boolean in a register or a stack variable has any cost,
I prefer letting the compiler optimize this.

The ehash lookup cost is at least 2 or 3 cache lines, this is the
major contribution.

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

* Re: [PATCH net-next 2/2] tcp/dccp: Remove unnecessary initialization of refcounted.
  2020-03-23 18:18   ` Kuniyuki Iwashima
@ 2020-03-23 18:47     ` Eric Dumazet
  -1 siblings, 0 replies; 14+ messages in thread
From: Eric Dumazet @ 2020-03-23 18:47 UTC (permalink / raw)
  To: Kuniyuki Iwashima
  Cc: David S . Miller, Jakub Kicinski, Gerrit Renker,
	Alexey Kuznetsov, Hideaki YOSHIFUJI, dccp, netdev,
	Kuniyuki Iwashima, osa-contribution-log

On Mon, Mar 23, 2020 at 11:22 AM Kuniyuki Iwashima <kuniyu@amazon.co.jp> wrote:
>
> When we get a TCP_NEW_SYN_RECV/DCCP_NEW_SYN_RECV socket by
> __inet_lookup_skb(), refcounted is already set true, so it is not
> necessary to do it again.

This changelog is absolutely not accurate.

sk is a listener here.
(because sk was set to req->rsk_listener;)

Please do not add confusion by mixing different things.

I prefer not relying on the old value of 'refcounted', since we
switched sk value.

Note that we call reqsk_put(req); regardless of 'refcounted'

I would rather not change this code and make future backports more complicated.

Thanks.

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

* Re: [PATCH net-next 2/2] tcp/dccp: Remove unnecessary initialization of refcounted.
@ 2020-03-23 18:47     ` Eric Dumazet
  0 siblings, 0 replies; 14+ messages in thread
From: Eric Dumazet @ 2020-03-23 18:47 UTC (permalink / raw)
  To: dccp

On Mon, Mar 23, 2020 at 11:22 AM Kuniyuki Iwashima <kuniyu@amazon.co.jp> wrote:
>
> When we get a TCP_NEW_SYN_RECV/DCCP_NEW_SYN_RECV socket by
> __inet_lookup_skb(), refcounted is already set true, so it is not
> necessary to do it again.

This changelog is absolutely not accurate.

sk is a listener here.
(because sk was set to req->rsk_listener;)

Please do not add confusion by mixing different things.

I prefer not relying on the old value of 'refcounted', since we
switched sk value.

Note that we call reqsk_put(req); regardless of 'refcounted'

I would rather not change this code and make future backports more complicated.

Thanks.

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

* Re: [PATCH net-next 2/2] tcp/dccp: Remove unnecessary initialization
  2020-03-23 18:18   ` Kuniyuki Iwashima
@ 2020-03-24 11:06       ` Kuniyuki Iwashima
  -1 siblings, 0 replies; 14+ messages in thread
From: Kuniyuki Iwashima @ 2020-03-24 11:06 UTC (permalink / raw)
  To: edumazet
  Cc: davem, dccp, gerrit, kuba, kuni1840, kuniyu, kuznet, netdev,
	osa-contribution-log, yoshfuji

From:   Eric Dumazet <edumazet@google.com>
Date:   Mon, 23 Mar 2020 11:47:17 -0700
> On Mon, Mar 23, 2020 at 11:22 AM Kuniyuki Iwashima <kuniyu@amazon.co.jp> wrote:
> >
> > When we get a TCP_NEW_SYN_RECV/DCCP_NEW_SYN_RECV socket by
> > __inet_lookup_skb(), refcounted is already set true, so it is not
> > necessary to do it again.
> 
> This changelog is absolutely not accurate.
> 
> sk is a listener here.
> (because sk was set to req->rsk_listener;)
> 
> Please do not add confusion by mixing different things.
> 
> I prefer not relying on the old value of 'refcounted', since we
> switched sk value.
> 
> Note that we call reqsk_put(req); regardless of 'refcounted'

Certainly, the refcounted has diffrent meaning in the context, sorry. 


> I would rather not change this code and make future backports more complicated.
> 
> Thanks.

I did not think about backports, thank you!

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

* Re: [PATCH net-next 2/2] tcp/dccp: Remove unnecessary initialization
@ 2020-03-24 11:06       ` Kuniyuki Iwashima
  0 siblings, 0 replies; 14+ messages in thread
From: Kuniyuki Iwashima @ 2020-03-24 11:06 UTC (permalink / raw)
  To: dccp

From:   Eric Dumazet <edumazet@google.com>
Date:   Mon, 23 Mar 2020 11:47:17 -0700
> On Mon, Mar 23, 2020 at 11:22 AM Kuniyuki Iwashima <kuniyu@amazon.co.jp> wrote:
> >
> > When we get a TCP_NEW_SYN_RECV/DCCP_NEW_SYN_RECV socket by
> > __inet_lookup_skb(), refcounted is already set true, so it is not
> > necessary to do it again.
> 
> This changelog is absolutely not accurate.
> 
> sk is a listener here.
> (because sk was set to req->rsk_listener;)
> 
> Please do not add confusion by mixing different things.
> 
> I prefer not relying on the old value of 'refcounted', since we
> switched sk value.
> 
> Note that we call reqsk_put(req); regardless of 'refcounted'

Certainly, the refcounted has diffrent meaning in the context, sorry. 


> I would rather not change this code and make future backports more complicated.
> 
> Thanks.

I did not think about backports, thank you!

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

* Re: [PATCH net-next 1/2] tcp/dccp: Move initialisation of refcounted
  2020-03-23 18:18   ` Kuniyuki Iwashima
@ 2020-03-24 11:10       ` Kuniyuki Iwashima
  -1 siblings, 0 replies; 14+ messages in thread
From: Kuniyuki Iwashima @ 2020-03-24 11:10 UTC (permalink / raw)
  To: edumazet
  Cc: davem, dccp, gerrit, kuba, kuni1840, kuniyu, kuznet, netdev,
	osa-contribution-log, yoshfuji

From:   Eric Dumazet <edumazet@google.com>
Date:   Mon, 23 Mar 2020 11:45:48 -0700
> On Mon, Mar 23, 2020 at 11:18 AM Kuniyuki Iwashima <kuniyu@amazon.co.jp> wrote:
> >
> > The refcounted is initialised at most three times.
> >
> >   - __inet_lookup_skb() sets it true.
> >   - skb_steal_sock() is false and __inet_lookup() sets it true.
> >   - __inet_lookup_established() is false and __inet_lookup() sets it false.
> >
> > We do not need to initialise refcounted again and again, so we should do
> > it just before return.
> >
> > Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.co.jp>
> > ---
> 
> Well, I do not believe this patch (and the following one) makes things
> more readable.
> 
> I doubt setting a boolean in a register or a stack variable has any cost,
> I prefer letting the compiler optimize this.
> 
> The ehash lookup cost is at least 2 or 3 cache lines, this is the
> major contribution.

I confirmed that GCC (v7.3.1) does not make any change with this patch,
but the original code is bit confusing. I think this patch makes the code
bit more readable so that someone (like me...) will not doubt about
complier optimization and write patches.

I will respin only this patch because the changelog can be incorrect by
complier optimization.

Thanks.

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

* Re: [PATCH net-next 1/2] tcp/dccp: Move initialisation of refcounted
@ 2020-03-24 11:10       ` Kuniyuki Iwashima
  0 siblings, 0 replies; 14+ messages in thread
From: Kuniyuki Iwashima @ 2020-03-24 11:10 UTC (permalink / raw)
  To: dccp

From:   Eric Dumazet <edumazet@google.com>
Date:   Mon, 23 Mar 2020 11:45:48 -0700
> On Mon, Mar 23, 2020 at 11:18 AM Kuniyuki Iwashima <kuniyu@amazon.co.jp> wrote:
> >
> > The refcounted is initialised at most three times.
> >
> >   - __inet_lookup_skb() sets it true.
> >   - skb_steal_sock() is false and __inet_lookup() sets it true.
> >   - __inet_lookup_established() is false and __inet_lookup() sets it false.
> >
> > We do not need to initialise refcounted again and again, so we should do
> > it just before return.
> >
> > Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.co.jp>
> > ---
> 
> Well, I do not believe this patch (and the following one) makes things
> more readable.
> 
> I doubt setting a boolean in a register or a stack variable has any cost,
> I prefer letting the compiler optimize this.
> 
> The ehash lookup cost is at least 2 or 3 cache lines, this is the
> major contribution.

I confirmed that GCC (v7.3.1) does not make any change with this patch,
but the original code is bit confusing. I think this patch makes the code
bit more readable so that someone (like me...) will not doubt about
complier optimization and write patches.

I will respin only this patch because the changelog can be incorrect by
complier optimization.

Thanks.

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

end of thread, other threads:[~2020-03-24 11:10 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-03-23 18:18 [PATCH net-next 0/2] tcp/dccp: Cleanup initialisation code of refcounted Kuniyuki Iwashima
2020-03-23 18:18 ` Kuniyuki Iwashima
2020-03-23 18:18 ` [PATCH net-next 1/2] tcp/dccp: Move initialisation of refcounted into if block Kuniyuki Iwashima
2020-03-23 18:18   ` Kuniyuki Iwashima
2020-03-23 18:45   ` Eric Dumazet
2020-03-23 18:45     ` Eric Dumazet
2020-03-24 11:10     ` [PATCH net-next 1/2] tcp/dccp: Move initialisation of refcounted Kuniyuki Iwashima
2020-03-24 11:10       ` Kuniyuki Iwashima
2020-03-23 18:18 ` [PATCH net-next 2/2] tcp/dccp: Remove unnecessary initialization " Kuniyuki Iwashima
2020-03-23 18:18   ` Kuniyuki Iwashima
2020-03-23 18:47   ` Eric Dumazet
2020-03-23 18:47     ` Eric Dumazet
2020-03-24 11:06     ` [PATCH net-next 2/2] tcp/dccp: Remove unnecessary initialization Kuniyuki Iwashima
2020-03-24 11:06       ` Kuniyuki Iwashima

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.