* 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).