openwrtv3/target/linux
Felix Fietkau 8eb57d0cd7 kernel: align the skb padding to power of two
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: Sven Eckelmann <sven@open-mesh.com>

SVN-Revision: 37948
2013-09-11 14:30:15 +00:00
..
adm5120 targets: fix remaining targets for initramfs builds 2013-06-28 22:56:34 +00:00
adm8668 targets: prepare for supporting normal and initramfs images 2013-06-27 19:58:31 +00:00
amazon target: don't build jffs2 nor images by default 2013-06-05 20:58:59 +00:00
ar7 kernel: update 3.9 to 3.9.11 2013-07-22 15:30:56 +00:00
ar71xx ar71xx: use the lzma loader for the WRT160NL 2013-09-07 11:40:45 +00:00
at91 build: unify target independent optimization options 2013-07-29 09:38:29 +00:00
atheros kernel: update 3.10 to 3.10.9 2013-08-23 17:31:04 +00:00
au1000 targets: prepare for supporting normal and initramfs images 2013-06-27 19:58:31 +00:00
avr32 targets: prepare for supporting normal and initramfs images 2013-06-27 19:58:31 +00:00
bcm53xx kernel: update 3.10 to 3.10.10 2013-09-02 19:12:54 +00:00
brcm47xx brcm47xx: add me as maintainer 2013-09-07 15:46:27 +00:00
brcm63xx brcm63xx: drop linux 3.9 support 2013-09-06 19:01:17 +00:00
brcm2708 kernel: update 3.10 to 3.10.10 2013-09-02 19:12:54 +00:00
cns3xxx build: unify target independent optimization options 2013-07-29 09:38:29 +00:00
cns21xx build: unify target independent optimization options 2013-07-29 09:38:29 +00:00
cobalt build: unify target independent optimization options 2013-07-29 09:38:29 +00:00
ep93xx kernel: do not build FW_LOADER as a module. 2013-08-04 09:41:10 +00:00
gemini build: unify target independent optimization options 2013-07-29 09:38:29 +00:00
generic kernel: align the skb padding to power of two 2013-09-11 14:30:15 +00:00
imx6 imx6: backport ahci support 2013-09-10 22:26:36 +00:00
imx23 kernel: update 3.10 to 3.10.10 2013-09-02 19:12:54 +00:00
iop32x targets: prepare for supporting normal and initramfs images 2013-06-27 19:58:31 +00:00
ixp4xx kernel: update 3.10 to 3.10.10 2013-09-02 19:12:54 +00:00
kirkwood targets: prepare for supporting normal and initramfs images 2013-06-27 19:58:31 +00:00
lantiq lantiq: fix TD-W8970 image generation to work with the new tool 2013-08-06 16:25:45 +00:00
malta kernel: update 3.10 to 3.10.10 2013-09-02 19:12:54 +00:00
mcs814x mcs814x: dlan-usb-extender: fix usbdev trigger 2013-09-02 18:25:01 +00:00
mpc52xx kernel: do not build FW_LOADER as a module. 2013-08-04 09:41:10 +00:00
mpc83xx build: unify target independent optimization options 2013-07-29 09:38:29 +00:00
mpc85xx kernel: update 3.10 to 3.10.10 2013-09-02 19:12:54 +00:00
mvebu mvebu: remove maintainer ship role 2013-08-28 16:19:59 +00:00
octeon kernel: update 3.10 to 3.10.10 2013-09-02 19:12:54 +00:00
omap4 linux: move more ARM_ERRATA symbols to the generic config 2013-07-20 07:43:54 +00:00
omap24xx build: unify target independent optimization options 2013-07-29 09:38:29 +00:00
orion build: unify target independent optimization options 2013-07-29 09:38:29 +00:00
ppc40x ppc40x: remove 3.8 support 2013-09-07 11:34:08 +00:00
ppc44x build: unify target independent optimization options 2013-07-29 09:38:29 +00:00
pxa targets: prepare for supporting normal and initramfs images 2013-06-27 19:58:31 +00:00
ramips kernel: update 3.10 to 3.10.10 2013-09-02 19:12:54 +00:00
rb532 targets: prepare for supporting normal and initramfs images 2013-06-27 19:58:31 +00:00
realview kernel: update 3.10 to 3.10.10 2013-09-02 19:12:54 +00:00
sibyte kernel: do not build FW_LOADER as a module. 2013-08-04 09:41:10 +00:00
sparc target: don't build jffs2 nor images by default 2013-06-05 20:58:59 +00:00
uml kernel: update linux 3.8 to 3.8.13 2013-05-26 16:02:31 +00:00
x86 kernel: update 3.10 to 3.10.10 2013-09-02 19:12:54 +00:00
xburst kernel: update 3.10 to 3.10.10 2013-09-02 19:12:54 +00:00
Makefile