netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* pull request: ipsec-next 2012-11-22
@ 2012-11-22  8:02 Steffen Klassert
  2012-11-22  8:02 ` [PATCH 1/4] xfrm: remove redundant replay_esn check Steffen Klassert
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: Steffen Klassert @ 2012-11-22  8:02 UTC (permalink / raw)
  To: David Miller; +Cc: Herbert Xu, Steffen Klassert, netdev

This pull request is intended for net-next and contains the following changes:

1) Remove a redundant check when initializing the xfrm replay functions,
   from Ulrich Weber.
2) Use a faster per-cpu helper when allocating ipcomt transforms,
   from Shan Wei.
3) Use a static gc threshold value for ipv6, simmilar to what we do
   for ipv4 now.
4) Remove a commented out function call.

Please pull or let me know if there are problems.

Thanks!

The following changes since commit f1e0b5b4f1eae56a3192688177f36e2bdf0e01ac:

  Merge tag 'batman-adv-for-davem' of git://git.open-mesh.org/linux-merge (2012-11-07 19:08:42 -0500)

are available in the git repository at:


  git://git.kernel.org/pub/scm/linux/kernel/git/klassert/ipsec-next.git master

for you to fetch changes up to 0afe21fdf6cfe0fe8a184d82a399773cc331bf40:

  xfrm6: Remove commented out function call to xfrm6_input_fini (2012-11-16 08:07:56 +0100)

----------------------------------------------------------------
Shan Wei (1):
      net: xfrm: use __this_cpu_read per-cpu helper

Steffen Klassert (2):
      xfrm: Use a static gc threshold value for ipv6
      xfrm6: Remove commented out function call to xfrm6_input_fini

Ulrich Weber (1):
      xfrm: remove redundant replay_esn check

 net/ipv6/xfrm6_policy.c |   17 +----------------
 net/xfrm/xfrm_ipcomp.c  |    8 +++-----
 net/xfrm/xfrm_replay.c  |   13 ++++++-------
 3 files changed, 10 insertions(+), 28 deletions(-)

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

* [PATCH 1/4] xfrm: remove redundant replay_esn check
  2012-11-22  8:02 pull request: ipsec-next 2012-11-22 Steffen Klassert
@ 2012-11-22  8:02 ` Steffen Klassert
  2012-11-22  8:02 ` [PATCH 2/4] net: xfrm: use __this_cpu_read per-cpu helper Steffen Klassert
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Steffen Klassert @ 2012-11-22  8:02 UTC (permalink / raw)
  To: David Miller; +Cc: Herbert Xu, Steffen Klassert, netdev

From: Ulrich Weber <ulrich.weber@sophos.com>

x->replay_esn is already checked in if clause,
so remove check and ident properly

Signed-off-by: Ulrich Weber <ulrich.weber@sophos.com>
Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
---
 net/xfrm/xfrm_replay.c |   13 ++++++-------
 1 file changed, 6 insertions(+), 7 deletions(-)

diff --git a/net/xfrm/xfrm_replay.c b/net/xfrm/xfrm_replay.c
index 3efb07d..765f6fe 100644
--- a/net/xfrm/xfrm_replay.c
+++ b/net/xfrm/xfrm_replay.c
@@ -521,13 +521,12 @@ int xfrm_init_replay(struct xfrm_state *x)
 		    replay_esn->bmp_len * sizeof(__u32) * 8)
 			return -EINVAL;
 
-	if ((x->props.flags & XFRM_STATE_ESN) && replay_esn->replay_window == 0)
-		return -EINVAL;
-
-	if ((x->props.flags & XFRM_STATE_ESN) && x->replay_esn)
-		x->repl = &xfrm_replay_esn;
-	else
-		x->repl = &xfrm_replay_bmp;
+		if (x->props.flags & XFRM_STATE_ESN) {
+			if (replay_esn->replay_window == 0)
+				return -EINVAL;
+			x->repl = &xfrm_replay_esn;
+		} else
+			x->repl = &xfrm_replay_bmp;
 	} else
 		x->repl = &xfrm_replay_legacy;
 
-- 
1.7.9.5

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

* [PATCH 2/4] net: xfrm: use __this_cpu_read per-cpu helper
  2012-11-22  8:02 pull request: ipsec-next 2012-11-22 Steffen Klassert
  2012-11-22  8:02 ` [PATCH 1/4] xfrm: remove redundant replay_esn check Steffen Klassert
@ 2012-11-22  8:02 ` Steffen Klassert
  2012-11-22  8:02 ` [PATCH 3/4] xfrm: Use a static gc threshold value for ipv6 Steffen Klassert
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Steffen Klassert @ 2012-11-22  8:02 UTC (permalink / raw)
  To: David Miller; +Cc: Herbert Xu, Steffen Klassert, netdev

