]> git.baikalelectronics.ru Git - kernel.git/commit
net: help compiler generate better code in eth_get_headlen
authorJesper Dangaard Brouer <brouer@redhat.com>
Mon, 28 Sep 2015 10:47:14 +0000 (12:47 +0200)
committerDavid S. Miller <davem@davemloft.net>
Tue, 29 Sep 2015 05:51:15 +0000 (22:51 -0700)
commit5b465cf35694090529ccb0892bcc9ef7f6e45562
treef477f7b26896e0ed159aff107961a60ab2d11068
parentc7b08202a2a7168404dfa3196927005c5221200e
net: help compiler generate better code in eth_get_headlen

Noticed that the compiler (gcc version 4.8.5 20150623 (Red Hat 4.8.5-4) (GCC))
generated suboptimal assembler code in eth_get_headlen().

This early return coding style is usually not an issue, on super scalar CPUs,
but the compiler choose to put the return statement after this very unlikely
branch, thus creating larger jump down to the likely code path.

Performance wise, I could measure slightly less L1-icache-load-misses
and less branch-misses, and an improvement of 1 nanosec with an IP-forwarding
use-case with 257 bytes packets with ixgbe (CPU i7-4790K @ 4.00GHz).

Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ethernet/eth.c