On Fri, May 03, 2019 at 05:46:13PM +0200, Florian Westphal wrote: > xfrm_state_afinfo is a very large struct; its over 4kbyte on 64bit systems. > > The size comes from two arrays to store the l4 protocol type pointers > (esp, ah, ipcomp and so on). > > There are only a handful of those, so just use pointers for protocols > that we implement instead of mostly-empty arrays. > > This also removes the template init/sort related indirections. > Structure size goes down to 120 bytes on x86_64. > > include/net/xfrm.h | 49 ++--- > net/ipv4/ah4.c | 3 > net/ipv4/esp4.c | 3 > net/ipv4/esp4_offload.c | 4 > net/ipv4/ipcomp.c | 3 > net/ipv4/xfrm4_state.c | 45 ----- > net/ipv4/xfrm4_tunnel.c | 3 > net/ipv6/ah6.c | 4 > net/ipv6/esp6.c | 3 > net/ipv6/esp6_offload.c | 4 > net/ipv6/ipcomp6.c | 3 > net/ipv6/mip6.c | 6 > net/ipv6/xfrm6_state.c | 137 ---------------- > net/xfrm/xfrm_input.c | 24 +- > net/xfrm/xfrm_policy.c | 2 > net/xfrm/xfrm_state.c | 400 > +++++++++++++++++++++++++++++++++++------------- > 16 files changed, 343 insertions(+), 350 deletions(-) > > Florian Westphal (6): > xfrm: remove init_tempsel indirection from xfrm_state_afinfo > xfrm: remove init_temprop indirection from xfrm_state_afinfo > xfrm: remove init_flags indirection from xfrm_state_afinfo > xfrm: remove state and template sort indirections from xfrm_state_afinfo > xfrm: remove eth_proto value from xfrm_state_afinfo > xfrm: remove type and offload_type map from xfrm_state_afinfo
I have deferred this until after the merge window. I'll consider applying them then. Thanks!