From: Shan Wei <shanwei88@gmail.com>

this_cpu_ptr/this_cpu_read is faster than per_cpu_ptr(p, smp_processor_id())
and can reduce  memory accesses.
The latter helper needs to find the offset for current cpu,
and needs more assembler instructions which objdump shows in following.

this_cpu_ptr relocates and address. this_cpu_read() relocates the address
and performs the fetch. this_cpu_read() saves you more instructions
since it can do the relocation and the fetch in one instruction.

per_cpu_ptr(p, smp_processor_id()):
  1e:   65 8b 04 25 00 00 00 00         mov    %gs:0x0,%eax
  26:   48 98                           cltq
  28:   31 f6                           xor    %esi,%esi
  2a:   48 c7 c7 00 00 00 00            mov    $0x0,%rdi
  31:   48 8b 04 c5 00 00 00 00         mov    0x0(,%rax,8),%rax
  39:   c7 44 10 04 14 00 00 00         movl   $0x14,0x4(%rax,%rdx,1)

this_cpu_ptr(p)
  1e:   65 48 03 14 25 00 00 00 00      add    %gs:0x0,%rdx
  27:   31 f6                           xor    %esi,%esi
  29:   c7 42 04 14 00 00 00            movl   $0x14,0x4(%rdx)
  30:   48 c7 c7 00 00 00 00            mov    $0x0,%rdi

Signed-off-by: Shan Wei <davidshan@tencent.com>
Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
---
 net/xfrm/xfrm_ipcomp.c |    8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/net/xfrm/xfrm_ipcomp.c b/net/xfrm/xfrm_ipcomp.c
index e5246fb..2906d52 100644
--- a/net/xfrm/xfrm_ipcomp.c
+++ b/net/xfrm/xfrm_ipcomp.c
@@ -276,18 +276,16 @@ static struct crypto_comp * __percpu *ipcomp_alloc_tfms(const char *alg_name)
 	struct crypto_comp * __percpu *tfms;
 	int cpu;
 
-	/* This can be any valid CPU ID so we don't need locking. */
-	cpu = raw_smp_processor_id();
 
 	list_for_each_entry(pos, &ipcomp_tfms_list, list) {
 		struct crypto_comp *tfm;
 
-		tfms = pos->tfms;
-		tfm = *per_cpu_ptr(tfms, cpu);
+		/* This can be any valid CPU ID so we don't need locking. */
+		tfm = __this_cpu_read(*pos->tfms);
 
 		if (!strcmp(crypto_comp_name(tfm), alg_name)) {
 			pos->users++;
-			return tfms;
+			return pos->tfms;
 		}
 	}
 
-- 
1.7.9.5

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

* [PATCH 3/4] xfrm: Use a static gc threshold value for ipv6
  2012-11-22  8:02 pull request: ipsec-next 2012-11-22 Steffen Klassert
  2012-11-22  8:02 ` [PATCH 1/4] xfrm: remove redundant replay_esn check Steffen Klassert
  2012-11-22  8:02 ` [PATCH 2/4] net: xfrm: use __this_cpu_read per-cpu helper Steffen Klassert
