Skip to content
Snippets Groups Projects
  1. Sep 15, 2013
  2. Sep 14, 2013
  3. Sep 13, 2013
  4. Sep 12, 2013
  5. Sep 11, 2013
    • nbd's avatar
      kernel: align the skb padding to power of two · 5d385cd6
      nbd authored
      
      The skb is usually started by a padding which allows the protocols in the
      network stack to add their headers in front of the payload. The skb can be
      reallocated in case the preallocated padding is not large enough. This can for
      example happen in the function __skb_cow which will check the requested extra
      headroom and allocate more buffer when the requested headroom is bigger than
      the available one. The extra buffer is aligned again to the multiple of the
      NET_SKB_PAD of the target architecture.
      
      The macro used to create the multiple of the NET_SKB_PAD is written in a way
      which allows only values power two as alignment parameter. The currently used
      value of 48 bytes can not be written as n ** 2 but as 2 ** 4 + 2 ** 5. The
      extra buffer is therefore not always the multiple of 48 but can be 16, 64, 80,
      128, 144 and so on. The generated values are also not monotonic (48 requested
      bytes are mapped to 80 allocated bytes and 49 requested bytes are mapped to 64
      allocated bytes).
      
      These unexpected small values result in more reallocations of the buffer. This
      was noticed prominently during tests between two QCA9558 720 MHz devices which
      were connected via ethernet to PCs and had a HT40 802.11n 3x3 link between each
      other. The throughput PC-to-PC during iperf TCP runs increased reliable from
      186 Mibit/s to 214 Mibit/s in one direction and from 195 Mibit/s to 220 Mibit/s
      in the other direction. This is a performance increase of ~14% just by reducing
      the amount of reallocations.
      
      Signed-off-by: default avatarSven Eckelmann <sven@open-mesh.com>
      
      git-svn-id: svn://svn.openwrt.org/openwrt/trunk@37948 3c298f89-4303-0410-b956-a3cf2f4a3e73
      5d385cd6
Loading