• A
    skbuff: micro-optimize {,__}skb_header_pointer() · d206121f
    Alexander Lobakin 提交于
    {,__}skb_header_pointer() helpers exist mainly for preventing
    accesses-beyond-end of the linear data.
    In the vast majorify of cases, they bail out on the first condition.
    All code going after is mostly a fallback.
    Mark the most common branch as 'likely' one to move it in-line.
    Also, skb_copy_bits() can return negative values only when the input
    arguments are invalid, e.g. offset is greater than skb->len. It can
    be safely marked as 'unlikely' branch, assuming that hotpath code
    provides sane input to not fail here.
    
    These two bump the throughput with a single Flow Dissector pass on
    every packet (e.g. with RPS or driver that uses eth_get_headlen())
    on 20 Mbps per flow/core.
    Signed-off-by: NAlexander Lobakin <alobakin@pm.me>
    Signed-off-by: NDavid S. Miller <davem@davemloft.net>
    d206121f
skbuff.h 132.3 KB