@ 2012-11-22  8:02 ` Steffen Klassert
  2012-11-22  8:02 ` [PATCH 4/4] xfrm6: Remove commented out function call to xfrm6_input_fini Steffen Klassert
  2012-11-22 20:26 ` pull request: ipsec-next 2012-11-22 David Miller
  4 siblings, 0 replies; 6+ messages in thread
From: Steffen Klassert @ 2012-11-22  8:02 UTC (permalink / raw)
  To: David Miller; +Cc: Herbert Xu, Steffen Klassert, netdev

Unlike ipv4 did, ipv6 does not handle the maximum number of cached
routes dynamically. So no need to try to handle the IPsec gc threshold
value dynamically. This patch sets the IPsec gc threshold value back to
1024 routes, as it is for non-IPsec routes.

Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
---
 net/ipv6/xfrm6_policy.c |   16 +---------------
 1 file changed, 1 insertion(+), 15 deletions(-)

diff --git a/net/ipv6/xfrm6_policy.c b/net/ipv6/xfrm6_policy.c
index f3ed8ca..6ce4a4f 100644
--- a/net/ipv6/xfrm6_policy.c
+++ b/net/ipv6/xfrm6_policy.c
@@ -327,21 +327,7 @@ static struct ctl_table_header *sysctl_hdr;
 int __init xfrm6_init(void)
 {
 	int ret;
-	unsigned int gc_thresh;
-
-	/*
-	 * We need a good default value for the xfrm6 gc threshold.
-	 * In ipv4 we set it to the route hash table size * 8, which
-	 * is half the size of the maximaum route cache for ipv4.  It
-	 * would be good to do the same thing for v6, except the table is
-	 * constructed differently here.  Here each table for a net namespace
-	 * can have FIB_TABLE_HASHSZ entries, so lets go with the same
-	 * computation that we used for ipv4 here.  Also, lets keep the initial
-	 * gc_thresh to a minimum of 1024, since, the ipv6 route cache defaults
-	 * to that as a minimum as well
-	 */
-	gc_thresh = FIB6_TABLE_HASHSZ * 8;
-	xfrm6_dst_ops.gc_thresh = (gc_thresh < 1024) ? 1024 : gc_thresh;
+
 	dst_entries_init(&xfrm6_dst_ops);
 
 	ret = xfrm6_policy_init();
-- 
1.7.9.5

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

* [PATCH 4/4] xfrm6: Remove commented out function call to xfrm6_input_fini
  2012-11-22  8:02 pull request: ipsec-next 2012-11-22 Steffen Klassert
                   ` (2 preceding siblings ...)
  2012-11-22  8:02 ` [PATCH 3/4] xfrm: Use a static gc threshold value for ipv6 Steffen Klassert
@ 2012-11-22  8:02 ` Steffen Klassert
  2012-11-22 20:26 ` pull request: ipsec-next 2012-11-22 David Miller
  4 siblings, 0 replies; 6+ messages in thread
From: Steffen Klassert @ 2012-11-22  8:02 UTC (permalink / raw)
  To: David Miller; +Cc: Herbert Xu, Steffen Klassert, netdev

xfrm6_input_fini() is not in the tree since more than 10 years,
so remove the commented out function call.

Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
---
 net/ipv6/xfrm6_policy.c |    1 -
 1 file changed, 1 deletion(-)

diff --git a/net/ipv6/xfrm6_policy.c b/net/ipv6/xfrm6_policy.c
index 6ce4a4f..c984413 100644
--- a/net/ipv6/xfrm6_policy.c
+++ b/net/ipv6/xfrm6_policy.c
@@ -356,7 +356,6 @@ void xfrm6_fini(void)
 	if (sysctl_hdr)
 		unregister_net_sysctl_table(sysctl_hdr);
 #endif
-	//xfrm6_input_fini();
 	xfrm6_policy_fini();
 	xfrm6_state_fini();
 	dst_entries_destroy(&xfrm6_dst_ops);
-- 
1.7.9.5

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

* Re: pull request: ipsec-next 2012-11-22
  2012-11-22  8:02 pull request: ipsec-next 2012-11-22 Steffen Klassert
                   ` (3 preceding siblings ...)
  2012-11-22  8:02 ` [PATCH 4/4] xfrm6: Remove commented out function call to xfrm6_input_fini Steffen Klassert
@ 2012-11-22 20:26 ` David Miller
  4 siblings, 0 replies; 6+ messages in thread
From: David Miller @ 2012-11-22 20:26 UTC (permalink / raw)
  To: steffen.klassert; +Cc: herbert, netdev

From: Steffen Klassert <steffen.klassert@secunet.com>
Date: Thu, 22 Nov 2012 09:02:38 +0100

> This pull request is intended for net-next and contains the following changes:
> 
> 1) Remove a redundant check when initializing the xfrm replay functions,
>    from Ulrich Weber.
> 2) Use a faster per-cpu helper when allocating ipcomt transforms,
>    from Shan Wei.
> 3) Use a static gc threshold value for ipv6, simmilar to what we do
>    for ipv4 now.
> 4) Remove a commented out function call.
> 
> Please pull or let me know if there are problems.

Also pulled, thanks.

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

end of thread, other threads:[~2012-11-22 20:26 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-11-22  8:02 pull request: ipsec-next 2012-11-22 Steffen Klassert
2012-11-22  8:02 ` [PATCH 1/4] xfrm: remove redundant replay_esn check Steffen Klassert
2012-11-22  8:02 ` [PATCH 2/4] net: xfrm: use __this_cpu_read per-cpu helper Steffen Klassert
2012-11-22  8:02 ` [PATCH 3/4] xfrm: Use a static gc threshold value for ipv6 Steffen Klassert
2012-11-22  8:02 ` [PATCH 4/4] xfrm6: Remove commented out function call to xfrm6_input_fini Steffen Klassert
2012-11-22 20:26 ` pull request: ipsec-next 2012-11-22 David Miller

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).