• David Lebrun's avatar
    ipv6: sr: expand skb head only if necessary · 19d5a26f
    David Lebrun authored
    To insert or encapsulate a packet with an SRH, we need a large enough skb
    headroom. Currently, we are using pskb_expand_head to inconditionally increase
    the size of the headroom by the amount needed by the SRH (and IPv6 header).
    If this reallocation is performed by another CPU than the one that initially
    allocated the skb, then when the initial CPU kfree the skb, it will enter the
    __slab_free slowpath, impacting performances.
    
    This patch replaces pskb_expand_head with skb_cow_head, that will reallocate the
    skb head only if the headroom is not large enough.
    
    Performances for SRH encapsulation before the patch:
    Result: OK: 7348320(c7347271+d1048) usec, 5000000 (1000byte,0frags)
      680427pps 5443Mb/sec (5443416000bps) errors: 0
    
    Performances after the patch:
    Result: OK: 5656067(c5655678+d388) usec, 5000000 (1000byte,0frags)
      884006pps 7072Mb/sec (7072048000bps) errors: 0
    Signed-off-by: default avatarDavid Lebrun <david.lebrun@uclouvain.be>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    19d5a26f
seg6_iptunnel.c 9.52 KB