• J
    xdp: split code for map vs non-map redirect · 47b123ed
    Jesper Dangaard Brouer 提交于
    The compiler does an efficient job of inlining static C functions.
    Perf top clearly shows that almost everything gets inlined into the
    function call xdp_do_redirect.
    
    The function xdp_do_redirect end-up containing and interleaving the
    map and non-map redirect code.  This is sub-optimal, as it would be
    strange for an XDP program to use both types of redirect in the same
    program. The two use-cases are separate, and interleaving the code
    just cause more instruction-cache pressure.
    
    I would like to stress (again) that the non-map variant bpf_redirect
    is very slow compared to the bpf_redirect_map variant, approx half the
    speed.  Measured with driver i40e the difference is:
    
    - map     redirect: 13,250,350 pps
    - non-map redirect:  7,491,425 pps
    
    For this reason, the function name of the non-map variant of redirect
    have been called xdp_do_redirect_slow.  This hopefully gives a hint
    when using perf, that this is not the optimal XDP redirect operating mode.
    Signed-off-by: NJesper Dangaard Brouer <brouer@redhat.com>
    Signed-off-by: NAlexei Starovoitov <ast@kernel.org>
    47b123ed
filter.c 194.3 KB