[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAMuHMdW=qBz+0qaXRRdBc=jKBA9aGqKafrQQ8rUiQhKv2UmW_Q@mail.gmail.com>
Date: Thu, 4 May 2017 10:08:07 +0200
From: Geert Uytterhoeven <geert@...ux-m68k.org>
To: Steffen Klassert <steffen.klassert@...unet.com>
Cc: Herbert Xu <herbert@...dor.apana.org.au>,
"David S. Miller" <davem@...emloft.net>,
Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
"netdev@...r.kernel.org" <netdev@...r.kernel.org>
Subject: xfrm4_state_afinfo size increase (was: Re: xfrm: Add a xfrm type offload.)
Hi Steffen,
On Wed, May 3, 2017 at 3:05 AM, Linux Kernel Mailing List
<linux-kernel@...r.kernel.org> wrote:
> Web: https://git.kernel.org/torvalds/c/9d389d7f84bbb3a294eb05f7dfe2076e291fc150
> Commit: 9d389d7f84bbb3a294eb05f7dfe2076e291fc150
> Parent: c7ef8f0c020ac43c8a692bf989017c06ab1fdf0f
> Refname: refs/heads/master
> Author: Steffen Klassert <steffen.klassert@...unet.com>
> AuthorDate: Fri Apr 14 10:05:44 2017 +0200
> Committer: Steffen Klassert <steffen.klassert@...unet.com>
> CommitDate: Fri Apr 14 10:05:44 2017 +0200
>
> xfrm: Add a xfrm type offload.
>
> We add a struct xfrm_type_offload so that we have the offloaded
> codepath separated to the non offloaded codepath. With this the
> non offloade and the offloaded codepath can coexist.
>
> Signed-off-by: Steffen Klassert <steffen.klassert@...unet.com>
> ---
> include/net/xfrm.h | 28 +++++++++++++++-----
> net/xfrm/xfrm_state.c | 73 +++++++++++++++++++++++++++++++++++++++++++++++++++
> 2 files changed, 95 insertions(+), 6 deletions(-)
>
> diff --git a/include/net/xfrm.h b/include/net/xfrm.h
> index 9e3dc7b81a4d..159342f3e72b 100644
> --- a/include/net/xfrm.h
> +++ b/include/net/xfrm.h
> @@ -314,12 +316,14 @@ void km_state_expired(struct xfrm_state *x, int hard, u32 portid);
> int __xfrm_state_delete(struct xfrm_state *x);
>
> struct xfrm_state_afinfo {
> - unsigned int family;
> - unsigned int proto;
> - __be16 eth_proto;
> - struct module *owner;
> - const struct xfrm_type *type_map[IPPROTO_MAX];
> - struct xfrm_mode *mode_map[XFRM_MODE_MAX];
> + unsigned int family;
> + unsigned int proto;
> + __be16 eth_proto;
> + struct module *owner;
> + const struct xfrm_type *type_map[IPPROTO_MAX];
> + const struct xfrm_type_offload *type_offload_map[IPPROTO_MAX];
> + struct xfrm_mode *mode_map[XFRM_MODE_MAX];
Bloat-o-meter reports the addition of xfrm_state_afinfo.type_offload_map[]
increases the static kernel size by 1 KiB on 32-bit platforms (double on 64-bit
platforms):
function old new delta
xfrm4_state_afinfo 1102 2126 +1024
While IPPROTO_MAX = 256, the defined list of IP protocols is spread
sparsely over the number space, but I assume all values may occur?
Perhaps type_offload_map[] (and type_map[] while at it) can be allocated at
runtime instead, when the feature is used?
Thanks!
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@...ux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
Powered by blists - more mailing lists