• Timo Teräs's avatar
    xfrm: cache bundles instead of policies for outgoing flows · 80c802f3
    Timo Teräs authored
    __xfrm_lookup() is called for each packet transmitted out of
    system. The xfrm_find_bundle() does a linear search which can
    kill system performance depending on how many bundles are
    required per policy.
    
    This modifies __xfrm_lookup() to store bundles directly in
    the flow cache. If we did not get a hit, we just create a new
    bundle instead of doing slow search. This means that we can now
    get multiple xfrm_dst's for same flow (on per-cpu basis).
    Signed-off-by: default avatarTimo Teras <timo.teras@iki.fi>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    80c802f3
xfrm4_policy.c 6.68 KB