• Stanislaw Gruszka's avatar
    myri10ge: small rx_done refactoring · b3cd9657
    Stanislaw Gruszka authored
    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: default avatarStanislaw Gruszka <sgruszka@redhat.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    b3cd9657
myri10ge.c 114 KB