diff options
author | Stanislaw Gruszka <sgruszka@redhat.com> | 2011-03-25 02:21:51 +0100 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-03-28 08:35:03 +0200 |
commit | b3cd965739b8677f6e04913aa535fa156b09e73d (patch) | |
tree | 1cb6bb7af7f81fc5ace5ad520408007590336dc5 /drivers/net/lance.c | |
parent | bridge: notify applications if address of bridge device changes (diff) | |
download | linux-b3cd965739b8677f6e04913aa535fa156b09e73d.tar.xz linux-b3cd965739b8677f6e04913aa535fa156b09e73d.zip |
myri10ge: small rx_done refactoring
Avoid theoretical race condition regarding accessing dev->features
NETIF_F_LRO flag, which is illustrated below.
CPU1 CPU2
myri10ge_clean_rx_done(): myri10ge_set_flags():
or
myri10ge_set_rx_csum():
if (dev->features & NETIF_F_LRO)
setup lro
dev->features |= NETIF_F_LRO
or
dev->features &= ~NETIF_F_LRO;
if (dev->features & NETIF_F_LRO)
flush lro
On the way reduce myri10ge_rx_done() number of arguments and calls by
moving mgp->small_bytes check into that function. That reduce code size
from:
text data bss dec hex filename
36644 248 100 36992 9080 drivers/net/myri10ge/myri10ge.o
to:
text data bss dec hex filename
36037 247 100 36384 8e20 drivers/net/myri10ge/myri10ge.o
on my i686 system, what should also make myri10ge_clean_rx_done()
being faster.
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/lance.c')
0 files changed, 0 insertions, 0 deletions