myri10ge: small rx_done refactoring
authorStanislaw Gruszka <sgruszka@redhat.com>
Fri, 25 Mar 2011 01:21:51 +0000 (01:21 +0000)
committerDavid S. Miller <davem@davemloft.net>
Mon, 28 Mar 2011 06:35:03 +0000 (23:35 -0700)
commitb3cd965739b8677f6e04913aa535fa156b09e73d
tree1cb6bb7af7f81fc5ace5ad520408007590336dc5
parentedf947f10074fea27fdb1730524dca59355a1c40
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>
drivers/net/myri10ge/myri10ge.c